WillChair Page 5
After more months of work than I care to admit, here we are. Final assembly. I guess I could have cleaned her up before taking pictures. Eh, it's built for GO not show. The seat base and backrest were pirated from a well worn Permobile Street. I will eventually get the back cushion and thigh abductors recovered. It's a shame to put those ratty bits on top of an otherwise immaculate machine. One day....
All of the electronics are hidden underneath the Kydex cover on the back. I made the cover so that it pulls air across the expensive electronics. There are also three 40mm cooling fans in case they're needed.
Quick video of the suspension, headlights, and tilt.
Bad picture and it is dirty but serves the purpose. The joystick itself is a 2 axis 5 volt analog potentiometer. There is MUCH more to making one steer properly than just connecting the wires. The square bit at the front is a volt meter. LiFePo4 batteries do not drop voltage as the capacity runs down, which makes a battery meter useless. A battery meter would read the same at 99% as it would at 40%. This volt meter displays the actual voltage of the pack and allows me to determine the state of charge. It's not idiot proof, but simple and more accurate than anything else. That % scale on a typical powerchair is horribly inaccurate due to the Peukert effect (Seriously? You still haven't searched it? Click!) in lead acid batteries.
The round knob on the right is a 5k Ohm potentiometer. I use it to send a voltage between .2 and 4.8 volts to the controller depending on it's position. A custom script in the controller uses that voltage to adjust the speed. Basically, it's an electronic governor. Turn it backwards and the chair slows. Turn it forward and Weeeeeeee!
The two toggle switches at the rear are for master power (right) and 12v power (left). The three rocker switches are:
Left: Blue - Volt meter on/off
Center: Green - Cooling fans
Right: Amber - Headlights
An led on each switch lights up to let me know when one is on.
This is with only one switch installed for testing. I never got around to taking a picture before buttoning it up for final assembly. Think the same as this except about double the wires and everything soldered with heat shrink instead of plugs and tape. Lots of stuff crammed in there. More kudos to Sommer for this tedious stuff.
This is the 25 pin RS232 input connector for the controller. Yes, it was as fun as it looks soldering and heat shrinking all of those tiny wires inside that plug. And there were about six more wires added after this photo. I lack the finger dexterity for such delicate work. My better half, Sommer, was up to the challenge after a short how to crash course.
These two photos are only a tiny portion of tedious soldering such as this. It was frustrating and she cursed a lot. Fortunately, I'm worth it. You don't have to ask her. Just take my word for it.
This 4 way joystick (or wobble stick) is what controls the linear actuators. Pushing it left/right extends and retracts the feet. Pushing it forward and back tilts the chair up and down. I have the cover removed to show the wiring.
Of course, wiring the joystick is not as easy as simply connecting the four wires from the actuators and positive and negative from the battery. Oh no. You need to reverse the current direction to move the actuators both ways. Herein lies the secret: Two 8 pin DPDT relays. This also removes the heavy current from the tender joystick contacts by allowing it to only switch the poles on the relays.
I found this wiring diagram online at Progressive Automations to help in case anyone else wants to attempt such. Have fun if you do!
The battery is 48v. Great. However, the linear actuators would go way too fast at 48v and most likely burn up. They need a 12v power supply. The headlights also need 12v. Although, some dummy did hook them directly to 48v. They were BRIGHT - for about two seconds. Pop!
This is a cheap 48v to 12v dc to dc converter. It is good for a continuous 10 amps. Connect the black and red wires to 48v and the yellow and black wires magically become your 12v source. Crap cell phone picture, but does the job. You can see one of the three 40mm cooling fans on the left side. Rarely needed.
All + wiring on the chair is color coded by voltage. Yellow is 12v. Red is 48v.
There is also 5v needed for things like the led lights in the joystick housing, the joystick itself, the potentiometer, receiver, and various sensors. The 5v voltage is supplied by the motor controller itself. It has a built in converter and three 5v output pins. 5v + wiring is also red, but the tiny 18ga wiring gives it away.
If this was an episode of MTV's Cribs, right now is when I would be saying "and here is where the magic happens" to a cameraman who couldn't care less. And quite possibly I am now because any reader has already gotten bored and tuned out.
Left: This is the Roboteq HBL2360 robotics controller. It was never intended for use as a powerchair motor controller. However, it's the only suitable hardware that I know of unless you 'roll your own' and build a controller, but that is beyond my capabilities.
A few specs to compare it to a mobility controller:
Amps: 150 capable. A typical mobility controller maxes out at 90 amps. The highest end wheelchair controller (that I know of) can put out 120 amps. Whoopty do? That's only 30 amps more. True, if you don't look at TOTAL POWER OUTPUT in watts, which tells the entire story.
To see the actual total amount of power output you multiply volts x amps to find your watts. That 120 amp controller is ran at 24 volts. 24 x 120 = 2,880 watts of power to turn the motors. Now, I'm running the Roboteq at 48 volts. 48 x 150 = 7,200 watts of OOOMPH. That's 2.5x the amount of rotor burning electrical output! Now you see one reason why I didn't even consider a mobility controller.
It doesn't end there. That high end mobility controller is powering BRUSHED motors. The Roboteq is powering BRUSHLESS motors. You can't make a direct power comparison between brushed and brushless motors because brushless are more efficient. A brushless motor will make anywhere between 10 and 30% more power than an equally spec'd brushed motor at different RPMs when driven by the same amount of amps due to the higher efficiency of the design. Also, running higher volts requires less amps to generate the same amount of power. Amps are what creates the heat and burns up parts. Add all of these up and this is how I have enough power to go 13+ mph and retain enough torque down low to be smooth without overheating the electronics. This is another reason I didn't bother with an overpriced wheelchair controller.
Why can't the manufacturers figure this out? It's really not that difficult. I did with no formal training. Just a lot of studying on my down time and common sense is all it takes.
Right: The downside of using a custom controller is the complication. There is no "plug and play" interface. You have to manually build the connections from blank connectors. This means a lot of intricate soldering.
The RS232 plug we built above connects with the socket on the bottom right. There are 25 pins. You can have a max of 11 analog inputs, 19 digital inputs, 6 pulse inputs, and 8 digital outputs depending on what you set the pins as in software. Two of the pins are 5 volt + and four are 5 volt grounds.
Left: The top left port is how it interfaces with a pc using a common printer plug.
The bottom left is a 9 pin vga plug for more connections. I did not use it.
The top right "Aux" port is where I connected the hall sensors to the brushless motors.
I've still barely scratched the surface. As said above, this controller was never intended for use in a powerchair. As is, it can make the motors turn and steer. However, you have very rudimentary adjustments for controlling the acceleration, deceleration, and the joystick command mixing algorithm for steering. There are no control adjustments for turning rates, turning acceleration or deceleration, high speed or low speed acceleration ramps, joystick braking, potentiometer speed control, and several other parameters necessary for proper movement. The biggest one being motor compensation. It is the magic formula behind what makes smooth movement at low speeds possible. Without it, a powerchair feels gutless and very difficult to control at low speeds regardless of how much power it has.
All is still not lost. It's saving grace comes in the form of Micro Basic scripting. The Roboteq controllers allow you to write your own computer code in the Micro Basic language for doing things outside of the manufactured abilities. I owe a HUGE thanks to Lenny Robbins from Sienna, Italy. He wrote 98% of the code that makes this chair better than anything you can buy. I can write a bit of code, but nothing on this level. Think 10+ pages of algebra formulas. Literally. After roughly a year of testing, dozens of iterations of the script, and a little bloodshed, we now have a very good script that can be customized with no knowledge of writing code for powerchair control.
A quick explanation of motor compensation: All electrical wiring and hardware has a resistance value. This value is rated in Ohms. The higher the resistance the more difficult it is for electricity to flow through it. Volts determine the motors' rpm. Amps determine the torque. Watts the total power generated. Without motor compensation, you give the joystick 25%, for example, to get over a door threshold. The chair does not move. It is stalled. There is too little voltage being applied to flow the amount of amps needed to generate enough watts for movement. So, you give it 50% joystick. The chair moves since you have given it enough volts to flow enough amps to make enough watts of power. However, now the voltage is too high and you get too many RPMs from the motors. Result: Instead of easing over that door threshold you ramp it and slam your feet into the wall on the other side of it.
The basic formula for motor compensation is motor command = actual motor speed + amps x resistance. Basically, the controller sees what you're telling the motor to do, determines what it is doing, then multiples the amount of amps flowing through the motor times the resistance of the wiring and windings inside the motor to make it do what you're telling it to. Clear as mud?.
Now, for example that same threshold, you give 25% joystick. Instead of stalling, the controller sees the motor is not moving, it multiples the amps flowing through the motor x the resistance and adds that amount to what the motor is doing. In short it quickly gives enough voltage to flow enough amps to move at the amount you tell it to without going faster. The controller does this hundreds of times per second and is unnoticeable by the operator.
Motor compensation must be treated with respect. You have to know the resistance yourself and input the amount into the controller since it has no way to measure it itself. Put too low of a value and it will not work. Put too high though and it will continue to increase the motor command constantly under load, which means THE CHAIR WILL RUN AWAY WIDE OPEN WITH NO WAY TO STOP IT EXCEPT KILLING THE POWER! Don't ask how I know....
This also means you need high quality motors with a low amount of internal resistance and good wiring. All the compensation in the world will not make high resistance motors flow enough amps to be smooth at low throttle. They will be jittery and still stall without giving a lot of joystick, which puts you right back at needing to hire a contractor to repair holes in the wall. Or worse, broken feet.
Under Construction! More coming to this page soon of the electronics and controller! Skip ahead by clicking the link below to see action videos and testing.