Существует целый класс устройств под названием Ethernet Relay, которые позволяют удаленно управлять подключенной нагрузкой по сети.
Большинство из них довольно дорогие — ближе к 100 долларам и явно уступают по цене и гибкости конфигурации сочетанию, скажем, Raspberry Pi+.
ПиФейс .
А что, если задача состоит не только в включении и выключении нагрузки, но и в измерении протекающего тока? Для этого необходим сам датчик (шунт или эффект Холла) и АЦП (в Raspberry Pi нет встроенного АЦП).
В качестве датчика можно взять недорогой ACS712, а в качестве АЦП, например, АЦП-Пи .
ADC-Pi мне не понравился по двум причинам:
- на частоте измерения, необходимой для определения переменного тока в сети, этот АЦП дает очень большую погрешность (скорее всего я не до конца разобрался с регистрами)
- Используя этот АЦП в связке с Raspberry Pi под Linux, сложно обеспечить необходимую стабильность периода измерения.
Установка и настройка RTOS Linux только для этой задачи мне показалась слишком сложной, тем более что есть более простое и проверенное решение: Ардуино
И конечно, привлекательная цена.
Ссылка, которую я использовал, показана на картинке.
Измерение силы тока кажется простой задачей, если бы не одно «но»: физические датчики «шумят».
На рисунке приведен пример фактических и расчетных показаний тока для моей схемы при 512 последовательных измерениях.
Таким образом, задачей измерения переменного тока является вычисление амплитуды синусоидальной волны по набору реальных измерений, содержащих значительную долю ошибок.
Попытка номер один
Формула переменного тока (для тех, кто забыл, см.вики ) я = Im грех (ωt + ψ) Где: Im – максимальное значение тока ω – угловая частота t – время (порядковый номер) изменения ψ – начальная фаза тока Вы можете попробовать найти необходимые параметры с помощью аналитических инструментов.
И тут нас ждет приятный сюрприз: осенью прошлого года (2013) Wolfram выпустил версию своего замечательного пакета.
Mathematica для Raspberry Pi .
Бесплатно (для домашнего использования).
И мы можем использовать его для анализа данных, считываемых с датчика.
Пример вызова пакета вычислений в Raspberry Pi: pi@raspi ~ $ wolfram -script calc_current.wl datafile=/tmp/data.csv
Сам скриптcalc_current.wl ниже с комментариями:
Считайте данные из файла, переданного в качестве параметра.
В файле есть строки вида , .
data=Import[$CommandLine[[4]]]
После считывания данных можно выполнить быстрое преобразование Фурье, чтобы приблизительно определить количество циклов синусоидальной волны в доступной выборке.
Зависимость тока от времени является нелинейной, а приблизительная угловая скорость, рассчитанная с помощью БПФ и передаваемая в качестве начального значения, значительно увеличит шансы получить правильные параметры синусоидальной волны.
fourier=Take[Abs[Fourier[data[[All,2]]]],{2,256}]
Если максимальное значение БПФ не сильно отличается от среднего по выборке, можно сделать вывод, что выраженной синусоиды нет, все показатели «шумовые», а реальная сила тока равна нулю.
topcycle=Ordering[fourier,-1]
avg=Mean[fourier]
top=fourier[[topcycle[[1]]]]
If[top < 10 * avg, Print["No AC"]; Exit[]]
При обнаружении выраженной синусоиды можно попробовать подобрать параметры функции, используя наиболее выраженный цикл расчета начального значения угловой скорости.
nlm=NonlinearModelFit[data, a Sin[b x + c]+d, {a,{b, 2 Pi * topcycle[[1]] / 512}, c, d},x]
Зная физические характеристики АЦП (размерность 1024, базовое напряжение 5В) и датчика (в моем варианте 0,185В/А), можно рассчитать эффективный ток: imax=Abs[nlm["BestFitParameters"][[1]][[2]]] / (1024 / 5 * 0.185)
Print["Imax=", imax]
iefc=imax / Sqrt[2]
Print["Iefc=", iefc]
Print["Power=", iefc * 230]
Предложенный метод работает в большинстве случаев.
Количество измерений, в которых NonlinearModelFit не смог правильно выбрать параметры синусоидального сигнала, составило около 5 процентов.
Однако каждое измерение занимает много времени — в среднем 5 секунд — для запуска приложения wolfram. Вот почему…
Попытка номер два
Поскольку частота переменного тока в сети стабильна и составляет (в России) 50 Гц, угловую скорость можно рассчитать заранее и вместо нелинейной регрессии получить линейную регрессию.
Действительно,
или
Дифференцируя по X и Y, получаем систему линейных уравнений:
Решая систему по Крамеру, получаем значения коэффициентов:
Тогда по теореме Пифагора максимальное значение тока составит:
Скетч Arduino, реализующий этот алгоритм, можно найти по адресу Гитхаб .
Метод обеспечивает хорошую точность измерений: для схемы на рисунке измеренное значение тока составило стабильное 0,13А, что соответствует потреблению 29,9 Вт при напряжении 230В.
Мощность лампочки, служившей нагрузкой, составляет 30 Вт. Кстати, для Ардуино тоже есть шилды с реле, и весь функционал по управлению и контролю нагрузки можно реализовать на этой платформе.
Raspberry Pi в этом случае будет использоваться только для организации удобного пользовательского интерфейса, например, через веб-сервер и в качестве планировщика.
Теги: #Сделай сам или Сделай сам #Raspberry Pi #arduino #переменный ток
-
Объяснение Опционов Как Страховки (Просто)
19 Oct, 24 -
Нет Предела Обманам
19 Oct, 24 -
Лечение Зашифрованных Файлов Javascript
19 Oct, 24 -
Личные Финансы Онлайн
19 Oct, 24 -
«Родной» Аккумулятор Бтр
19 Oct, 24 -
Отчет О Первом Этапе Гео-Хакатона
19 Oct, 24