FINAL PROJECT: Omnidirectional Platform Controlled by Android



The idea of the project is to make a platform to move people who are in wheelchairs and improve their mobility in confined spaces using a mobile application installed on their mobile or tablet. A platform driven by four motors and four omnidirectional wheels allows the user to scroll in any direction with his wheelchair above the platform.

The first idea...



Note: omnidirectional wheels have three degrees of freedom and allow longitudinal, transversal and rotational movement.



The project is divided into three working areas where I apply different disciplines that I have learned during the course.


___________________________ELECTRONIC DESIGN___________________________________

It’s basically formed by 3 different electronic boards, one battery and four DC motors.



Main Board:

This board receives commands through its serial port, translates these into speeds and then it sends this information through 8 digital outputs: 4 PWM signals and 4 signals to define direction of rotation.

I decided to use the Barduino because it has all the outputs that I need and it is very easy to program.

In this picture I annotated the pinout that I used for engine drivers and the bluetooth module.




To connect the Barduino with the other boards, I made a simple shield using a prototype board with all necessary outputs.





Motor controller board:

This is the board for moving each of the DC motors. It’s a board basically formed by "H-bridge" and a "gate driver" for switching Mosfets doors.



The majority of integrated drivers as the A4953ELJTR not support more than 2 o 3 amperes. My platform has to move with the weight of a person and the power of each motor will be high so I considered necessary to do my own power board.

Another thing that I added in the design is an optocoupler. The idea is to control each motor using a direction signal and PWM signal only, because the majority of schemes used 2 PWM signals. In this case I would need 8 PWM outputs and another Barduino board control. First I did all the tests on a test board to verify correct functioning. Then I started PCB design using Altium program and finally I export the file to png image to make it with a milling Modela.

To be able to design the plate to one side without using many bridges,I found it necessary to use a plate with two sides covered with copper, so as to use one of them as ground.

Is very IMPORTANT to pass a wire through all holes and welding it on both sides of the board!!



Design files:

motorcontroller.sch

motorcontroller.traces.png

motorcontroller.outside.png

motorcontroller.components.png

motorcontroller.pinoutguide.png

motorcontroller.bom.xls




Bluetooth communication board:

This board allows the connection between the mobile and the main board by Bluetooth. It has Bluetooth communication module RN42.

Battery:

Essential element that will provide the power needed to move the device. This platform has to pull the weight of a person, therefore It's important to provide the system with a battery of about 42Ah. I use gel batteries for this type of applications. In this prototype I have used a less amperage battery for testing. The voltage must be 12V, because the engines work with that voltage.

The idea is to put the batteries on top, but as I use a smaller battery I preferred to place it underneath and improve aesthetics. :)

Motor

I have used 4 DC motors Ref:CIG420040. Features: 12V and 40W with a planetary gearbox and a rotation speed of 120 rpm.



_______________________ANDROID APPLICATION DESIGN______________________________

I use “Eclipse as an environment to programme the application with the ADT plugin (Android Development Tools). I'm not an expert in java language but there are a lot of samples that helped me to create my application. I had worked many hours on this application until I found the result I wanted, and I'm still improving to.



The application will be divided into two basic parts:

o Communication: responsible for managing the Bluetooth communication between the main board and the mobile or tablet.



o Send Data: Controls movement across the touch screen. Converts the position of the fingers on display in values ranging from 0 to 127 in one direction and from 0 to 127 in the other direction for the X axis and Y axis and sends this information by bluetooth. When the main board receives these values, they are converted into longitudinal, transversal and rotational speeds.




__________________________MECHANICAL DESIGN_________________________________

I have made a design that allows to place a wheelchair on the top of the platform easily. Its dimensions do not exceed the normal size of conventional wheelchairs. After knowing the possibilities of "composites" I decided to make the platform using 3 layers of wood.



I considered the size of all components: motors, wheels, electronic boards, battery... and I did the design with Rhinoceros.



I used the laser cutter to cut all the wooden slats and to do the engraving.



After that, I started with the process of vacuuming and I waited...



Then I had to polish the wood and review the holes...



Additional mechanical pieces...

In order to get the wheels to the engine I needed to make a piece of metal. Thanks to the workshop that I have in the company where I work and with the help of Andrew, a partner could make parts with a lathe.



Another piece that I had to design is the engine bracket to hold the wood. This piece was designed in Rhino and then I had an external company manufacture the laser. It's a piece composed by two welded part.



Leveraging support of my company I could the base to hold a conventional chair on the platform. It is a concave part used in many conventional chairs.



From here I started with the setting up of the platform. First with engines and wheels, then with the placing the footrests and finally with the electronics.





After several hours of work, I placed the chair above the platform and checked whether it was fitting in properly.





The most important moment was when, after having done countless tests separately, I finally connected all pieces at once. After some software settings this was the result...