ARC Pro

Upgrade to ARC Pro

Don't limit your robot's potential – subscribe to ARC Pro and transform it into a dynamic, intelligent machine.

PRO
Synthiam
#1   — Edited

Thank you for the feedback. It is not possible to make hardware do anything more than it is designed to do by the manufacturer. The ARC software has no impact on the resolution for a servo. The resolution of a servo is based on the hardware. If your project requires higher resolution, purchase a servo with higher resolution.

Here’s an example of a robot skill that supports servos with a very high resolution: https://synthiam.com/Support/Skills/Servo/Dynamixel?id=16142

If you are using a servo that supports a high resolution, the global max servo position in ARC can be modified per project: https://synthiam.com/Support/ARC-Overview/Project%20Menu/My%20Robot

#2  

I appreciated the higher resolution in Blockly, it came in very handy. Maybe it was there all along and I just never tried it with 18.67 degrees etc. Sorry, I was new to Synthiam at the time of the original post. Thanks again Don

PRO
Synthiam
#3   — Edited

Servo resolution is always an integer. Setting the position to 18.6 will actually be 19, as it will round the number to the nearest decimal. If you are using servos that support a high resolution, the maximum servo positions in ARC can be modified to accommodate.

See the global servo setting in the PROJECT PROPERTIES menu: https://synthiam.com/Support/ARC-Overview/Project%20Menu/My%20Robot

User-inserted image

*Note: This was moved to a Question because it is not a valid feature request.

#4  

After experimenting I found that the code is is breaking down the pwm usec signal to about 9 usec difference. Even if you change the the amount of servo positions to 360  it is still based on 180 positions in the deep code. My hardware on my end can handle it down to individual usec. I understand how it needs to be a whole number with no decimals. I would like to request in the deep code that it can break it down to about 1600 locations which would produce an exact usec and put this as a checkbox under Advanced that people like myself could use. Thanks again

PRO
Synthiam
#6  

The microcontroller is responsible for the pulse width resolution. Please scroll up and read my previous response and the manual for the servo position in ARC. Your servo limitation is caused by the type of EZB you are using.

If you require a higher us resolution, you will need to change the microcontroller and edit the firmware to reflect your requirements, change to smart servos (i.e., dynamixel), or use a servo controller such as the maestro. All of which are supported by ARC. Lastly, you might consider stepper motors instead of servos if you require microsecond resolution. There is no PWM servo that I'm aware of that will have a potentiometer accurate enough for a microsecond step resolution.

This support document about Using ARC explains how ARC works. ARC runs on a PC and therefore does not have the resources to generate a PWM signal. No PC CPUs can generate a PWM signal because that's not something they would ever do. An accessory, such as a microcontroller, is required to generate a PWM signal. Here's some good reading in case you missed it when getting started: https://synthiam.com/Support/ARC-Overview/how-arc-works

But remember, all is not lost because I provided options for higher resolution above.

#7  

Ok got it and will not ask again, will check out other microcrollers and steppers as you have mentioned.. EZang I think you may want to look a little deeper because although you are saying it has 1024 positions it is still based off of 180 different positions. I'm pretty sure you will not see any movement till you change it's position by at least 6  (1024/180=5.68)

PRO
Synthiam
#8   — Edited

Your math is correct for an ezb that natively has 180 servo degrees. That’s the most common accuracy for pwm servos. You’ll find 180 degrees on arduinos and ezrobot controllers.

The reason ARC allows selecting a custom max servo position is for higher quality servos. Such as Dynamixel (4096 positions) and stepper motor (65535 positions). The max servo position value configured ARC to use higher resolution servos/steppers when the hardware supports it.

Option 1) Stepper motors I believe will be your ideal solution for accuracy. That’s why they’re used in cnc machines and 3D printers. There is a Stepper servo robot skill that can chain 127 stepper motors as servos in ARC. I don’t have the link because I’m on my phone.

Option 2) But, if you need servos with higher accuracy, then robotis Dynamixel is your next bet. They’re not cheap, but have higher accuracy than pwm servos

Option 3) Trying a different servo controller, such as the ssc-32 or polulu maestro will increase resolutions of a pwm servo. But I really don’t think you will get the accuracy you need from pwm servos.

#9  

I checked out the new stepper skill and commented.