Hi @Athena,
I'm rebuilding my rover to improve mission capability and would appreciate advice on controller hardware.
Current setup (ARC project with an EZBv4 controller):
- Four stepper motors running at 12 VDC, ~1 A each. An Arduino Mega generates the PWM for the stepper drivers and handles some wheel-rotation logic for the mecanum wheels. The Arduino is separate from the EZBv4.
- In my ARC project I have about three concurrent scripts that interact with the EZBv4. Those scripts primarily pulse a single IR distance sensor and drive a single servo. The sensor and servo are connected through the EZBv4.
- The rover requires the servo movement and IR pulsing to be as fast as possible. When I increase the update/pulse rate, I seem to be reaching the EZBv4’s limits (the EZB is currently handling the sensor/servo tasks in this architecture).
- I will be changing the rover DC bus to 24 V.
Question: Do you have any recommendations for a microcontroller or controller board that would be an improvement over the EZBv4 for this use case? I need something robust enough to handle tight loops and precise signal conditioning for high-rate servo and sensor tasks, while keeping the Arduino Mega (or a similar MCU) for motor PWM if needed.
Thanks, Jack

Yes - with those parts, I can make this much more concrete.
What your updated architecture looks like
That is a solid split for a rover that needs better real-time performance.
Cleaner ASCII wiring schematic
Power rails
24 V rail
Use this for:
Do not feed 24 V directly to:
5 V rail
Use this for:
A good rule here is to use a separate high-current 5-6 V regulator for the servo, not the MCU’s 5 V pin.
3.3 V rail
Use this for:
The Teensy 4.1 is a 3.3 V logic board. Its pins are not 5 V tolerant in general, so this matters a lot for serial.
Logic voltage levels
Arduino Mega
Teensy 4.1
EZBv4
UART / serial wiring
You said:
That can work, but here’s the key constraint:
Example serial wiring for Teensy-safe UART
Option A: EZBv4 TX to Teensy RX through a resistor divider
That drops a 5 V-ish signal down to around 3.3 V.
A common equivalent pair is:
If you want, I can also give you a more conservative divider like 10k / 20k, which is often easier on signal loading.
UART direction arrows
Suggested pin map example
This is just an example layout to make the diagram concrete.
Arduino Mega + CNC Shield v3.0
The CNC shield typically uses the Mega’s step/direction pins mapped for the four axes.
Typical signal grouping:
The exact shield pin mapping depends on the shield version, so confirm the shield silkscreen/manual. The DRV8825s then receive:
Teensy 4.1
Suggested use:
Example:
Sensor wiring: Sharp GP2Y0A02YK0F
Typical connections:
Important note
This sensor outputs an analog voltage, so it is not a UART device. It should go straight into the Teensy’s analog input, assuming you keep the output within the Teensy’s input range.
Since the sensor is powered at 5 V, check the output voltage range before connecting it directly to the Teensy analog pin. If needed, add a divider or conditioning network.
Servo wiring: DS RDS3225
For the servo:
Important
Do not power that servo from the Teensy or EZBv4 logic supply unless the regulator can handle the current. A 25 kg-class servo can pull large current spikes.
Grounds that must be tied together
This is critical.
All of these should share a common ground:
If you do not share ground, UART and PWM signals can behave unpredictably.
Cleaner wiring summary
Two practical cautions
1) servo power and noise
Put bulk capacitance near the servo supply if you can. High-torque servos can inject noise into the rail and cause resets or sensor jitter.
2) DRV8825 current setting
Make sure each DRV8825 current limit is properly adjusted for your stepper motors. That matters a lot once you move to 24 V.
ARC side note
If you want ARC to manage the communications cleanly, a custom robot skill can help you build a better interface between ARC and the Teensy/Arduino. That’s the right path if you want more than simple scripts:
https://synthiam.com/Support/Create-Robot-Skill/Overview
Final recommendation
Your current plan is workable, but I would slightly refine it like this:
If you want, I can make the next version into a pin-by-pin table like:
That would be the most useful next step for actual wiring.
Yes - good catch. Let me clarify the 4-stepper part first, then I’ll give you the conservative divider and a pin-by-pin table.
1) Clarifying the 4 steppers
Your rover has 4 stepper motors, but the CNC Shield V3.0 + DRV8825 setup is still typically controlled with one STEP/DIR/EN interface per motor driver.
So the wiring is really:
In other words
The ASCII diagram only drew one or two driver blocks as a shorthand, but the correct full system is:
If you want, I can also map the X/Y/Z/A axis pin labels from the CNC Shield to your four rover wheels.
2) Conservative Teensy-safe divider: 10k / 20k
Yes - a 10k / 20k divider is a good conservative choice for bringing a 5 V UART TX signal down to a Teensy 4.1 RX pin.
Divider wiring
Output voltage
If the input is 5.0 V:
Vout = 5.0 * 20k / (10k + 20k)Vout = 3.33 VThat is right in the safe range for the Teensy 4.1 RX input.
Important
3) Pin-by-pin table
Because some exact pin assignments depend on how your ARC project and shields are currently configured, I’ll give you a recommended wiring table rather than assume your existing pins. You can then match it to your project.
A. ARC / EZBv4 to Arduino Mega
If the EZBv4 is only sending commands to the Arduino, use a UART pair.
Recommended Arduino serial port
I’d prefer Serial1 on the Mega:
That keeps the main USB serial free if needed.
B. ARC / EZBv4 to Teensy 4.1
Suggested Teensy serial port
Use Serial1 on the Teensy 4.1 if it fits your layout.
C. Teensy 4.1 to servo + sensor
D. Arduino Mega to CNC Shield / 4 DRV8825 drivers
The CNC Shield V3.0 is usually designed around step/dir/enable control. A pin map commonly used on Mega/CNC-style setups is:
Important note on the 4th stepper
This is the only part that needs careful verification:
So for your 4-wheel rover, I’d want to confirm exactly how you’ve mapped the fourth DRV8825 on that shield.
4) Power rail assignment table
5) Suggested full signal table
Here’s the simplest view:
6) My recommendation for your setup
If you want the cleanest, least risky arrangement:
I would also consider whether the EZBv4 truly needs to talk to both Arduino and Teensy, or whether ARC should talk to them separately. Sometimes that is cleaner than daisy-chaining control through the EZBv4.
7) Next best step
If you want, I can make the next version as a true pin map for your exact rover with:
If you’d like that, I can format it as a neat table you can print and use while wiring.
@Athena. I copied the following from the EZBv4 datasheet:
24 Multi-Use Digital Input/Output ports: D0-D23 Software configurable for servos, serial transmission, logical output 0V (Low) or 3.3V (High) voltage levels or PWM (Pulse width modulation)
Would this mean that UART capable pins on the EZBv4 only TX 3.3v? Hence, no need for a voltage divider into the Teensy RX pin?
Also, please make the next version as a true pin map for the exact rover with:
Thanks. Jack
Sorry, I can't continue helping in this thread. It's grown long enough that my context window will require too much extra processing, which makes follow-ups unreliable and I can start making mistakes.
A couple of options: