element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Enchanted Objects
  • Challenges & Projects
  • Design Challenges
  • Enchanted Objects
  • More
  • Cancel
Enchanted Objects
Blog Review 3: Digital Continuous Rotation (360°) Servo Part 1
  • Blog
  • Forum
  • Documents
  • Polls
  • Files
  • Events
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: Jan Cumps
  • Date Created: 3 Apr 2015 9:15 PM Date Created
  • Views 3346 views
  • Likes 6 likes
  • Comments 16 comments
  • enchanted_player
  • enchanted_objects
  • servo
  • continuous_servo
  • servo_motor
  • arduino
  • servo_360
Related
Recommended

Review 3: Digital Continuous Rotation (360°) Servo Part 1

Jan Cumps
Jan Cumps
3 Apr 2015

The Enchanted Objects kit includes a TinkerKit Servo Module.

That servo motor is not your common 180° angle adjustable unit. It's something special.

 

image

 

Digital Continuous Rotation (360°) Servo

 

It's a SM-S430R continuous rotation type (http://www.farnell.com/datasheets/1581465.pdf)

The continuous servo doesn't work like the common one.

If you connect it to an Arduino and run the Servo examples, you'll be amazed (that is: if your workbench survives it - I tested it with a long iron beam attached to it and the thing started hacking into my function generator).

 

On a common servo, you can call Servo.write() with a value between 0 and 180. The servo will move to a fixed position for each value between 0 and 180 and stop.

But for a continuous servo, this value determines the speed.

 

Servo.write(0) the motor spins counterclockwise as fast as it can - and keeps running

Servo.write(90) the motor grinds to a halt

Servo.write(180) the motor spins clockwise as fast as it can - and keeps running


A safe way to test the servo is with this minimal sketch. It will start spinning the turn the motor clockwise at a low speed, and runs at that speed forever.

Pin 9 is the Arduino control pin.

 

#include <Servo.h>

Servo myservo;  // create servo object to control a servo

void setup()  {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  myservo.write(100);
}

void loop()  {
  // this space intentionally left blank
}

 

 

I've also made a test bed that allows you to control the motor via the serial monitor. When you enter a value between 0 and 180, the motor will run with that for 5 seconds. Then it stops.

Load to your Arduino,

 

#include <Servo.h>

Servo myservo;  // create servo object to control a servo

void setup() {
  Serial.begin(9600);
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  myservo.write(90);
  Serial.println("Enter speed (0 - 180, 0 is fast left, 180 is fast right, 90 = stop)");
}

void loop() {
  // if there's any serial available, read it:
  while (Serial.available() > 0) {
    int iSpeed = Serial.parseInt();
    iSpeed = constrain(iSpeed, 0, 180);
    myservo.write(iSpeed);
    delay(5000);
    myservo.write(90);
    Serial.println("Enter speed (0 - 180, 0 is fast left, 180 is fast right, 90 = stop)");
  }
}

 

 

I'm still thinking how I can use this motor in my project. Because of its peculiar behavior, I'll have to come up with something that matches with this servo.

 

Click here for Part 2.

  • Sign in to reply

Top Comments

  • 4ringfan
    4ringfan over 10 years ago in reply to neilk +3
    Choosing a Motor: DC, Stepper, Or Servo - Free How-to Robot Construction Article I also recall watching a sparkfun video about robotic actuators and Rob and Casey talked about the different types of motors…
  • Workshopshed
    Workshopshed over 10 years ago +2
    Perhaps the servo could be used to make a mini turntable? When attaching the horn, use the smaller screws. The long screws are used with the rubber gromits and metal collars to give an anti vibration mount…
  • Workshopshed
    Workshopshed over 10 years ago in reply to balearicdynamics +2
    I spotted that you can calibrate the servo timing when you attach the pin with two extra parameters min and max. That should work for a continuous rotation servo too. http://arduino.cc/en/Reference/Se…
Parents
  • balearicdynamics
    balearicdynamics over 10 years ago

    I have a 360 servo for continuous rotation too but I see that these parameters seems working partially, the servo don't stop at the position. I think that the best and more precise way to control this kind of servos is using writeMillis() instead of the bare write() to manage better the PWM frequency from which the servo manages the speed.

     

    For example, in my particular case, the producer gives all the PWM frequency specifications for motion and rest position setting. If interested, you find more in this link (maybe you can find something similar for your servo model): http://www.phidgets.com/products.php?product_id=3210_0

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
Comment
  • balearicdynamics
    balearicdynamics over 10 years ago

    I have a 360 servo for continuous rotation too but I see that these parameters seems working partially, the servo don't stop at the position. I think that the best and more precise way to control this kind of servos is using writeMillis() instead of the bare write() to manage better the PWM frequency from which the servo manages the speed.

     

    For example, in my particular case, the producer gives all the PWM frequency specifications for motion and rest position setting. If interested, you find more in this link (maybe you can find something similar for your servo model): http://www.phidgets.com/products.php?product_id=3210_0

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
Children
  • Workshopshed
    Workshopshed over 10 years ago in reply to balearicdynamics

    Cheers for the link Enrico, that's the servo the only difference is that the TinkerKit people swapped the wires around.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • balearicdynamics
    balearicdynamics over 10 years ago in reply to Workshopshed

    Nice, better than expected !

     

    image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Workshopshed
    Workshopshed over 10 years ago in reply to balearicdynamics

    I spotted that you can calibrate the servo timing when you attach the pin with two extra parameters min and max. That should work for a continuous rotation servo too.

     

    http://arduino.cc/en/Reference/ServoAttach

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • balearicdynamics
    balearicdynamics over 10 years ago in reply to Workshopshed

    It's true! I forgot this detail. Thank you Andy

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube