Acrome-SMD Docs
All Acrome ProductsReferencesBlogCase StudiesContact Us
  • ACROME SMD
  • Electronics
    • 🔴SMD Red
      • Coding Guide
      • Robot with Raspberry Pi Setup Guide
      • Robot with Arduino Setup Guide
      • Troubleshooting Guide
    • 🔵SMD Blue
    • 🟢SMD Green
    • Gateway Modules
      • Arduino Gateway Module
      • USB Gateway Module
    • Electrical Motors
      • Brushed DC Motors (BDC)
      • Stepper DC Motors (SDC)
      • Brushless DC Motor (BLDC)
      • Linear Actuator with Feedback
    • Add-on Modules
      • Ambient Light Sensor Module
      • Button Module
      • Buzzer Module
      • IMU Module
      • Joystick Module
      • Potentiometer Module
      • Reflectance Sensor Module
      • RGB LED Module
      • Servo Module
      • Ultrasonic Distance Sensor Module
  • SMD Kits
    • Starter Kit
      • What You Can Build
    • Education Kit
      • What You Can Build
    • Motion Kit
      • What You Can Build
  • Software
    • Libraries
      • Python Library
      • Arduino Library
      • Java Library
      • Matlab Library
    • SMD UI
    • SMD Blockly
      • Introducing Customized Blockly Blocks
  • SMD Applications
    • Basics
      • Blink
      • Action - Reaction
      • Autonomous Lighting
      • Smart Doorbell
      • Security System
      • Distance Buzzer Warning
      • Distance Auto Stop
      • Smart Light Control
    • Interactive
      • Automatic Trash Bin
      • Radar
      • Chrome Dino Game Player
      • Play Chrome Dino Game With Joystick
      • Snake Game With Joystick
      • Pan-Tilt with Joystick Module
      • Joystick Mouse Control
      • Rev Up the Engine
      • Motor Rotation Based on Turn Input Value
      • Basic Motor Speed Control Application
      • Basic Motor Control Application Using PWM Input
      • Basic Motor Position Control Application
      • Basic Motor Torque Control Application
      • Motor Rotation Based on Joystick Counting
    • Robotics
      • Differential Robot Projects
      • Mouse Cursor Tracker Motion Robot
      • Waypoint tracker robot
      • Braitenberg Robot
      • Line-Follower Robot
      • Teleoperation Robot
      • Obstacle Avoidance Robot
      • ESP32 Wireless Controlled Mobile Robot
  • AI
    • Object Tracking Robot
    • Groq Chatbot-Controlled Robot
  • ROS
    • Teleoperation Robot with ROS
  • Mechanics
    • Building Set
      • Plates
        • 2x2 Plate Package
        • 2x3 120° Plate Package
        • 3x3 Plate Package
        • 3x5 Plate Package
        • 3x9 Plate Package
        • 11x19 Plate
        • 9x19 Plate
        • 5x19 Plate
        • 3x19 Plate
        • 9x11 Plate
        • 5x13 Plate
      • Joints
        • 60° Joint Package
        • 90° Joint Package
        • 120° Joint Package
        • Slot Joint M2 Package
        • Slot Joint M3 Package
        • U Joint Package
      • Mounts
        • Add-on Mount Package
        • Motor L Mount Package
        • Pan-Tilt Package
      • Wheels
        • Ball Wheel Package
        • Caster Wheel Package
        • Wheel Package
      • Cables
        • Power Cable 10 cm Package
        • Power Cable 20 cm Package
        • Power Cable 35 cm Package
        • RJ-11 Cable 7.5 cm Package
        • RJ-11 Cable 20 cm Package
        • RJ-11 Cable 35 cm Package
        • RJ-45 Cable 7.5 cm Package
        • RJ-45 Cable 20 cm Package
        • RJ-45 Cable 35 cm Package
      • Fasteners
        • M2x5 Allen Hex Screw Package
        • M3x6 Allen Hex Screw Package
        • M3x8 Allen Hex Screw Package
        • M3 Hex Nut Package
  • Help
    • Manual
    • Shops
    • Reach Us
Powered by GitBook
On this page
  • 1. Connection & Detection Issues
  • 2. Motor Not Moving or Moving Incorrectly
  • 3. Torque Enable and Operation Mode Setup
  • 4. Position, Velocity, and Torque Control Issues
  • 5. Encoder and Feedback Problems
  • 6. Servo Control Issues
  • 7. Watchdog and Safety Triggers
  • 8. Python SDK Usage Mistakes
  • 9. Communication and Timing Issues
  • 10. Diagnostic and Debugging Tools
  • 11. Environmental and Hardware Considerations
  • 12. Best Practices and Preventive Tips
  • Feedback
  1. Electronics
  2. SMD Red

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.

LED Color
Meaning
Details

🟡 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

  • Firmware and API version compatibility: Make sure the firmware and API are on the same major version (e.g., 2.*.*). You can verify this using the command:

get_firmware_version()

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:

  1. attach(Red(smd_id))

  2. set_operation_mode()

  3. set_shaft_cpr()

  4. 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 mode

  • Torque 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:

master.set_watchdog(module_id, 0, smd_id)

Problem: Motor disabled after overload

  • Check get_error_flags() for overcurrent or overtemperature

  • Use clear_errors() if needed

8. Python SDK Usage Mistakes

Common Errors:

  • Passing wrong module_id or smd_id

  • Forgetting to attach the device

  • Mixing up control modes (e.g., calling set_duty_cycle in POSITION 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() and scan_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

PreviousRobot with Arduino Setup GuideNextSMD Blue

Last updated 1 month ago

Found this page helpful? what you think.

🔴
Let us know