(Ab) используйте Arduino в качестве AM Music Transmitter!
Компоненты и расходные материалы
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 |
Приложения и онлайн-сервисы
|
Об этом проекте
С микроконтроллерами ATmega можно делать крутые вещи. Так у меня возникла идея создать AM-передатчик с Arduino Nano (возможен и любой другой Arduino)
Вопрос в том, как добиться амплитудной модуляции (AM) на цифровом устройстве? AM означает, что амплитуда несущей частоты изменяется в соответствии с амплитудой входного сигнала, который мы хотим передать. Говоря математически, мы умножаем несущую на входной сигнал. Но поскольку ATmega имеет только цифровые выходы, он может выдавать только два значения:высокое и низкое. Откровенно говоря, нет никакого способа получить настоящий AM от Arduino.
Тем не менее, можно получить некоторый выходной сигнал, который будет отчетливо слышен с помощью обычного радиоприемника AM!
Решение состоит в преобразовании аналогового входного сигнала в сигнал ШИМ с использованием АЦП и 16-битного таймера / счетчика1 микроконтроллера ATmega.
Таймер / счетчик2 генерирует несущий сигнал, который может изменяться в широком диапазоне от 31 кГц до 8 МГц.
Этот несущий сигнал выводится на вывод D11 в ритме сигнала ШИМ. AM-радио ведет себя как фильтр нижних частот на ШИМ, поэтому мы возвращаем исходный аудиосигнал там.
Это всего лишь проверка концепции, поэтому я не усложнил ее. Если вы действительно хотите использовать его в качестве РЧ-передатчика, вам следует добавить фильтр нижних частот для сглаживания аудиовхода и фильтр нижних частот против гармоник на выходе РЧ.
Код
- AM-передатчик Arduino
Передатчик Arduino AM C / C ++
/ * Эта работа находится под международной лицензией Creative Commons Attribution-ShareAlike 4.0. Чтобы просмотреть копию этой лицензии, посетите http://creativecommons.org/licenses/by-sa/4.0/.*/#define ANTENNA_PIN PB3 // Arduino Nano / Uno D11 // функция настройки запускается один раз при нажатии кнопки сброса или включите питание Boardvoid setup () {Serial.begin (115200); // Генерация несущей частоты uint32_t fTransmit =600; // DDRB кГц | =(1 <18,5k Частота дискретизации DIDR0 =(1 <
Схема
Производственный процесс