Токовый трансформатор своими руками для ардуино

Амперметр на ардуино для умного дома

Если вы очень переживаете за расход электро энергии и жуть как хочется вычислить виновника — это ваш день. Мы соберем датчик тока напишем простую логику для обработки входных значений для пересчета значений в киловаты/ч.

Для сборки я использовал плату Arduino nano (никто не мешаем вам использовать тот же код для ESP или STM плат), LCD экранный шилд, резистор на 56 Ом, резисторы 100 кОм, конденсатор 10 мКф, датчик тока CT — Talema AC103 (с номинальным измерением 30A и максимальным 75A).

Что такое датчик тока?

Датчик тока — это магнитопровод с зазором и обмоткой компенсации, а так же встроенный датчик Холла и плата управления. Датчик Холла размещается в зазоре магнитопровода и реагирует на создаваемое катушкой магнитное поле. Чем сильнее напряженность магнитного поля, тем сильнее датчик Холла подает сигнал, который усиливается платой управления.
Датчики тока бывают для измерения переменного тока и постоянного тока. Наш — CT-Talema AC103 — для переменного.

Соберем наше устройство согласно схеме:

LCD шилд уже имеет выводы для подключения наших аналоговых портов для измерения сигнала — и это удобно.
Через датчик тока нужно пропустить единственный вводной кабель фазы т.к. на нулевой провод зачастую приходит не все напряжение — часть может уходить через заземление.

Не забываем, что нам нужно выполнить калибровку нагрузочного резистора R3. Формула расчета R = V / I — R = 2,5 / 0,042 = 59,5 Ом где 2,5 — опорное напряжение на плате, а 42mA — потребление платы. По тому принимаем самый близкий резистор по номиналу — 56 Ом.
Для деление основного напряжения питания до опорного 5/2 вам потребуется поставить два одинаковых резистора R1 и R2.

Остается только загрузить пример кода в Arduino:

Завершающим шрихом нашей установки станет калибровка. Ее лучше выполнять при включенной эталонной нагрузке известной мощности. Для этого хорошо подходят мощные лампы накаливания. Возьмем лампу на 100 Ват. Включаем плату и высчитываем поправочный коэффициент:
Двойной RMSCurrent = ((maxCurrent — 516) * 0,707) /11,8337 где 11.8337 — подобранный коэффициент для компенсации расхождений в измерениях.

Источник

Arduino Pro Mini + токовый датчик GY-712 ведут контроль перегорания ламп

Всем привет. Хочу поделится одним из проектом созданным на базе Arduino.
Для меня работа с токовыми датчиками GY-712 была впервые. Перед созданием этого проекта создавался тестовый блок.

Если вам уже интересно, тогда продолжим.

Здесь я расскажу об одном модуле, так как описывать и зарисовывать 7 модулей не очень-то и легко.

Было тех задание:
1) Лампы(фонари) 50-65ВТ 220В переменка или 24В постоянка;
2) Индикация работы лампы (светодиод на панели);
3) Звуковая индикация перегоревшей лампы.

Решение было принято такое:
Используем токовый датчик GY-712 5А

По причинам:
1) Меряет переменный и постоянный ток;
2) Легко подключается к контроллеру;
3) Компактный;
4) Недорогой при заказе с Китая.

Давайте посмотрим на схему:

Как работает программа.

При старте он проверяется, включен ли тумблер, если включен ты выдается звуковой сигнал и световая индикация, что бы датчик можно было откалибровать без нагрузки. Если тумблер выключить то прога выдаст звук + индикация.
Далее идет калибровка. После калибровки – звуковой сигнал.

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

Вот простая схема без контроля тумблера, просто световая индикация. Это на тот случай кому просто нужен будет световой индикатор нагрузки – но тогда можно просто намотать на ферритовое кольцо провода(сделать трансформатор тока) и подключить светодиодик.

float srab = 0.650;

const int currentPin1 = 0; // Аналоговый вход с датчика тока

const unsigned long sampleTime = 100000UL; // sample over 100ms, it is an exact number of cycles for both 50Hz and 60Hz mains
const unsigned long numSamples = 250UL; // choose the number of samples to divide sampleTime exactly, but low enough for the ADC to keep up
const unsigned long sampleInterval = sampleTime/numSamples; // the sampling interval, must be longer than then ADC conversion time
//const int adc_zero = 512; // relative digital zero of the arudino input from ACS712 (could make this a variable and auto-adjust it)
int adc_zero1; //Переменная автоматической калибровки

void setup()
<
pinMode(13, OUTPUT);// Пин индикатора
pinMode(12, OUTPUT); // пин звука
pinMode(2, INPUT); // пин входа реле (тумблер)

digitalWrite(13, LOW);
digitalWrite(12, LOW);

tone(12,1500,100); // Звук старта калибровки
delay(180);
tone(12,1500,100);
delay(180);
tone(12,1500,100);

//Serial.begin(9600);
adc_zero1 = determineVQ(currentPin1); //Quiscent output voltage — the average voltage ACS712 shows with no load (0 A)
digitalWrite(13, HIGH);
tone(12,1000,100);

delay(150);
digitalWrite(13, LOW);

void loop() <
// Serial.print(«ACS712@A2_1:»);Serial.print(readCurrent(currentPin1,adc_zero1),3);Serial.println(» mA»);
delay(300);

if(digitalRead(2)==0) < // Если включен тумблер то:
if (readCurrent(currentPin1,adc_zero1)> srab) // Если ток больше указанного порга сработки то:
<
digitalWrite(13, HIGH); // Включить индикатор

>
else // Иначе
<
if(digitalRead(2)==0) < //Если тумблер все еще включен то:
digitalWrite(13, LOW); // Погасить индикатор
tone(12,2000,500); > // и выдать звуковой сигнал
>

Источник

Датчик тока для Arduino




Из этой статьи мы узнаем, как сделать датчик тока совместимый с Arduino и большинством других широко популярных микроконтроллеров. Этот проект отличается компактной конструкцией и схемой, основанной на SMD-компонентах.

Этот датчик тока можно легко использовать для измерения до 15А и даже при пиковом токе около 20А.

Шаг первый: шунтирующий резистор
Основным компонентом в этой схеме является шунтирующий резистор. Именно с помощью этого резистора измеряется небольшое падение напряжения и затем усиливается до измеримых значений Arduino. Важно, чтобы номинал этого резистора был достаточно мал, чтобы не создавать значительного падения напряжения в цепи. Малое сопротивление в диапазоне миллиомов также гарантирует, что общая рассеиваемая мощность очень мала и, следовательно, сам резистор не нагревается. Падение напряжения довольно мало, чтобы микроконтроллер мог напрямую его измерить, поэтому и используется операционный усилитель.

Шунт, используемый в данной схеме, имеет маркировку — R005, что означает, что он имеет сопротивление 5 мОм.


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

























Шаг шестой: кодирование и калибровка
Теперь нужно закодировать микроконтроллер и откалибровать значение датчика для получения точных показаний.
Мастер использовал Arduino Nano и среду Arduino IDE.

Код можно разбить на следующие шаги:
Инициализация библиотеки для OLED-дисплея (для этого он использовал библиотеку Adafruit)
Настройка аналогового вывода 0 как вход
Считывание аналоговое значение с выхода OP-Amp на аналоговом выводе 0
Умножение аналогового значения на коэффициент калибровки, чтобы получить правильное значение тока в амперах (или миллиамперах).
Отображение значения на OLED-дисплее
OP-Amp действует как неинвертирующий усилитель в данной схеме и вырабатывает напряжение, пропорциональное падению напряжения на шунте. Затем это напряжение измеряется с помощью АЦП Arduino, который выдает число от 0 до 1023 (10-битное разрешение АЦП в Arduino). Это число не равно фактическому текущему значению, поэтому нужно выполнить математические манипуляции в программном обеспечении, чтобы получить точное значение. В данном случае на помощь приходит мультиметр. Большинство мультиметров могут точно измерять ток до 10 А, поэтому его можно использовать в качестве эталона для определения калибровочного коэффициента.

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

Таким образом, здесь мультиметр может измерять фактический ток, потребляемый нагрузкой, и от нашего текущего модуля шунтирования мы можем получить соответствующее аналоговое значение через Arduino.

Источник

Регулятор напряжения и тока на Arduino Pro Mini

Какой версией регулятора вы пользуетесь?

Голосование закончилось: 05 Янв. 18, 12:47

Всего голосов: 33

ВНИМАНИЕ с 20.11.2017 изменился алгоритм работы регулятора напряжения а также схема подключения измерительного трансформатора

В данной ветке представлена попытка создать стабилизированные регуляторы напряжения и тока на Arduino Pro mini .

Если у вас сразу возникло много вопросов, рекомендую прочитать этот текст до конца, возможно ответ на большинство из них уже есть.

Скрытый текст
U_regulator_free.ino

Регулировка напряжения фазовая, измерение напряжения среднеквадратичное.
Количество полупериодов изменяется в коде if (zero == 3) и if (zero >= 3) о чем в тексте скетча есть соответствующий комментарий.

Значение напряжения подается на Serial порт в виде TWxxx, где ххх значение от 35 до 400, выдает назад в порт текущие параметры:
realU — Измеренное выходное напряжение
ustU — Установленное вами значение выходного напряжения

Проект писался и проверялся на Atmega328 16 мГц (Arduino Pro mini), Коллега U-M протестировал работу на Uno.

Изначально выставлено нулевое напряжение, симистор закрыт, если не реагирует на команды с порта, в окне монитора порта Arduino IDE выбрать в выпадающем списке NL&CR.

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

Скетч, схема, проект для Протеуса (программа симуляции, может кому то пригодиться) прилагается.

Если будете заказывать Arduino, то можно заказать сразу и печатную платку. В результате может получиться например вот так:

Imag0003. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

РЕГУЛЯТОР ТОКА НА ACS712:

Скрытый текст
I_regulator_free_ACS712.ino

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

Значение тока подается на Serial порт в виде TWxxx, где ххх требуемое значение тока, выдает назад в порт текущие параметры:
realI — Измеренный ток
ustI — Установленное нами значение выходного тока

Измерение тока среднеквадратичное за три периода.
Количество полупериодов изменяется в коде if (zero == 6) и if (zero >= 6) о чем в тексте скетча есть соответствующий комментарий.

Тип датчика ACS712 выставляется в начале скетча, есть комментарий для установки коэффициента.

Помните что ACS712 очень шумный датчик, если вы видите на холостом ходу значение близкое к нулю но не ноль, ничем я вам помочь не смогу.

По просьбам добавлен скетч с энкодером вместо кнопок I_regulator_free_ACS712_LCD_Display_Encoder.
Подключение энкодера:

Пин 7 — энкодер SW (кнопка энкодера)
Пин 8 — энкодер CLK
Пин 9 — энкодер DT

Нажав на кнопку энкодера увидим на экране LCD —> и цифры устанавливаемого тока,
установив необходимое значение (сам ток не меняется на выходе) нажимаем снова кнопку энкодера и применяем изменения.

РЕГУЛЯТОР ТОКА НА ACS712 С ПРЕДУСТАНОВКАМИ И ЗАПИСЬЮ В ПАМЯТЬ:

Скрытый текст
Файл: I_regulator_free_712_LCD_Encoder_Preset_EEPROM

Перечень возможностей: вывод информации в ваттах, время работы, счетчик затраченной электроэнергии, пять предустановок с записью в память.
Название предустановок и их количество правиться в программе.
Расчет потребления электроэнергии ПРИМЕРНЫЙ, в виду значительных погрешностей измерения.
Для корректной работы требуется измерить сопротивление ТЭНа и записать в программу, о чем в тексте есть комментарий.
Программа имеет три меню:
1. Текущая мощность (ВАТТ), включен или выключен регулятор (OFF/ON)
Название предустановки, установленная мощность.
2. Время работы, включен или выключен регулятор (OFF/ON)
Потребленная мощность в ваттах.
3. Установка, включен или выключен регулятор (OFF/ON)
Название предустановки >> устанавливаемая мощность.

Переключение между меню 1 и 2 с помощью кнопки энкодера;
Переключение между предустановками с помощью энкодера;
Переход в меню 3 и выход из него нажатием кнопки 1 , установка мощности с помощью энкодера;
Запись в память установки с помощью кнопки энкодера в меню 3, в качестве подтверждения появится надпись WR;
Включение регулятора кнопкой 2 в меню 1 или 2. Если требуется регулировка на «ходу» то при включенном регуляторе нажать кнопку 1 и производить регулировку из меню 3 установки;

Звучит несколько запутанно, но в процессе эксплуатации трудностей возникнуть не должно.
Схема подключения:

Пин 10 – кнопка 1
Пин 11 – кнопка 2
Пин 7 — энкодер SW
Пин 8 — энкодер CLK
Пин 9 — энкодер DT

Для прямого подключения LCD без I2C в начале скетча есть комментарий

Скрытый текст
I_regulator_free_Current.ino

Добавлен вариант с трансформатором тока DL-CT1005A реализованный по схеме https://learn.openenergymonitor.org/. ce-with-arduino Работа аналогична работе с ACS712, точность и стабильность показаний выше.

3532_0. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика. , Img_20160810_1732511. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика. , Img_20160810_1733141. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

ВЕРСИИ С СЕМИСЕГМЕНТНЫМ ИНДИКАТОРОМ НА СДВИГОВЫХ РЕГИСТРАХ 74HC595:

Скрытый текст
Скетч — расширенная версия бездисплейного варианта, подходит как к версии с дисплеем так и без.

Совместимый модуль возможно заказать в интернет магазинах, например такой:

4-biti-cifrovoi-kamera-svetodiodnii-displei-modyl-chetire-posledovatelnii-dlya-arduino-595-driver-y103. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

Семисегментные дисплеи подходят как с общим анодом так и с общим катодом. Для смены нужно в скетче инвертировать биты (есть соответствующий комментарий в коде). По умолчанию установлена схема с общим анодом.

Алгоритм работы кнопок следующий:
1. При запуске индикация входного напряжения / выходного тока
2. При нажатии на кнопку 1 циклически показываются В- входное напряжение / выходной ток, У — установленное.
3. При нажатии на кнопку 2 вход в режим установки , увеличение значения кнопка 1, уменьшение 2. Установленное значение напряжения / тока меняется СРАЗУ во время регулировки.
4. После окончания установки при отсутствии нажатий на кнопки в течении 10 секунд происходит возврат в меню индикации.

Версии скетчей находятся в архивах под соответствующий вариант регулятора.

ВЕРСИИ С LCD ДИСПЛЕЕМ ПОДКЛЮЧЕННЫМ ПО I2C:

Скрытый текст
Мной использовался дисплей LCD 1602 на HD44780 с модулем I2C на PCF8574 и библиотека LiquidCrystal_I2C.

Img_20161018_205335. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
Img_20161018_205505. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

Библиотека ставиться из менеджера библиотек в IDE, либо с сайта https://github.com/marcoschwartz/LiquidCrystal_I2C.

С подключением дисплея проблем возникнуть не должно, распиновка Pro Mini:

Prominifront. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

Для работы Вашего дисплея требуется узнать его адрес, для этого требуется запустить скетч i2c_scanner.ino из аттача,
запустить монитор порта в IDE и вставить полученный адрес в скетч в строку LiquidCrystal_I2C lcd(0x3F, 16, 2);, где 0х3F адрес дисплея.

Кнопки подключены и работают так же как и в схеме с семисегментным индикатором.

Если после подключения символов нет, требуется покрутить потенциометр на плате I2C

АЛГОРИТМ НАСТРОЙКИ ТОЛЬКО СОБРАННОГО РЕГУЛЯТОРА НАПРЯЖЕНИЯ (от Tomat7)

Скрытый текст
Внимание! Высокое напряжение опасно для жизни. Будьте внимательны!
Не собирайте прибор «на соплях», используйте подходящие провода и инструменты.

0. Схемы в шапке темы все рабочие! Никакого подбора деталей, супертюнинга, дополнительных резисторов, подтяжек и прочего не нужно.
Сам собирал и регулятор напряжения, и регулятор тока на ACS712, и на трансформаторе тока.

1. Убеждаемся что высокое напряжение отключено. Плата Ардуино питается от компьютера по USB.

2. Загружаем тестовый скетч U_reg_test.ino — без всяких LCD, энкодеров и кнопок. Убеждаемся что он скомпилировался и загрузился корректно.

3. В «среде» Ардуино включем монитор порта (Ctrl-Shift-M). В нём устанавливаем скорость «9600 baud» и «Both NL&CR».
Убеждаемся что в окне Монитора порта появляется разумная информация обновляющаяся каждую секунду — «realU, ustU» и тд.

4. На выход регулятора подключается нагрузка (например лампа накаливания) и параллельно нагрузке вольтметр (желательно имеющий надпись TrueRMS)
Убеждаемся что лампа не горит, вольтметр показывает 0, ustU = 0, realU = 0 для регулятора напряжения или realU = 512 для регулятора тока.
Если лампа горит — повторяем пункт 1. Если все равно горит — оформляйте патент на вечный двигатель!

5. Осматриваем конструкцию, убеждаемся в ее электробезопасности. Отойдя подальше подаем высокое напряжение.
Убеждаемся что нигде ничего не бахнуло, не появился лишний запах, лампа не горит, вольтметр показывает 0, в Мониторе порта ustU = 0 и realU = 0 или 512.
Если не так — всё выключаем и перепроверяем соединения, монтаж, пайку в части moc3023, симистора.
Исправляем и начинаем с пункта 1.

6. Через «Монитор порта» отправляем регулятору команду «M1». (без кавычек, латинская «М» и цифра «1»
Убеждаемся что загорелась лампа.
Если не так — всё выключаем и перепроверяем соединения, монтаж, пайку в части moc3023, симистора.
Исправляем и начинаем с пункта 1.

7. Смотрим в монитор порта и видим что там появились дополнительные строчки.
Находим «ZeroCross» и смотрим число — оно должно быть близко к 100. (с большой долей вероятности узел детектора «0» работает корректно)
Если не так — всё выключаем и перепроверяем соединения, монтаж, пайку в части детектора нуля.
Исправляем и начинаем с пункта 1.

8. Через «Монитор порта» отправляем регулятору команду «TW0».
Убеждаемся что лампа не светит. (с большой долей вероятности узел симистора работает корректно)
Если не так — всё выключаем и перепроверяем соединения, монтаж, пайку в части moc3023, симистора.
Исправляем и начинаем с пункта 1.
Для регулятора тока на этом можно остановится и перейти к пункту 10.

9а. Для регулятора напряжения необходимо провести первоначальную подстройку «измерителя» напряжения.
9б. Через «Монитор порта» отправляем регулятору команду «TW300».
9в. Убеждаемся что ustU ежесекундно появляющееся в окне Монитора порта стало показывать 300. (realU тоже может поменяться)
9г. Смотрим на показания вольтметра — теперь он должен показывать что-то от 200 до 250 вольт. (может и меньше — зависит от качества электросети)
9д. Вращением подстроечного резистора «измерителя» напряжения нужно добиться чтобы realU стало как можно ближе к показаниям вольтметра.
9е. Если от вращения подстроечного резистора realU никак не меняется — всё выключаем и перепроверяем соединения, монтаж, пайку в части «измерителя» напряжения.
Исправляем и начинаем с пункта 1.
9ж. Через «Монитор порта» отправляем регулятору команду «TW150». Убеждаемся что вольтметр стал показывать что-то близкое к 150 вольтам.
9з. Через «Монитор порта» отправляем регулятору команду «TW100». Убеждаемся что вольтметр стал показывать что-то близкое к 100 вольтам.
На этом настройку регулятора напряжения можно считать законченным.

Скетч основан на нескольких, представленных в этой теме, адаптировал под свои нужды

Дополнительно выкладываю версию прошивки PMC_TT_4.19, совмещенную прошивкой, выложенной коллегой dev11bk

Если у вас еще остались вопросы, я постараюсь ответить.

П.С. Выражаю огромное спасибо msg31, по сути это его схема и идея, просто я немного подогнал ее под свои нужды.
Так же выражаю огромную благодарность m16 за своевременные наставления.
И sevpro за консультации по схемотехнике

СПИСОК РАСПРОСТРАНЕННЫХ ВОПРОСОВ под спойлером

Скрытый текст В. А вы можете сделать тоже самое только с перламутровыми кнопками?
О. Могу, но я не занимаюсь реализацией хотелок, рассматривайте эти устройства как часть Вашего самостоятельного проекта.

В. Я не умею программировать, код для меня — ироглифы.
О. Не могу ничем помочь, либо учитесь либо просите коллег на форуме.

В. Зачем считать среднеквадратичное напряжение? Это трудно.
О. Если вы о контроллере то ему абсолютно все равно что считать, если о методе то он дает лучшие результаты ([сообщение #12649978]), если вы знаете другой метод измерения действующего значения напряжения, я с удовольствием выслушаю, если вы хотите измерять амплитудное значение, измеряйте, вам никто не запрещает.

В. Почему у вас такая громоздкая схема, все можно сделать намного проще! Нужно сделать так и вот так!
О. Проект создавался под готовое устройство, эта схема из автоматики msg31 с параллельной ветки, я сделал себе автоматику похожую по алгоритму, выделил блок питания и написал отдельный скетч. Если вы воплотите в жизнь другую схему, поделитесь, я выложу ее в шапке для всех и мы скажем спасибо.

В. У вас индусский код. Так делать нельзя!
О. Можно, я не программист, и уж тем более не программист микроконтроллеров. Я не скован рамками правописания программного кода. Код работает, большинству людей все равно что и как внутри крутиться если устройство выполняет свои функции. Если у вас есть замечания по коду и дельные, конкретные советы с алгоритмом, я буду рад вас выслушать. Я взрослый адекватный человек который абсолютно нормально реагирует на аргументированную критику.

В. Если вы не программист, и в электронике как я посмотрю, тоже не очень разбираетесь, зачем вообще создавать ветку.
О. Меня просто попросили довести до ума устройство которое я выкладывал ранее в параллельной ветке. Некоторыми оно востребовано, лично я успешно его использовал и использую по назначению даже не смотря на недостатки, а на то время там была просто куча ошибок.

В. Зачем фазовое регулирование? Там масса помех от которых ломаются телевизоры, глючат айфоны и лысеют коты!
О. Знаете другие доступные методы? Выслушаю, но моргающие лампочки и меня, и домашних напрягают больше. К тому же помехи можно отсечь, в интернете много информации.

В. А почему ты сделал именно так а не иначе?
О. Возможно в тот момент на меня снизошло озарение или отупение, кто знает, я не профи ни в электронике не в программировании.

П.С. Просьба не воспринимать этот спойлер на свой счет, никого конкретно я не имел ввиду, спасибо.

Если вы собрали устройство и проверили его работу ЛАТРом и обрадовались/удивились/расстроились большая просьба выложить результаты.

Источник

Читайте также:  Распашонки для новорожденных размер своими руками
Оцените статью