Why I wanted to make a SnowPlow Robot ?Since I am not insensitive to solutions for making life easier, I considered the idea of creating and proposing a solution that could help people avoid the winter cold temperature and the fatigue of using the traditional manual shovel to remove the snow from the walk-way. To do this, I opted for something fun and technologic.This way I decided to start developing a Snowplow Robot, remotely controlled, with strong mechanics, control electronics and powerful electric motors. The result is a miniature version of a real snowplow with caterpillars, motorized blade (that can be raised and moved) and light projector mounted on top to light the way in the dark. The robot can be remotely controlled by the PlayStation remote control.
In the following video you can see the snowplow robot in action, somebody told me that seems that for shoveling the snowplow robot must take the run-up, IT IS NOT SO, I have made the video to show how the snow get removed.
The robot is made up of a frame that supports a motorized blade (that can be raised and moved) and the traction system composed of electric motors, wheels and caterpillars tracks. The chassis is realized with rectangular section iron bars welded together. The size of robot is 600X375X240 mm, excluding the blade, and its weight is about 30 kg.
Electrical and electronic part of the snowplow is based on Arduino Uno, hosting three shields and interfacing with:
- MOTOR DRIVER
- RELAY BOARD CHANNEL
- DC/DC converter step up
The shield mounted on Arduino are the motor shield to control the three linear motors that manage the movement of the blade and the PS2SHIELD, which allows you to interface with the PlayStation 2 (PS2); the latter requires the RX-PS2, which is a 2.4 GHz radio receiver for sending/receiving specific commands from the aforementioned console. The wiring diagram of the robot is what you find in these pages; the power source is made by a series of two lead gel batteries by 7.2 Ah: we take the 12 V from the mid-point connection of the two, while between the negative and the positive of the series we take 24 volts. A switch (125V, 2×15 ampere) controls the two supply lines. With 12 volts, we run Arduino, which will power the shields through its pin-strip; a LED (internally mounting the limiting resistor) will indicate when Arduino is running.
The 12 volt directly from the battery stack is also feeding the power section of the motor shield. In fact, since the absorption of the three linear actuators (cod. LACT2) is high, it is not advisable to take the 12 V from Arduino: you opt for the external power supply to be provided to the appropriate PWR terminal. To use the external power supply, you must move the jumper (on the shield) near the terminal, between the central and the EXT. The management of the shield requires a special library for Arduino, supplied with the component. Each linear actuator is composed by a 12 Vdc gear motor using a worm screw to move a shaft back and forth along its length (maximum excursion of 5 cm).
The actuator has a dynamic load of 50 kg and a maximum speed of 1.3 cm / s. It is able to support up to about 250 kg, when not moving, and the torque ensures the maintenance of the position of the shaft even in the absence of power. Two limit switches provide the engine to stop when it reaches the maximum extension and contraction, while the diodes allow reverse direction after reaching the limit point. The actuator is made of metal and is sealed to protect it from dust and water (IP63 rated).
Let us now turn to the 24 volts supply line, which is feeding the power part of the snowplow, which are the traction and the projector (optional) sections: the first is based on the motor driver, to be connected with four wires to the same number of Arduino digital lines. The motor driver is a double bridge power driver capable of driving two brushed motors continuously with a voltage of max 35 VDC and a current of 15 A (each).
By interfacing with Arduino and using only four digital I / O (2 PWM), you can choose the rotation direction and speed of the motors. The circuit has four control pins, four LEDs that indicate the rotation direction of motors, two pins for the board power supply (5 Vdc) and two aluminum heat sinks located in the rear of the printed circuit, necessary to dissipate the heat generated during operation at full power.
For the management of the driver by Arduino, the manufacturer provides a special library. The output terminal blocks allow you to connect the two engines, to be connected as indicated by the diagram (do not invert polarity, otherwise the tracks will run in reverse!) using cables with a section of at least 1.5 sq. mm. About control inputs, it should be respected the connection between Arduino and the controller connector pitch 2.54; correspondence that is needed when using the library provided by the manufacturer and our firmware: if you edit them, you have to revise connections.
Remember that DIR are the logic levels to set the motors rotation direction and PWM are the PWM signals to command the power drivers. To identify the controller connector contacts it’s sufficient to refer to the silkscreen visible next to it on the component side of the circuit board. In addition to the engine controller, the 24 volts will power the section of the LED projector, you can mount or not; if mounted, respected wiring indicated and remember to take the positive 24 V from the relay card (cod. RELAY1CH). The latter houses a relay and the respective drive transistor controlled by Arduino through the Digital I/O 13; Arduino also powers the card, by means of the +5V and ground (GND).
A relay allows turning on and off the projector, targeting action on the corresponding circuit. The projector is designed to operate at 220 Vac, however, since this voltage is not available on the robot, to avoid using an inverter we modified the projector by opening it, removing the AC / DC and bringing the two wires of the power LED directly to the output of the converter DC / DC (cod. STEPUP30V); the latter is a switching converter with adjustable output voltage, which should be tuned in order to provide to the LED a current such as to make it work at about 10 watts. Usually this is achieved at about 30 volts. However remember that the power is given by the product VxI, (current by voltage, in watts is obtained if V is in volts and I in amperes), then to 30 V, the current consumption should be just under 340 mA. Although the group of LEDs is internally protected from overcurrent, the STEPUP30V has a limitation of the output current to 2A so it can be useful to replace it with a DC / DC equipped with output current limite.
Receiving data from the remote control is the job done by the shield PS2SHIELD, for which the manufacturer makes available the specific library. The shield performs the receiving and decoding of the command; the radio part is left to the RX _PS2, which is inserted into the related connector. The last thing to note is the photoresistor, used by Arduino to detect the ambient lighting and to control the board RELAY1CH so the LED projector is turned on; the component is fed to the voltage divider by a resistor of 10 kOhm (1/4 W) and is read from the analog input A0 Arduino. The 5 volts are taken from Arduino 5V. This light sensor does a simple thing: in good lighting conditions, the resistance of the photoresistor is low and the voltage read by the ADC of Arduino microcontroller is low and does not trigger the relay board; darkness instead, increases resistance a lot and the ADC reads a voltage close to 5 volts, which causes the projector to switch on.