I am working on an exoskeleton for the upper limb. I am using a servo motor (Lynxmotion LSS HT1) to pull a cable, which in turn provides the torque for the elbow joint. Due to the transmission ratio of 4.6, the servo has to turn 414° so that the ellbow joint moves 90°.
Has anyone an idea how i can turn more than 360° in RC MODE (PWM) ?
I am using the adafruit feather m0 -> so the serial communication with the servo is not possible…at least I don’t know how to do that.
Thank you for your help!!
Welcome to the RobotShop Community.
Yes, you can do multi-turn positioning in RC Mode with the LSS. In this case, the Angular Range command can be used.
By default, the Angular Range is set to 1800 tenth of degrees (180°). This means that, if you send an RC PWM signal of 2500us with the LSS in RC positioning mode, the servo will rotate to 90° clockwise and when you send 500us, the LSS will rotate to 90° counter-clockwise (assuming the gyre direction has not been modified). To change the angular range so that a 2500us RC PWM signal rotates the servo to 414°, you can try the following:
- The LSS needs to be in serial mode. To put the servo back to serial mode, you can use the LSS Button Menu by holding the button, pressing twice, then press one time to confirm and the servo should be back in serial mode.
- Since you don’t have a serial adapter to communicate with the servo directly through the LSS Configuration Software, you could use an Arduino skecth to change the Angular Range. The LSS_Configure_Once.ino sketch from the LSS Arduino library can be used. Therefore, download and install the LSS_Library_Arduino
- Uncomment the line 33 in the LSS_Configure_Once example and change the value to 8280 (tenth of degrees = 828°). Keep the ID 0 in ligne 12 if you didn’t change the ID of the servo.
- Load the sketch into your Adafruit Feather M0 .
- Connect your Adafruit Feather M0 Tx pin to the Servo’s Rx pin and Adafruit Feather M0 GND pin to the Servo’s Rx GND.
- Power the setup (LSS + Adafruit Feather M0). The Adafruit Feather M0 should send the serial command #0CAR8280 which should set the Angular Range to 828°. Therefore, if you send an RC PWM signal of 1500us, the servo will be centered and if you send 2500us, the servo will rotate 414° clockwise.
Please note that the LSS is rated for 5V logic voltage level and the Adafruit Feather M0 seems to be rated at 3.3V logic voltage level. Although this might work, it could induce packet errors and thus doesn’t work as expected. We strongly suggest adding a voltage level converter between your LSS and your Arduino Feather.
Hope this helps,
Thank you, thats exactly what I am looking for.
But how do I get back to the RC Mode?
I worked through your instruction…and now the Servo is in Serial Mode. Do I have to change to RC Mode via button menu? Which RC Mode do I have to use?
In the button menu only “RC 180° mode saved” and "RC 360° mode saved " is listed.
I am using the Lynxmotion Power hub, to power the servo with 12V…
Unfortunately, you can’t go back to RC with custom angular range through the button menu. “RC 180° mode saved” would put an angular range of 1800 and "RC 360° mode saved " would put an angular range of 3600 therefore you would loose your angular range setting of 8280.
You would need to send the serial command: #0CRC1 to the servo.
To do this, you can use your Feather Board as explained above. Just add this line of code after the line 33 of your modified LSS_Configure_Once.ino sketch:
The Feather board would send the command to configure the Angular Range to 8280 (#0CAR8280) than it will send the command to put the servo in RC with custom angular range (#0CRC1). After connecting the LSS and the Feather Board as explained and power ON, the servo should be now in RC mode and would blink red indicating that it’s waiting for an RC PWM signal.
The actual Arduino code is attached here : LSS_RC_CAR_Example.zip (1.5 KB)
Thank you very much for the fast response.
That helped me a lot!