ARC Pro

Upgrade to ARC Pro

Join the ARC Pro community and gain access to a wealth of resources and support, ensuring your robot's success.

PRO
Synthiam
#1   — Edited

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.

PRO
USA
#2  

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?

PRO
Synthiam
#3   — Edited

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

PRO
Synthiam
#4  

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.

PRO
Synthiam
#5  

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

PRO
USA
#6   — Edited

Ok. What is the working frequency for a servo in ARC? i.e 1-180?  This servo is : PWM 500-2500us

PRO
Synthiam
#7   — Edited

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.

PRO
USA
#8   — Edited

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)

PRO
Synthiam
#9  

Ah here you go, this is the SSC-32 config screen. You can specify the PWM range.

User-inserted image

PRO
USA
#10  

Quote:

Ah here you go, this is the SSC-32 config screen...
Fantastic info, yay SSC-32!

PRO
Synthiam
#11  

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.

User-inserted image

PRO
USA
#12  

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.

PRO
Synthiam
#13  

I made the change for SSC. It's now a global value in ARC. It'll be in the next release

PRO
USA
#14  

Thanks very much for that!

PRO
USA
#15  

Quote:

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.
Did this change make it into the latest build 3-24?

PRO
Synthiam
#16  

Release notes: https://synthiam.com/Products/ARC/Releases/ARC-2021-03-24-00-Early-Access-Runtime-20451

PRO
USA
#17  

Thanks very much for this!

PRO
USA
#19  

That my friend will come in super handy for a ToN of situations! Thanks for this!

PRO
Canada
#21  

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).

PRO
USA
#22  

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.