Task Script icon Task Script Split complex robot tasks into sequential scripts, synchronizing asynchronous skills via NEXT/CANCEL commands for staged automation. Try it →
Asked

Stepper Motor Control In ARC

Hi - I'm looking at using NEMA 17 stepper motors to control my robot's head rotation and possibly a four-wheel omniwheel drivetrain. I plan to control the motors from the ARC Movement Panel. How would you suggest I implement this within the ARC system?

For clarity, I haven't decided how the steppers will be connected - will they be driven through an EZB (robot controller running Synthiam firmware) or via external stepper drivers/interface connected to the PC (USB/serial)? Also, should I rely on existing Robot Skills for movement/servo control or use ARC's JavaScript/Python scripting for custom logic? Any guidance on the preferred hardware connection and whether Robot Skills or scripting are more appropriate would be helpful.



Related Hardware (view all EZB hardware)
EZ-B Iotiny by EZ-Robot
Control IoTiny with Synthiam ARC: 100MHz Cortex‑M4 Wi‑Fi IoT/robot controller-camera, servos, ADC, I2C and digital I/O for easy internet automation
Wi-Fi / USB
Servos 8
Camera
Audio
UART
I2C
ADC
Digital

Related Robot Skills (view all robot skills)
Control brushless motor controllers (hoverboard-style) via EZ-B: configure direction, speed and optional brake ports for DIY robot movement.
Stepper Servo by Synthian Inc.
Control up to 127 stepper motors via Arduinos mapped to ARC servos; supports any stepper driver, serial network, home calibration, speed/accel.

ARC Pro

Upgrade to ARC Pro

Stay on the cutting edge of robotics with ARC Pro, guaranteeing that your robot is always ahead of the game.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

Yes - ARC can control stepper motors, but the best implementation depends on what you want the stepper to do:

1) For a head rotation stepper

Use the Stepper Servo robot skill.

That skill lets ARC treat a stepper like a servo using a virtual servo port (v0 to v99), which is a very clean fit for something like pan/tilt or head rotation.

With that setup, you can do things like:

Servo.setPosition(v1, 90)

or use the GUI and scripts together.

This is usually the best route if you want:

  • repeatable positioning
  • home/calibration support
  • speed/acceleration control
  • simple ARC integration

2) For a 4-wheel omniwheel drivetrain

I would not recommend using steppers directly through ARC Movement Panel unless you already have a dedicated stepper motor controller layer that handles:

  • closed-loop or open-loop stepping
  • acceleration/deceleration
  • synchronized multi-axis motion
  • homing / calibration
  • motor current handling

For drivetrain motion, ARC’s Movement Panel is best when the hardware underneath already behaves like a movement system. Steppers can be used, but they usually need a proper motor controller architecture behind them.

ARC Movement Panels are designed to abstract the robot’s motion, but the actual motor control still needs to be provided by hardware or a skill that implements that movement behavior.


Hardware connection options

Option A: External USB/Serial stepper controller

This is often the most flexible choice for NEMA 17 motors.

Use:

  • a microcontroller or dedicated stepper controller
  • connect it to ARC via USB serial
  • control it from ARC using:

This is usually the better option if you want:

  • high torque
  • proper stepper driver support
  • custom motion logic
  • multiple motors coordinated together

If you go this route, ARC scripting with JavaScript or Python can be used to send commands to the device over serial.


Option B: EZ-B / IoTiny directly

If the stepper system is already handled by a supported robot skill, this can work well.

For example:

  • Stepper Servo skill uses virtual servo ports
  • ARC then commands the stepper like a servo
  • the actual stepper driver hardware is handled by the skill/firmware layer

For IoTiny, keep in mind the port power is often unregulated on many I/O ports, so you must be careful with motor power and logic levels. NEMA 17 motors will definitely need proper external driver hardware - ARC/EZ-B should not drive them directly.

IoTiny hardware overview: https://synthiam.com/Support/Hardware/EZ-B-IoTiny


Robot Skills vs scripting

Use a Robot Skill when:

  • the behavior is already supported
  • you want UI-based configuration
  • you want the Movement Panel or servo interface to handle the motion
  • you want the easiest maintenance

Use JavaScript/Python scripting when:

  • you need custom coordination logic
  • you want to sequence multiple motors
  • you need sensor-based decisions
  • you want to translate joystick/head/drivetrain commands into custom stepper commands

Best practice

Usually the best design is:

  • Robot Skill for the hardware interface
  • JavaScript/Python for behavior and automation

That keeps ARC organized and easier to maintain.


My recommendation for your project

For the head

Use:

  • Stepper Servo skill
  • virtual servo port like v1
  • script control if needed

For the omniwheel drivetrain

Use:

  • a dedicated motor controller / microcontroller
  • connect via USB serial
  • build either:
    • a custom robot skill, or
    • a scripting layer that sends movement commands to the controller

If you want the drivetrain to participate in ARC’s Movement Panel ecosystem, then the cleanest route is to build a Movement Panel or use a skill that acts as the movement interface. ARC does support custom Movement Panel behavior.

Movement panels overview: https://synthiam.com/Support/ARC-Overview/movement-panels


If you want to build something custom

If there isn’t an existing skill for your stepper controller, Synthiam recommends building a custom robot skill:

https://synthiam.com/Support/Create-Robot-Skill/Overview

That would be the path if you want a specialized stepper drivetrain controller that integrates tightly with ARC.


Quick question

What stepper driver or controller are you planning to use?

For example:

  • DRV8825 / A4988
  • TMC driver
  • Arduino-based controller
  • USB stepper controller
  • something else

If you tell me the exact hardware, I can suggest the best ARC architecture and whether you should use:

  • Stepper Servo
  • a Movement Panel
  • JavaScript/Python
  • or a custom robot skill
I am a customer support AI and still learning. Please verify important answers in our support documentation. For advanced AI features, use the AI Script Agent built into ARC.