Welcome, visitors and collaboraters of Interactivos?08!
On this website you can find the sources for the solar robot for the Spiral Drawing Sunrise by Esther Polak and team, and some arduino Hacks, mostly involving bootloaders and standard arduino software.

Solar Robot Software
The solar robot's Software is pretty straightforward. The source can be viewed as C-file or the Arduino source project can be downloaded as zip, in the filebrowser at the left. The schematic is given in a hand-drawing. In the scheme one change has been made. Instead of pin4 the power output is connected to pin9 which has PWM capabilities.


Two potmeters are used for setting timer interval and (if used) a maximum charge trigger level. Using a 1/11 resistor divider, the charge-voltage is measured. The motor is connected using a TIP110 darlington power transistor. It is PWM controlled, so at high charge voltage levels, the amount of discharge can be 'spread'. A LED is used for giving feedback whether the triggering works. Timer interval can be adjusted between 1 and 250 seconds.

The software sets a time interval which determines when the capacitors will be discharged over the motor. It also monitors the charge level. When a certain minimum treshold voltage is not reached, the capacitors will not be discharged. The procedure is schematically drawn in the following figure:

The amount of energy that can be stored in a capacitor can be derived using the formula E = 1/2 * C * V^2. (see hyperphysics). In the current setup we are using a capacitor of 12 * 4700uF = 56400uF. Charged at 20V, this gives a possible energy storage of 11,3 Joules.

Let say that the motor consumes 10 Watt in use (no load is 4 Watt, the consumption under load is dependent of weight of robot + sand, friction caused by deformation of the tires), that means that the robot can run for 1 second (10 Watt = 10 Joules/second) on a full charge. The amount of energy storage goes up quadratically with the available voltage. (so the higher the voltage the better) The available voltage is depending on the available amount of sun on the panel.

The charging time of the solar panel is depending on the internal resistance of the panel. The panel has an open-clamp voltage of 22V. The shortcut-current is maximal 300mA. The internal resistance is (V/I=R = 22/0,3)= 73 Ohm. The time constant (RC-time) is thus 73R * 0,056F = 4 seconds. This is the time required to charge the system up to 63% full charge. (in full sun)

Arduino bootloaders
The arduino software from arduino.cc comes with pre-compiled bootloaders. It is however possible to re-compile these sources for different frequencies (8MHz instead of 16MHz) and different controllers. I used WinAVR togeterher with Atmel's AVR-studio for compiling these sources. There is however one problem, the makefiles that are being delivered with the arduino environment cannot be used with a standard AVR-studio - WinAVR system (at least not on mine) so I used a different makefile. Other data on Arduino Bootloader modifications can be found on ladyada.net

The projects and used makefiles can be found in the directory next to this page. Different to conventional makefiles when compiling bootloaders, is to set a linker option (LDFLAGS) to the memory range where the bootloader will be residing, which is dependant of the bootloader's size. For the Arduino NG bootloader this means typing LDFLAGS = -Wl,-Map=$(TARGET).map,--section-start=.text=0x3800. The bootloaders were programmed using the ISP connection and a standard Atmel programmer from AVR-Studio.

Underclocking Arduino's for less power consumption
At the FuseBits section of the programmer tool, the frequency of the controller was changed from 16MHz external to 8MHz internal RC oscillator. The freshly compiled bootloaders can be loaded after that. For the Arduino programming software itself the file board.txt (in the dir 'hardware') needs to be altered for use of a different CPU frequency. -> atmega168.build.f_cpu=8000000L . The effect of this under-clocking operation is a reduction in current of 1/3. (so 27mA at 12V instead of 37mA at 12V)

Sustained powering of an Arduino
Using a big capacitor enables you to let the arduino run when a battery or solar power temporarily is missing. When the Arduino board is not powering much extra components (normally drawing 27mA at 12V) the Arduino can continue to run for roughly a minute on a 1F goldcap. Charging the goldcap while powering the board requires extra current: up to a minute of an extra 40mA (startup can be as high as 300mA) The coldcap(5,5V - 1F) is connected to the power header on the side of the Arduino.


mini ATmega8 Arduino
In order to build a very power efficient Arduino clone, I used a custom developed PCB (my 'muBlock' series. In case you're interested, mail me). This ATmega8L is running at 8MHz (internal RC) so it required altering the Arduino bootloader, as explained above. In order to save space, wires can be soldered directly to this board.

The difference with 'conventional' mini-boards is that this one can be used without a breakout board. The board has connections for 8 sensors and 8 servo's (or other outputs) which are available as 3-ports: for every sensor and servo a power, GND and signal is available. The PORTD of the atmel is complete available, including power and GND, (so can be connected using a 10-pole flatcable) also the standard ISP header (6pin) is available.

Links
wiki.medialab-prado.es Medialab Wiki
arduino.cc Arduino Website
ladyada.net Arduino Bootloader hacks
Interesting kits
http://www.phidgets.com/