1. Do not share user accounts! Any account that is shared by another person will be blocked and closed. This means: we will close not only the account that is shared, but also the main account of the user who uses another person's account. We have the ability to detect account sharing, so please do not try to cheat the system. This action will take place on 04/18/2023. Read all forum rules.
    Dismiss Notice
  2. For downloading SimTools plugins you need a Download Package. Get it with virtual coins that you receive for forum activity or Buy Download Package - We have a zero Spam tolerance so read our forum rules first.

    Buy Now a Download Plan!
  3. Do not try to cheat our system and do not post an unnecessary amount of useless posts only to earn credits here. We have a zero spam tolerance policy and this will cause a ban of your user account. Otherwise we wish you a pleasant stay here! Read the forum rules
  4. We have a few rules which you need to read and accept before posting anything here! Following these rules will keep the forum clean and your stay pleasant. Do not follow these rules can lead to permanent exclusion from this website: Read the forum rules.
    Are you a company? Read our company rules

2 DOF motion rig using 4 wiper motors & Arduino

Discussion in 'DIY Motion Simulator Projects' started by Captain Jack, Nov 20, 2021.

  1. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    Hi,

    I'll detail my setup below. Let's start with the frame:

    Frame is based on an off-the-shelf play seat (light & foldable) + a DIY frame built to support motion. I don't have a welder so had to drill a ton of holes and assemble the frame. Somehow, all holes ended up fitting, which is a small miracle in itself.

    Steel used to make the frame (already cut to size):
    IMG_3043.jpg

    Parts were painted using a can of black automotive primer:
    IMG_3042.jpg

    The universal joint that supports the frame was screwed into two steel plates and then welded to prevent it from twisting:
    IMG_3080.jpg


    This is the rear beam that has mounting points for the ball joints to connect to motors - painted & assembled in the photo. The right-angle brackets are held with two screws each - only one visible in the photo as the other one will be added later as it screws into another piece of frame:
    IMG_3089.jpg

    Frame assembly continues:
    IMG_3086.jpg

    Mostly finished frame below - this attaches to the original playseat frame
    IMG_3128.jpg

    Attaching the DIY frame to the playseat frame:
    IMG_3132.jpg

    Universal joint location shown below:
    IMG_3134.jpg

    Standing on its own rubber feet!
    IMG_3136.jpg

    Finished frame below (still no motors though):
    IMG_3137.jpg

    Lessons learnt when making a frame:
    - I've used a universal joint from aliexpress to support the frame. While it is strong enough, it doesn't prevent the frame from twisting well enough - will need to add a support to prevent this as the frame tends to wobble side to side too much for my liking.
    - If your frame is assembled with bolts like mine and not welded, drill the holes slightly bigger for a better chance of the parts fitting together during assembly. I used 10mm holes to fit M8 bolts
    - Rubber pads are much better than felt pads under the frame in preventing the frame from sliding on the floor. Not a big deal at all for a weak 2 DOF wiper rig like mine, but if yoiu have a powerful sim with high angles of deflection, rubber holds almost like glue.
    - I've painted the steel frame with a black automotive primer. It took 3 layers for a very clean look. It looks as good as a factory finish. I obviously had the steel prepared but it was straightfoward. Note that the primer is not as durable as if the frame was painted but it's good enough, looks excellent and very straightforward to apply - 3 layers and you are good to go. Takes 10 minutes between layers to dry.

    More photos coming soon
    • Like Like x 2
    • Winner Winner x 1
    Last edited: Nov 20, 2021
  2. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    Now, onto the motors, which is what makes this build slightly different than others.

    I didn't want to spend big money on industrial worm gear motors and decided to use wiper motors as I could get new ones for equivalent of 20$ each. Because this build is not a seat shaker but a full moving frame, I decided to go with 4 wipers motors to have enough power. 2 motors will work in parallel on each axis (this is a 2 DOF rig).

    I bought four 12V motors meant for a Fiat Ducato delivery truck. I've no idea if they are stronger than typical passenger car wiper motors but that was my assumption - delivery truck is bigger...

    To make motor mounts, I used 3D printed parts. 3D printing is one of my hobbies. I used regular PLA for all 3D-printed parts (20$ for 1kg of plastic). Most parts were printed with 50% infill with the exception of the motor arms, which I printed with 100% infill for extra strength.

    This is what the motor mount and motor arm look like (arm length from axis to the 8mm hole is 65mm):
    IMG_3163.jpg

    Please note that most wiper motors need to be ground-isolated. I didn't want to do it so I looked for motors that didn't have ground wired together with the metal gear casing. If you google "fiat ducato wiper motor", you will see that the motors I used have wires coming directly out of the motor. If you unplug those wires from the PCB, these motors don't need ground isolation!

    The motors will be powered by a 750W server power supply. I've read some posts on the forum earlier that these server power supplies have built-in over-current and voltage protections that can trigger shutdowns when running electric motors.

    To mitigate this, I used a bridge rectifier hooked up in a way to prevent reverse voltage from the motors (when they are freewheeling) from reaching the power supply. The downside of this solution is that you lose 0.7V from the voltage reaching the motors, which means slightly less power available and the bridge rectifier may get hot (due to it dissipating the energy from the 0.7V voltage drop). I had it mounted directly to the steel frame so heat is not an issue.

    For extra safety against the power supply shutting down, I also added a big 35V 22000uF capacitor to the circuit before the bridge rectifier to support current spikes.

    Partially complete wiring loom shown below. I used a long wire for the bridge rectifier as it is mounted to the steel frame directly - the frame acts as a radiator. You can also see the capacitor and a 30A automotive fuse.

    IMG_3153.jpg
    • Like Like x 2
    Last edited: Nov 20, 2021
  3. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    Let's talk about the electronics now, which consist of an Arduino Uno and two IBT-2 motor drivers.

    I've mounted everything in a project box for a tidy installation. I underestimated the amount of wiring needed though. Everything ended up fitting but it's a tight fit.

    Arduinos are attached with hot glue:
    IMG_2725.JPG

    As you can see, there are 2 Arduinos. You only need one for the motion sim to run SimTools. The second one is to manage bass shakers, vibration motors and fans that simulate wind. If you look in the previous photos, you will see the bass shaker under the seat and the fans above the steering wheel. This second Arduino runs a sketch that connects to SimHub, which is a separate piece of software that runs in the background when you play a game.

    Here's a close up of the bass shaker and one of the vibration motors under the seat. I used a flexible cutting board from Ikea to mount everything - it worked out great. You can't feel there's anything under the seat.
    IMG_2754.JPG

    In total, there are 5 vibration motors:
    - one under the seat
    - one in the seat back
    - two under the pedals
    - one attached to the brake pedal to simulate ABS

    Another vibration motor seen here:
    IMG_2758.JPG

    There are also 3 bass shakers (100W + 2x 15W) - one big one under the seat and two small ones attached with double-sided tape near the pedals.

    The front of the electronics box has switches to control various functions. The 750W server power supply is attached with double-sided tape to the case. The other black part is a powered USB Hub (I'm using 3 USB connections so far - steering wheel + 2x Arduino, may add a HOTAS in the future).
    IMG_2726.JPG

    The switches are wired as follows:
    1 Blue - 220v mains power
    2 Blue - 220v for the steering wheel
    1 Red - Motion
    1 Red - Fans
    1 Red - Vibration

    Please note that I used a 40A automotive relay to power the motion motors, the switch only turns on the relay.

    Nearly completed electronics below, which are starting to look like a spaghetti monster:
    IMG_3157.jpg

    Most of the wiring coming out of the back is to power the vibrations motors and fans. Note that there is a 30mm fan pulling in air in the back of the case - this is to provide airflow through the case.

    The IBT-2 motor drivers are not yet mounted at this stage in the photo - they will go outside the box and have an additional fan for cooling.

    Fully completed electronics mounted under the seat in the photo below. Note the green 30A fuse for the motion motors.
    IMG_3225.jpg

    IBT-2 drivers attached to the bottom of the case and the fan that has a 3D-printed shroud to cool both of the motor drivers:
    IMG_3227.jpg

    Lessons learnt:
    - Use a big project box, the wiring can grow in volume very quickly and it's easier to add components in the future if you have spare room.
    - I've had no issues using a USB Hub at all (it's a good quality USB Hub powered by 12V straight from the server PSU)
    - If you haven't heard about it before, you can use isopropyl alcohol to remove hot glue very easily. You need a few drops and it comes off immediately - check out this link:
    - I think it's a good idea to secure lose connections with hot glue inside the electronics box so that they don't work lose when you play.
    - Bass shaker under the seat is awesome to simulate kerb impacts however I didn't like the gear change effect as it felt to me like driving a car with a broken transmission that slams hard into gears. I'll try to use seat motion to simulate gear changes.
    - Small bass shakers near the pedals are not that noticable for impacts or road texture as they don't transimit such low frequencies that well but they are awesome for simulating engine RPM and load - you can feel the vibration note change as you go through the rev range and when changing gears. SimHub also does a great job of simulating engine load - you can feel the chasis vibrate the more you press on the gas. It's very realistic.
    - Fans are great for F1 and open cockpit cars. I've got about 120W of power in fans - they are all server fans. Regular PC fans are much too weak. The top one is a dual-motor coaxial Delta fan pulling 70W alone. Please note that headphones are a must as they are quite loud.
    - Vibtration motors simulate speed - the faster you go, the more they vibrate. The effect is nice, it's not useful to make your laps faster but it adds to immersion and feeling of danger whey you are going 200km/h.
    • Like Like x 4
  4. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    As the title of the thread suggests, this 2 DOF sim uses 4 wiper motors.

    Here's the motor configuration:
    IMG_3209.jpg

    Close-up of the motors (the bolt was there temporarily for testing):
    IMG_3211.jpg

    There's a couple things that I learned about wiper motors:

    - First of all, they have three wires and combinations of wires give you different speeds. Black+Blue is the slowest, Red+Blue is the fastest on my motors, which is how I wired them.

    - Wiper motors are faster in one direction (the direction they normally operate in). I measured 4.5A no load in one direction and 3.5A in the other.

    The way I have the motors set up is that the motors run together. Because they are on opposite sides, one pulls harder in one direction while the other pulls harder in the other. As a pair, they will have the same force in both directions. With just one wiper motor per axis, you'd have to live with the speed/force mismatch.

    Don't the motors interfere with each other having slightly different speeds? - Not at all actually.

    I tested this earlier on the bench by coupling the axes of the motors together and running them while holding the motors. One did pull harder but it's not something that will cause any issues as I could easily rotate their position against each other by hand while they were both running.

    To sum up, no motor interference and probably a more optimal setup having the same force in both directions - will see once the sim is tuned.

    The position of the motors is monitored by a Hall sensor. I didn't have enough room with this motor setup to use a rotary Hall sensor, so I used a regular one and 3D printed the housing myself.

    The hall sensor sits stationary in line with the motor shaft and two magnets are rotating around it:
    IMG_3212.jpg

    The Hall sensor I used is a Honeywell ss495a. Magnets are D8x4mm.

    I got the idea for the Hall sensor here:
    https://www.xsimulator.net/communit...igh-precision-potentiometers-cheap-hall.7433/

    And here are the pushrods and ball links added (length of the pushrod from ball to ball is 26cm):
    IMG_3220.jpg

    First time standing on its own:
    IMG_3222.jpg

    I still need to address the side-to-side wobble resulting from the universal joint being the only thing preventing the platform from twisting. Using a larger universal joint would probably solve it, so I suggest going for a big one with your builds.

    I will 3D print a bracket to prevent any twisting - need to pick up some bearings tomorrow.
    • Like Like x 3
  5. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    Anti-rotation bracket now added. It's basically a pair of 22mm bearings rolling inside a 22.5mm guide. The guide allows for pitch and roll motion but stops any unwanted yaw. It feels very solid

    Roll is possible because the bearings are positioned in line with the universal joint axis (not sure how to explain it - you can see the position of the bearings vs the universal joint in the first photo).

    IMG_3239.jpg

    IMG_3238.jpg

    I've also had my first run in Live for Speed today to see if the sim work at all and it does!

    I will need to spend some time tweaking the settings though. Without any smoothing filter in SimTools the gear changes were a bit jerky. I'm now thinking of adding some dampers to the rig (maybe from a moped?).

    I'll do some more testing before I buy any more parts.
    • Like Like x 2
  6. herve069

    herve069 Simracer

    Joined:
    Mar 25, 2021
    Messages:
    38
    Occupation:
    workshop instructor
    Location:
    France
    Balance:
    - 16Coins
    Ratings:
    +19 / 0 / -0
    My Motion Simulator:
    2DOF
    Great job!! Any video about first tests?
  7. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    I've not made any videos yet. I'm currently waiting for some parts to arrive and printing some bits in spare time - next step is to add shock absorbers to smooth out the motion. I've ordered some pneumatic cylinders and valves to make adjustable shocks. Will report on progress
  8. armpit

    armpit Active Member

    Joined:
    Jan 7, 2016
    Messages:
    128
    Occupation:
    Software Engineer
    Location:
    SC, USA
    Balance:
    - 8Coins
    Ratings:
    +132 / 0 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino
    Nice looking build, love the 3d printed bits!
  9. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    Okay, I finally managed to push this build forward. I bought some pneumatic cylinders (diameter = 20mm, stroke = 200mm).

    I then added adjustable throttling valves and connected both sides of the cylinders together, which turned them into shock absorbers. Air needs to travel from one end of the cylinder to the other through the valves whenever the piston moves.

    IMG_3278.jpg

    The cylinders are anodized grey so I wrapped them with tape so that they are black like there rest of the rig. They work quite well, I can even adjust how much resistance there is by turning the valves.
    IMG_3281.jpg

    Here they are attached to the motion sim:
    IMG_3287.jpg

    IMG_3282.jpg

    The shocks noticably help with smoothing the motion of the sim. Gear shifts are much smoother without having to reduce the amount of motion.

    I believe this was the last step needed to finish the sim mechanically. Next, I will need to tweak the settings in software.

    At this point, I've only had a few runs in Live for Speed, which surprisingly works in VR. I'd like to apply for the DIY simtools license so that I can finish the setup for Project Cars 2, which is what I normally play (with custom FFB settings).

    I'll post a video once it's running in Project Cars 2 :)
    • Like Like x 1
    • Creative Creative x 1
  10. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    21,141
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    148,541Coins
    Ratings:
    +10,902 / 54 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
  11. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    thanks a lot :)
  12. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    Hiya,

    These are the SMC3 settings that I arrived at after some testing:
    smc3.JPG

    I will experiment with lower loop frequencies (e.g. Fpid/4) as I heard they may make the motion smoother. So far, I've noticed an opposite effect in SMC utilities so i left it at 1. Perhaps it's different while in game.
    • Like Like x 1
  13. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    Ok, finally some more progress!

    First of all, I found that the rectifier bridge installed to protect the PSU would get very hot despite being bolted directly to the frame. To fix this issue, I used thermal paste for CPUs for a better fit to the frame. I also stacked some washers on the mounting bolt to make them act as a radiator. Finally, I added a little fan.

    Now, it gets only warm to the touch.

    IMG_3343.jpg


    Next, I added 3D-printed braces to the brackets where the ball-joints are attached. This is to reduce flex, which was reducing the precision of the movements - motion feels less spongy and more defined now.

    These plastic parts are printed with 100% infill, which means that they are solid pieces of plastic.

    IMG_3347.jpg


    Lastly, I added mounting points for weights in front of the rig to balance it better and reduce the strain on the motors. Without any weights, the rig is tail-heavy with me sitting in it. I found that 4 off 1.25kg weights work well for me (total 5kg). I can remove them or replace with heavier ones depending on who will be using the sim.

    IMG_3350.jpg
    • Creative Creative x 3
  14. itsumairu

    itsumairu Active Member

    Joined:
    Dec 13, 2021
    Messages:
    202
    Occupation:
    Psychologist
    Location:
    Indonesia
    Balance:
    432Coins
    Ratings:
    +89 / 2 / -0
    My Motion Simulator:
    2DOF, 3DOF, DC motor, Arduino
    hello there. the addition of dumbles is a creative one.
    btw, I wanna know the performance of your motion rig. Can you tell me the longest youve been playing on the rig, and how does the motor take it? is it become so hot?
    sorry for my english, hope you understand the message.
  15. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    Hi, I've had a couple sessions of playing for 2h with breaks. The motors do get hot after a while, so I'm currently working on adding cooling fans to them. Without cooling, you can play for 30min but then need a break to cooldown the motors. I'll post pictures of the fans soon :)

    The hottest part was initially the rectifier bridge, now that's sorted, the next hottest parts are the motors. The motor drivers get only warm but they already have large radiators and a cooling fan.
    • Informative Informative x 2
  16. itsumairu

    itsumairu Active Member

    Joined:
    Dec 13, 2021
    Messages:
    202
    Occupation:
    Psychologist
    Location:
    Indonesia
    Balance:
    432Coins
    Ratings:
    +89 / 2 / -0
    My Motion Simulator:
    2DOF, 3DOF, DC motor, Arduino
    A picture would be great, I'm in the process to attach some fan to the motor but doesn't have any idea which part should be cooled down.
    Thanks for sharing :cheers
  17. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    Here's what the fans look like:
    IMG_3425.JPG
    IMG_3423.JPG
    • Like Like x 2
    • Useful Useful x 1
  18. Captain Jack

    Captain Jack Member

    Joined:
    Nov 20, 2021
    Messages:
    37
    Balance:
    - 26Coins
    Ratings:
    +41 / 1 / -0
    My Motion Simulator:
    2DOF, Arduino
    I've also added a 3-point seat belt, which tightens when I brake. I must say that I would like it to tighten more as I can only feel it when I brake very hard. At the same time, I don't want to increase the motion as I have the rig fairly well dialed in.

    IMG_3408.jpg

    IMG_3447.JPG

    For now, I'd give the seat belt a 6 out 10 in terms of immersion. I do have an idea though how to improve it. Will report back
    • Like Like x 4
  19. itsumairu

    itsumairu Active Member

    Joined:
    Dec 13, 2021
    Messages:
    202
    Occupation:
    Psychologist
    Location:
    Indonesia
    Balance:
    432Coins
    Ratings:
    +89 / 2 / -0
    My Motion Simulator:
    2DOF, 3DOF, DC motor, Arduino
    This is what @noorbeast told me. and it's on my shopping list. I really excited what's your idea to improve it. of course I prefer something budget, without adding another electrical mod. ex: using motor to tighten the belt
    can't wait to see your update!
    Cheers!
    • Like Like x 1
  20. ricthot

    ricthot I'm gonna get there!

    Joined:
    Jan 11, 2013
    Messages:
    3
    Occupation:
    IT Business Solution Architect
    Location:
    Montreal, QC, Canada
    Balance:
    16Coins
    Ratings:
    +0 / 0 / -0
    Wow very nice project and build, congratulations!
    I'm extremely surprised that regular PLA is strong enough for such critical parts, I was planning on printing some parts in PETG for my future build and was afraid it wouldn't be strong enough, so seeing your build using PLA parts is extremely encouraging!!!