Compact yet powerful motion simulator platform utilizing 6 AC servo motors with AASD15A Servo Drivers. High presicion planetary gears used to multiply the torque. Custom PCB using a ESP32 microcontroller to process the platform position. The ESP32 Controller base has a Bluetooth capability that is being used by a custom Android app using Ble standards to Configure platform parameters. Also featuring a soft pause/estop button, this will prevent position updates from the pc. This project contains 2 custom PCB's one main controller board that contains the ESP32 microcontroller, as well interfaces with the 6 AC Servo drivers, and 1 sensor array PCB that takes the 6 magnetic arm limit switches, combines the signals into 1 ethernet cable that is then connected to the main PCB.
This platform is scalable, and most dimensions are changeable within reason. Certain general design rules will need to be followed, in order for the platform to function correctly.
This is a DANGEROUS project, and if absolute care is not taken you will be injured or killed.
These are the components of the project that are included in this repository
This is an ESP32 Arduino project. This interfaces with the PC through software like Simtools to AASD15A AC Servo Drivers, after correctly configuring. This project utilizes both ESP32 cores in order to maximize refresh rates to 1000Hz, or 1ms interval. A custom MCP23S17 library is included so the outputs of all 6 motors can be set at one time instead of setting them individually, this saves time and allows for more pulses per second. This increase allows for higher movement precision on the rotational arm. There is also a filter library included, this is still in early testing.
Config for PC to ESP32 USB-> Serial connection within simtools, simtools will be configured to send the 6 axis parameters over to the ESP32 every 1 ms. Over a 115200 baud connection. The packet consists of 6 - 12 bit values, delimited by comma and ended by a "X" Character to signal the ESP32 that the packet is done.
For simtools you encode the axis representations of x,y,z,Ry,Rx,RZ with the configuration"Interface - Output" = <Axis1a>,<Axis2a>,<Axis3a>,<Axis4a>,<Axis5a>,<Axis6a>X
With these settings the software package Simtools or any other custom application may communicate and command the simulator platform to move.
This is a test application that will connect to the ESP32 microcontroller driving the AC servos, currently can stop/resume movement, and early filter adjustments. further functionality will be added to this as time progresses.
Schematic of the current Controller and Sensor array PCB
Gerber files for ordering current Controller and Sensor Array PCB
.Net Application for testing position limits and speed of platform. Allows for manual setting of each DOF / Axis. As well works with XBOX360 controller through the PC USB wireless adapter.
This is a Arduino program that you can use on the main PCB to test to make sure that the GPIO - motor outputs are working correctly using a multimeter. This will turn all ports on and off at a 5 second interval. slow enough for the multimeter to pick up the switch. Useful when you are debugging non moving motors, cold solder joints.
To test, check the voltage at pin 2 (step), and pin 9 (dir) w/ground on the ESP32. Voltages should swing between 5v and 0, for about 5 seconds each. test each IDC26 connector to ensure all outputs are working. if you notice non functional, futhur troubleshooting is needed. often this is a bad solder joint.
These are some key parts I used, others can be used in their place, but variations of the AC Servo motor may not be compadible with the PCB, and may require a modified PCB schematic.
Main components on the PCB
- 30p ESP32 Dev board - ESP32 Dev kit
- MCP23S17 -
- 3.3V to 5V TTL Shifter Module -
- NJK-5002C NPN NO(Normally Open)Hall Effect Sensor Switch
- Steel plate ½ inch thick 31” diameter
- 6 - Coupler https://amzn.to/2slOiIa
- 6 - 750w AC servo Motors
- 6 - 50:1 Planetary Gears *Note ensure planetary gear input diameter matches up to both the motor as well with the coupler output diameter when ordering from Aliexpress
- 12 - 1/2 X 1/2-20 Economy Panhard Bar Kit with Bung .065, Rod End, Heim Joint
- 12 - 1/2-3/8 High Misalignment Spacers, Rod End Spacers
- 6 - 24" long 1" OD X .870 ID X .065 Wall Steel tubing
- 6 - 8" long 1" OD X .870 ID X .065 Wall Steel tubing
- 6 - 3/8"-16 Long Coped Steel Bungs
- LG 34" Ultrawide
- Thrustmaster T16000M FCS
- Wind Generator Fan
- Wind Generator PWM Control
- Wind Generator 90 Degree angle 3"-> 2" Reducer
- Wire Wrap
These are my settings on the Servo Driver aasd-15a these both enable specific modes as well define the time it should take to accelerate and decelerate the platform before it hits max speed. This is useful for when you want to protect the platform from self destruction due to the fast movements. Make them to large and the platform will feel slugish.
- pn002 - Control Mode - "002"
- pn003 - Servo enable - "001"
- pn098 - Gear - "80"
- pn109 - Position command deceleration mode- "002"
- pn110 - Position command a filtering time constant - "050"
- pn111 - S-shaped filtering time constant Ta position instruction - "50"
- pn112 - position instruction Ts S-shaped filtering time constant Ts - "50"
Input Designation
- pn52 - 23 Sigin 1 - homing trigger
Home location after sensor is activated
- pn36 - +/-11 X1000 pulses to get you in the ballpark area after home trigger
- pn37 - ~ +/-5000 as needed for precision to finish off where you want the arm to land after home trigger
- pn38 - 100 init speed
- pn39 - 100 back home speed
homing rotation direction settings
- pn033 -3 power on homing
- pn034 - 0 clockwise
- pn034 - 1 counter clockwise