Asked
— Edited
Resolved by DJ Sures!
Servo Positions To 270 Degrees
Can I use a servo like this one to get 270 degrees of motion with EZB and ARC?
https://www.amazon.com/ANNIMOS-Digital-Waterproof-DS3218MG-Control/dp/B076CNKQX4
Related Hardware EZ-B v4
ARC will support any servo range (PWM or Serial).
PWM Servo The 270 degrees are divided amongst the PWM signal that is sent by an EZB controller.
Serial Servo If the servo is a serial protocol, the respective robot skill will have an option for it.
*Note: This is not a feature request and being moved to a question.
Please explain in more detail your response so I can better understand your answer. The servo is not a serial servo, just a standard 270 degree servo. How do I get exactly 270 steps (degrees) from the set limit of 1-180 in the software?
You will NOT ever get 270-degree steps in a 270-degree servo. You will get 180 steps, totaling 270 degrees in a 270-degree servo. So each position in ARC or Arduino would equal 1.5 degrees in the servo. There is actually no such thing as a PWM servo degree - that doesn't exist. ARC (or Arduino, etc.) uses an arbitrary value of 1-180 to provide theoretically 180 degrees because most popular PWM servos happen to have 180 degrees output shaft rotation limits.
The software servo position is arbitrary to any servo, PWM, or serial. Take for instance a dynamixel servo, which will have a range between 0- 4096. There are 4096 positions, not 4096 degrees.
In reference to this 270-degree servo, which is PWM, the servo accepts the same pulse width as the popular 180-degree hobby servos. The difference with a 270-degree servo is that the ARC or Arduino, etc. position value of 180 will be 270 degrees. There is no command for a PWM servo that says "go to XXX degrees". The servo looks at the width of the signal pulse and moves respectively to the amount of rotation it is allowed.
The only difference between the PWM servos that you're used to is the number of rotations on the output shaft is connected to a multiple rotation potentiometer internally.
Here's how a servo works, which is actually quite interesting. It uses PWM pulses to instruct a position. Check this out: https://synthiam.com/Support/Advanced-Fundamentals/servo-motor
Also, i think the best way for you to understand is to not use the words "Degrees" and "Steps" together.
The servo has absolutely no idea what a "Degree" is. It only knows what a position is. And a 270-degree servo uses the same input PWM range as a 180-degree servo.
Get one and hook it up to see what I'm explaining - you're a very visual person and seeing it would be helpful to ya.
Here's a similar response from the Arduino forum, maybe his answer is more concise and helps: https://forum.arduino.cc/index.php?topic=591113.0
Ok. What is the working frequency for a servo in ARC? i.e 1-180? This servo is : PWM 500-2500us
There is no working frequency (i.e. pulse width) for a servo in ARC. ARC sends an arbitrary position value to an EZB controller, and the EZB controller sends a pulse. Again, the numbers 1-180 in ARC or Arduino or anything is more-so coincidental that hobby PWM servos are 180-degree output shafts. The 180 position value was influenced by the 180-degree output shaft of a standard 180-degree servo, but that's about it.
The pulse width of an EZB microcontroller is handled within the microcontroller.
ARC sends a position, and the microcontroller sends the pulse.
The question would be "What is the pulse width range of an ___________ EZB". Unfortunately, the answer to that question is much larger and would require you to google a bit. Different libraries for different controllers all have different PWM ranges.
Here's a great link about how a servo works. In the link, there are details about the EZ-Robot EZ-B v4 controller and its range, which is the same as some Arduino hardware and other servo controllers: https://synthiam.com/Support/Advanced-Fundamentals/servo-motor
If you're wanting exactly 270 individual steps that each equal 1 degree, then I'd recommend using a servo controller that has an adjustable PWM range. I believe a good one would be the SSC-32: https://synthiam.com/Support/Skills/Servo/SSC-32-Servo-Controller?id=16180
The SSC-32 has an adjustable range from what I recall.
Great info and links. Thank you. I have a SSC-32 I'll look deeper into it!
FYI servo city sells a cool little servo travel tuner, that lays inline and is adjustable (within the hard limit)
Ah here you go, this is the SSC-32 config screen. You can specify the PWM range.
Let me know if you get an SSC-32. Because if you're looking to have it support 270 positions, a small change will have to be made to the robot skill.
The change will remember the one that's in the Dynamixel robot skill. Notice how you can specify the number of positions in ARC and the servo skill will scale that.
Right I remember in the Dynamixel skill. I worked that global setting to get a good trade off for smooth movement and amount of servo horn travel for Alan and Alenas head movement.
I have a SSC-32 somewhere in the garage. I've ordered the 270 degree servos, those should be here tomorrow. So def going to be testing in next couple days.
I made the change for SSC. It's now a global value in ARC. It'll be in the next release
Thanks very much for that!
Release notes: https://synthiam.com/Products/ARC/Releases/ARC-2021-03-24-00-Early-Access-Runtime-20451
Thanks very much for this!
Here's a video...
That my friend will come in super handy for a ToN of situations! Thanks for this!
WOW. very nice.
agree very useful. I am glad it is an optional change as well so it doesn't confuse new people. Having 1 to 180 degrees is good because we can visualize 1 / 45 / 90 / 180 degrees etc and don't need to explain that if you set 1024 that 256 is really 45 degrees for servo A that is a 180 degree servo, and only 30 degrees for servo B that is a 270 degree servo (this would make a new person to the softwares head spin).
BTW servo Travel Tuner is amazing as a one-off to get ALL of your movement from any servo regardless of the max range of movement or frequency.