Recently I got into microcontrollers and to make a really long story short I decided to attempt to control a wheel chair with a microcontroller. Or rather have numerous different methods to control the wheel chair. So I set out to craigslist in order to try to find a used electric wheelchair for cheap and I did just that. I picked up a Pride Mobility Jet 2 wheel chair. After getting it home I attempted to charge the two batteries that came with the wheelchair in hopes that I wouldn’t have to buy new batteries. No such luck, one battery literally exploded and the other just didn’t charge, $250+ later I had two new batteries and a moving wheel chair.
AWESOME, it works, now lets see how it works. So like any other geek I found the model number of the chair Jet2 and scoured the internet for any documentation on hacking this thing or its operation. Surprisingly, there was not much information available. So I set out to do this on my own.
I started by sitting in the chair with a multi meter attached to a couple different points and moving the joy stick. Well between the bouncing, almost hitting a tree, having my girlfriend follow me around with a notepad scribbling the voltages I was getting it was pretty friggen difficult. At some point it dawned on me to disengage the motors so I could sit still, the voltages would change and motors would spin without actually moving the wheelchair. Genius, right?
So in my testing I found that there are 6 wires connected to the joystick that go to a controller board. One wire of course was power and another was ground and the remaining four were pairs for forward/back and right/left. At any given point in time the sum of the pair would equal the power wire at around 5 volts DC. At rest the pairs would sit idle at about 2.48 volts. Sweet, this should be easy….. or so I thought.
I found a model number on the joystick controller at this point and decided to search the internet again. I came up with a few hits of people attempting to control this thing with an arduino and failing. So despite the failures online, I decided I would take a dive at it anyway.
Unfortunately during this process I didn’t take any pictures but I will do better with this project going forward.
Not wanting to permanently alter the chair controller I got a bread board and an arduino uno and started to hook things up with jumper wires. First I wanted to make sure that I was correct on my theory of operation and the voltages so I set the arduino to read the voltages from the chair controller. All went as expected there but the next part took a bit of a turn for the worse.
I wanted the arduino to read the voltages from the joystick then output those voltages over PWM to the wheelchair controller. So I took the analog reads rounded them to the nearest tenth and output them at 16 bit to the PWM outputs on the arduino. I got everything set up and plugged in, sat in the chair moved the joy stick and nothing, no movement. Looking at the wheelchair controller I noticed that the battery lights where flashing. Back to the internet, found the manual, apparently the joystick lost time with the motors. Well that made sense since I had a small delay in set up in the sketch. I took that out, same problem.
After many attempts I went back to the internet and searched for data on the DL5.2i controller and found a few more posts about trying to control this thing with the arduino. Most of them though were not trying to use the joystick. So I decided to try just doing some manual outputs of the voltages to the controller with no luck. Later I found somewhat of a breakthrough in an article about some students trying to control one of these with an arduino. Basically they were having the same issue, and they found that an RCcircuit was needed in order to increase and decrease the voltages gradually or the chair controller would dump just as mine did.
So I made my own RC Circuit and attempted the manual controls again and it worked. See the picture of the RC Circuit in the gallery.
This post has gotten long enough and I need to get back to the project so I will continue this in Part 2