Оглавление:

Измерение частоты и напряжения источника питания с помощью Arduino: 6 шагов
Измерение частоты и напряжения источника питания с помощью Arduino: 6 шагов

Видео: Измерение частоты и напряжения источника питания с помощью Arduino: 6 шагов

Видео: Измерение частоты и напряжения источника питания с помощью Arduino: 6 шагов
Видео: arduino подключение питания и виды сигналов урок №2. 2024, Ноябрь
Anonim
Измерение частоты и напряжения источника питания с помощью Arduino
Измерение частоты и напряжения источника питания с помощью Arduino

Вступление:

Целью этого проекта является измерение частоты и напряжения питания, которые находятся в диапазоне от 220 до 240 вольт и 50 Гц здесь, в Индии. Я использовал Arduino для захвата сигнала и расчета частоты и напряжения, вы можете использовать любой другой микроконтроллер или плату, которая у вас есть. Схема требует нескольких компонентов и довольно точна для всех практических целей.

Шаг 1. Необходимые компоненты

  • Ардуино Уно
  • Микросхема LM358
  • Понижающий трансформатор (с 220 В на 12 В)
  • Конденсаторы:

    • 0,1 мкФ
    • 2 х 1 мкФ
  • Резисторы:

    • 3 x 1кОм
    • 2 x 100 кОм
    • 1,5 кОм
    • 3,3 кОм
    • 6,8 кОм
  • 3 x 1N4148 диод
  • Доска для хлеба и перемычка (необязательно)

Шаг 2: принципиальная схема

Схематическая диаграмма
Схематическая диаграмма
Схематическая диаграмма
Схематическая диаграмма

В приведенной выше схеме первичная обмотка трансформатора подключена к питающей сети, а первичная обмотка подключена к нашей измерительной схеме.

Шаг 3: понимание схемы

Понимание схемы
Понимание схемы
Понимание схемы
Понимание схемы
Понимание схемы
Понимание схемы

По функциональному назначению эту схему можно разделить на четыре части:

A: Схема детектора пересечения нуля

Эта схема генерирует прямоугольный импульс 5 В всякий раз, когда синусоида переходит с положительного на отрицательный. Резистор R1 в сочетании с D1 и D2 ограничивает размах входного напряжения на диодном переходе от -0,6 В до + 5,6 В (при условии, что прямое напряжение диода равно 0,6 В). Кроме того, вы можете увеличить диапазон входного напряжения схемы, увеличив значение R1.

Резисторы R2 и R3 образуют делитель напряжения для ограничения отрицательного размаха напряжения до -0,24 В, поскольку входное синфазное напряжение LM358 ограничено до -0,3 В.

Резистор R4, R5, конденсатор C1 и операционный усилитель (здесь используется в качестве компаратора) образуют схему триггера Шмитта, в которой резисторы R4 и R5 устанавливают гистерезис на входе + 49,5 мВ над землей. Выходной сигнал триггера Шмитта подается на PIN2 Arduino для дальнейшей обработки.

B: Изоляция и понижение напряжения

Как следует из названия, эта часть изолирует и снижает напряжение примерно до 12 В среднеквадратического значения. Пониженное напряжение далее подается на схему КИПиА.

C: Схема пикового детектора

Эта схема определяет максимальное пиковое напряжение входного сигнала. Резисторный делитель R6 и R7 уменьшают входное напряжение в 0,23 раза (среднеквадратичное значение 12 В снижено до 2,76 В среднеквадратического значения). Диод D3 проводит только положительный полупериод сигнала. Напряжение на C2 увеличивается до пикового значения выпрямленного сигнала, который подается на аналоговый вывод A0 Arduino для дальнейшего расчета напряжения.

Кроме того, вы можете заменить эту схему схемой прецизионного пикового детектора, подобной упомянутой здесь. Но для моих демонстрационных целей вышеупомянутой схемы будет достаточно.

D: Ардуино

В этой части Arduino улавливает прямоугольные импульсы, генерируемые схемой триггера Шмитта, и считывает аналоговое напряжение из схемы пикового детектора. Данные дополнительно обрабатываются для определения периода времени (следовательно, частоты) прямоугольного импульса (который равен времени подачи переменного тока человеком) и напряжения источника питания.

Шаг 4: Расчет частоты и напряжения

Расчет частоты:

С помощью Arduino мы можем измерить период времени T сигнала. Прямоугольные импульсы от детектора перехода через ноль подаются на контакт 2, оттуда мы можем измерить период времени каждого импульса. Мы можем использовать внутренний таймер Arduino (в частности, Timer1) для вычисления периода времени между двумя нарастающими фронтами прямоугольного импульса с помощью прерываний. Таймер увеличивается на 1 за такт (без предварительного делителя = 1), и значение сохраняется в регистре TCNT1. Следовательно, тактовая частота 16 МГц увеличивает счетчик на 16 каждую микросекунду. Аналогично для prescaler = 8 таймер увеличивается на 2 каждую микросекунду. Следовательно, период времени между двумя нарастающими фронтами

T = (значение TCNT1) / время, затраченное на каждый счет

Где время, затрачиваемое на каждый счетчик = предделитель / (тактовая частота Arduino (16 МГц)

Следовательно, частота f = 1 / T = (тактовая частота Arduino (16 МГц) / (значение предделителя * TCNT!)

Следовательно, скорость таймера (Гц) определяется как = (тактовая частота Arduino (16 МГц)) / предварительный делитель.

а частота сигнала равна = (тактовая частота Arduino

Соответственно, мы можем вычислить частоту f из соотношения f = 1 / T.

Расчет напряжения:

Встроенный АЦП Arduino имеет разрешение 10 бит (возможные значения = 2 ^ 10 = 1024), возвращая значения в диапазоне 0-1023. Чтобы вычислить соответствующее аналоговое напряжение V, мы должны использовать следующее соотношение

V = (чтение АЦП) * 5/1023

Чтобы рассчитать напряжение питания Vs (среднеквадратичное значение), мы должны принять во внимание коэффициент трансформации, резисторный делитель R6R7 и схему пикового детектора. Мы можем просто сложить различные коэффициенты / соотношения как:

Коэффициент трансформации = 12/230 = 0,052

Резисторный делитель = R7 / (R6 + R7) = 0,23

При пиковой цепи детектора = 1,414

Vs (среднеквадратичное значение) = V / (1,414 * 0,052 * 0,23) = (показания АЦП) * 0,289

Следует отметить, что это значение далеко от фактического значения, в основном из-за погрешности фактического коэффициента трансформации трансформатора и прямого падения напряжения на диоде. Один из способов обойти это - определить коэффициент после сборки схемы. То есть путем измерения напряжения питания и напряжения на конденсаторе C2 отдельно с помощью мультиметра, а затем вычисления Vs (среднеквадратичное значение) следующим образом:

Vs (среднеквадратичное значение) = ((Напряжение питания * 5) / (Напряжение на C2 * 1023)) * (Показание АЦП)

в моем случае Vs (rms) = 0,33 * (показания АЦП)

Шаг 5: Код Arduino

#define volt_in A0 // вывод аналогового считывания напряжения

изменчивый uint16_t t_period; uint16_t ADC_value = 0; float volt, freq; void isr () {t_period = TCNT1; // сохраняем значение TCNT1 в t_period TCNT1 = 0; // сбросить Timer1 ADC_value = analogRead (volt_in); // считываем аналоговое напряжение} float get_freq () {uint16_t timer = t_period; если (таймер == 0) вернуть 0; // чтобы избежать деления на ноль else return 16000000.0 / (8UL * timer); // частота задается f = clk_freq / (prescaler * timeperiod)} void setup () {TCCR1A = 0; TCCR1B = бит (CS11); // устанавливаем предварительный делитель на 8 TCNT1 = 0; // сбросить значение Timer1 TIMSK1 = bit (TOIE1); // разрешить прерывание переполнения таймера 1 EIFR | = bit (INTF0); // очистить флаг прерывания INT0 Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // разрешить внешнее прерывание (INT0) delay (1000); detachInterrupt (0); freq = get_freq (); вольт = ADC_value * 0,33; String buf; buf + = String (freq, 3); buf + = F ("Гц / t"); buf + = String (вольт); buf + = F («Вольт»); Serial.println (buf); }

Шаг 6: Заключение

Заключение
Заключение
Заключение
Заключение

Вы можете собрать схему на макетной плате, настроить код и добавить SD-карту для хранения данных, которые впоследствии можно будет проанализировать. Один из таких примеров: вы можете анализировать напряжение и частоту в часы пик.

В схеме, которую я собрал на макетной плате, использовался LM324 (четырехъядерный операционный усилитель) вместо LM358 (двойной операционный усилитель), поскольку в тот момент у меня не было этой микросхемы, а общенациональная блокировка из-за пандемии COVID-19 затруднила мне получение новой микросхемы.. Тем не менее, это не повлияет на работу схемы.

Не стесняйтесь комментировать ниже любые предложения и вопросы.

Рекомендуемые: