To use an Arduino we need a shield. A perfboard is always the best thing to experiment, until the final version will be realized (if it will be ever realized). To adapt the odd strip spacing of the Arduino with 100 mils standard perfboard spacing, I've used a little trick
, drilling the board and slanting the connector.
There is a thing that worth discussing on, the self-retention relay. The power-on button is just a push-button. Once pressed, the relay that powers on the LLS must be retained in some way. If JP1 jumper is closed, the power supply comes back through R2 to the base, switching on the transistor and keeping the relay on. If JP1 is open, the polarization to the transistor must be driven by the controller, as the very first thing of its program, enabling software self-retention. In this way the LLS can completely switch-off all the power if something is not within the thresholds, batteries are to low, some big fault or simply as a remote controlled command.
In any case the power can be manually switched off with the emergency switch-off push button.
This cuts the power to the main relay, releasing any other power too.
Using a dedicated microcontroller we can control the level of each power line, anticipating some possible faults of the robot with a startup check procedure and with continuous monitoring. The LLS controls in sequence the power supplies (see SW section
) and enables all the powers only if everything is OK. Furthermore, it also controls the battery packs temperature and performs some other low level procedures like controlling the headlights
, reading the obstacle avoidance sensors and any other non time-critical need that can arise.
So... why we have to use all this electronics to simply connect the battery to the boards?
It will be explained in details the subsystem that controls the power supply and the low level functions of the robot.
This is all what you need to control the power supply on your robot.... Usually.
First of all because there are two batteries (one for each part of the robot) that supplies those motors and boards, as shown on this picture. Then because they are LiPo batteries that must be well controlled both on charge and discharge.
The batteries are used to directly power up the motors (two motors for each battery) and, through a switching power supply for each part of the robot, the other boards.
The power supply design is the same already used for Rino. A simpler way to have an high efficiency switched regulator is... to buy an already assembled one. This device is a very good example. Efficiency around 90%, pin-to-pin compatible with standard 7805 regulator, highly reliable and short circuit protected, no external components required.
All those things can be easily programmed with an Arduino.
The 5V I/O and the libraries for ADC and I2C help a lot on interfacing the devices we have. Using an Arduino Mega permits the use of a huge number of I/O ports creating a very expandable system. 16 ADCs for voltage and temperature measurement, 15 hardware PWM ports for controlling different loads, 3 HW serial ports more than the standard programming port.
Excluding the switching power supply, already explained in other pages, there are only some resistive dividers to adapt the input voltage to 5V ADCs and many connectors.
As usual, to have a good compromise between high efficiency and low ripple, the battery voltage (14.4V) is converted to 7V by the switching regulator and then to 5V or 3.3V by an LDO linear regulator on each board. This system also helps to reduce possible noise generated by some board on power line.