Remote Controlled (R/C) Airplane LED Flasher using ATTINY12 microcontroller

right wing (1)

Downloads
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
Overview
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 +

right wing (1)

In the photograph above, you can see the flash of a yellow LED inside the right wing tip
of the Parkzone Citabria.
Circuit
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.

Firmware

This is just about the simplest program that uses interrupts that one can write.

The “heartbeat” of the firmware is a subroutine routine named wait_50ms sets up the 8 bit timer to interrupt the processor, and then puts the processor to sleep. After 50 milliseconds, the processor is awakened by the timer interrupt, the interrupt is cleared, and subroutine returns to the instruction in the main routine after the instruction that called wait_50ms .

The main routine merely sets or clears bits on the output pins and then waits for 50 milliseconds, and sets and clears pins as appropriate to reproduce the intended wave forms on the output pins. Since there is only one timing routine, all changes on the output pins take place according to the 50 millisecond granularity of this timing method. It should be noted that because there are varying numbers of instructions between calls to  wait_50ms, the timing between changes in the output pins varies throughout the entire 1 second cycle by a few microseconds. This tiny variation in timing is not visible. Using this method to control the timing of the drive pulses brings a new meaning to the term “flash memory”.

Read more: Remote Controlled (R/C) Airplane LED Flasher using ATTINY12 microcontroller

Leave a Comment

Your email address will not be published. Required fields are marked *