1. 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 Download Package Now!
  2. 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
  3. 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 here. Do not following these rules will lead to permanent exclusion from this website: Read the forum rules.

Hacking a wheelchair controller

Discussion in 'DIY Motion Simulator Projects' started by elnino, Sep 2, 2018.

  1. elnino

    elnino Member

    Joined:
    Apr 1, 2010
    Messages:
    65
    Occupation:
    Computer Geek
    Location:
    Adelaide, Australia
    Balance:
    449Coins
    Ratings:
    +24 / 1 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino
    8 or so years ago I build my first racing sim. I always had the intention of making it a motion sim but never got around to it.

    About 2 years ago, I purchased a powerchair from a liquidator/auctioneer for $25 with the sole intention of using the motors on the sim. They are BIG! About the size of a large car starter motor each. I stripped the chair down to the bare motors and controller and had a go at trying to control the motors more directly but it basically went in the too hard basket and then forgotten about.

    For those that don't know, powerchair controllers are seriously technical as they have to have many safety features, tuning controls for accelleration/turn etc. So trying to use the 'real' interface to control the motors for use on a sim was impossible, plus it uses a proprietary CANBUS protocol.

    Recently I got re-inspired to have a go at motion again so assuming I could not use the chair controller I started looking at what I could do to control the huge motors but all the products needed for these motors are seriously expensive (and I am cheap).

    Here I had this 140A per-channel capable dual motor H bridge 'unit' but could not use it. So in frustration, I started looking at how much I could 'strip out' of the controller to give me direct control of the motors. As it turns out, it uses a standard off-the-shelf HIP4082 H-Bridge controller for each motor, so at absolute worst, I could cut all the tracks and just use that. However, it also has some cool features like a current sensor for each motor and some gates that simplify the signalling to the HIP4082 chip.

    I approached the manufacturer to see if they could offer some assistance which at first seemed really promising but in the end resulted in a big thumbs down on any usable info - Boooo.

    So, refusing to be beaten, I have spent several days reverse engineering the controller functions with multimeters, logic probes etc and got to the point were I was confident that I had identified all of the important pins and could replace the standard NXP microcontroller with an Arduino!

    Out with the hot air gun, I removed the NXP but got met with some disappointment as there seems to be some other smarts that control the power rails in the controller but with a bit of ingenuity I have got those rails up and running and today have managed to control the motors directly with an arduino!!!

    There is still a lot of work to do but I am so happy!

    The controller is a 'Dynamic Controls DX' which is linked to 'Invacare'

    2018-08-10 07.44.41.jpg 2018-08-16 07.18.05.jpg 2018-08-16 07.18.47.jpg 2018-09-01 21.14.02.jpg 2018-09-02 20.51.22.jpg 2018-09-02 20.52.29.jpg
    • Like Like x 1
    Last edited: Sep 3, 2018
  2. elnino

    elnino Member

    Joined:
    Apr 1, 2010
    Messages:
    65
    Occupation:
    Computer Geek
    Location:
    Adelaide, Australia
    Balance:
    449Coins
    Ratings:
    +24 / 1 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino
    Update
    I have been working in the background with the SMC3 code to add a new 'MODE' to it.
    The Wheelchair controller is a lot different from the other H Bridge controllers as far as controlling the motors. It works on %Duty cycle of on/off on the PWM pin to determine the motor direction.

    i.e a PWM signal of 127 is 'neutral', 0 being full reverse and 255 being full forward.... It also has an 'estop' style master enable signal and seperate motor enable pins.

    I designed and printed some potentiometer mounts that secure to the back of the motor shaft by removing the rubber seal. I hope that this should not cause any leakage. If it does, I will replace the internal grease with something with a higher viscosity.

    The shaft had a small 3mm hole in the back from the original manufacturer machining - I inserted a hardened pin into this and then secured a hex standoff to it with some retaining compound. This allows for a basic coupler to the pot and is very accurate (no wobble).
    2018-10-06 12.13.46.jpg 2018-10-06 12.13.54.jpg 2018-10-08 21.03.46.jpg

    The pots in use here are only for testing, I am going to make some Hall sensors instead.

    I have now added a 'MODE3' to the SMC3 code to be able to deal with the different control method and went through some testing.

    So far it is very good but there is some play in the output shaft gears that have lead to 'ringing' - I am hoping with the hall sensor and some load on the motors, this will no longer be an issue.
    2018-10-08 21.02.35.jpg

    I also located a cheap racing seat which I re-trimmed and a harness :)
    2018-09-26 20.33.37.jpg 2018-09-28 07.42.15.jpg 2018-10-03 17.57.00.jpg
    • Like Like x 1
  3. Alexey

    Alexey Well-Known Member

    Joined:
    Sep 23, 2014
    Messages:
    421
    Occupation:
    Electronics Technician
    Location:
    Adelaide, Australia
    Balance:
    7,350Coins
    Ratings:
    +563 / 2 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    What are the motor specs?
  4. elnino

    elnino Member

    Joined:
    Apr 1, 2010
    Messages:
    65
    Occupation:
    Computer Geek
    Location:
    Adelaide, Australia
    Balance:
    449Coins
    Ratings:
    +24 / 1 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino
    To be honest, I don't know. They are BIG heavy Wheelchair motors (bigger than most of the ones I have seen on sims). They are rated at 3200 RPM apparently but I would assume that is the DC motor itself. Each motor is probably over 10kg.
  5. Alexey

    Alexey Well-Known Member

    Joined:
    Sep 23, 2014
    Messages:
    421
    Occupation:
    Electronics Technician
    Location:
    Adelaide, Australia
    Balance:
    7,350Coins
    Ratings:
    +563 / 2 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    If you can't use the original controller you might be able to get away with a few IBT_2 running in parallel.
  6. elnino

    elnino Member

    Joined:
    Apr 1, 2010
    Messages:
    65
    Occupation:
    Computer Geek
    Location:
    Adelaide, Australia
    Balance:
    449Coins
    Ratings:
    +24 / 1 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino
    That's the point I am making here - It is working on the wheelchair controller..
  7. Alexey

    Alexey Well-Known Member

    Joined:
    Sep 23, 2014
    Messages:
    421
    Occupation:
    Electronics Technician
    Location:
    Adelaide, Australia
    Balance:
    7,350Coins
    Ratings:
    +563 / 2 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
  8. Gadget999

    Gadget999 Active Member

    Joined:
    Dec 27, 2015
    Messages:
    558
    Location:
    London
    Balance:
    4,239Coins
    Ratings:
    +104 / 4 / -0
    My Motion Simulator:
    2DOF, Arduino
    i run a pair of wheelchair motors on my sim - they are quite powerful and have gearboxes on them

    i run the ibt-2 to control them

    how did you hack them to work with the smc3 - have you wired a analogue wire from the arduino to the throttle controller signal ?