Оглавление:
- Шаг 1. Необходимые компоненты
- Шаг 2: принципиальная схема
- Шаг 3: понимание схемы
- Шаг 4: Расчет частоты и напряжения
- Шаг 5: Код Arduino
- Шаг 6: Заключение
Видео: Измерение частоты и напряжения источника питания с помощью Arduino: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
Вступление:
Целью этого проекта является измерение частоты и напряжения питания, которые находятся в диапазоне от 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 затруднила мне получение новой микросхемы.. Тем не менее, это не повлияет на работу схемы.
Не стесняйтесь комментировать ниже любые предложения и вопросы.
Рекомендуемые:
Измерение частоты сети с помощью Arduino: 7 шагов (с изображениями)
Измерьте частоту сети с помощью Arduino: 3 апреля премьер-министр Индии г-н Шри. Нарендра Моди призвал индийцев выключить свет и зажечь лампу (Дия) в 21:00 5 апреля, чтобы отметить борьбу Индии с вирусом короны. Сразу после объявления царил хаос
Измерение частоты пульса на кончике пальца: фотоплетизмографический подход к определению частоты пульса: 7 шагов
Измерение частоты пульса на кончике пальца: фотоплетизмографический подход к определению частоты пульса: фотоплетизмограф (ФПГ) - это простой и недорогой оптический метод, который часто используется для обнаружения изменений объема крови в микрососудистом ложе ткани. В основном он используется неинвазивно для измерения на поверхности кожи, обычно
Схема источника питания переменного напряжения с использованием IRFZ44N Mosfet: 5 шагов
Схема источника питания переменного напряжения с использованием МОП-транзистора IRFZ44N: Привет друг, сегодня я собираюсь сделать источник питания переменного напряжения с использованием МОП-транзистора IRFZ44N. В другой схеме нам требуются разные напряжения для работы цепи. Таким образом, с помощью этой схемы мы можем получить желаемое напряжение (до -15V). Приступим
Изготовление перезаряжаемого источника питания на два напряжения для электронных проектов: 4 шага
Сделайте перезаряжаемый источник питания с двойным напряжением для электронных проектов: модифицируйте перезаряжаемую батарею 9 В, чтобы получить + 3,6 В, землю и -3,6 В. Вы оцените эту идею, если вам когда-либо приходилось соединять кучу AA или AAA, чтобы получить проект работает. Это руководство должно было стать частью более крупного проекта, но я решил
Изменение выходного напряжения дешевого источника питания: 3 шага
Изменение выходного напряжения дешевого источника питания: в этой инструкции показано, как заменить детали внутри небольшого источника питания, чтобы изменить выходное напряжение в соответствии с вашими потребностями. Для проекта DIY мне нужно стабилизированное напряжение ровно 7 В постоянного тока и около 100 мА. Осмотрев свою коллекцию запчастей, я обнаружил