Changes for page LSS Communication Protocol
Last modified by Eric Nantel on 2025/06/06 07:47
Change comment: There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -79,7 +79,7 @@ 79 79 80 80 == Configuration Commands == 81 81 82 -Configuration commands and corresponding values affect a servo's defaults which are written to and read from the servo's EEPROM. These configurations are retained in memory after the servo is reset or power is cut / lost. Some configuration commands affect the session, while others do not (see each command for details). Not all action commands have a corresponding configuration and vice versa. More information about which configuration commands are retained when in RC mode can be found on the [[LSS - RC PWM page>>doc:Lynxmotion Smart Servo (LSS).LSS - RC PWM.WebHome]]. Configuration commands are not cumulative, in that if two configurations are sent, one after the next, only the last configuration is used and stored. The format to send a configuration command is identical to that of an action command:82 +Configuration commands and corresponding values affect a servo's defaults which are written to and read from the servo's EEPROM. These configurations are retained in memory after the servo is reset or power is cut / lost. Some configuration commands affect the session, while others do not. In the Command table below, the column "Session" denotes if the configuration command affects the session.. Not all action commands have a corresponding configuration command and vice versa. More information about which configuration commands are retained when in RC mode can be found on the [[LSS - RC PWM page>>doc:Lynxmotion Smart Servo (LSS).LSS - RC PWM.WebHome]]. Configuration commands are not cumulative, in that if two configurations are sent, one after the next, only the last configuration is used and stored. The format to send a configuration command is identical to that of an action command: 83 83 84 84 1. Start with a number sign # (U+0023) 85 85 1. Servo ID number as an integer ... ... @@ -128,20 +128,16 @@ 128 128 129 129 = Command List = 130 130 131 -|= #|=Description|= Action|= Query|= Config|=((( 132 -Config Affects 133 - 134 -Session 135 -)))|= RC|= Serial|= Units|=(% style="width: 510px;" %) Notes|=(% style="width: 113px;" %)Default Value 131 +|= #|=Description|= Action|= Query|= Config|=Session|= RC|= Serial|= Units|=(% style="width: 510px;" %) Notes|=(% style="width: 113px;" %)Default Value 136 136 | 1|[[**L**imp>>||anchor="H1.Limp28L29"]]| L| | | | | ✓|none|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 137 137 | 2|[[**H**alt & **H**old>>||anchor="H2.Halt26Hold28H29"]]| H| | | | | ✓|none|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 138 138 | 3|[[**T**imed move>>||anchor="H3.Timedmove28T29"]]| T| | | | | ✓|milliseconds|(% style="width:510px" %) Modifier only for {P, D, MD}|(% style="text-align:center; width:113px" %) 139 139 | 4|[[**S**peed>>||anchor="H4.Speed28S29"]]| S| | | | | ✓|microseconds per second|(% style="width:510px" %) Modifier only {P}|(% style="text-align:center; width:113px" %) 140 140 | 5|[[**M**ove in **D**egrees (relative)>>||anchor="H5.28Relative29MoveinDegrees28MD29"]]| MD| | | | | ✓|tenths of degrees (ex 325 = 32.5 degrees)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 141 -| 6|[[**O**rigin Offset>>||anchor="H6.OriginOffsetAction28O29"]]| O| QO| 137 +| 6|[[**O**rigin Offset>>||anchor="H6.OriginOffsetAction28O29"]]| O| QO|CO|✓| ✓| ✓|tenths of degrees (ex 91 = 9.1 degrees)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)((( 142 142 0 143 143 ))) 144 -| 7|[[**A**ngular **R**ange>>||anchor="H7.AngularRange28AR29"]]| AR| QAR| CAR| 140 +| 7|[[**A**ngular **R**ange>>||anchor="H7.AngularRange28AR29"]]| AR| QAR| CAR|✓| ✓| ✓|tenths of degrees |(% style="width:510px" %) |(% style="text-align:center; width:113px" %)((( 145 145 1800 146 146 ))) 147 147 | 8|[[Position in **P**ulse>>||anchor="H8.PositioninPulse28P29"]]| P| QP| | | | ✓|microseconds|(% style="width:510px" %)((( ... ... @@ -150,49 +150,49 @@ 150 150 | 9|[[Position in **D**egrees>>||anchor="H9.PositioninDegrees28D29"]]| D| QD| | | | ✓|tenths of degrees |(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 151 151 | 10|[[**W**heel mode in **D**egrees>>||anchor="H10.WheelModeinDegrees28WD29"]]| WD| QWD| | | | ✓|tenths of degrees per second (ex 248 = 24.8 degrees per second)|(% style="width:510px" %)A.K.A. "Speed mode" or "Continuous rotation"|(% style="text-align:center; width:113px" %) 152 152 | 11|[[**W**heel mode in **R**PM>>||anchor="H11.WheelModeinRPM28WR29"]]| WR| QWR| | | | ✓|revolutions per minute (rpm)|(% style="width:510px" %)A.K.A. "Speed mode" or "Continuous rotation"|(% style="text-align:center; width:113px" %) 153 -| 12|[[Max **S**peed in **D**egrees>>||anchor="H12.SpeedinDegrees28SD29"]]| SD| QSD|CSD| 149 +| 12|[[Max **S**peed in **D**egrees>>||anchor="H12.SpeedinDegrees28SD29"]]| SD| QSD|CSD|✓| ✓| ✓|tenths of degrees per second |(% style="width:510px" %)((( 154 154 QSD: Add modifier "2" for instantaneous speed. 155 155 156 156 SD overwrites SR / CSD overwrites CSR and vice-versa. 157 157 )))|(% style="text-align:center; width:113px" %)Max per servo 158 -| 13|[[Max **S**peed in **R**PM>>||anchor="H13.SpeedinRPM28SR29"]]| SR| QSR|CSR| 154 +| 13|[[Max **S**peed in **R**PM>>||anchor="H13.SpeedinRPM28SR29"]]| SR| QSR|CSR|✓| ✓| ✓|revolutions per minute (rpm)|(% style="width:510px" %)((( 159 159 QSR: Add modifier "2" for instantaneous speed 160 160 161 161 SR overwrites SD / CSR overwrites CSD and vice-versa. 162 162 )))|(% style="text-align:center; width:113px" %)Max per servo 163 -| 1 6|[[**LED** Color>>||anchor="H16.RGBLED28LED29"]]| LED| QLED| CLED|164 -| 1 7|[[**ID** #>>||anchor="H17.IdentificationNumber"]]| | QID| CID| | | ✓|none (integer from 0 to 250)|(% style="width:510px" %)Note: ID 254 is a "broadcast" which all servos respond to|(% style="text-align:center; width:113px" %)0165 -| 1 8|[[**B**aud rate>>||anchor="H18.BaudRate"]]| B| QB| CB| | | ✓|none (integer)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)9600166 -| 1 9|[[**G**yre direction (**G**)>>||anchor="H19.GyreRotationDirection"]]| G| QG| CG|where1= CW (clockwise) -1 = CCW (counter-clockwise)|(% style="text-align:center; width:113px" %)1167 -| 20|[[**F**irst Position (**P**ulse)>>||anchor="H20.First2InitialPosition28pulse29"]]| | QFP|CFP | | ✓| ✓|none |(% style="width:510px" %)CFP overwrites CFD and vice-versa|(% style="text-align:center; width:113px" %)(((159 +| 14|[[**LED** Color>>||anchor="H16.RGBLED28LED29"]]| LED| QLED| CLED|✓| ✓| ✓|none (integer from 0 to 8)|(% style="width:510px" %)0=Off (black); 1=Red 2=Green; 3=Blue; 4=Yellow; 5=Cyan; 6=Magenta; 7=White;|(% style="text-align:center; width:113px" %)7 160 +| 15|[[**ID** #>>||anchor="H17.IdentificationNumber"]]| | QID| CID| | | ✓|none (integer from 0 to 250)|(% style="width:510px" %)Note: ID 254 is a "broadcast" which all servos respond to. |(% style="text-align:center; width:113px" %)0 161 +| 16|[[**B**aud rate>>||anchor="H18.BaudRate"]]| B| QB| CB| | | ✓|none (integer)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)9600 162 +| 17|[[**G**yre direction (**G**)>>||anchor="H19.GyreRotationDirection"]]| G| QG| CG|✓| ✓| ✓|none |(% style="width:510px" %)Gyre / rotation direction: 1= CW (clockwise) -1 = CCW (counter-clockwise)|(% style="text-align:center; width:113px" %)1 163 +| 18|[[**F**irst Position (**P**ulse)>>||anchor="H20.First2InitialPosition28pulse29"]]| | QFP|CFP | | ✓| ✓|none |(% style="width:510px" %)CFP overwrites CFD and vice-versa|(% style="text-align:center; width:113px" %)((( 168 168 Limp 169 169 ))) 170 -| 21|[[**F**irst Position (**D**egrees)>>||anchor="H21.First2InitialPosition28Degrees29"]]| | QFD|CFD| | ✓| ✓|none |(% style="width:510px" %)CFD overwrites CFP and vice-versa|(% style="text-align:center; width:113px" %)Limp171 -| 2 2|[[**T**arget (**D**egree) **P**osition>>||anchor="H22.QueryTargetPositioninDegrees28QDT29"]]| | QDT| | | | ✓|tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)172 -| 2 3|[[**M**odel **S**tring>>||anchor="H23.QueryModelString28QMS29"]]| | QMS| | | | |none (string)|(% style="width:510px" %) Returns the type of servo (ST, HS, HT)|(% style="text-align:center; width:113px" %)173 -| 2 4|[[Serial **N**umber>>||anchor="H24.QuerySerialNumber28QN29"]]| | QN| | | | |none (integer)|(% style="width:510px" %) Returns the unique serial number for that servo|(% style="text-align:center; width:113px" %)174 -| 2 5|[[**F**irmware version>>||anchor="H25.QueryFirmware28QF29"]]| | QF| | | | |none (integer)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)175 -| 2 6|[[**Q**uery (generalstatus)>>||anchor="H26.QueryStatus28Q29"]]| | Q| | | | ✓|none (integer from 1 to 8)|(% style="width:510px" %) See command description for details|(% style="text-align:center; width:113px" %)176 -| 2 7|[[**V**oltage>>||anchor="H27.QueryVoltage28QV29"]]| | QV| | | | ✓|millivolts (ex 5936 = 5936mV = 5.936V)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)177 -| 2 8|[[**T**emperature>>||anchor="H28.QueryTemperature28QT29"]]| | QT| | | | ✓|tenths of degrees Celsius|(% style="width:510px" %)Max temp before error: 85°C (servo goes limp)|(% style="text-align:center; width:113px" %)178 -| 2 9|[[**C**urrent>>||anchor="H29.QueryCurrent28QC29"]]| | QC| | | | ✓|milliamps (ex 200 = 0.2A)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)179 -| 30a|[[**RC** Mode>>||anchor="H30.RCMode28CRC29"]] - Position| | |CRC1|180 - Puts theservo into RC mode. To revert to smart mode, use the button menu.166 +| 19|[[**F**irst Position (**D**eg)>>||anchor="H21.First2InitialPosition28Degrees29"]]| | QFD|CFD| | ✓| ✓|none |(% style="width:510px" %)CFD overwrites CFP and vice-versa|(% style="text-align:center; width:113px" %)Limp 167 +| 20|[[**T**arget (**D**eg) **P**osition>>||anchor="H22.QueryTargetPositioninDegrees28QDT29"]]| | QDT| | | | ✓|tenths of degrees (ex 325 = 32.5 degrees)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 168 +| 21|[[**M**odel **S**tring>>||anchor="H23.QueryModelString28QMS29"]]| | QMS| | | | |none (string)|(% style="width:510px" %) Returns the type of servo (ST, HS, HT)|(% style="text-align:center; width:113px" %) 169 +| 22|[[Serial **N**umber>>||anchor="H24.QuerySerialNumber28QN29"]]| | QN| | | | |none (integer)|(% style="width:510px" %) Returns the unique serial number for that servo|(% style="text-align:center; width:113px" %) 170 +| 23|[[**F**irmware version>>||anchor="H25.QueryFirmware28QF29"]]| | QF| | | | |none (integer)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 171 +| 24|[[**Q**uery (gen. status)>>||anchor="H26.QueryStatus28Q29"]]| | Q| | | | ✓|none (integer from 1 to 8)|(% style="width:510px" %) See command description for details|(% style="text-align:center; width:113px" %) 172 +| 25|[[**V**oltage>>||anchor="H27.QueryVoltage28QV29"]]| | QV| | | | ✓|millivolts (ex 5936 = 5936mV = 5.936V)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 173 +| 26|[[**T**emperature>>||anchor="H28.QueryTemperature28QT29"]]| | QT| | | | ✓|tenths of degrees Celsius|(% style="width:510px" %)Max temp before error: 85°C (servo goes limp)|(% style="text-align:center; width:113px" %) 174 +| 27|[[**C**urrent>>||anchor="H29.QueryCurrent28QC29"]]| | QC| | | | ✓|milliamps (ex 200 = 0.2A)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 175 +| 28|[[**RC** Mode>>||anchor="H30.RCMode28CRC29"]] - Position| | |CRC1|✓| | ✓|none|(% style="width:510px" %)((( 176 +Change to RC position mode. To revert to smart mode, use the button menu. 181 181 )))|(% style="text-align:center; width:113px" %)Serial 182 -| 30b|[[**RC** Mode>>||anchor="H30.RCMode28CRC29"]] - Wheel| | |CRC2|183 -| 3 1|[[**RESET**>>||anchor="H31.RESET"]]| | | | | | ✓|none|(% style="width:510px" %)Soft reset. See command for details.|(% style="text-align:center; width:113px" %)184 -| 3 2|[[**DEFAULT**>>||anchor="H32.DEFAULTA026CONFIRM"]]| | | | | |✓|none|(% style="width:510px" %)Revert to firmware default values. See command for details|(% style="text-align:center; width:113px" %)185 -| 3 3|[[**UPDATE**>>||anchor="H33.UPDATEA026CONFIRM"]]| | | | | |✓|none|(% style="width:510px" %)Update firmware. See command for details.|(% style="text-align:center; width:113px" %)178 +| 29|[[**RC** Mode>>||anchor="H30.RCMode28CRC29"]] - Wheel| | |CRC2|✓| | ✓| |(% style="width:510px" %)Change to RC wheel mode. To revert to smart mode, use the button menu.|(% style="text-align:center; width:113px" %)Serial 179 +| 30|[[**RESET**>>||anchor="H31.RESET"]]| | | | | | ✓|none|(% style="width:510px" %)Soft reset. See command for details.|(% style="text-align:center; width:113px" %) 180 +| 31|[[**DEFAULT**>>||anchor="H32.DEFAULTA026CONFIRM"]]| | | | | |✓|none|(% style="width:510px" %)Revert to firmware default values. See command for details|(% style="text-align:center; width:113px" %) 181 +| 32|[[**UPDATE**>>||anchor="H33.UPDATEA026CONFIRM"]]| | | | | |✓|none|(% style="width:510px" %)Update firmware. See command for details.|(% style="text-align:center; width:113px" %) 186 186 187 187 == Advanced == 188 188 189 -|= #|=Description|= Action|= Query|= Config|= RC|= Serial|= Units|=(% style="width: 510px;" %) Notes|=(% style="width: 113px;" %)Default Value 190 -| A1|[[**A**ngular **S**tiffness>>||anchor="H14.AngularStiffness28AS29"]]| AS|QAS|CAS| ✓| ✓|none (integer -4 to +4)|(% style="width:510px" %)Suggested values are between 0 to +4|(% style="text-align:center; width:113px" %)0 191 -| A2|[[**A**ngular **H**olding Stiffness>>||anchor="H15.AngularHoldStiffness28AH29"]]|AH|QAH|CAH| | ✓|none (integer -10 to +10)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)1 192 -| A3|[[**A**ngular **A**cceleration>>||anchor="H15b:AngularAcceleration28AA29"]]|AA|QAA|CAA| | ✓|degrees per second squared|(% style="width:510px" %)Increments of 10 degrees per second squared|(% style="text-align:center; width:113px" %) 193 -| A4|[[**A**ngular **D**eceleration>>||anchor="H15c:AngularDeceleration28AD29"]]|AD|QAD|CAD| | ✓|degrees per second squared|(% style="width:510px" %)Increments of 10 degrees per second squared|(% style="text-align:center; width:113px" %) 194 -| A5|[[**E**nable **M**otion Control>>||anchor="H15d:MotionControl28MC29"]]|EM|QEM| | | ✓|none|(% style="width:510px" %)EM0 to disable motion control, EM1 to enable|(% style="text-align:center; width:113px" %) 195 -| A6|[[**C**onfigure **L**ED **B**linking>>||anchor="H16b.ConfigureLEDBlinking28CLB29"]]| | | CLB| ✓| |none (integer from 0 to 63)|(% style="width:510px" %)((( 185 +|= #|=Description|= Action|= Query|= Config|=Session|= RC|= Serial|= Units|=(% style="width: 510px;" %) Notes|=(% style="width: 113px;" %)Default Value 186 +| A1|[[**A**ngular **S**tiffness>>||anchor="H14.AngularStiffness28AS29"]]| AS|QAS|CAS|✓| ✓| ✓|none (integer -4 to +4)|(% style="width:510px" %)Suggested values are between 0 to +4|(% style="text-align:center; width:113px" %)0 187 +| A2|[[**A**ngular **H**olding Stiffness>>||anchor="H15.AngularHoldStiffness28AH29"]]|AH|QAH|CAH|✓| | ✓|none (integer -10 to +10)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)1 188 +| A3|[[**A**ngular **A**cceleration>>||anchor="H15b:AngularAcceleration28AA29"]]|AA|QAA|CAA|✓| | ✓|degrees per second squared|(% style="width:510px" %)Increments of 10 degrees per second squared|(% style="text-align:center; width:113px" %) 189 +| A4|[[**A**ngular **D**eceleration>>||anchor="H15c:AngularDeceleration28AD29"]]|AD|QAD|CAD|✓| | ✓|degrees per second squared|(% style="width:510px" %)Increments of 10 degrees per second squared|(% style="text-align:center; width:113px" %) 190 +| A5|[[**E**nable **M**otion Control>>||anchor="H15d:MotionControl28MC29"]]|EM|QEM| | | | ✓|none|(% style="width:510px" %)EM0 to disable motion control, EM1 to enable|(% style="text-align:center; width:113px" %) 191 +| A6|[[**C**onfigure **L**ED **B**linking>>||anchor="H16b.ConfigureLEDBlinking28CLB29"]]| | | CLB| | ✓| |none (integer from 0 to 63)|(% style="width:510px" %)((( 196 196 0=No blinking, 63=Always blink; 197 197 198 198 Blink while: 1=Limp; 2=Holding 4=Accel; 8=Decel; 16=Free 32=Travel; ... ... @@ -331,22 +331,22 @@ 331 331 332 332 The servo replies with the angular speed in rpm. A negative sign would indicate the opposite direction (for factory default a negative value would be counter clockwise). 333 333 334 -====== __12. Speed in Degrees (**SD**)__ ====== 330 +====== __12. Max Speed in Degrees (**SD**)__ ====== 335 335 336 336 Ex: #5SD1800<cr> 337 337 338 -This command sets the servo's maximum speed for action commands in tenths of degrees per second for that session. In the example above, the servo's maximum speed for that session would be set to 180.0 degrees per second. Thereforemaximumspeed foractions can be set "on the fly". The servo's maximum speed cannot be set higher than its physical limit at a given voltage. SD overrides CSD (described below) for that session. Upon reset or power cycle, the servo reverts to the value associated with CSD as described below. Note that SD and SR (described below) are effectively the same, but allow the user to specify the speed in either unit. The last command (either SR or SD) is what the servo uses for that session.334 +This command sets the servo's maximum speed for motion commands in tenths of degrees per second for that session. In the example above, the servo's maximum speed for that session would be set to 180.0 degrees per second. The servo's maximum speed cannot be set higher than its physical limit at a given voltage. The SD action command overrides CSD (described below) for that session. Upon reset or power cycle, the servo reverts to the value associated with CSD as described below. Note that SD and SR (described below) are effectively the same, but allow the user to specify the speed in either unit. The last command (either SR or SD) received is what the servo uses for that session. 339 339 340 340 Query Speed in Degrees (**QSD**) 341 341 342 342 Ex: #5QSD<cr> might return *5QSD1800<cr> 343 343 344 -By default QSD will return the current session value, which is set to the value of CSD as reset/power cycle and changed whenever a SD/SR command is processed. 340 +By default QSD will return the current session value, which is set to the value of CSD as reset/power cycle and changed whenever an SD/SR command is processed. 345 345 If #5QSD1<cr> is sent, the configured maximum speed (CSD value) will be returned instead. You can also query the current speed using "2" and the current target travel speed using "3". See the table below for an example: 346 346 347 347 |**Command sent**|**Returned value (1/10 °)** 348 348 |ex: #5QSD<cr>|Session value for maximum speed (set by latest SD/SR command) 349 -|ex: #5QSD1<cr>|Configured maximum speed 345 +|ex: #5QSD1<cr>|Configured maximum speed in EEPROM (set by CSD/CSR) 350 350 |ex: #5QSD2<cr>|Instantaneous speed (same as QWD) 351 351 |ex: #5QSD3<cr>|Target travel speed 352 352 ... ... @@ -356,22 +356,22 @@ 356 356 357 357 Using the CSD command sets the servo's maximum speed which is saved in EEPROM. In the example above, the servo's maximum speed will be set to 180.0 degrees per second. When the servo is powered on (or after a reset), the CSD value is used. Note that CSD and CSR (described below) are effectively the same, but allow the user to specify the speed in either unit. The last command (either CSR or CSD) is what the servo uses for that session. 358 358 359 -====== __13. Speed in RPM (**SR**)__ ====== 355 +====== __13. Max Speed in RPM (**SR**)__ ====== 360 360 361 361 Ex: #5SD45<cr> 362 362 363 -This command sets the servo's maximum speed for actionreforemaximumspeed foractions can be set "on the fly". The servo's maximum speed cannot be set higher than its physical limit at a given voltage. SD overrides CSD (described below) for that session. Upon reset or power cycle, the servo reverts to the value associated with CSD as described below. Note that SD (described above) and SR are effectively the same, but allow the user to specify the speed in either unit. The last command (either SR or SD) is what the servo uses for that session.359 +This command sets the servo's maximum speed for motion commands in rpm for that session. In the example above, the servo's maximum speed for that session would be set to 45rpm. The servo's maximum speed cannot be set higher than its physical limit at a given voltage. SD overrides CSD (described below) for that session. Upon reset or power cycle, the servo reverts to the value associated with CSD as described below. Note that SD (described above) and SR are effectively the same, but allow the user to specify the speed in either unit. The last command (either SR or SD) received is what the servo uses for that session. 364 364 365 365 Query Speed in Degrees (**QSR**) 366 366 367 367 Ex: #5QSR<cr> might return *5QSR45<cr> 368 368 369 -By default QSR will return the current session value, which is set to the value of CSR as reset/power cycle and changed whenever a SD/SR command is processed. 365 +By default QSR will return the current session value, which is set to the value of CSR as reset/power cycle and changed whenever an SD/SR command is processed. 370 370 If #5QSR1<cr> is sent, the configured maximum speed (CSR value) will be returned instead. You can also query the current speed using "2" and the current target travel speed using "3". See the table below for an example: 371 371 372 372 |**Command sent**|**Returned value (1/10 °)** 373 373 |ex: #5QSR<cr>|Session value for maximum speed (set by latest SD/SR command) 374 -|ex: #5QSR1<cr>|Configured maximum speed 370 +|ex: #5QSR1<cr>|Configured maximum speed in EEPROM (set by CSD/CSR) 375 375 |ex: #5QSR2<cr>|Instantaneous speed (same as QWR) 376 376 |ex: #5QSR3<cr>|Target travel speed 377 377 ... ... @@ -379,68 +379,10 @@ 379 379 380 380 Ex: #5CSR45<cr> 381 381 382 -Using the CSR command sets the servo's maximum speed which is saved in EEPROM. In the example above, the servo's maximum speed will be set to 45rpm. When the servo is powered on (or after a reset), the CSR value is used. Note that CSD and CSR are effectively the same, but allow the user to specify the speed in either unit. The last command (either CSR or CSD) is what the servo uses for that session. 378 +Using the CSR command sets the servo's maximum speed which is saved in EEPROM. In the example above, the servo's maximum speed will be set to 45rpm. When the servo is powered on (or after a reset), the CSR value is used. Note that CSD and CSR are effectively the same, but allow the user to specify the speed in either unit. The last command (either CSR or CSD) received is what the servo uses for that session. 383 383 384 -====== __14.AngularStiffness (**AS**)__======380 +====== ====== 385 385 386 -The servo's rigidity / angular stiffness can be thought of as (though not identical to) a damped spring in which the value affects the stiffness and embodies how much, and how quickly the servo tried keep the requested position against changes. 387 - 388 -A positive value of "angular stiffness": 389 - 390 -* The more torque will be applied to try to keep the desired position against external input / changes 391 -* The faster the motor will reach its intended travel speed and the motor will decelerate faster and nearer to its target position 392 - 393 -A negative value on the other hand: 394 - 395 -* Causes a slower acceleration to the travel speed, and a slower deceleration 396 -* Allows the target position to deviate more from its position before additional torque is applied to bring it back 397 - 398 -The default value is zero and the effect becomes extreme by -4, +4. There are no units, only integers between -4 to 4. Greater values produce increasingly erratic behavior. 399 - 400 -Ex: #5AS-2<cr> 401 - 402 -This reduces the angular stiffness to -2 for that session, allowing the servo to deviate more around the desired position. This can be beneficial in many situations such as impacts (legged robots) where more of a "spring" effect is desired. Upon reset, the servo will use the value stored in memory, based on the last configuration command. 403 - 404 -Ex: #5QAS<cr> 405 - 406 -Queries the value being used. 407 - 408 -Ex: #5CAS<cr> 409 - 410 -Writes the desired angular stiffness value to memory. 411 - 412 -====== __15. Angular Hold Stiffness (**AH**)__ ====== 413 - 414 -The angular holding stiffness determines the servo's ability to hold a desired position under load. Values can be from -10 to 10, with the default being 0. Note that negative values mean the final position can be easily deflected. 415 - 416 -Ex: #5AH3<cr> 417 - 418 -This sets the holding stiffness for servo #5 to 3 for that session. 419 - 420 -Query Angular Hold Stiffness (**QAH**) 421 - 422 -Ex: #5QAH<cr> might return *5QAH3<cr> 423 - 424 -This returns the servo's angular holding stiffness value. 425 - 426 -Configure Angular Hold Stiffness (**CAH**) 427 - 428 -Ex: #5CAH2<cr> 429 - 430 -This writes the angular holding stiffness of servo #5 to 2 to EEPROM 431 - 432 -====== __15b: Angular Acceleration (**AA**)__ ====== 433 - 434 -{More details to come} 435 - 436 -====== __15c: Angular Deceleration (**AD**)__ ====== 437 - 438 -{More details to come} 439 - 440 -====== __15d: Motion Control (**EM**)__ ====== 441 - 442 -{More details to come} 443 - 444 444 ====== __16. RGB LED (**LED**)__ ====== 445 445 446 446 Ex: #5LED3<cr> ... ... @@ -459,20 +459,6 @@ 459 459 460 460 Configuring the LED color via the CLED command sets the startup color of the servo after a reset or power cycle. Note that it also changes the session's LED color immediately as well. 461 461 462 -====== __16b. Configure LED Blinking (**CLB**)__ ====== 463 - 464 -This command allows you to control when the RGB LED will blink the user set color (see [[16. RGB LED>>||anchor="H16.RGBLED28LED29"]] for details). 465 -You can turn on or off blinking for various LSS status. Here is the list and their associated value: 0=No blinking, ; 63=Always blink; Blink while: 1=Limp; 2=Holding 4=Accel; 8=Decel; 16=Free 32=Travel; 466 - 467 -To set blinking, use CLB with the value of your choosing. To activate blinking in multiple status, simply add together the values of the corresponding status. See examples below: 468 - 469 -Ex: #5CLB0<cr> to turn off all blinking (LED always solid) 470 -Ex: #5CLB1<cr> only blink when limp 471 -Ex: #5CLB2<cr> only blink when holding 472 -Ex: #5CLB12<cr> only blink when accel or decel 473 -Ex: #5CLB48<cr> only blink when free or travel 474 -Ex: #5CLB63<cr> blink in all status 475 - 476 476 ====== __17. Identification Number__ ====== 477 477 478 478 A servo's identification number cannot be set "on the fly" and must be configured via the CID command described below. The factory default ID number for all servos is 0. Since smart servos are intended to be daisy chained, in order to respond differently from one another, the user must set different identification numbers. Servos with the same ID and baud rate will all receive and react to the same commands. ... ... @@ -664,3 +664,77 @@ 664 664 Since it it not common to have to update firmware, a confirmation command is needed after an UPDATE command is sent. Should any command other than CONFIRM be received by the servo after the firmware command has been received, it will leave the firmware action. 665 665 666 666 Note that after the CONFIRM command is sent, the servo will automatically perform a RESET. 591 + 592 +====== __A1. Angular Stiffness (**AS**)__ ====== 593 + 594 +The servo's rigidity / angular stiffness can be thought of as (though not identical to) a damped spring in which the value affects the stiffness and embodies how much, and how quickly the servo tried keep the requested position against changes. 595 + 596 +A positive value of "angular stiffness": 597 + 598 +* The more torque will be applied to try to keep the desired position against external input / changes 599 +* The faster the motor will reach its intended travel speed and the motor will decelerate faster and nearer to its target position 600 + 601 +A negative value on the other hand: 602 + 603 +* Causes a slower acceleration to the travel speed, and a slower deceleration 604 +* Allows the target position to deviate more from its position before additional torque is applied to bring it back 605 + 606 +The default value is zero and the effect becomes extreme by -4, +4. There are no units, only integers between -4 to 4. Greater values produce increasingly erratic behavior. 607 + 608 +Ex: #5AS-2<cr> 609 + 610 +This reduces the angular stiffness to -2 for that session, allowing the servo to deviate more around the desired position. This can be beneficial in many situations such as impacts (legged robots) where more of a "spring" effect is desired. Upon reset, the servo will use the value stored in memory, based on the last configuration command. 611 + 612 +Ex: #5QAS<cr> 613 + 614 +Queries the value being used. 615 + 616 +Ex: #5CAS<cr> 617 + 618 +Writes the desired angular stiffness value to memory. 619 + 620 +====== __A2. Angular Holding Stiffness (**AH**)__ ====== 621 + 622 +The angular holding stiffness determines the servo's ability to hold a desired position under load. Values can be from -10 to 10, with the default being 0. Note that negative values mean the final position can be easily deflected. 623 + 624 +Ex: #5AH3<cr> 625 + 626 +This sets the holding stiffness for servo #5 to 3 for that session. 627 + 628 +Query Angular Hold Stiffness (**QAH**) 629 + 630 +Ex: #5QAH<cr> might return *5QAH3<cr> 631 + 632 +This returns the servo's angular holding stiffness value. 633 + 634 +Configure Angular Hold Stiffness (**CAH**) 635 + 636 +Ex: #5CAH2<cr> 637 + 638 +This writes the angular holding stiffness of servo #5 to 2 to EEPROM 639 + 640 +====== __A3: Angular Acceleration (**AA**)__ ====== 641 + 642 +{More details to come} 643 + 644 +====== __A4: Angular Deceleration (**AD**)__ ====== 645 + 646 +{More details to come} 647 + 648 +====== __A5: Motion Control (**EM**)__ ====== 649 + 650 +{More details to come} 651 + 652 +====== __A6. Configure LED Blinking (**CLB**)__ ====== 653 + 654 +This command allows you to control when the RGB LED will blink the user set color (see [[16. RGB LED>>||anchor="H16.RGBLED28LED29"]] for details). 655 +You can turn on or off blinking for various LSS status. Here is the list and their associated value: 0=No blinking, ; 63=Always blink; Blink while: 1=Limp; 2=Holding 4=Accel; 8=Decel; 16=Free 32=Travel; 656 + 657 +To set blinking, use CLB with the value of your choosing. To activate blinking in multiple status, simply add together the values of the corresponding status. See examples below: 658 + 659 +Ex: #5CLB0<cr> to turn off all blinking (LED always solid) 660 +Ex: #5CLB1<cr> only blink when limp 661 +Ex: #5CLB2<cr> only blink when holding 662 +Ex: #5CLB12<cr> only blink when accel or decel 663 +Ex: #5CLB48<cr> only blink when free or travel 664 +Ex: #5CLB63<cr> blink in all status