Симулятор амплитудной модуляции с Python GUI и Raspberry Pi
Симулятор амплитудной модуляции с Python GUI и Raspberry Pi
Амплитудная модуляция (AM) — это метод модуляции сигнала, который широко используется радиостанциями для передачи своих программ. В этом проекте предлагается симулятор амплитудной модуляции на основе Python GUI для изучения AM.
Пользователь может изменять различные параметры, такие как индекс модуляции, амплитуда и частота модулирующего сигнала, а также сигнал несущей, и наблюдать за выходным сигналом. Проект может быть использован радиоинженерами для моделирования модуляции сигналов для проектирования различных несущих сигналов, а также их модуляции и демодуляции.
Этот GUI разработан на Python 3.10.1 с использованием Jupyter Notebook. Поскольку в проекте используются только два компонента, как показано в ведомости материалов, нет необходимости в какой-либо принципиальной схеме. Просто подключите LCD к
Для амплитудной модуляции несущая модулируется в соответствии с мгновенной амплитудой сигнала сообщения (модульного сигнала). Чтобы понять, давайте рассмотрим синусоидальную волну как сигнал сообщения, который необходимо передать. Допустим, амплитуда сигнала сообщения равна Am, а его частота — fm. Математическое представление сигнала сообщения во временной области будет следующим:
m(t) = Am.cos (2πƒmt)........Уравнение 1
Несущим сигналом является высокочастотная радиоволна с амплитудой Ac и частотой fc, которая представлена:
c(t) = Ac.cos (2πƒct) ........Уравнение 2
Уравнение модулированного сигнала:
Индекс модуляции определяет уровень модуляции, который можно определить как:
Установка программного обеспечения
Для проекта требуется программное обеспечение: Python 3.10.1, Tkinter, Matplotlib и NumPy.
Сначала установите дистрибутив Anaconda или среду Python 3 в Raspberry Pi. Затем установите Tkinter, Matplotlib и NumPy.
Далее импортируйте эти библиотеки в код и подготовьте код для симулятора модулятора сигналов.
Jupyter Notebook от Anaconda создает интерактивную веб-среду вычислений Python в любом браузере, выбранном при установке while.
Рис. 1: Анаконда
Создайте новый блокнот из меню «Файл» Jupyter IDE, выбрав Python 3 в качестве ipykernal. Переименуйте новый ноутбук в Analog Communication Simulator.
Рис. 2. Библиотека Jupyter
Этот проект использует функции из библиотек Tkinter, Matplotlib и NumPy, поэтому импортируйте их библиотеки. Вы можете использовать pip install и conda install для установки библиотек. Например, pip install matplot
Рис. 3. Блокнот Jupyter GUI
Далее создайте графический интерфейс пользователя (GUI) для симулятора. GUI включает в себя окно с холстом для построения графиков и поля ввода для получения пользовательских данных об амплитуде, частоте сигнала сообщения и сигналах несущей, а также об индексе модуляции. Он включает в себя три кнопки для построения сигнала сообщения, сигнала карьеры и модулированного сигнала, а также для очистки холста (см. рис. 4).
Рис. 5: Идеальная модуляция
Код
В коде сначала импортируйте различные пакеты Python для бесперебойной работы различных функций, как показано ниже:
из импорта tkinter * из рисунка импорта matplotlib.figure из matplotlib.backends.backend_tkagg импорт (FigureCanvasTkAgg, Navigation Toolbar2Tk) из tkinter import ttk импортировать numpy как np
Чтобы отобразить корневое окно и управлять другими компонентами в этом окне, используйте функцию Tk() для первого отображения корневого окна. Цикл событий этого окна создается функцией mainloop(). Здесь можно указать заголовок корневого окна. В следующем фрагменте кода показана эта процедура:
Интерфейс между рисунком и холстом Tkinter обеспечивается классом FigureCanvasTkAgg. Здесь вы можете создать холст шириной = 1050 и высотой = 650, расположив его по координатам x = 230, y = 50 следующим образом:
Далее создайте виджеты для отображения сообщений, карьеры и модулированных сигналов. Для пользовательских значений амплитуды и частоты сигнала используйте виджет ввода из пакета Tkinter. Эти значения сохраняются в переменных для дальнейшего расчета. Все виджеты группируются с помощью функции фрейма.
Рис. 5: Идеальная модуляция
Два виджета-кнопки используются для отображения сообщения и сигналов несущей. Команды для этих кнопок определяются путем получения входных данных из переменных виджета ввода (амплитуда и частота) и использования функции sin из пакета Python NumPy.
Рис. 6: Под модуляцией
Математическое уравнение для модулированного сигнала определено в уравнении 3. Оно построено с использованием пакета NumPy. Определяемый пользователем индекс модуляции используется для расчета и построения модулированного сигнала.
Необходимо разработать кнопку для очистки изображения на холсте. Этого можно добиться с помощью функции .clear().
Для проверки запустите код симулятора и укажите значения модуляции сигнала. Проверьте идеальную модуляцию при модуляции и перемодуляции сигналов с помощью моделирования. Случаи тестирования показаны следующим образом.
Рис. 7. Чрезмерная модуляция
Когда индекс модуляции поддерживается на уровне 1, как показано на рис. 5, вы получаете идеальную модуляцию. Когда индекс модуляции ниже 1, как показано на рис. 6, это называется недостаточной модуляцией. Когда индекс модуляции больше 1, как на рис. 7, вы получаете перемодуляцию.
Ахтар Надаф — энтузиаст электроники, работающий в компании N.K. Инженерно-технологический колледж Орхидеи, Солапур
Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов!
Подробно тут! Жалоба