Skip to content

Releases: srobo/servo-v4-fw

Release 4.4

25 Apr 21:47
Compare
Choose a tag to compare

Allow for extra short pulse times

By setting NUM_SERVOS to 8 the minimum pulse time is reduced to 300us. This does render the auxiliary servo ports unusable.

Full Changelog: 4.3...4.4

Version 4.3

06 Jul 20:15
b961425
Compare
Choose a tag to compare

A full rewrite of the servo board firmware using a USB-serial interface.

Additional changes:

  • Added full handling for I2C NACKs & hangs to prevent I2C issues stalling MCU
  • Servo setpoint is set as a microsecond pulse length between 500-4000us, allowing the API to define the active servo range
  • Added reset command
  • Added regulator current and voltage sensing
  • Added active servo LEDs
  • Added command to read back the servo positions
  • Added status command to monitor for I2C and power supply issues

A notable change is the disabling of the power link for the upper 4 servos. This protects the servo board from accidental damage if power is applied to the AUX power input.

Serial Commands

Action Description Command Parameter Description Return Return Parameters
Identify Get the board type and version *IDN? - Student Robotics:SBv4B:<asset tag>:<software version> <asset tag>
<software version>
Status Get board status *STATUS? - <Watchdog fail>:<pgood> <Watchdog fail> - watchdog timeout, int, 0-1
<pgood> - power good, int, 0-1
Reset Reset board to safe startup state
- Disable all servos
- Reset the lights
*RESET - ACK -
Disable output Disable a servo output,set to 0 pulse width SERVO:<n>:DISABLE <n> servo number, int, 0-11 ACK -
Set position Set the position of a servo SERVO:<n>:SET:<value> <n> servo number, int, 0-11
<value> servo duty time, us, 500-4000
ACK -
Get position Get the current position setting for a servo SERVO:<n>:GET? <n> servo number, int, 0-11 <value> <value> servo duty time, us, 500-4000
Read servo current Get total 5V current draw SERVO:I? - <current> <current> - current, int, measured in mA
Read servo voltage Get 5V SMPS output voltage SERVO:V? - <voltage> <voltage> - voltage, int, measured in mV
Debug servo values Print the internal values for servo pulses *DBG:SERVO:<phase> <phase> - Servo output phase number, int, 0-3 <phase data> <phase data> - Raw servo phase values