Troubleshooting Guide
A comprehensive guide to identifying and resolving issues when working with the SMD Red motor driver.
1. Connection & Detection Issues
Problem: SMD Red is not recognized over USB Possible Causes:
Faulty USB cable or port
Missing or incompatible USB driver
Incorrect serial port used in the code
Solutions:
Use the
USB_Port()
function from the SDK to auto-detect the correct port.Try with another cable and USB port.
Ensure drivers like FTDI or CH340 are properly installed (especially on Windows).
Restart the computer and try reconnecting the device.
Confirm the LED indicator is active.
🟡 Yellow
No EEPROM Save Detected
Stays on until user performs EEPROM save. Also appears after Factory Reset. If still lit after saving, EEPROM may have issues. Not considered an error by itself.
⚪ White
IDLE / Firmware Status
Solid: IDLE mode. Blinking fast (every 50ms): No valid firmware or hardware mismatch. Blinking slow (every 150ms): Scanning modules.
🟢 Green
Ready / Motor Active
Indicates the motor driver is active and ready to drive. Should be on when the motor is running.
🔵 Blue
Autotuning Active
Blinks during PID tuning. Torque must be enabled. It is normal to see blue and green together during this state.
🔴 Red
Overcurrent / Current Limit
Turns on when the motor draws excessive current or exceeds the defined current limit. Can resume by toggling torque off and on.
🟣 Purple
Communication Issue
Appears when communication fails between modules or host device.
🟦 Cyan
User Indicator
Blinks when userIndicator
is triggered by user code. Not shown unless explicitly activated.
Problem: attach(Red(ID))
fails or gives timeout
Make sure the correct
ID
is used for the SMD Red connected.Use
scan_modules()
to detect all available modules.
2. Motor Not Moving or Moving Incorrectly
Problem: Motor doesn’t respond to control commands Check:
Torque is enabled
Operation mode is set
CPR is configured
Problem: Motor rotates in the opposite direction
Invert the duty cycle (e.g., use
-value
)Physically switch motor wires if possible
Adjust inversion settings in software logic
Problem: Motor vibrates or moves erratically
Double-check the power supply
Lower the control frequency or PID gains
Reduce mechanical load temporarily to test
3. Torque Enable and Operation Mode Setup
Always ensure this sequence:
attach(Red(smd_id))
set_operation_mode()
set_shaft_cpr()
enable_torque()
Common Mistakes:
Enabling torque before setting mode/CPR
Setting wrong operation mode (e.g., using
POSITION
for a brushed DC motor)Forgetting to re-enable torque after changing settings
4. Position, Velocity, and Torque Control Issues
Problem: No movement in position control
Make sure target setpoint differs from current position
Use correct unit: ticks, not degrees
CPR must match the encoder used
Problem: Velocity setpoint has no effect
Confirm that the velocity mode is selected
Check if PID tuning is appropriate for your load
Problem: In torque control, motor draws too much current
Set a proper
current_limit
Check for mechanical resistance or misalignment
5. Encoder and Feedback Problems
Problem: get_position()
returns 0 or constant values
Encoder might not be connected
CPR not configured correctly
Shaft may not be moving
Problem: Sudden jumps or noisy feedback
Use shielded cables
Avoid running encoder wires near power lines
Add averaging/filtering logic in your application
6. Servo Control Issues
Problem: Servo doesn't move or jitters
Make sure it's in
POSITION
modeTorque must be enabled
CPR value should be appropriate (e.g., 4096 for 0–180° servos)
Problem: Set position command is ignored
Use
set_position(module_id, angle, smd_id)
Ensure the angle is within valid range (0–180 degrees, mapped to ticks)
7. Watchdog and Safety Triggers
Problem: Motor stops after a few seconds
Watchdog might be enabled and not refreshed
Disable it during development using:
Problem: Motor disabled after overload
Check
get_error_flags()
for overcurrent or overtemperatureUse
clear_errors()
if needed
8. Python SDK Usage Mistakes
Common Errors:
Passing wrong
module_id
orsmd_id
Forgetting to attach the device
Mixing up control modes (e.g., calling
set_duty_cycle
inPOSITION
mode)Not handling exceptions (wrap critical code in
try/except
)
9. Communication and Timing Issues
Problem: Communication timeout
Try reducing loop frequency
Add delays between high-frequency read/write operations
Use
get_driver_info()
andscan_modules()
to debug
Problem: Conflict with another serial device
Ensure the port is not in use by other software (e.g., Arduino IDE)
10. Diagnostic and Debugging Tools
Use the following SDK functions to debug:
get_driver_info(smd_id)
scan_modules(smd_id)
get_position(module_id, smd_id)
get_velocity(module_id, smd_id)
get_current(module_id, smd_id)
get_error_flags(module_id, smd_id)
11. Environmental and Hardware Considerations
Keep motor away from heat sources or enclosed areas
Avoid long unshielded cables for encoders
Check power supply stability under load
Ensure RJ-11 connectors are fully seated
12. Best Practices and Preventive Tips
Always initialize devices in proper order: attach → configure → enable
Use retry logic when reading feedback
Log sensor and motor states for debugging
Perform PID tuning under real load conditions
Keep firmware and SDK up-to-date
Avoid forcing motors when torque is disabled
Feedback
Last updated