Дисплей для отображения частоты сети электропитания

Идея проекта

Я давно планировал сделать нечто подобное. Идея состоит в том, чтобы на дисплее отобразить частоту сети электропитания. Значение частоты должно быть 50 Гц, однако на самом деле частота колеблется вокруг этого значения в результате изменения питания и энергопотребления.

Если частота падает, то это происходит из-за повышения энергопотребления и/или падения питания. Потому генераторы должны работать больше. Это немного снижает их скорость и системам управления необходимо некоторое время, чтобы поднять скорость назад.

Если частота поднимается, то это происходит из-за снижения энергопотребления и/или получения дополнительного питания. Потому генераторы должны работать меньше. Это немного увеличивает их скорость и системам управления необходимо некоторое время, чтобы снизить скорость назад.

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

Я захотел сделать дисплей, который будет отображать частоту сети электропитания до 3-х цифр после точки. Я буду использовать те же семисегментные дисплейные модули, как и для моих UNIX часов. Потому все, что мне нужно сделать, так это разработать схему, которая будет контролировать частоту.

Как контролировать частоту

Существует несколько способов как это сделать. Я выбрал следующий: необходимо подсчитать фиксированное число периодов частоты электропитания и время, в течение которого выполнялся подсчет.

Вот чертеж этой идеи: Синусоидальные колебания отображают сигнал сети электропитания. Высокочастотный сигнал идет параллельно и используется в качестве счетчика. Подсчитанное число после фиксированного количества циклов обратно пропорционально частоте.

Концепция измерения изменяющегося сигнала низкой частоты.

К примеру, если частота имела точное значение 50.000 Гц, я насчитал 200 периодов, на что потребовалось ровно 4 секунды. Если значение частоты равнялось 50.001 Гц, 200 периодам потребуется лишь 3.99992 секунд.

Но это совсем небольшая разница! Для точного определения времени необходимо использовать высокостабильный источник временных интервалов. RC-генератор в микроконтроллере не может это сделать. Я буду использовать микроконтроллер ATTINY84, который имеет погрешность лишь +/- 10%, или +/- 1% после пользовательской калибровки. Также я не могу использовать внешний кварцевый резонатор, не заплатив за высокостабильный резонатор МНОГО денег.

К счастью, есть один класс дешевых (очень дешевых) ИС, которые имеют высокоточные, и высокостабильные встроенные генераторы, и это генераторы импульсов времени. Часы реального времени – интегральная схема DS3231, которую я также использовал в UNIX часах, имеет на выходе частоту 32.768 кГц с погрешностью +/- 2 ppm (миллионная часть). Подсчитывая импульсы таким способом, я смогу очень точно определить время.

Математические вычисления

После небольших математических вычислений я смог выполнить расчет для 100 циклов питания (2 секунды на 50 Гц) и получить необходимую точность.

Формула для преобразования количества циклов в частоту сети электропитания имеет следующий вид:


где N подсчитанное число циклов электропитания и C подсчитанное число циклов на частоте 32768 Гц.

Я преобразовал формулу, добавив множитель 1000x, чтобы использовать лишь целые числа, поэтому 50.000 Гц будет действительно храниться как 50000. Это намного лучше для выполнения на микроконтроллере.

Поскольку мы используем целочисленные вычисления, то нам необходимо выполнять округление значений. Потому окончательная формула выглядит следующим образом:

К примеру, подсчитанное число 65724 будет равняться частоте 49.857 Гц, хранимой как значение 49857. Подсчитанное число 65723 будет равняться частоте 49.858 Гц, хранимой как значение 49858.

Следовательно, изменение одного числа представляет изменение одной значащей цифры (пересчитанной частоты). Это как раз то, что я и хотел получить.

Значение частоты передается напрямую на дисплей. Отображаемая на дисплее частота обновляется каждые две секунды.

На плате управления также установлены два светодиода для отображения изменения частоты: выше/ниже. Частота сохраняется в кольцевом буфере один раз в минуту. Скользящее среднее значение вычисляется за десять минут и разница между первым и последним значением используется для вычисления тренда. Разница более чем +/- 0.02 Гц считается существенным трендом.

Чтобы найти “наилучший” алгоритм для этого, данные государственной электроэнергетической системы, отображаемые в режиме реального времени, анализировались модулем, использующим библиотеку Python Beautiful Soup. Я лишь экспериментировал с различными приближенными оценками, пока не получил правильный результат.

Собираем все вместе

Перед разработкой окончательного варианта схемы я проверил код на Arduino с оптоизолированным входом сети электропитания. Электронный проект позаимствован из множества моих предыдущих работ. В него входит:

  • Входное устройство частоты сети из моего проекта Счетчик безопасных дней.
    • (Он срезает AC сигнал напряжением 9 В (от небольшого трансформаторного блока питания) до 5 В шин питания)
  • Соединение дисплея и часов реального времени DS3231 из UNIX часов.
  • Стандартный микроконтроллер ATTINY84 от хост-машины других проектов.

Блок-схема.

Я смог уменьшить размер платы до размера семисегментного дисплея. Я заказал платы в компании Ragworm, и все заработали с первого раза.

Единственной модификацией, которую я сделал, так это добавил небольшой “радиатор” на стабилизатор питания 5 В. Входное питание для системы величиной 9 В AC подавалось от небольшого адаптера. Поскольку регулятор управляет всеми 5 дисплейными индикаторами, он рассеивает мощность 1 Ватт, хотя сам имеет довольно маленький корпус. Он сильно нагревается, поэтому я добавил радиатор, который сделан из большого количества припоя на кусочке платы. Немного кустарно, но этот радиатор помогает регулятору охлаждаться.

Печатная плата, светодиоды, микроконтроллер, источник питания и “радиатор”.

И наконец, я вырезал лазером корпус (практически это стандартно для каждого моего проекта). Это была адаптация корпуса от UNIX часов. Для светодиодов контроля тренда частоты я использовал восковой карандаш, который расплавил, а далее с помощью лазера выгравировал две стрелки. Получилось совсем неплохо. Думаю, что смогу использовать данную технику в своих будущих проектах.

Собранный дисплей, на котором в данный момент отображается “нисходящий” тренд частоты.

Оригинал статьи

Добавить комментарий

Ваш адрес email не будет опубликован.