AM Transmitter using Arduino

Arduino as AM carrier generator with waveform

Arduino can be used to generate RF carrier signal with frequency in AM band from 540KHz to 1700KHz. This can be achieved using the CTC mode of waveform generation. The output is CTC mode is square wave and we can use RC low pass filter to convert the square wave to sine wave. Then we can RF modulator IC like MC1496 to mix message signal and carrier signal to produce AM signal. How this can be done is illustrated here.

The following is circuit diagram of AM transmitter using Arduino.


arduino AM generation circuit diagram

The above AM transmitter circuit diagram consist of following subsystem components:

1. Carrier signal generator using Arduino and LPF

2. Message signal generator

3. RF mixer using MC1496 Balanced Modulator Demodulator

 These are described next.

1. Carrier signal generator using Arduino and LPF

The following circuit diagram shows the how RF carrier signal can be generated using Arduino and RC LPF.


Arduino as AM carrier generator

The Arduino was setup to output square wave in the AM frequency band() using the CTC mode. The Timer 1 of Arduino wave used to for the CTC mode. In CTC mode we have to load count value into the OCR1A register which determines the frequency of the output square wave signal. This is explained in details in the tutorial Arduino CTC mode Programming with Examples. The frequency of the CTC square wave signal and count value for the OCR1A is determined using the formula below.


where N is pre-scalar(either 1, 8, 64, 256 or 1024) and C is the count value to be loaded into the OCR0xA register or ICR1 register. \(F_{cpu}\) is clock frequency of 16MHz for Arduino. 

The count value C in the above equation to be loaded into the OCR1A(or use OCR1B) for given output square wave frequency Fw can be calculated using the ATmega32 Timer1 Online Calculator(ATmega32 and ATmega328p used in Arduino have the same formula. In the case for AM band from 500KHz to 1700KHz the count values are 14 and 4 respectively. So this values are used in the program code for generating the square wave at AM frequencies. 

Now we can change the frequencies from 500KHz to 1700KHz by using a potentiometer connected to the analog pin of Arduino as shown in the above AM transmitter diagram. Then when the potentiometer is rotated we can change the count value and generated different AM frequencies CTC square wave. With Timer 1 and using the channel A we have to use the pin 9. In terms of program, we can either poll the analog reading and change the OCR1A count value or use the interrupt feature to change the OCR1A count value. These two methods are illustrated with program code in the following tutorials.

- Arduino 8MHz Variable Frequency Generator 

- Arduino 8MHz Signal Generator with ISR

 The current frequency of the output carrier wave is displayed on the LCD as shown in the AM RF transmitter block diagram above.

A LPF(Low Pass Filter) is connected to the output pin 9 of Arduino. This filter is used to produce sine wave from the output square wave from Arduino. It is a third order RC low pass filter with resistor values of 300R and capacitor value 1nF. This gives cutoff frequency used in this 482KHz. For greater details see the tutorial on how to generate Sine Wave with Arduino. You can use the 1st order Passive Filter Calculator to calculate the resistor and capacitor values and then cascade the same filter 3 times to produced 3rd order RC low pass filter.

The following shows the waveform generated by Arduino CTC mode and the sine wave after filtering.

Arduino as AM carrier generator with waveform  
Watch the following video which demonstrates how Arduino generates square wave and how to apply filter to produce sine wave carrier for AM signal production.

 2. Message signal generator

The message signal, also called modulating signal is generated using a function generator which generates 1KHz sine tone. This is used for demonstration. 

 One can also apply audio signal from PC or use electret microphone. 

 3. RF mixer using MC1496 Balanced Modulator Demodulator

The aforementioned RF carrier signal and the modulating signal are applied to the MC1496 RF modulator at the input port Vc and Vm respectively as shown in the above AM transmitter circuit diagram.

AM modulator

Here single supply is used to power the modulator. The Single Supply MC1496 AM modulator tutorial explains in greater details how the MC1496 AM modulator can be build with single supply. For two supply see AM modulator using MC1496 modulator(Standard AM).

The carrier input signal, the modulating message signal input and the produced AM signal is shown in the following waveform.

am signal waveform

 The yellow colored waveform is the CTC square waveform from Arduino pin 9, the blue is the filtered carrier signal, the red waveform is the message or modulating signal and the green waveform is the AM signal produced.

The following video demonstrates how the AM transmitter works.


AM signal can also be generated with AM Transmitter using Single Diode Modulator or AM Transmitter using Ring Diode Modulator. See next Arduino AM radio receiver.

If you interested in this project and want the source code for Arduino leave comment below and optionally email address.


Previous Post Next Post