Cool things can be done with ATmega MCUs. So I got the idea to build an AM transmitter with an Arduino Nano (Arduino UNO is also possible) The question is, how to achieve amplitude modulation (AM) on a digital device? AM means that the amplitude of a carrier frequency is changed according to the amplitude of the input signal we want to transmit. Mathematically speaking, we multiply the carrier by the input signal. But since an ATmega has only digital outputs, it can only output two values: high and low. Frankly speaking, there is no way to get real AM out of an Arduino. However, it is possible to produce an output signal that can be clearly heard with an ordinary AM radio receiver! The solution is to convert the analog input signal into a PWM signal using the ADC and the 16-bit timer/counter1 of the ATmega MCU. The timer/counter2 generates the carrier signal, which can be varied in a wide range between 31 KHz and 8 MHz. This carrier signal is output beteen Pin 3 and 11 in time with the PWM signal.
The receiving AM radio behaves like a low pass filter on the PWM, so we get the original audio signal back there. This is just a proof of concept, so I kept it simple. If you really want to use this as an RF transmitter, you should add a low pass filter for anti-aliasing to the audio input and a low pass against harmonics to the RF output. Check out the video to see how it works.
Comments