Use full angular accuracy of the "MS-12A Smart Servo"?


#1

Hello,

the datasheet of the “MS-12A Smart Servo”
( https://b2b.makeblock.com/products/smart-servo-ms-12a.html )
states that the motor has an angular resolution of 4096 (steps / per revolution) which translates to an angular resolution of (360°/4096) = 0.088°

For a large scale project I need proper programming (with C++) and wanted to use an Arduino to control many Servos.
Unfortunately I stumbled upon the following lines in the “MeSmartServo.h” header file from the “Makeblock-Libraries-Master” which I found on Github:

    1. boolean MeSmartServo::moveTo(uint8_t dev_id,long angle_value,float speed);
    1. boolean MeSmartServo::move(uint8_t dev_id,long angle_value,float speed);

As you can see it says “long angle_value” which means that for “angle_value” only values of the type “long integer” are accepted, for example “45°”, “240°”, “-90°”.
However, I need the motors to move angles smaller than “1°”, for example “0.18°” but the Arduino library can not handle such floating point parameters.

Is there any way, for example with other controller boards, to achieve higher precision than 1° steps?

Thank you! :slight_smile:


#2

Hi, if you want to move angles smaller than “1°”, maybe you can try to use a stepper motor. But we don’t test it before, and We are unable to provide this kind suggestion which without any testing on it and we cannot take the responsibility once this causes any damage.