Welcome to Synthiam!

Program robots using technologies created from industry experts. ARC is our free-to-use robot programming software that makes features like vision recognition, navigation and artificial intelligence easy.

Get Started
Asked — Edited
Resolved Resolved by Jeremie!

Power Wheelchair Joystick Interface To Ez-B

Hi all! I'm new here:D I've been lurking for some time as I assembled equipment. My plan is inspired by DJ's snow shovel bot and Ampdroid and a few others.

I'm using a Pride Power Wheelchair Jet 2. I've pried apart the controller - the joystick is connected with a 6-pin connector. I've cut the joystick off - although it worked, it was bent and hard to use. Below in the photo I've red box'ed the cut ends. By process of elimination I believe the red and black wires on the 6-pin are power to the joystick PCB, so I have left those disconnected. That leaves 4 wires, which should be right motor +, right motor - , left motor +, left motor -.

I tried connecting each of the 4 wires to the signal pins D0, D1, D2, D3 of the EZ-B and attempted to send a signal to operate the motors, but nothing I tried worked. I tried EZB Controls for HBridge Movement, Modified Servo, Horizontal Servo, HBridge and servo speed. Anyone have any ideas? I'm totally new with the EZ-B software so I'm sure I'm doing something wrong. On the HBridge Movement I tried every combination for the 4 signals.

My original plan was to use a Sabertooth 2x25 - I have it in hand, but this would be so much cooler (easier) if it worked!


User-inserted image

PRO
Canada
#5  
@kbb0118 First off, welcome to the forums, glad you could join us in the discussions!

In order to make use of the joystick circuit to control the motor drivers onboard you will have to figure out how the joystick functions. I am guessing that it is an analog Joystick with a potentiometer on each axis for the 'x' and 'y' (left/right & front/back)directions, that way the user would have had variable speed at their control. This is the same way game controller analog thumbsticks work. So in order to use the EZ-B to emulate way the joy stick worked you'll probably need to do the following:

First grab an ohmmeter and strip the joystick wires back (or measure on the PCB) and then figure out which wires carry signals, ground, and power. You should probably have 2 signal wires, one GND wire and one power (VCC) wire. might be a few extra wires for other little bits like buttons as well. The signal wires should have a resistance in relation to GND and VCC that changes as you move the joystick. Make sure you can alligator clip your ohmmeter leads on the wires really well in order to have your hands free to do joystick manipulation.

To interface the EZ-B (in order to emulate the Joystick) you will have to connect the GND and 2 signal wires to the EZ-B. You won't have to worry about the VCC line, just make sure you are powering the EZ-B and the wheel chair electronics when you go to test. BE FOREWARNED you should have quick access to a power switch when you go to power it up as it may take off on you. This is because if the joystick is indeed analog, it will require a 2.5V voltage on both signal wires to keep the platform at rest. 2.5V from the EZ-B can be achieved by sending a PWM(D0, 50) signal from an EZ-script.

Assuming the Joystick works on 5V logic, here is what the control signal may look like on the y axis:

PWM(D0, 0) = 0V -> full speed backward
PWM(D0, 25) = 1.25V -> half speed backward
PWM(D0, 50) = 2.5V -> rest
PWM(D0, 75) = 3.75V -> -> half speed forward
PWM(D0, 100) = 5V -> full speed forward

I'm not certain of this, but depending on if you are planning on riding on the wheel chair based bot (or having it carry any large weight) you may have to stick with the onboard motor control electronics versus a Sabertooth. Talking with some friends of mine at Scoperta, they have mentioned that with their wheel chair based platforms (with a arm chair plus person mounted on top) have seen prolonged current spikes as high as 70A, more than the sabertooth may be able to handle.

If you aren't doing anything too hardcore with the platform, I am quite certain that as @jstarne1 suggested, the sabertooth would be an easy alternative that is loaded with extra features.

Either way, Figuring out the joystick control and using the onboard motor driver may be an ideal solution, depending on how much time you have to spend on reverse engineering the way it works. As a disclaimer just make sure you are taking the necessary safety precautions needed when testing. Raising the platform off the ground so no wheels can make contact with the ground is probably advised.

Good luck with your project and please share your progress as I can tell a number of us are quite interested!
PRO
Canada
#6  
Lol, if I had waited ten more minutes to post it may not have had to be as long:) Yep doing what I had suggested with the PWM commands (but scaling it down to the voltages needed) should work for you. You'll just need a bit of trial and error to hit the values you need. Nice work using the EZ-B analog line to reverse engineer the joystick, I wouldn't have thought of that.
#7  
Save yourself some time...that is not an analog joystick, it has a proprietary serial type signal that sends all commands up/down those four wires, to start, the controller has to have a perfect center balance signal from joystick just to initialize and only gets meatier from there, the cable to the controller also carries the charge init or not signal, power on, rate, etc.

There is another tread somewhere on here about it, o yes and also you can program the controller on those same wires when you buy the proprietary cable and software, that is if they will sell you the software, i know it took me over a year of whining to get software and over $100 bucks to get the active proprietary cable from England.

Needless to say it's a shame not to be able to just interface the stick but I too now use the Sabre-Tooth and don't have a headache any more, i'm not young and don't have the time to wait but good luck with experimenting.
Ireland
#8  
Just completed setting up my second power chair controller with EZ-B
used 2 servo motors 90 deg apart ,very reliable and I also retain features of original controller
as I use it on an incline ,the manual states it detects the increase in load and then provides extra power to motors automaticlly .
Very happy with results and reliability
Nice to hear the click of the brake each time it returns to neutral

edit
have tried to open controller having removed all screws but it is sealed tight with some type of glue or sealer
want to make connection to on off switch *confused*
#9  
I've programmed the PWM's according to the chart I reverse-engineered, but nothing moves. I've tested that the setting produced the desired voltage, but I'm wondering if there is something "special" about the joystick PCB that will prevent me from doing this. @Putt Putt might be right.
PRO
Canada
#10  
Yeah sorry, all that analog stuff was an assumption on my part. I'm guessing that there is some sort of proprietary communication like @putt putt said as they probably don't want people to easily hack the controls that some people rely on everyday. Too bad.

If you were up for the challenge you could always get a logic analyzer (Bus Pirate or Saleae) and crack the code if you were dead set on doing it and then use an EZ-Script to bitbang the protocol out. Another option is finding where the control signals go into the Motor controllers and connect into it at that point.
#11  
I've been studying up on Bus Pirate and Saleae. I have a general idea from the video here
that bus pirate could give me a way to communicate with the controller. I'm not sure how I would send the serial commands to the chair controller yet.
PRO
Canada
#12  
Sorry @kbb0118 I just meant that you could use the Bus pirate as a logic analyzer and then just emulate the signal you see with it by sending out bit banged bits (highs and lows matched to the signal) with an ez-script. You may be able to use SendSerial() commands from an EZ-Script if you can figure out the baud rate and if it is indeed serial or not.
#13  
I tried the same thing. Like others here, I gave up and bought a Sabertooth. Before I did that though, I fried the joystick, and replaced it. This is a picture of the specs from the joystick.

Here is what I learned. The green wire supplies a constant voltage. The blue and yellow need to provide that same voltage in the neutral position. When voltage from either of those goes up or down, it moves the chair in either the X or Y direction.

If the chair senses anything that it perceives as funky, you get an error message and the system shuts down.

Good luck. I hope that this helps.
User-inserted image




Edit: The picture uploaded smaller than I created it. If you cannot read it, I have a PDF file that I can email you.
#14  
@Danger that is awesome - Your diagram gave me a few ah-ha's! My joystick is similar, but not exactly the same. Some of the principles of movement appear to be the same as your joystick. Mine is a double decoded contactless inductive 5V joystick gimbal. I FINALLY found some good docs on my controller! I've emailed Rosstron to see if they will give me the spec sheet for my joystick gimbal DLGSM55122.

I found some students at UC Berkeley succeeded in communicating with my exact Jet 2 controller - Dynamic DL 5.2i (DL50UBR12) - with an Uno in 2011. But they didn't document much about the RC Filter. Apparently the thing I need is an RC Filter with 9.1M Ohm resistor and capacitor value of 10uF. This allows the coupling voltage from the joystick to rise and fall gradually as I understand it. I wish they had a better photo of the RC Filter and components.

http://voidsetuploop.wordpress.com



If someone can double check my thinking on this:
I'll set D0, D1, D5, D6 to be PWM based on this chart I reverse-engineered.

User-inserted image


Their RC Filter photo

User-inserted image



I need to know if these watt/volt resistors and capacitors will work?
EZB-D0 > 9.1M Ohm 1/2W Resistor > 4x5mm 10uF 25V Aluminum Electrolytic Capacitor > WHITE wire on DL controller
EZB-D1 > 9.1M Ohm 1/2W Resistor > 4x5mm 10uF 25V Aluminum Electrolytic Capacitor > BLUE wire on DL controller
EZB-D5 > 9.1M Ohm 1/2W Resistor > 4x5mm 10uF 25V Aluminum Electrolytic Capacitor > BROWN wire on DL controller
EZB-D6 > 9.1M Ohm 1/2W Resistor > 4x5mm 10uF 25V Aluminum Electrolytic Capacitor > YELLOW wire on DL controller
#15  
My machine was a Jet 3. The joystick sounds quite similar, except mine ran on higher voltage (8v to 14v). The problem was the failsafe. Every time I would mess with it, an error message would flash, and it would shut down. I just decided to take the easy way out and buy the Sabertooth.

But anyway, I am glad that my picture was able to help you. Your follow-up questions are way above my pay grade. I can't help you with any of that. Good luck though, I am sure that someone here can answer them. I hope that it works for you. That would make a really smooth running robot.
#16  
I'm with you @Danger being a bit out of my element on this one. I've wanted to figure out breadboarding, and apparently a RC Filter is a "simple" one to start with. I don't get the breadboard thing though. Time to find a tutorial and order some stuff!
#17  
Still waiting for my half breadboard, capacitors and resistors, Bus Pirate and whatnot. I did hear back from Rosstron pretty quick! Joystick electrical specs are:

Red +5V Supply
Black zero V Supply
All neutrals within 40mV of 1/2 Supply

Blue Left/Right 2v5 +/- 1V
White Left/Right Inverse Mirror 2v5 +/- 1V

Yellow Forward/Reverse 2v5 +/- 1V
Brown Forward/Reverse Inverse Mirror 2v5 +/- 1V

So it looks like that matches what saw in PWM voltages pretty close. Once I filter the PWM with a low pass filter hopefully this thing will move! I will update as soon as I get my parts and try things out!
Australia
#18  
Hi kbb0118,

So just wondering if you had any success on controlling the wheelchair. I seem to only be able to control it to go forwards but not any other direction.

Cheers!
#19  
I've made the breadboard low-pass filter and am attempting some tests. I'd really appreciate if someone could look it over and tell me if I've done anything wrong? Grounding and whatnot. This is my 1st breadboard

Overview

User-inserted image


Angled view

User-inserted image


Breadboard closeup low-pass filter

User-inserted image



The male 4-pin I am planning to hook to the wheelchair controller as soon as I'm sure I won't fry anything with this getup :)
Australia
#20  
From the looks of it, it seems exactly the same as I have done. I'm assuming that the green wire will go to ground? If so, that should be correct.

If I may ask, what resistor and capacitor values have you used? I've used 160k and 1uF and I think this may or may not be the problem that I'm having.
#21  
@justindra I tried to match the UC Berkeley team's calculations (see link in post #15) since they were using the exact same wheelchair base as I am. It is hard to tell exactly what they used as they didn't document their low pass filter much.

I'm using:
9.1M Ohm 1/2W Resistor
4x5mm 10uF 25V Aluminum Electrolytic Capacitor

I'm going to try to connect it tonight!
#22  
Well, so far it has not worked. The unit does not do the "something's wrong" blinking lights, but it also doesn't move. It may require that the joystick be actually plugged in, or possibly I have to join the joystick to the low pass filter.

It will take some time to figure this out so I'm going to mark this thread as answered. Thanks for the help everyone! I'll post here if I figure it out.
#23  
I'm trying to make a remote control lawnmower to cut this steep bank I have in the yard. I bought a used power wheelchair that uses a 6 wire joystick controller, a Dynamic DL5.2i. Using slide pots and servos I couldn't get the full span using either the controller power or an remote battery, but it did work and was stable. So I went to using an Arduino Uno board. The program is basically scaling and creating the 4 signals (fwd/rev, lft/rht and the mirrors of these signals) to emulate the joystick. The 4 outputs are connected to the controller through low pass filters using 4.7 k ohm resistors and 1 uf capacitors. Those are the only connections to the controller. The controller is completely floating, no grounds or 5 volts, just the 4 output signals from the Arduino board. This setup is working very well. I get the full range to the controller and it seems to be stable. All is working well, at least for the 2 weeks it's been together. I think the key to this setup is the capacitors. I used some 25 volt aluminum electrolytics and it did not work. I switched to a CDE WMF 05W1 (1 uf 50 VDC) and it worked. I removed the ground from the caps but left them connected together and it is even more stable. Also, take voltage readings of the four inputs on the joystick connector with nothing connected but powered up. Mine was around 2.48 volts. Get as close to this as you can with the Arduino board, the closer, the more stable it is at rest. I also created a deadband around 2.5 volts so that it always comes back to the 2.48 volts in case there is any drift from anywhere. Another thought, I actually have the CDEs connected backwards, black band to the high side. Don't know if this makes any difference or not. I also think that since the low side of the caps are no longer connected to ground that a regular AC cap would work as well. Maybe it just has to be a film cap not metal.
#24  
No disrespect intended but...... perhaps there are some here that can help but maybe you should head over to the Arduino forums for more informed help. If you were using an EZB board these drawbacks would be simpler to overcome and you could get more answers to your problems here. Good luck, wish I could help. Sounds like you have a very cool and useful robot there.