Измеритель АЧХ на arduino MEGA2560
Добавлено: 24 окт 2019, 11:26
Доброго дня уважаемые коллеги!
Находясь в отпуске, возникла потребность в измерении АЧХ ДПФ самодельного КВ трансивера.
Попробовал сделать это с помощью DVB донгла и генератора шума - ничего хорошего не получилось, т.к. частотный диапазон ДПФ от 1 до 30 мгц, а УСБ свисток работать на этих частотах не захотел (конвертера у меня нету). Осциллографа у меня тоже нет.
В итоге, не много почесав за ухом, собрал такой вот девайс:
Все компоненты были в наличии, нацепляв на беспаечной макетке провода, собрал прототип. И за один вечер получил первый график АЧХ кварцевого фильтра от ФМ приемника на 10,7 мгц на экране монохромного графического ЛСД дисплея с разрешением 128х64 точки на основе контроллера 12684. Не много позже нарисовал в SL6 платку в виде шильда для ардуино МЕГА2560. Пользоваться устройством стало гораздо удобнее.
Почему именно ардуино МЕГА ? Потому, что у нее есть куча портов. Один только дисплей занимает 14 пинов. Хотя, если применить другой дисплей, с меньшим количеством управляющих пинов, допускаю возможность использования более дешевой платформа ардуино на основе контроллеров atmega328. Правда, из-за меньшего количества аппаратных прерываний, придется отказаться от некоторых плюшек.
На видео продемонстрирована первая версия прошивки, сейчас я ее доработал и пользоваться стало на много комфортнее, качество отображения графиков улучшилось, маркер по экрану бегает более четко. Скорость обновление графика на экране (частота развертки) не велика - около 2 секунд. Но это издержки ардуиновской платформы, мои знания еще ооочень скромны, чтобы переходить на более серьезные языки программирования.
Пару слов про дисплей - распиновка подключения к ардуине сделана под конкретную плату. А так ее можно изменить, подкорректировав соответствующий файл конфигурации в библиотеке дисплея. В скетче править ничего не надо. И еще - перед повторением необходимо проверять цоколевку экрана, т.к. существует четыре разновидности, с совершенно разной распиновкой.
Выкладываю все необходимые материалы по данному проекту, может кому пригодится.
Про органы управления измерителя АЧХ:
энкодер - осуществляет выбор режима в стартовом меню. Нажатие кнопки энкодера осуществляется переход в следующее меню. В режиме выбора стартовой частоты (если выбран режим измерения АЧХ) вращением энкодера производится установка нужной частоты (по умолчанию 10 мгц). Кнопкой STEP выбирается шаг перестройки 1-10-100-1000 кГц. Нажав на кнопку энкодера осуществляется переход в меню выбора полосы обзора (по умолчанию 1 мгц). Изменение частоты полосы обзора осуществляется аналогично установке стартовой частоты. Таким образом, например, если стартовая частота установлена на 10 мгц, а полоса обзора 1 мгц, то на экране будет отображаться график полосой 1 мгу, начиная от 10 мгц, заканчивая 11 мгц.
После установки полосы обзора, нажав на кнопку энкодера, программа переходит непосредственно в режим измерения АЧХ. На экране отображается график, по центру рисуется маркер; в левом нижнем углу отображается частота, на которой установлен маркер, а выше этой частоты - значение шага перестройки. Например, при установке полосы обзора в 1 мгц, значение шага перестройки будет равно 7,81 кГц. Т.е. каждый пиксел на экране по оси Х отрисовывается с шагом 7,81 кгц. Шаг перестройки частоты генератора также равен этому значению. Чтобы повысить точность - необходимо уменьшить полосу обзора.
На сколько я понимаю, на практике это не должно вызвать никаких проблем, т.к. если фильтр узкополосный, то полосу обзора можно выставить равной полосе пропускания. В этом случае значение шага перестройки будет минимальным.
Так вот, перейдя в режим измерения АЧХ, вращением энкодера осуществляется перемещение маркера по экрану. Т.о. маркером можно считать полосу пропускания.
Нажав кнопку CHnG, на экране появится надпись перехода в режим CHnG, который позволяет менять стартовую частоту вращением энкодера. Этой функцией достигается эффект перемещения графика по экрану в зависимости от того, в какую сторону меняется стартовая частота. Нажав эту кнопку еще раз программа возвращает в предыдущий режим - измерение АЧХ, где опять энкодером осуществляется перемещение маркера по графику.
Назначение кнопки EXIT думаю понятно - выход из текущего режима, возврат в предыдущий режим.
Режим генератора - думаю все понятно.
В стартовом меню есть еще пункт Settings. Он пока не задействован. Пока не придумал, какие задачи он будет решать.
В общем есть над чем еще работать.
Есть еще несколько версий прошивок, где реализовано масштабирование графика для случаев, когда амплитуда сигнала маленькая и считывать показания не удобно. Но это пока все в доработке.
И еще. В схеме допустил ошибочку. Проверил распиновку дисплея и заметил что пины 22 и 24 Ардуино перепутаны местами. Вывод ЛСД CS1 должен подключаться к выводу 22, а CS2 к выводу 24. На схеме перепутано.
Уффф, вроде все рассказал. Надеюсь понятно изложил информацию.
С уважением,
Александр
Находясь в отпуске, возникла потребность в измерении АЧХ ДПФ самодельного КВ трансивера.
Попробовал сделать это с помощью DVB донгла и генератора шума - ничего хорошего не получилось, т.к. частотный диапазон ДПФ от 1 до 30 мгц, а УСБ свисток работать на этих частотах не захотел (конвертера у меня нету). Осциллографа у меня тоже нет.
В итоге, не много почесав за ухом, собрал такой вот девайс:
Все компоненты были в наличии, нацепляв на беспаечной макетке провода, собрал прототип. И за один вечер получил первый график АЧХ кварцевого фильтра от ФМ приемника на 10,7 мгц на экране монохромного графического ЛСД дисплея с разрешением 128х64 точки на основе контроллера 12684. Не много позже нарисовал в SL6 платку в виде шильда для ардуино МЕГА2560. Пользоваться устройством стало гораздо удобнее.
Почему именно ардуино МЕГА ? Потому, что у нее есть куча портов. Один только дисплей занимает 14 пинов. Хотя, если применить другой дисплей, с меньшим количеством управляющих пинов, допускаю возможность использования более дешевой платформа ардуино на основе контроллеров atmega328. Правда, из-за меньшего количества аппаратных прерываний, придется отказаться от некоторых плюшек.
На видео продемонстрирована первая версия прошивки, сейчас я ее доработал и пользоваться стало на много комфортнее, качество отображения графиков улучшилось, маркер по экрану бегает более четко. Скорость обновление графика на экране (частота развертки) не велика - около 2 секунд. Но это издержки ардуиновской платформы, мои знания еще ооочень скромны, чтобы переходить на более серьезные языки программирования.
Пару слов про дисплей - распиновка подключения к ардуине сделана под конкретную плату. А так ее можно изменить, подкорректировав соответствующий файл конфигурации в библиотеке дисплея. В скетче править ничего не надо. И еще - перед повторением необходимо проверять цоколевку экрана, т.к. существует четыре разновидности, с совершенно разной распиновкой.
Выкладываю все необходимые материалы по данному проекту, может кому пригодится.
Про органы управления измерителя АЧХ:
энкодер - осуществляет выбор режима в стартовом меню. Нажатие кнопки энкодера осуществляется переход в следующее меню. В режиме выбора стартовой частоты (если выбран режим измерения АЧХ) вращением энкодера производится установка нужной частоты (по умолчанию 10 мгц). Кнопкой STEP выбирается шаг перестройки 1-10-100-1000 кГц. Нажав на кнопку энкодера осуществляется переход в меню выбора полосы обзора (по умолчанию 1 мгц). Изменение частоты полосы обзора осуществляется аналогично установке стартовой частоты. Таким образом, например, если стартовая частота установлена на 10 мгц, а полоса обзора 1 мгц, то на экране будет отображаться график полосой 1 мгу, начиная от 10 мгц, заканчивая 11 мгц.
После установки полосы обзора, нажав на кнопку энкодера, программа переходит непосредственно в режим измерения АЧХ. На экране отображается график, по центру рисуется маркер; в левом нижнем углу отображается частота, на которой установлен маркер, а выше этой частоты - значение шага перестройки. Например, при установке полосы обзора в 1 мгц, значение шага перестройки будет равно 7,81 кГц. Т.е. каждый пиксел на экране по оси Х отрисовывается с шагом 7,81 кгц. Шаг перестройки частоты генератора также равен этому значению. Чтобы повысить точность - необходимо уменьшить полосу обзора.
На сколько я понимаю, на практике это не должно вызвать никаких проблем, т.к. если фильтр узкополосный, то полосу обзора можно выставить равной полосе пропускания. В этом случае значение шага перестройки будет минимальным.
Так вот, перейдя в режим измерения АЧХ, вращением энкодера осуществляется перемещение маркера по экрану. Т.о. маркером можно считать полосу пропускания.
Нажав кнопку CHnG, на экране появится надпись перехода в режим CHnG, который позволяет менять стартовую частоту вращением энкодера. Этой функцией достигается эффект перемещения графика по экрану в зависимости от того, в какую сторону меняется стартовая частота. Нажав эту кнопку еще раз программа возвращает в предыдущий режим - измерение АЧХ, где опять энкодером осуществляется перемещение маркера по графику.
Назначение кнопки EXIT думаю понятно - выход из текущего режима, возврат в предыдущий режим.
Режим генератора - думаю все понятно.
В стартовом меню есть еще пункт Settings. Он пока не задействован. Пока не придумал, какие задачи он будет решать.
В общем есть над чем еще работать.
Есть еще несколько версий прошивок, где реализовано масштабирование графика для случаев, когда амплитуда сигнала маленькая и считывать показания не удобно. Но это пока все в доработке.
И еще. В схеме допустил ошибочку. Проверил распиновку дисплея и заметил что пины 22 и 24 Ардуино перепутаны местами. Вывод ЛСД CS1 должен подключаться к выводу 22, а CS2 к выводу 24. На схеме перепутано.
Уффф, вроде все рассказал. Надеюсь понятно изложил информацию.
С уважением,
Александр