Представлен разработанный четырехканальный измерительно программно-аппаратный комплекс на базе микроконтроллера Arduino для измерения амплитуд, частот и периодов переменных сигналов с частотой от 50 до 9000 Гц и амплитудой до 9 В.
При проведении физических исследований и разработки низкочастотных радиотехнических устройств часто требуется одновременное измерение параметров нескольких сигналов, в частности определения их амплитуд и периодов (частот).
В работе представлено описание аппаратно-программного комплекса на базе микроконтроллера Arduino UNO [1, 2]. Известно, что особенностью микроконтроллера на базе процессора Atmega 328 является встроенное АЦП с разрядностью 10 бит. Наибольшее распространение этот микроконтроллер получил в схемах с постоянным током. Однако, его относительно высокая тактовая частота (16 МГц) позволяет добиться необходимой скорости получения выборки и вычисления данных и для переменных сигналов. Ниже представлен разработанный четырехканальный измерительный программно-аппаратный комплекс для работы с частотами до 9 кГц.
Для считывания и преобразования сигнала использовались функции: analogRead(pin), analogReference(type ). Кроме того, использование значения функции DEFAULT позволяет для служебных цепей использовать питание самого микроконтроллера [3].
На рисунке 1 представлена электрическая схема программно-аппаратный комплекс. Как известно, с помощью аналогового входа Arduino можно измерить напряжение от 0 до 5 В (при стандартном опорном напряжении 5 В). Но этот диапазон можно расширить, воспользовавшись делителем напряжения. Так же, Arduino не способно считывать отрицательные значения напряжения, для решения данной проблемы схема делителя построена так, что сигнал поднимается на 5 В. Гальваническую развязку с выходным источником обеспечивают конденсаторы C1–C4.
Рис. 1. Электрическая схема включения Arduino UNO.
Значения резисторов указывается и регулируется в соответствующих подстроечных переменных программы. Код расчета напряжения, поступающего на аналоговые входы Arduino представлен ниже:
value = analogRead(analogInput);
vout = ((value * 5.00) / 1024.00);
vin = vout / (R2/(R1+R2));
где R1 и R2 переменные значений резисторов, указываемые в шапке программы.
Принцип работы программы, для нахождения амплитуд переменных сигналов заключается в следующем.
В результате выборок получаем одномерный массив из n количества измерений. Чем больше n, тем больше времени потребуется для определения значений, приходящих на аналоговый канал Arduino, но в то же время растет точность измерений. Экспериментально было выявлено оптимальное значение числа n подходящее под наши цели равное (93;112), что позволяет измерять параметры сигналов с частотой 9 кГц и обеспечить точность измерения амплитуды не хуже 0.1 В.
Ниже представлен код на языке C++ и в блок схема (рис 2).
for (int i = 0; i!= 101; i++)// цикл с предусловием
{
value = analogRead(Acanal); //получаем значения в ранее заданую переменную value
vout = ((value * 5.00) / 1024.00);//расчет единиц в вольты
vin1 = vout / (R2 / (R1 + R2));//с учетом делителя
naibolshe1 = max(vin1, naibolshe1);//находим максимум
naimen1 = min(vin1, naimen1);//находим минимум
lcd.setCursor(0, 0);
lcd.print(«A1:");
lcd.setCursor(3, 0);
lcd.print((naibolshe1-naimen1)/2);//выводим данные}
Рис. 2. Блок схема программы на языке C++
АЦП Arduino UNO имеет разрешение 10 бит, т. е. позволяет выводить значения в десятичном виде от 0 до 1023. В относительных единицах деление шкалы 5/1024 = 4.9 мВ. В работе была произведена оценка быстродействия АЦП с использованием встроенной функции Analog Read, определили время, затрачиваемое для аналогово-цифрового преобразования данного сигнала, которое не превышает 100 мкс (рис. 3).
Рис. 3
Таким образом, разработан относительно простой измерительный аппаратно-программный комплекс позволяющий измерять амплитудное значение переменного напряжения с 4-х каналов одновременно в диапазоне частот от 50 до 9 кГц и максимальном входном напряжении до 9 В. Программное обеспечение позволяет организовать измерение частоты и периода напряжения и при необходимости требуемое графическое представление на экране компьютера.
Литература:
- Иго Т. Arduino, датчики и сети для связи устройств: Пер. с англ. — 2-е изд. — СБб.: БХВ-Петербург, 2015–544 с.:ил.
- Блум Джреми. Изучаем Arduino: инструменты и методы технического волшебства: Пер. с англ. — СПб.: БХВ-Петербург, 2015–336 с.:ил.
- Калибровка напряжения при измерении температуры. [Электронный ресурс] Сайт Arduino.ru https://robotclass.ru/tutorials/arduino_adc, 2020. (дата обращения 05.09.2020)