Project Specification — SMC3 3DOF Motion Controller
Goal
Design a professional PCB that replaces the loose wiring used in existing EMR motion simulator builds. The board will contain two independent Arduino Uno-compatible ATmega328P controller sections, each with its own USB-C serial interface, so SimTools can see two separate controller interfaces.
Confirmed Architecture
- Interface 1: USB-C 1 + USB-UART 1 + ATmega328P MCU 1.
- Runs the uploaded SMC3 packet serial soft-start sketch.
- Controls the Sabertooth 2x60 for the two front motors.
- Uses two Hall/pot feedback inputs.
- Interface 2: USB-C 2 + USB-UART 2 + ATmega328P MCU 2.
- Runs the same SMC3 sketch with only one motor channel used.
- Controls the SyRen 50 for the traction-loss motor.
- Uses one Hall/pot feedback input.
- Power source: external 12 V, 600 W, 60 A PSU.
- Motor drivers: external Dimension Engineering Sabertooth 2x60 and SyRen 50 modules; the PCB provides power distribution, fused outputs, logic/serial/control wiring, feedback inputs, and E-stop integration.
- Feedback sensors: three Hall/pot style 3-wire sensors, treated as 5 V, GND, signal into ADC inputs unless later confirmed otherwise.
Uploaded Firmware Findings
The sketch is configured for MODE3, using Sabertooth packet/simple serial style control through SoftwareSerial:
- Hardware USB serial: pins D0/D1 via USB-UART.
- Motor driver serial: SoftwareSerial on D12/D13, with D12 = RX and D13 = TX in the sketch.
- Feedback inputs: A0, A1, A2.
- Optional motion scaler: A5, disabled unless firmware option is enabled.
- Standard SMC3 pin list still exists in comments for H-bridge modes, but the active uploaded configuration is
MODE3 for Sabertooth/SyRen style serial driver control.
Functional Blocks
-
12 V Power Distribution and Safety
- 12 V PSU input connector.
- Main E-stop relay/contactor path.
- Separate fused outputs for Sabertooth 2x60 and SyRen 50 feeds.
- Logic buck regulator from 12 V to 5 V.
- Bulk capacitance and reverse/transient protection as appropriate.
-
MCU 1 — Front Motor Interface
- ATmega328P at 16 MHz, 5 V logic.
- USB-C 1 to USB-UART bridge.
- ICSP header and reset button.
- SoftwareSerial TX to Sabertooth/SyRen-compatible serial output connector.
- Feedback connectors for Motor 1 and Motor 2.
-
MCU 2 — Traction Loss Interface
- ATmega328P at 16 MHz, 5 V logic.
- USB-C 2 to USB-UART bridge.
- ICSP header and reset button.
- SoftwareSerial TX to SyRen 50 serial output connector.
- Feedback connector for traction-loss motor.
-
Driver Interface Connectors
- Sabertooth 2x60 logic connector for ground and serial/control input.
- SyRen 50 logic connector for ground and serial/control input.
- External motor-power driver wiring kept high current and safety-rated.
-
Sensor / Pot Connectors
- POT/Hall 1: 5 V, signal to MCU 1 A0, GND.
- POT/Hall 2: 5 V, signal to MCU 1 A1, GND.
- POT/Hall 3: 5 V, signal to MCU 2 A0, GND.
- Optional RC filtering and input protection on each ADC input.
-
Indicators and Service
- Power LED.
- TX/activity LEDs for each USB-UART/MCU interface.
- Fault/E-stop indicator.
- ICSP headers for both ATmega328P chips.
Important Design Constraints
- The board should be professional and clear, minimizing off-board wiring compared with individual Uno boards.
- High-current 12 V motor power must be physically separated from USB/logic signals.
- 60 A-class current is not suitable for thin PCB traces. The board should either use heavy copper/busbar/high-current terminals or route motor power externally through rated fuses/relay/driver terminals.
- E-stop must interrupt motor power or driver enable in hardware; firmware-only E-stop is not sufficient.
- USB-C ports are USB 2.0 device ports, not USB Power Delivery inputs.
Open Items Before Final PCB Layout
- Exact connector series and wire gauge target for 12 V/motor wiring.
- Whether high-current 12 V distribution will be carried on the PCB copper or handled by external wiring/busbars mounted to the board.
- Exact Hall sensor model/output type if different from 0–5 V analog.
- Desired board size and enclosure/mounting hole constraints.