While building some robots for a museum we came up with the idea of using an electric wheelchair as the base for the robot.
Not wanting to replace the electronics we gave it a shot to try to use the existing motor driver and control it from an Arduino. On inspection it turned out to be a very common Penny and Giles Pilot plus drive.
Very little technical information is available about the interface between the joystick- and motor unit of this system. So we started reverse engineering. Here is what we have found so far.
The physical connection is using a propitiatory 6 way connector.
I turns out that the joystick sends drive data packets with checksum roughly every 10mS. Immediately after the data line changes direction and the motor controller returns a packet of data, again with checksum.
Simultaneously but not in sync another data signal is sent to control lights and actuators.
The data format seem to be completely non-standard but relatively simple to encode.
Probably for safety reasons the system does not tolerate any signals being missing or corrupted without shutting down so a fair bit of probing and fiddling went in to eliminating the joystick and replacing it with an arduino.
Here is a rough cut first Arduino sketch that allowed us to drive the wheelchair motors actuators and lights.
Quick shaky video of it running.
We plan to turn out a easy-to-use Arduino library for controlling the PG Pilot Plus soon.