Arduino based Controller for the Smart Assistive Mobility Hardware

The main goal of this work is the development of Arduino microcontroller based integral solution for the smart, assistive mobility hardware. The paper presents schematics of device control and electrics, the control logic, the power regulation chain model and affiliated calculate efficiency parameters. The overall experimental investigation of real-life performance of our Arduino model proved quite successful. The added power regulator allowed achieving the stable outputs (±0.001V) to mimic the original controller. The deviation in trajectory compared to the ideal model was small (< 10 %) and can be further reduced by doing micro corrections.


I. INTRODUCTION
Assistive technologies typically allow individuals to accomplish tasks they might not be able to do otherwise and can be considered with an emphasis on potential barriers, driving forces and the potential role of the government funding [ [1]]. However most of these are: not affordable, not easy to obtain, have poor performance, are designed without consulting the targeted user's needs [ [2]].
As controllers for powered mobility vehicles become more and more technologically sophisticated more people are provided the means of independent mobility. A quote of Cooper's intelligent control still remains important designing such systems [ [3]]: "Tunable controllers have had a significant impact, but they only allude to the possibilities for improved mobility. Shared control proves promising for expanding the number and variety of users. Integrated control will increase the independence of power wheelchair users in all realms of assistive technology. Fault-tolerant control can guide one towards safer and more reliable power wheelchairs".
In this article we are proposing our own very effective low cost solution for the control of standard commercial mobility vehicle based on a low powered (~50mA) 16

II. THE REALM OF MICROCONTROLLER
Microcontrollers are becoming more and more common in smart home conceptions due to a low cost of production and reasonably simple implementation. Most of them are capable of typical automation and control tasks [ [4]]. Small microcontrollers are also often used in hierarchical control systems for the initial processing of information in lower layers of implementations and then passing a result to the higher layers. Another interesting example is the design of a smart home system capable of wireless data mining. The end nodes collect data and send it back to the base station where an 8051 microcontroller combined with an Arduino board interprets the information allowing the home monitoring features from a smartphone or remote computer [5]. Other popular implementation is the Intelligent Home Navigation Systems [6] offering a combination of a wheelchair, a voice module and a navigation module capable of letting an elderly or physically challenged people to move inside their living environments. A system can be further enhanced by implementing a microcontroller, for controlling the device by voice through speech processing for example using Hawkboard (OMAP processor) [7]. Another design for controlling the powered wheelchair was developed using Infineon XC886 microcontroller and Infineon BTS7970B power module connected to the motor and drive system electronics [8]. This system was controlled by these chips by comparing the spoken voice commands to the ones trained and sending affiliated control signals to the microcontroller which in turn powered on or the other wheel.  The system architecture is shown in Fig. 1. The Arduino microcontroller platform was used for data mining and signal forming. The input signals (either video, audio, or gestures) were formed and processed on a standard computer and sent via USB connection to Arduino board, which then formed the physical control curves and outputted specific voltages via PWM outs to the control chip of our smart mobility vehicle.

IV. CONTROL OVERTAKE MODEL
On a standard mobility device the movement was controlled by a magnetic contactor joystick manipulating 4 different output voltage values and changing the associated electromagnetic fields whose parameters are read by a builtin microcontroller at all times. The overtaking of control was necessary in order to allow the input from our own separate multimodal controller. So a SIMULINK model (Fig. 2) was created simulating the overtaking of control and outputting the necessary voltage values for the control of electromagnetic field parameters. The four main driving directions were modeled as voltage ramps (the initial values were measured manually). The average control values at max. speed are offered in Table I. Further experimentations proved that specific almost constant voltage sets were outputted in stopped mode as well (shown in Table II). This had to be accounted in our model, noting that while moving in one direction only one set of voltages varied significantly (either positively or negatively), the other sets varied insignificantly.

V. IMPLEMENTATION
The above control overtake model was implemented to the Arduino controller which was then wired to the hardware of our mobility device. The schematic of our implementation is presented in Fig. 3. We have connected Arduino controller to mobility device's controller signal path to read (IN_1, IN_2, IN_3,  IN_4) and set (OUT_1, OUT_2, OUT_3, OUT_4) voltages. Also in built-in joystick side we've added 4 diodes to disable the affect to other system components which were used on the original magnetic contactor board for a situation when we overtake a control and set output voltages from Arduino. Control overtake relay (RELAY_CONTROL) were set OFF in standby, so a power source (+5V) was connected to the joystick so we could also retain the control of a device by a mechanical manipulation of the original joystick. On the overtake condition RELAY_CONTROL goes on and RELAY_DATA connects Arduino outputs to the mobility device's controller while in the same time disconnecting a power source from the joystick.
When the system powers up the Arduino microprocessor reads values of the device's joystick and sets outputs with same values, then waits for a command from the computer and, if a movement command was received RELAY_CONTROL relay goes active and Arduino overtakes the control of the device. The schematics of the control logic are presented in Fig. 4. For power regulation we've used a Linear LT®1084 series positive adjustable regulator which was designed to provide a stable 5V 5A supply with a higher efficiency than the currently available devices from other makers. Our implementation is shown in Fig. 5. In order to get the regulator efficiently calculations and model the loads impacting the output voltage stability, we have used Linear LTspiceIV software [10]. Fig. 6 and Fig. 7 show the simulation running for 10 seconds and, at the second simulation second we simulate two seconds of movement from the Arduino microcontroller witch affected the load and device's battery voltage changes.
From the simulation data we can describe the regulator's efficiency in idle mode The final voltage regulator's stability was really high and, on the input voltage change from 24V to 22V and load current change from 50mA to 150mA we got as low as 0.001V range disturbances.

VI. EXPERIMENTAL SETUP AND EVALUATION
The experimental investigation of our control method was done in indoors to overcome the variations in outdoor environmental surfaces. We have used 4 different loads (60 kg, 70 kg, 80 kg, 100 kg) to mimic the weight of real users. To measure the accuracy of the movement a trajectory was tapped on the floor and the device was driven via built-in controls as well as via Arduino and this data was checked versus the simulated trajectory from our model. The "corridor" of the movement is shown in Fig. 8. The two lines mimic the trajectories. The one in dashes is the "ideal" (simulated) trajectory; the one in bold line is a measured, averaged trajectory. The achieved output control values are shown in Fig. 9. A less than 10 % deviation was noted in real-life movement and can be explained by a variation of user's weight and also the position of front nondrive wheels.

VII. CONCLUSIONS
The solution offered in this work allows the simple and cost effective way of controlling the device's movement by adding an inexpensive microcontroller such as Arduino, allowing further expansion into the realm of automation and multimodal control.
An overall experimental investigation of real-life performance of our Arduino model proved quite successful. The added power regulator allowed achieving the stable outputs (±0.001V) to mimic the original controller. The deviation in trajectory compared to the ideal model was small (< 10 %) and can be further reduced by doing micro corrections, especially by adding the factors of human weight and checking the position of front wheels, and modifying the control values in real-time according to these parameters.