diy vacuum robot
This project is designed to be built as easily as possible, as it is easy to find all the elements and parts on websites such as Digikey, eBay, Amazon, etc.
The entire chassis is designed in Solidworks, so 3d printing is possible.
Currently it uses Arduino Uno (
If you don\'t like it very much, you can easily change it to another micro controller and I decided to use it because my goal is that anyone can actually build it), micro-
Metal motor, fan propeller, infrared sensor and corresponding drive module.
And one bit the dust!
So, first I will define all the materials I use and then I will suggest other options with similar behavior.
Controller: Actuator: Sensor: Power supply: 3d printing: other materials: Tools: most vacuum devices have motors with fans.
When the fan blades turn, they force the air to move forward to the exhaust port.
At the exhaust port, it has a filter that prevents dust particles from being thrown away again.
How does the vacuum robot work?
The principle is very similar, but as you can see in the second photo, the fan motor is in the last step, which means that the dust is not passed through it.
The air sucked in is first filtered and then pushed to the exhaust port.
The main difference between each vacuum cleaner is that the robot has a micro-controller and sensor that allows the robot to make a decision so that it can vacuum your room on its own.
Most vacuum robots now have very good algorithms.
For example, they can map your room so they can plan a path and clean it faster.
They also feature other functions such as side brushes, collision detection, return charging base, etc.
As I said at the beginning, I will explain as much as I can so that anyone can understand, but if you already know the basics, please feel free to skip this step.
The most important thing about a vacuum fan is to choose the right one with a decent CFM (
Cubic feet of air flow per minute)
, Is the power of this airflow through the surface, picking up and moving dirt into a dust bag or container.
Therefore, the more air flow, the better the cleaning capacity of the vacuum cleaner [BestVacuum. com].
Most large vacuum cleaners use more than 60 CFM, but since we use small batteries, we can use at least 35 CFM.
The AVC fan I will use has 38 CFM [AVC link]
It actually has a lot of power, but you can use anything of the same size (See picture 1).
Since we need a way to control when the fan is turned on or off, we need a driver.
I will use MOS-
The FET IRF520 is basically used as a switch, and whenever it receives a signal from a micro-controller, it provides the input voltage to the output (Fan). (See picture 2)The H-
We need something different from the fan drive because now we need to control the direction of each motor. The H-
Bridge is a transistor array that allows us to control the current and we can control the direction of the motor by controlling the current.
L298 is a pretty good H-
The bridge of 2A can be provided per channel, so it will be perfect for our motor!
Another example is L293D, but only 800 mA per channel. (
Figure 3 depicts the concept of H-bridge)
The design of the robot is done in SolidWorks, which consists of 8 files.
This step is the most time consuming because all robots start from scratch considering the bumper, container, filter, etc.
The total size of the robot is 210mm x 80mm.
After the design is completed, all parts can be printed in 3d.
If you don\'t have a 3d printer, you can use a 3d hub no matter where you are.
The robot consists of 12 parts (
It takes a while).
It is printed on Robo3d R1 plus using blue gray color fabb filament.
My printing settings are: before doing all the printing, I suggest printing the test samples I have attached so that you can calibrate and modify the parameters.
I spent a lot of time because the fingerprints were big.
Note: Please take care to remove all supporting wires.
Look for the file here: the Thingiverse file for the two sensors I welded the cable, but if you have the connector, you can skip this step.
Once we have the sensor holders, we will assemble them using M3 bolts as shown in the above figure.
It is important to mention that a sensor should flip because it helps us when we assemble them.
The first object to be installed is the motor.
Install them with brackets.
Once you set them up, you can start installing H-
As it shows.
After that, we will start to connect the motor on the dual terminals.
Don\'t worry about how the motor will be connected, you can connect them with any polarity, we can modify the direction of the motor with the code.
They should look like the last picture.
MoThe ball caster will help the robot tilt the ball to the front so that the robot can vacuum better.
The Pololu ball casters already have bolts, but unfortunately they are too big.
So, we will cut them into about 3mm.
Be careful with a knife or saw.
The figure above shows the ideal length of the bolt.
So what happens when the infrared sensor can\'t see the object?
Well, I designed a bumper so that it can detect when it touches a close object.
The first picture shows the concept and how to connect.
Install the button stand and connect it to a small cilinder (see pictures).
After installing the two buttons, you can paste the bumper (
With a small amount of glue).
Note: I will only use one of the buttons as one is broken :(
But it still works great!
To power the sensor, I made a small board to power each sensor.
Cut a small surface of 3x3 cm and install the connector as shown in the second picture.
Be careful to do the right welding.
Once done, mark the plate so you can know the polarity.
I always use the right side voltage as usual.
Connect the ground of each sensor and a terminal of the button to the GND and connect the red line of the sensor to the VCC (
Once they are all connected, fix the wires and set them up.
We need a way to monitor the battery voltage because if the voltage of the LiPo battery drops below 3.
It can damage it permanently.
Our battery is a 3 S LiPo battery which means it has 3 batteries. 7V each.
Because we can\'t connect the battery voltage directly to the Arduino (
Because you will kill the board)
, We should find a way to get the voltage of the battery proportionally in the range of ADC (
Analog Digital converter.
Wire cutting 12 cm (
Red, black and white.
Please always use white or other colors for the signal, but do not use black or red)
The voltage divider will help us reduce the voltage proportionally, so we can connect it to one of the analog inputs.
We need resistance for this. R1 and R2.
I recommend using one fixed and the other as a potentiometer so you can manipulate your circuit and calibrate it carefully.
Use R2 of 1 k ohm and set the potentiometer to 1536 Ohm.
See the theory behind this so you can detect the voltage (
Or you can trust my wiki theory).
I set my desired output to Vout = 5 v and my input is battery voltage = 12 when the battery is fully charged. 68 V.
Test the circuit once you have finished it!
Using a voltmeter, verify that Vout is actually 5 v when the battery is fully charged, otherwise adjust the potentiometer. (
Don\'t set it above 5 v or you can kill the Arduino! )
We are starting to connect a lot of wires now, so we should be very careful, or we can short-circuit.
The battery will provide 3 different things: everything will be connected to the MOS-FET board (
This is not ideal but needs to be improved)
We need 2 public-to-public wires, one to power the motor driver and the other to power the connector of the switch.
Since the connector for batterys is very large, I had to modify it, so I added two new wires, and the wires on the front are male connectors for safety reasons. (
Look at the battery picture)
For more help, see the notes for the pictures.
Make sure everything is connected well!
Keep this connection as we will use it later.
We can start connecting everything.
First install Arduino with Arduino\'s respective bolts.
Then follow the steps shown on the picture.
Connect the corresponding wire to the terminal. Place the Fan.
And connect the voltage divider wire signal to the A4 analog input of the Arduino.
We will need 4 wires from male to female 27 cm in length as they will be connected to the Arduino pin from the motor drive.
They should be connected to Arduino inputs 3,5, 6 and 9, respectively. (
Help to see pictures).
Start connecting the sensor as follows: connect the Mosfet terminal \"signal\" and \"GND\" pins using a female jumper.
The signal must be connected to the digital pin 12 and the \"GND\" pin must be connected to a site on the Arduino. (
We need a switch tu to turn on our bot so I connected a male and female connector so it can connect to the battery.
I would also like to use the indicator LED (optional)
Connect to digital pins 13 and GND.
See pictures for help.
Once you have printed all the container parts, we need to assemble it.
Mark the fabric filter as the size of the filter, then place 1mm on each side, then cut the rectangle.
When displayed on the picture, write down the fragments and put the filter into the container.
Close it carefully and make sure everything is right.
You can charge the robot by pulling the charging cable to connect directly to the charger without having to separate the battery from the robot.
I uploaded an Arduino code that you can use and it is very simple but it works very well.
Download Arduino IDE, compile software and program for your robot! .
The code includes: 1. -
Battery Monitor: * it constantly measures the voltage and if the battery voltage is below the threshold it turns off all the motors and the LED starts to flash.
* When starting it will try to turn on the fan and it will not start if the battery voltage is below the threshold. 2. -
Avoid collision: * it measures the distance from the sensor to the object and turns to the other side when it is close.
* When it is in the corner, it senses and turns 180 degrees.
* The bumper turns right when it hits it. 3. -
Fan control * turn on/off fan 4. -
Motor control with PWM * it moves the motor in two directions.
I encourage anyone who wants to improve this to do and share so that we can improve our knowledge!
Note: I added a test code (
VaccumCode_test_Motors_1. 0. 0)
To ensure the correct wiring of the motor.
If this code is run and the robot is not moving forward, the motor wires on the L298 drive must be replaced.
I also added a Beta code for the side sensor. (
VaccumCode_SideSensorsBeta_1. 0. 0)
I love this project very much, but unfortunately I can\'t support this project forever, so I will let the community share their knowledge. Cheers! -
Cesar nitohart about adding an encoder to the motor so that you can predict where the robot is located?
Add more sensors?
To ensure a better clean mapping, can you follow the edges?
Once you have the encoder, you can save the objects that the sensor sees and create a map!
This is a great project to start building complex code and complex navigation algorithms, so I encourage you to do so! Any suggestions?
Update: 04/10/201719/05/2017 project can now share all your improvements on Github: You like this project and you can buy me a cup of coffee. You\'re awesome!