To make a change to an individual
parameter, read both of the values
stored at the checksum and the
parameter EEPROM locations.
Calculate the difference between the
new parameter value minus the old
parameter value, then subtract this
value from the checksum value. Write
these two new values to the EEPROM.
Remember, if the checksum value
becomes negative, it needs to roll over
to 255 again.
For example, if I wanted to change
the Servo ID from its default value of
0x00 to 0x0A ( 10 decimal), then I can
write a program to read the two
EEPROM locations as shown here using
the 0xE1 command. (Note the values
shown are from the HSR-5980SG
servo). Then I make the overall
checksum change calculation, also
shown in Table 3.
These two new values are then
programmed back to the same
EEPROM addresses using the 0xE2
command as shown. Remember,
the checksum value calculated above
is the overall EEPROM checksum
value, which is sent as Param2, and is
not the same checksum value that is
computed for each command packet
sent to the servo as described earlier
(see Table 4).
In order for these parameter
changes to take effect, the servo must
be powered down and restarted. If
there was an error in calculating the
checksum, the servo will still work but
the motor will be disabled until the
problem is corrected.
If for some reason the servo stops
functioning properly due to programming problems, the HMI Servo
Programmer software has a servo reset
feature that will reset the servo back to
the factory defaults. All you need to do
is start the program, select the servo
type, and select “Servo Reset” under
the File menu item. Then press the Yes
button, and the servo will be reset back
to its original condition.
At this point, you should have all
the information needed to control
these servos using serial communica-
tions. By monitoring the data being
transmitted between the servo and the
computer (using a program like the
Free-Serial-Port-Monitor), the specific
parameters and their functions can be
determined. This information can then
be modified to change your servo
performance characteristics.
At some point, someone will take
the time and, using the steps presented here, compile a complete list of all
of the parameters and their functions
for the different HSR servos and
publish them to make our lives easier.
At 19200 baud, it will take about 4
ms of time to send the seven byte data
package. This takes about twice as
long to command a servo than using
the traditional pulse width method. But
the command only needs to be sent
once, the 20 ms servo update is no
longer needed, velocity is now a
control parameter, and with the
feedback information from the servos,
true closed loop positional and velocity
control of these servos can easily
be achieved. SV
HE8EJI FH;<;H >?J; 9 )0'
.EW 2OBOT 3ERVOS
>_j[Y
Ej^[h 8hWdZ
+ 65 6*
6SHHG VHF
7RUTXH R] LQ
6WHHO *HDUV
+ 65 6* + 65 7*
6SHHG VHF 6SHHG VHF
7RUTXH R] LQ 7RUTXH R] LQ
6WHHO *HDUV 7LWDQLXP
$// 63(&,),&$7,216 $7 92/76
7KH UHVXOWV RI DQ LQIRUPDO SROO WDNHQ UHFHQWO\ DW WKH )LUVW
$QQXDO :RUOG 'RPLQDWLRQ 6\PSRVLXP DUH QRZ LQ 5RERWV
SUHIHU +LWHF VHUYRV RYHU RWKHU VHUYR EUDQGV 7KH\ NQRZ WKH ZLGH
VHOHFWLRQ RI +LWHF DQDORJ DQG GLJLWDO VHUYRV SURYLGH WKHP ZLWK WKH SRZHU DQG GHSHQG
DELOLW\ QHHGHG WR HYHQWXDOO\ WDNH RYHU WKH :RUOG 0DNH \RXU URERW KDSS\ XVH +LWHF VHUYRV
3DLQH 6WUHHW _ 3RZD\ _ &DOLIRUQLD _ _ _ ZZZ KLWHFUFG FRP
20 SERVO 01.2008