|
|
#1 (ссылка) |
|
Crow indian
Регистрация: 21.02.2009
Возраст: 40
Сообщений: 29,997
Поблагодарил: 398 раз(а)
Поблагодарили 5988 раз(а)
Фотоальбомы:
2576 фото
Записей в дневнике: 698
Репутация: 126089
|
Тема: Частотомер на Arduino pro mini (ATmega168)Частотомер на Arduino pro mini (ATmega168) С. СИДОРЕНКО, г. Раменское Московской обл. сновой описываемого частотомера является модуль Arduino pro mini [1] на микроконтроллере (МК) ATmegal68. Выбор этого модуля обусловлен принципом "разумной достаточности", поскольку в нём использован кварцевый резонатор HC-49S, объём памяти МК для загрузки кода — 15 кБ, а объём самого кода не превышает 6 кБ, его доступностью и приемлемой стоимостью, что позволяет получить максимальную эффективность при минимальных затратах. Частотомер выполнен по классической схеме счёта числа импульсов за определённый промежуток времени. Основные технические характеристики
Схема частотомера показана на рис. 1. По своим параметрам он немного превосходит частотомер [2]. ![]() Измеряемый сигнал поступает на вход усилителя-формирователя на транзисторе VT1 и логическом элементе DD1.1. Логический элемент DD1.2 разрешает прохождение импульсов на вход модуля А1. Микроконтроллер модуля формирует измерительный интервал, производит подсчёт импульсов и выводит результат измерения на ЖКИ. Выводы RS, Е и четыре линии данных DB4—DB7 ЖКИ подключены к выводам АО—А5 модуля А1. Цифровые выводы пригодятся для дальнейшей модернизации. Линия R/W подключена к общему проводу, так как нам потребуется только функция записи в память ЖКИ. Измерительный интервал 1 с формируется с помощью двух восьмиразрядных таймеров Т2 и ТО МК, которые работают независимо от режима работы самого МК. Подсчёт импульсов ведётся с помощью таймера Т1 (вход — контакт 5 А1). Поскольку он шестнадцатиразрядный, поэтому считает до 65536. Конечно, это слишком мало. Поэтому используем возможности таймера Т1 по переполнению. Для этого обычно используется обработчик прерываний по переполнению, но мы будем использовать регистр флагов TIFR. Скетч в цикле 1оор() контролирует таймер Т1 и в режиме счёта при установке флага переполнения счётчика добавляет 1 к переменной count. По истечении времени измерения, когда на выходе А таймера ТО (контакт 6 А1) устанавливается лог. 0, производится расчёт измеренной частоты и вывод получившегося значения на ЖКИ HG1. Весь цикл измерения и отображения составляет чуть больше 1 с. Для коррекции показаний введена переменная Кк. Обычно она имеет тип float, что для МК не очень хорошо. Но у нас Кк — integer и содержит погрешность показаний в герцах на частоте 4 МГц. Корректируются показания пропорционально частоте. ![]() Изначально планировалось сделать два режима измерения: 1 с и 0,1 с. Оказалось, что при 0,1 с вывод на экран требуется делать в течение не менее 0,5 с. В противном случае показания на экране будут "мельтешить". Разница в 1 с и 0,6...0,8 с на глаз не сильно заметна, а вот точность показаний в десять раз хуже. Поэтому я отказался от периода измерения в 0,1 с. Да и скетч получился проще. Использование таймера ТО в качестве счётчика-делителя лишает нас функций delayf) и millis(). Поэтому сделана подпрограмма pauza(), чтобы облегчить работу МК. Печатная плата для частотомера не разрабатывалась, поскольку время, затраченное на разработку, травление, лужение, сверление отверстий, намного больше, чем монтаж элементов устройства на макетной печатной плате размерами 60x80 мм с металлизированными отверстиями. Соединения между деталями и узлами произведены с помощью проводников от шлейфа IDE HDD компьютера (такие HDD уже не используются). Толщина их менее 0,1 мм, но этого достаточно для прохождения сигнала. Изоляция у них виниловая, хорошо снимается, если это необходимо. В одно отверстие на плате легко входят три проводника в изоляции. Сами проводники хорошо облуживаются. Сначала устанавливают перемычку о между контактами 3 и 4 на плате модуля Arduino pro mini. Затем устанавливают саму плату на небольшой высоте над ю макетной платой. Контакты для программирования МК модуля припаяны к макетной плате и соединены с платой модуля А1. Теперь можно запрограммировать МК. У меня была установлена Arduino IDE v1.8.9. Более поздние версии должны тоже корректно компилировать. Устанавливают драйвер Сот-порта СН341. Подключаем модуль Arduino pro mini к компьютеру с помощью адаптера USB-TTL СН341. Сам адаптер подключают к Arduino pro mini в соответствии с таблицей. В Arduino IDE в меню "Инструменты" выбираем плату — Arduino pro or Pro mini, процессор — ATmega168 (5V, 16MHz), порт — в моём случае Com 3. Порт должен отображаться, в противном случае надо проверить установку драйвера в "Диспетчере устройств". Загружают скетч в Arduino IDE, проверяют и загружают в модуль Arduino pro mini. Далее с помощью изолированных проводов подключают ЖКИ. Чтобы защитить сигнальные входы и выходы модуля А1, я подключил их через резисторы сопротивлением 1 кОм, а вывод 15 ЖКИ к линии питания +5 В — через резистор сопротивлением 200...560 Ом. Это не обязательно, просто делюсь опытом. Эти резисторы не влияют на работу устройства. Затем монтируют элементы входного усилителя-формирователя на транзисторе VT1, микросхему DD1 устанавливают панель и делают все соединения. После подачи напряжения питания налаживание начинают с регулировки резистором R6 контрастности ЖКИ. На экране сначала появляется надпись Arduino f-metr, затем на первой строке — f = О Hz, а на второй — 1s. На коллекторе транзистора VT1 подборкой резистора R1 выставляют напряжение 2,8...3 В. Дают прогреться 3...5 мин и подают на вход частотомера образцовую частоту 4 МГц (или частоту с известной погрешностью). У меня на ЖКИ были показания f = 3,999739 MHz. Разница в 261 Гц в меньшую сторону. Следовательно, переменная Кк = 261. Если показания превышают образцовую частоту, Кк со знаком минус записывают это значение Кк в скетч и перепрограммируют Arduino pro mini. Налаживание закончено. Корпус частотомера может быть любой, куда помещается плата. В корпусе делают отверстия для ЖКИ и разъёмов входа и питания. Для расширения диапазона измеряемых частот потребуется дополнительный счётчик-делитель на восемь. Под рукой оказался счётчик 74LS90 (российский аналог — К555ИЕ2). Предельная рабочая частота 74LS90 — 32 МГц, К555ИЕ2 — 50 МГц. Использовать можно любой счётчик-делитель, лишь бы он обеспечивал необходимую частоту измерения. Удачным решением может быть использование микросхемы 74НС93, у которой предельная частота 77 МГц. Схема установки такого счётчика-делителя в частотомер показана на рис. 2 (нумерация элементов продолжена). Вход С1 у счётчика 74LS90 инверсный, поэтому он подключён к выходу элемента DD1.2, если вход прямой, его подключают к выходу элемента DD1.3. В принципе, можно было бы использовать и деление на десять. Тогда бы пришлось задействовать выход Q4 счётчика DD2 и дополнительный вход Arduino pro mini. Но у счётчика 74LS90 есть недостаток, при делении на десять может проскакивать лишний импульс. Входы сброса (выводы 2 и 3 DD2) объединены по схеме И. Сброс — по фронту импульса. А нам нужно, чтобы сброс происходил по схеме ИЛИ, так как он должен происходить и в режиме счёта и по команде Arduino pro mini. Для реализации этой функции использованы элементы DD1.3 и DD1.4. В доработанный скетч добавлены битовое считывание показаний счётчика, умножение значения частоты на восемь при её вычислении, сброс счёт чика и расчёт коррекции для частоты 16 МГц (тактовая частота МК). Внешний вид смонтированной платы частотомера показан на рис. 3 и рис. 4. Конечно, можно было бы поставить делитель на входе частотомера и так не заморачиваться. Но в моих планах сделать щуп-делитель для измерения частоты выше 200 МГц. ЛИТЕРАТУРА 1. Arduino pro mini. — Характеристики, распиновка, описание платы. — URL: https:// clck.ru/FDUZ6 (01.12.23). 2. Булдаков А. Частотомер на LGT8F328P-LQFP32 MiniEVB. — Радио, 2023, № 4, с. 29— 32. От редакции Скетчи для Arduino pro mini находятся по адресу http://ftp. radio.ru/pub/2024/01/f-metr.zip на нашем FTP-сервере. |
|
|
Цитировать 12 |
|
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| [10-2015] FLProg — система визуального программирования для Arduino | poster333 | Уголок радиолюбителя | 0 | 25.10.2015 21:46 |
| Многофункциональный частотомер | Admin | Измерительные приборы | 0 | 27.05.2015 21:26 |
| freeduino/arduino - что можно придумать? | VIC | Разговоры обо всем | 4 | 29.04.2010 18:19 |
| Ответить в этой теме Перейти в раздел этой темы Translate to English |
| Возможно вас заинтересует информация по следующим меткам (темам): |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|