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

3DoF Gseat build attempt

Discussion in 'DIY Motion Simulator Projects' started by Gefahren, Mar 9, 2024.

  1. Gefahren

    Gefahren New Member

    Joined:
    Mar 9, 2024
    Messages:
    17
    Occupation:
    Electronics Engineer
    Location:
    Central Mississippi, USA
    Balance:
    107Coins
    Ratings:
    +28 / 0 / -0
    My Motion Simulator:
    3DOF
    Here's my attempt at a 3DoF (Roll, Pitch, Heave) Gseat build. My plan is for it to take up the same amount of floor space as my current office chair, but we will see if it needs to grow any. I will mostly be using it for DCS and MSFS in VR.

    I've made it a bit of the way along before I started this thread, so I'll start with explaining how I got to where I am.

    I figured since the Gseat part with its moving flaps and such are all just mechanical linkages, that I'd focus on the base motion platform first. Besides, the seat has to have something to sit on anyways. This is very much a design as I build sort of project.

    Originally keeping cost down was a priority and I had planned to use some 350W MY1016 motors, NMRV40 gearboxes and IBT_2 drivers from Amazon. My first problem was connecting the output from the MY1016 motors to the input of the gear boxes, but it just happens that the input to the 40 size gearbox is the same as the output from the 30 size gearbox. So, I took a 30 size single output shaft and drilled and tapped the end to screw on to the motor shaft.

    Here's a picture of a test setup I did with that.
    PXL_20240123_064047688.jpg
    Problem is I didn't have a good way to rigidly mount the motor to the gearbox. Also based on the size and weight of those "350W" motors, they are probably only good for 250W or so and their quality was not very good. So, I resolved to get some bigger, higher quality motors that I could better attach to the gearboxes.

    While waiting to pick the new motors I made my position sensor mounts. I'm using some cheap AS5600 based magnetic sensors from Amazon that I 3d printed some housings for.

    Here is one of the sensor boards and the housing. I based it around a simple skateboard bearing.
    PXL_20240309_211607140.jpg upload_2024-3-9_15-18-36.png
    I decided to give more resolution on them I would run them with a 1:2 gear ratio so they have thier full scale output between 0 and 180°. I only plan to have the crank arms cover a 120° range.

    I printed a set of gears and a sensor mount to hold things.
    PXL_20240123_065222134.jpg

    I finally decided on the Ampflow G43-500 motors. They are impressively heavy and appear to have a good solid construction. At 80$ each they weren't cheap, but not nearly as expensive as other things I looked at.
    I decided I really needed to shorten the shaft adaptors I was using so with a little work from a hacksaw an on a lathe I got them cleaned up.
    PXL_20240217_180956735.jpg and mounted to the motors. PXL_20240217_005142049.jpg

    I then turned to actually planning something out and made a rough 3d model. upload_2024-3-9_15-36-17.png

    At this point I forgot to take pictures, but I changed to use bent pieces of angle iron and 3d printed motor brackets plus a series of guides and spacers so I could get everything straight enough. I also made all the crank arms twice since I miss drilled the first set.
    After all of that I ended up with this. PXL_20240219_030002397.jpg PXL_20240223_042838606.jpg

    I am dreading going back and taking everything apart so that I can grind all those sharp edges off of the pieces of angle iron.

    The top frame had a Y shaped piece of plywood attached to tie it all together then I removed it so it would not be in the way for the next parts.

    The power supplies I am using are the Meanwell LRS-350N2-24 series. While they are only 350W, the N2 variety can support a 200% overload in bursts as long as your average power doesn't exceed their rating.
    I still felt I could better support the instantaneous current draws of the motor with a capacitor bank. So, I laid out some boards and ordered them from Seeed but ran into the Chinese New Year celebrations and had to wait for them to arrive. Still, the price was great so I can't complain too much.
    For the capacitor bank I didn't want the power supplies to have any struggle charging them up on power up, and I didn't want them to stay charged after I turned everything off. I've been bitten by charged caps enough times to learn. Also, I was designing around a bunch of capacitors I had recovered from work before they went in the garbage.
    This is what I came up with, 33,000uF of capacitance. PXL_20240227_030419147.jpg
    It has a charge limiting resistor, so it takes about 30 seconds to fully charge, then there is a 555 timer circuit that goes off and switches a bypass relay to remove that resistor from the current path. Also, there is a discharge resistor that is removed from the circuit as soon as the power supplies come up and put back in whenever they turn off. I figured this would help a lot with preventing any current sags to the motor drivers.

    I also did a PSU connection board so I would only have to deal with the screw terminals on them once.
    Here it is before I populated the components. PXL_20240227_032241197.jpg
    It has an inrush limiter on it that gets bypassed as soon as the power supply outputs turn on. That way even if I do a short power cycle on the rig, I won't burn up my switch. Those Meanwell supplies can draw 60A of inrush current each.

    In the spirit of building as I'm designing, I now had to figure out where the power supplies and these other boards were all going to mount. I had considered a separate box to hold the PSU's but didn't like that idea for several reasons. Luckly a solution I liked presented itself.
    Power supplies mounted to bottom of platform. PXL_20240304_054801454.jpg PXL_20240304_054855990.jpg
    I still need to design and print a bracket for the power entry plug and put a cable cover or loom on it but those are minor details.
    Then I needed to figure out where to mount the capacitor boards. I didn't want there to be a chance of the crank arms hitting them. (That would cause too much excitement for me) I printed some boxes to hold the capacitor board, the IBT_2 drivers, a fan and some battery level gauges I found in my misc. pile of electronics.
    PXL_20240305_050004485.jpg PXL_20240305_050840901.jpg
    Then I got those altogether and wired up, then mounted to the platform.
    PXL_20240305_061441559.jpg

    I did some temporary wiring to get all the sensors and motor drives hooked up to an Arduino Uno (Running SMC) so I could get my sensors centered and make sure the motors were turning in the right direction.

    This is where I ran into a problem that I'm currently working on solving. Any of the three motors would run smoothly if they were connected to channel 3 from the Arduino, but they would be very jerky if connected to channels 1 or 2. In the process of testing things, I found out the limits on the IBT_2 drivers and have managed to kill two of them, while the third never worked. Lucky for me in my pile of misc. electronics I found a Pololu 18v25 G2 motor driver I had bought for unknown reasons almost 8 years ago. So now I've wired that one in (didn't change the behavior I'm seeing, nor did I think it would) and have two more on the way. I've got to print up an adapter to hold the 18v25 in the same spot where the IBT_2's were sitting.

    I asked about the problem I'm seeing in the thread for the SMC but in case someone isn't looking over there I'll make another post in this thread with some short video clips of what the motors are doing in case someone has some answers/solutions.
    • Like Like x 5
    • Creative Creative x 1
  2. Gefahren

    Gefahren New Member

    Joined:
    Mar 9, 2024
    Messages:
    17
    Occupation:
    Electronics Engineer
    Location:
    Central Mississippi, USA
    Balance:
    107Coins
    Ratings:
    +28 / 0 / -0
    My Motion Simulator:
    3DOF
    Ok, while I've had a lot of things get in the way, I have made some progress to report.

    First, I cleaned up the wiring underneath the platform and printed a mounting box for the IEC inlet switch.

    PXL_20240312_052144895.jpg
    They keep everything nice and neat and still leave me a good place to put additional leveling feet if I ever feel the need to add them.

    The system has gotten heavy enough that I have trouble moving it around, but it feels like it has a very solid plant on the floor. It's of course only going to get heavier.

    I did replace the three IBT_2 drivers with Pololu G2 18V25. I printed a small adapter to mount them in the same spot, but I forgot to take pictures. I think the IBT_2 would have been fine if I had not done something stupid with my SMC3 settings.

    I did find out why things were smooth with the channel 3 output and not with channels 1 or 2. In the SMC3 code it calculates the Ki and Kd terms for Channel 3 differently. I don't know which is more correct but I'm not that worried about it right now.

    While looking in the code I did recompile it for an Arduino Leonardo. While that did let me make all three outputs be 16bit PWM, the additional USB overhead in the chip made it run slower as I suspected.
    While doing that I identified lots of places the code could be optimized for space, or readability. I'm messing with that on the side right now. If it has any real performance difference, I'll post results.

    After messing with replacing all the divers and small changes to the wiring inside the driver boxes I mounted the top plate back to the platform.
    PXL_20240318_032926318.jpg PXL_20240318_033021181.jpg
    I'm still trying to learn to stop and take pictures.

    One of the things I worried about was if I had a sensor fail that the motors would just go into a continuous rotation mode. So, I tried eliminating any mechanical interferences if that happened. That mean I need to carefully unbolt the pieces of angle iron holding the gearboxes on and cut off half of one of the flanges. That was a bit of a pain because I did it without taking anything else apart.
    PXL_20240318_032959504.jpg
    Now the only thing that might catch if it continuously rotates is the small black cap on the crank arms. Those are mostly plastic so the system 'should' survive without anything else breaking.

    You can also see the all the wires I pulled over to the Arduino. I've got to print a small box to hold that and a cap that will fit in the middle of the motors to finish cleaning up the wires.

    I did manage to get Simtools talking to it and get the settings so that it moves like I expect it to. Odd thing is the outputs from Simtools for DCS seem to have Surge and Heave swapped, but that is easy enough to change.

    With only the integral parameter set, and the PWM max set to 100, the system moves really well. It also doesn't seem to have any real effect if I'm sitting on it or not. That makes me think I have more than enough power and could possibly have used the 30:1 gearbox instead (with the Ampflow motors, not the original ones I had)

    Next, I'm going to start building the seat on top. In my head I know what I'm going to do, I just have to translate that to actual parts.
    • Like Like x 5
    • Creative Creative x 1
  3. Buj818

    Buj818 Member

    Joined:
    Jan 15, 2024
    Messages:
    50
    Balance:
    276Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    Motion platform
    I'm only a couple hours away from fully finishing my build, and the only advice I can offer is when it comes to those IBT2s, run them at 20khz in SMC3. I was burning them left and right until I found that out (was running them at the default 35khz). Haven't had an issue since.
    • Informative Informative x 2
  4. Gefahren

    Gefahren New Member

    Joined:
    Mar 9, 2024
    Messages:
    17
    Occupation:
    Electronics Engineer
    Location:
    Central Mississippi, USA
    Balance:
    107Coins
    Ratings:
    +28 / 0 / -0
    My Motion Simulator:
    3DOF
    Well, I've replaced the IBT_2's with the 18V25 G2 drivers so I don't have to worry as much about them.
    For me the IBT_2 was giving up when I set them to 20kHz, at 15kHz or lower they seemed fine (with a PWMmax of 200). The chips are spec'd to handle 25kHz max, so I had channel 3 set to 4kHz since the choices are limited.

    Also, if I put my PWM max to 255 that would cook them. I don't think that board is set up to handle 100% duty cycle.

    Can't beat how cheap they are, however. For me it was just too much of a pain to flip the terminals and capacitor to the heat sink side of the board every time.

    On another topic,

    I think I actually have too much movement in mine. Wonder if anyone has any constructive input on what would be a good range to aim for?

    Right now, the crank arms are 2-13/16" (~71.5mm) and I am limiting them to 120° of rotation.
    That gives a Heave of ~4.87" (123.7mm), a Pitch and Roll of ~24°.
    Watching the platform move makes those seem almost double of what I would really be using for a Gseat, but since this is my first one, I don't have a good feel for that.
    • Like Like x 1
    • Informative Informative x 1
  5. Buj818

    Buj818 Member

    Joined:
    Jan 15, 2024
    Messages:
    50
    Balance:
    276Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    Motion platform
    For the record, I am super new to all this as well. Having said, being I'm into flight simming and not much racing, I was aiming for maximum travel in all DOFs. I was disappointed when I realized my rig would only pitch roughly 13° instead of the 22.4° I was aiming for. Boy, was I mistakingly wrong with my disappointment. After build completion and in flight testing (MSFS2020 in VR), I quickly realized I would have been totally happy with 10°. When these veteran guys here say speed and accuracy is more important to realism than the throw of the rig, believe them!
    • Agree Agree x 1
  6. Attyla.pl

    Attyla.pl Member

    Joined:
    Oct 1, 2023
    Messages:
    59
    Location:
    Polska
    Balance:
    268Coins
    Ratings:
    +15 / 0 / -0
    My Motion Simulator:
    2DOF, Arduino
    Very nice build, I think the reason why the IBT2 broke down was because of poor heat dissipation through the heatsink, in my IBT2 I applied a modification by sanding off the paint from the fields that dissipate heat from the transistor heatsink to the heatsink on the other side of the PCB. So far this solution works well with 250W 13A motors.

    Attached Files:

  7. Gefahren

    Gefahren New Member

    Joined:
    Mar 9, 2024
    Messages:
    17
    Occupation:
    Electronics Engineer
    Location:
    Central Mississippi, USA
    Balance:
    107Coins
    Ratings:
    +28 / 0 / -0
    My Motion Simulator:
    3DOF
    The IBT_2's never got warm. Well, I at least checked one as soon as it stopped, and the chips were still cool to the touch.
    I had removed the heat sink and cleaned up the board before applying an electrically isolating thermal interface material. I didn't trust the anodization on the heat sink to keep the electrical isolation between the tabs on the two chips.
    My first one to die early in my testing before building was from the back EMF of the motor. I installed TVS diode on them after that and feel like that should be mandatory if you are using a large or fast motor.
  8. Gefahren

    Gefahren New Member

    Joined:
    Mar 9, 2024
    Messages:
    17
    Occupation:
    Electronics Engineer
    Location:
    Central Mississippi, USA
    Balance:
    107Coins
    Ratings:
    +28 / 0 / -0
    My Motion Simulator:
    3DOF
    Still making slow progress. Waiting on Amazon Prime shipping days is tiresome. In the mail right now are all the 6mm rod ends and threaded rods for the flap linkages. I did however get in all the Piano hinges and the 5-point racing harness.

    I decided while I'm waiting the I would try to design ahead some. That way maybe the rest of it wouldn't take me as long. Since this setup is supposed to convert the Pitch and Roll of the seat into Surge and Sway feedback to the occupant, the linkage setup has been taking a lot of head scratching.
    For example, the seat bottom flaps should move differentially with roll and in unison with heave. But not move at all with pitch.
    The seat back flaps should move differentially with roll, in unison with pitch and only a little bit in heave.
    Then you have all the tensioning of the lap belt, the shoulder belts and the movement of the seat back also.

    To try to wrap my head around all of that I finally have been making a detailed and correct CAD model of everything so that I can play around with stuff easier.
    upload_2024-3-25_0-19-44.png upload_2024-3-25_0-20-37.png upload_2024-3-25_0-21-45.png

    I set up some equations so that I can just input a surge, sway and heave value from -1 to 1 and the crank arms move to where the 'should' be in real life and all the other linkages move everything else into position.

    Problem is I can't quite just look at the stuff on the screen and tell that the seat is the right size or angle, so I've been cutting some scrap wood up and doing some mockups of the seat to try getting the dimensions nailed down.

    Hopefully after the parts arrive this Wednesday, I can at least get a semi comfortable seat put together to sit on while I figure out the rest.
    • Like Like x 3
  9. hcee2022

    hcee2022 Member

    Joined:
    Feb 13, 2022
    Messages:
    27
    Location:
    Finland
    Balance:
    149Coins
    Ratings:
    +38 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
  10. Gefahren

    Gefahren New Member

    Joined:
    Mar 9, 2024
    Messages:
    17
    Occupation:
    Electronics Engineer
    Location:
    Central Mississippi, USA
    Balance:
    107Coins
    Ratings:
    +28 / 0 / -0
    My Motion Simulator:
    3DOF
    @hcee2022 Your seat is what got me started on mine. You made it seem easier somehow than many of the other builds. I also liked that yours looked very tidy when you got done.
    I did look at @Sielu 's build for inspiration too. It was very clean.

    I've gotten a bit farther along on mine, just haven't stopped to take pictures and make a post here.
    I am sitting on it right now after having done a test flight in DCS.

    I finally settled on a 6" wide 'seat' with 6" wide flaps, but now I'm thinking it should be about an 8" wide seat with 5" wide flaps. It just doesn't seem to feel right at the moment. Of course, I'm having to wait on some material to make a proper seat cushion and I am just using a small pad at the moment.

    I'll try to get myself in gear and take some photos and make a proper post later today.
    • Like Like x 2
  11. hcee2022

    hcee2022 Member

    Joined:
    Feb 13, 2022
    Messages:
    27
    Location:
    Finland
    Balance:
    149Coins
    Ratings:
    +38 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    I'd say that a wider seat is a good starting point. Having smaller flaps means that they are not pushing your body around with as much force, putting less stress on the mechanism and the joints. I also recommend making the push rod attachment points adjustable, so you can easily tune the range of motion and initial pose of the flaps.

    But it's also a matter of personal preference. Small, quick and precise flap movements give more accurate cues of how you are flying. But sometimes it's fun to set the system up for carrier traps and catapult shots with very "violent" movements :)

    I've myself also been trying some racing lately in Assetto Corsa Competizione, and for that I'd prefer to have more side support in the seat, so it would feel more like being pressed against the side of a cup seat when turning. This project has achieved that nicely:
    https://www.xsimulator.net/community/threads/g-seat.15035/page-2#post-206492
    • Like Like x 1
  12. Gefahren

    Gefahren New Member

    Joined:
    Mar 9, 2024
    Messages:
    17
    Occupation:
    Electronics Engineer
    Location:
    Central Mississippi, USA
    Balance:
    107Coins
    Ratings:
    +28 / 0 / -0
    My Motion Simulator:
    3DOF
    Well, I did get around to taking more pictures, so here we go.

    I am very bad at stopping to take pictures. If anyone wants more detail on a particular area, just let me know and I'll get better pictures of that area.

    I decided that the 'Y' part that supports the seat had the arms too wide. So I unbolted all of that and trimmed it down on a band saw.
    PXL_20240330_003501941.jpg
    While I was doing that, I thought to take a picture of how the 'arms' are connected. I'm using 12mm studs and rod ends for the vertical bars (probably overkill). The middle rod end for connecting to the 'Y' is 14mm because that had a larger angle it could reach before binding up.
    PXL_20240330_003911917.jpg
    Two pieces of angle iron bolted together make the U channel for the crossbar.

    After attaching all that back to the base I installed some 3d printed seat spacers to hold the seating surface at a 5 degree angle to the 'Y' platform.
    PXL_20240330_010750348.jpg


    After that I did a lot of stuff and forgot to take picture. Attached the seat bottom and flaps. Attached the seat back supports and seat back. Added the support for the back linkages and harness attachment, ect..
    Anyways here is where it has ended up now.
    PXL_20240407_202816914.jpg PXL_20240407_202853548.jpg PXL_20240407_202945722.jpg PXL_20240407_202929947.jpg

    As you may notice, a lot of the bolts don't have nuts on them. They seem to hold in place just fine for now and I got tired of undoing them while adjusting things. I will go back and correct that. Also, I still haven't printed a box for the Arduino to fit in or straightened up the wires going to it.
    Basically, I'm far from done with this.
    My seat cushion material should be here tomorrow, and I can at least get a better feel for how the seat 'feels'.

    As you can tell, it's not modeled after any particular aircraft seat. I tend to fly things from a Cessna 150 to a Bf-109 to a MiG-21 and I wanted the seat to be more generic. I will say that at the moment, it kind of feels like sitting on a formal dining chair so I'm probably going to tilt the back an additional 5°. Right now, it is 5° back from perpendicular to the seat bottom.

    One thing I've added to it was to make the seat back be able to slide up and down from the seat bottom. I had seen a build where someone was trying that, but I cannot seem to find the thread to find out how it turned out (worth it or not). I couldn't think of a good linkage to make the seatback move with heave, but not with any other motion so I finally settled on Pneumatic cylinders. Those should prove interesting to set up.
    If anyone can remember in what thread the person was making the seatback move up and down to further simulate Heave forces, please let me know.
    • Like Like x 2
    • Creative Creative x 1
  13. Gefahren

    Gefahren New Member

    Joined:
    Mar 9, 2024
    Messages:
    17
    Occupation:
    Electronics Engineer
    Location:
    Central Mississippi, USA
    Balance:
    107Coins
    Ratings:
    +28 / 0 / -0
    My Motion Simulator:
    3DOF
    Well, not a lot of physical progress on this, but I've learned a thing or two.

    As far as the physical progress, I've got my seat cushions roughed out. Old T-shirts and safety pins make decent temporary covers for the cushions, but I'll have to break out the sewing machine and come up with something more durable and cleaner looking.
    PXL_20240415_031440459.jpg PXL_20240415_031407263.jpg
    I've marked out the seat where I am going to shorten it some more and marked the cutout in the middle for the center strap on the belt. I'm just waiting till I need to take the seat off the platform again to do cut all of that.

    I did take it for an about a two-hour test. The front motor got hot enough that it was uncomfortable to leave your hand on it, while the two rear motors were practically at room temperature. I figure the CG with me on the chair is too far forward now that I've added the seat cushions so I'm going to move the seat back by two or three inches to make up for it.

    While the motor did get hot, it preformed great. My PWM max is only at 200, so I could drive the motor harder if necessary. I did find out that I needed to lower the Kp value down to make it smoother. Originally, I had it at 450 and the trace in SMC3utils had the target and actual traces sit right on top of each other. However, it felt like the motor was stuttering as it moved and the PWM trace was very noisy. I lowered the Kp down to 150 and the motor felt super smooth, but it lagged behind the commanded position, so I had to start playing with the Ki and Kd values. Still need more tuning and a better methodology to do it, but I'm going to wait until I get the other parts of the build more 'complete' until I spend too much time on it.

    Other thing is I feel the shoulder belt attachment points need to be up higher. When they were tightened it felt too much like they were pulling me down vs pulling me back. I think I'm going to build some sort of column up the back where the linkages and shoulder belts attach now and top it with a fixed headrest. Then I just have to make it so that I can store my VR headset on it when not in use.

    I also still have to get the pneumatic cylinders mounted to move the seatback up and down. Thats also something I'll work on when I remove the seat.
    • Like Like x 2
  14. Gefahren

    Gefahren New Member

    Joined:
    Mar 9, 2024
    Messages:
    17
    Occupation:
    Electronics Engineer
    Location:
    Central Mississippi, USA
    Balance:
    107Coins
    Ratings:
    +28 / 0 / -0
    My Motion Simulator:
    3DOF
    Well, no ugly pictures to post today. I did get the seat moved back 50mm on the platform and have flown it for an hour in DCS. The front motor stayed completely cool now. BTW, I came up with that 50mm number because that is the thickness of the back cushion. I had forgotten to take that into account when I first came up with the seat position.

    Now I really need to figure out PWM tuning.
    • Like Like x 1