LM3909 IC 1.5V LED Flasher Circuit

LM3909 IC 1.5V LED flasher circuit. A circuit that uses the now obsolete LM3909 IC to flash an LED from a single 1.5V cell. This IC and circuit is now a piece of history. I had one of these circuits running on a PCB for years, the circuit finally failed. My attempts to repair the circuit were unsuccessful. It appears that the IC finally failed. Read on for a look at some electronics history.

LM3909 1.5V LED Flasher Circuit Diagram

Below is the circuit diagram of an LM3909 LED flasher taken from an out of print electronics magazine. I built this circuit on a tiny PCB many years ago. The circuit operated from a single 1.5V cell, but could also operate from a single 1.2V rechargeable cell.

LM3909 1.5V LED Flasher Circuit Diagram

LM3909 1.5V LED Flasher Circuit Diagram

Flashing an LED from a Single Cell

I remember the LM3909 being expensive, costing many more times than a 555 IC. The problem with using a 555 is that it could not be used to flash an LED from a single 1.5V cell, but had to operate from a higher voltage. A 555 also drains a lot of current from a battery because of its internal voltage divider resistors.

When the LM3909 became available it was popular with hobbyists because an LED can not be lit up from a single 1.5V cell. Here was an IC that would flash an LED from a 1.5 or 1.2 volt cell, pretty impressive. The cell would last for a long time too.

LM3909 now Obsolete

Unfortunately the LM3909 is not available anymore. It was made obsolete several years ago and has no equivalent or replacement part. There are some transistor circuits available that will flash an LED from a single cell.

Attempting to Revive my LM3909 Circuit

The only LM3909 IC that I have was used in a LED flasher circuit built on a PCB. Fortunately I had used an 8-pin IC socket on the board, so could remove the IC to test it on breadboard. The PCB and breadboard test circuit are shown below. Notice that only two additional components are needed in the circuit – a capacitor and LED.

LM3909 PCB Circuit and Breadboard Circuit

LM3909 PCB Circuit and Breadboard Circuit

After many years of service, the LM3909 finally failed. After testing the PCB circuit with a new battery and then building the circuit on breadboard and testing it, the LM3909 was finally declared dead.

 

Choosing an Arduino for Beginners

In this blog post we look at how beginners wanting to start with Arduino can choose an Arduino board. Help is provided for beginners choosing an Arduino. The difference between an Arduino and AVR ATmega microcontroller is also covered.

Choosing an Arduino for Beginners

The recommended Arduino for beginners is usually the Arduino Uno. On the Starting Electronics website, the article on choosing an Arduino for beginners provides more information on which Arduino to choose when starting to learn about Arduino and writing sketches.

Difference Between Arduino and AVR

Many Arduino beginners are confused about the difference between Arduino and AVR, or Arduino and ATmega. Difference between Arduino and ATmega328 explains what the ATmega328 microcontroller is and how it relates to the Arduino Uno. The article also explains more about the AVR microcontroller found on most Arduino boards.

Breadboard Prototyping with Atmel Xplained Boards

Breadboard prototyping with an Atmel Xplained board is not as easy as using a board such as an Arduino which allows jumper wires to be connected directly from the board’s headers to the breadboard.

Easily Connecting to an Atmel Xplained Board for Breadboard Prototyping

One solution to easily connect to an Atmel Xplained board from a breadboard is to make up a ribbon cable with two female IDC connectors. This allows jumper wires to be inserted into the IDC connector which can then be connected to a breadboard or breadboard circuit. The image below shows how this is done.

Breadboard Prototyping with an Atmel Xplained Pro Board

Breadboard Prototyping with an Atmel Xplained Pro Board

The above arrangement of breadboard prototyping is used in the ASF ARM tutorial series that teaches how to use the Atmel Software Framework on ARM Cortex microcontrollers.

The board in the above image is a SAM4N Xplained Pro board.

Floating Point Numbers don’t Print with sprintf in Atmel Studio AVR C

When writing C program code for 8-bit Atmel AVR microcontrollers and using Atmel Studio, functions such as printf() and sprintf() do not print floating point numbers of type float. Instead of printing a float to a string or standard output, a question mark is printed.

Question Mark is Printed from the sprintf Function Instead of Float Number

The image below shows the output from the serial port of an AVR microcontroller that printed a floating point number to a string using the sprintf() function. The string was then sent to a terminal program running on a PC. The C program was built in Atmel Studio 7 using the default project settings. As can be seen, floating point numbers don’t print with sprintf, but a question mark is printed instead of the expected number.

Floating Point Numbers don't Print with sprintf in Atmel Studio AVR C

Floating Point Numbers don’t Print with sprintf in Atmel Studio AVR C

Cause of the float Printing Problem

The problem occurs because Atmel Studio 7 uses the minimal version of the function that all the printf family of functions rely on. Using the minimal function reduces code size of the printf family of functions which is desirable when using microcontrollers, especially the smaller 8-bit AVR microcontrollers that have small amounts of memory. Floating point numbers are not supported by the minimal function, causing the question mark to be printed instead of the floating point number.

Printing float Numbers with sprintf using AVRs and Atmel Studio

To fix the floating point printing problem, the full function that the printf family uses must be linked into the program instead of the minimal function. The article on how to print floating point numbers in AVR C code with Atmel Studio 7 shows how to include the full function by changing linker settings in Atmel Studio.

After changing setting in Atmel Studio, the sprintf function works properly and prints the floating point number to the terminal as shown in the image below.

Printing float Numbers with an AVR Microcontroller using sprintf

Printing float Numbers with an AVR Microcontroller using sprintf