Download the AVRStudio assembly source for the program: T12astrobe081028A
Download the AVRStudio assembly source for the include file: T12astrobe081028A.hex
Find updates at www.projects.cappels.org
This was designed to flash a pair of LEDs to be mounted on the wing tips of a Parkzone Citabria R/C (remote control) airplane. The unmodified Parkzone Citabria only weights 20 grams (about 0.7 oz), so weight, and therefore the number and size of the electrical components for the flasher are critical.
Another major constraint was the range of power supply voltage and current draw. The battery in the Parkzone Citabria varies from 3.7 to 4.2 volts. which rules out circuits such as the Simplest LED Flasher Circuit, which requires a higher voltage. Current draw also needs to be kept low because the battery is tiny. The CMOS AVR controller handles both of these requirements beautifully.
I used the AVR ATTINY12 controller from Atmel because I have plenty left over from other projects. With some modification to the code, you can use the ATTINY13, which is also available in both 8 pin DIP and surface mount packages, or nearly any AVR or other small CMOS controller. See firmware discussion below.
Here is the pin assignment for the ATTINY12 and ATTINY13.
Pin 1 Battery +
Pin 2 PORTB3 4 Hz, 50 ms positive pulse
Pin 3 PORTB4 10 Hz 50 ms positive pulse (square wave)
Pin 4 Battery –
Pin 5 PORTB0 4 Hz 100 ms positive pulse
Pin 6 PORTB1 2 Hz 50 ms positive pulse
Pin 7 PORTB2 4 Hz 100 ms positive pulse
Pin 8 Battery +
In the photograph above, you can see the flash of a yellow LED inside the right wing tip
of the Parkzone Citabria.
The circuit is simply the micro controller connected to a battery and an appropriate bypass capacitor, and one or more LEDs with series current limiting resistor.
(This project should only be posted on www.cappels.org.) If you see this elsewhere, please email me at the address below.)
You can also invert the pulse. For example, you can invert the 2 Hz 100 ms wide pulse to light the LED for 400 ms by connecting the LED from the positive power supply to the output pin. The circuit below takes advantage of this phenomenon.
n the circuit above, the red and yellow LEDs alternate. I think this will probably pretty good with the 10 Hz 50% duty cycle. The nice thing about wiring this way it is that one LED or the other is on at any given time so the disturbance to the power supply, which might affect the R/C receiver, is minimal.
Since there are several outputs, it is possible wire many LEDs that blink at different rates and durations by connecting the LEDs in different arrangements between outputs and the battery positive terminal, outputs and the battery negative terminal, and between output pins.
VLED is the voltage across the LED when it is driven at the operating current. This is easy enough to measure, or you can probably find this voltage in the LED’s data sheet.
ILED is the desired current through the LED.
Take a look at the data sheet for the micro controller you are going to use, and find the maximum permissible current for the power supply pins and the output pins. The total of all of the currents through all of the LEDs connected to a given output pin must be less than that specified as the maximum output current for an output pin. For the ATTINY12, the maximum current through an output pin is 40 milliamps. The total of all of the currents into or out of all of the output pins must be less than the current specified as the maximum current through a ground or power supply pin. For the ATTINY12, the maximum current through a power or ground pin is 100 milliamps. For our purposes, we can ignore current used by the controller itself since it is so low.
When considering the current through an output pin that drives LEDs alternatively, such as that shown in schematic 2, it is only necessary to use the highest of the two currents since both LEDs are not on a the same time.