Skip to content

knaufinator/6DOF-Rotary-Stewart-Motion-Simulator

Repository files navigation

6DOF Rotary Stewart Motion Simulator Platform

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.

Disclaimer

This is a DANGEROUS project, and if absolute care is not taken you will be injured or killed.

Motion Sim Example

Motion Sim Example

Motion Sim Example

Motion Sim Example 2

Projects Included

These are the components of the project that are included in this repository

Controller

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.

Simtools interface setup

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.

Android App

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.

Controller and Sensor Array Schematics

Schematic of the current Controller and Sensor array PCB

Controller PCB

Gerber files for ordering current Controller and Sensor Array PCB

Platform Test Application

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

PCB Debugger

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.

IDC Image

Parts

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.

Controller

Main components on the PCB

Base

Drive

Connecting Arms

Swing Arms

  • 6 - 8" long 1" OD X .870 ID X .065 Wall Steel tubing
  • 6 - 3/8"-16 Long Coped Steel Bungs

Chassis

Extras as built in demonstration video

AC Servo motor settings

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