Содержание
Задача проверки наличия 220в появилась для диспетчеризации работы теплого пола.
Необходимо определять – подано ли напряжение на сервоприводы клапанов коллектора теплого пола.
Определив моменты открытия/закрытия направлений отопления водяным теплым полом, можно уже вести статистику и передавать значения на сервер.
Выбор платы для контроля 220В.
Существуют в продаже специальные платы.
На вход подается исследуемая на наличие 220В линия, а на выходе будет 0 или +5В.
Выход можно подключить к аналоговым входам платы Arduino и на основе полученных значений уже совершать требуемые действия.
Бывают три вида плат с разным количеством измеряемых каналов: 1, 3, 8 – по цене 120, 320 и 622р соответственно.
AC 220V 8 Channel MCU TTL Level 8 Ch Optocoupler Isolation Test Board Isolated Detection Tester Module PLC Processors |
Мне нужно контролировать наличие 220В нескольких направлений, поэтому заказал плату на 8 каналов.
Как работают изолированные оптопары.
Для начала необходимо выяснить – как же работает плата AC 220V 8 Channel MCU TTL Level 8 Ch Optocoupler Isolation Test Board Isolated Detection Tester Module PLC Processors.
Подключим ее к контроллеру Arduino Uno WiFi и посмотрим что будет на аналоговом входе при подаче 220В.
Пока на соответствующем контролируемом направлении сетевое питание отсутствует, на аналоговом входе Arduino мы наблюдаем значение 1023:
После подачи напряжения значение на аналоговом входе фиксируется на уровне 17-20:
Конечно имеет место переходный процесс:
Как использовать плату для контроля 220В при помощи Arduino.
Нам не нужно аналоговое значение, а нужно бинарное значение: ВКЛ/ВЫКЛ.
Получить это значение можно при помощи такого кода:
value1 = analogRead(analog1); if(value1 < 500) current1 = HIGH; else current1 = LOW; if(last1 != current1){ outflag = HIGH; out1 = current1; last1 = current1; Serial.println(out1); }
Переходный процесс линейный, поэтому можно ставить простой программный ключ без отсечки дребезга.
Возможно нужно добавить область неопределенности
if(value1 < 200) current1 = HIGH; else if(value1 > 700) current1 = LOW; else // что-то непонятное
Но в моем случае это лишне усложнит код, а работает и так.
Проблемы.
Ну а куда же без них.
Очень долго выявлял проблему, возникшую при практическом решении задачи передачи данных о работе коллектора теплых полов на сервер.
Там я контролировал питание 4-х головок-актуаторов направлений и питание насоса.
В зависимости от ситуации бывали моменты, когда плата зависала.
Исследования показали, что плата не зависала, а прекращался обмен по Serial, если включались направления, висящие на 4 и 5 аналоговых входах Arduino.
Помогла выяснить причину смена полярности подключения VSS,GND платы с оптронами к Arduino UNO.
Раньше подключение было: VSS-5.0V, GND-GND.
Теперь подключил наоборот: GND-VSS, 5.0V-GND.
После этой смены значения аналоговых входов A1-A3 стали таки зависеть от сигнала:
Значения же A4,A5 не менялись и не зависели от сигнала.
Вот листинг вывода значений A1-A5, иллюстрирующий ситуацию:
В последних показаниях все направления включены, но выходы A4,A5 показывают иные значения, чем A1-A3.
В первых строчках направления для A4,A5 и направление A1 выключены, но показания A4,A5 постоянны.
Причем причина была не в плате с оптронами, а именно в Arduino – перестановка пина A3 на направления с пинов A4,A5 показывало, что каналы платы с оптронами работают одинаково.
Причем так же вела себя и совсем другая Arduino, что, вероятно, означает что тут я делаю что-то не так, а не Arduino такая.
Решать проблему не стал и обошёлся нормальными входами A0-A3.
В экспериментах я использовал входы A1-A4 для контроля направлений и вход A5 для контроля насоса.
Перенес контроль направлений на входы A0-A3, а от контроля насоса отказался.
Вернул полярность подключения в исходную и при не задействованных A4, A5 все работает нормально.
Спец. Цена только для постоянных покупателей! Тензодатчик. Датчик для весов до 1 кг полумостовой. 330 руб розн. 303 руб опт. 289 руб спец. 100.00 руб–> шт. Тензодатчик. Датчик для весов до 5 кг полумостовой. 350 руб розн. 318 руб опт. 311 руб спец. 100.00 руб–> шт. Тензодатчик. Датчик для весов до 10 кг полумостовой. 380 руб розн. 307 руб опт. 281 руб спец. 100.00 руб–> шт. Тензодатчик. Датчик для весов до 50 кг полумостовой. 180 руб розн. 150 руб опт. 144 руб спец. 100.00 руб–> шт. Датчик расхода воды YF-S201. Расходомер (диаметр 1/2 400 руб розн. 322 руб опт. 296 руб спец. 100.00 руб–> шт. Диск для Датчика скорости на Мотор-Редуктор 40 руб розн. 19 руб опт. 13 руб спец. 100.00 руб–> шт. DS3231. Часы реального времени для Raspberry 190 руб розн. 170 руб опт. 163 руб спец. 100.00 руб–> шт. Кнопка – триггер бистабильный переключатель KY002 240 руб розн. 244 руб опт. 236 руб спец. 100.00 руб–> шт. Дальномер лазерный GY-VL53L0XV2. Датчик Ардуино 600 руб розн. 548 руб опт. 533 руб спец. 100.00 руб–> шт. SW520D Датчик вибрации 100 руб розн. 59 руб опт. 57 руб спец. 100.00 руб–> шт. BME280 Датчик атмосферного давления. Барометр. Влажность. 500 руб розн. 419 руб опт. 385 руб спец. 100.00 руб–> шт. Датчик уровня воды. Поплавковый выключатель. 200 руб розн. 207 руб опт. 204 руб спец. 100.00 руб–> шт. ACS712. Датчик тока 30A 320 руб розн. 259 руб опт. 252 руб спец. 100.00 руб–> шт. Датчик линии TCRT5000 цифровой и аналоговый выход 130 руб розн. 96 руб опт. 59 руб спец. 100.00 руб–> шт. ACS712. Датчик тока 5A 300 руб розн. 264 руб опт. 237 руб спец. 100.00 руб–> шт. INA219 Датчик тока напряжения и мощности. 300 руб розн. 244 руб опт. 204 руб спец. 100.00 руб–> шт. DHT11. Датчик температуры и влажности Ардуино. 170 руб розн. 152 руб опт. 148 руб спец. 100.00 руб–> шт. DHT12. Датчик температуры и влажности Ардуино 410 руб розн. 324 руб опт. 281 руб спец. 100.00 руб–> шт. DHT22 (AM2302). ДАТЧИК ТЕМПЕРАТУРЫ И ВЛАЖНОСТИ АРДУИНО. 400 руб розн. 355 руб опт. 340 руб спец. 100.00 руб–> шт. DHT22 (AM2302) Датчик температуры и влажности 440 руб розн. 376 руб опт. 370 руб спец. 100.00 руб–> шт. SHT10 (MHT02) Датчик температуры и влажности. 450 руб розн. 344 руб опт. 333 руб спец. 100.00 руб–> шт. Датчик ультрафиолетового излучения GY-ML8511 439 руб розн. 419 руб опт. 411 руб спец. 100.00 руб–> шт. Датчик сердечного ритма AD8232 ECG 720 руб розн. 592 руб опт. 555 руб спец. 100.00 руб–> шт. Вольтметр. Датчик напряжения Ардуино 140 руб розн. 105 руб опт. 104 руб спец. 100.00 руб–> шт. Датчик касания TTP223B большой 80 руб розн. 76 руб опт. 65 руб спец. 100.00 руб–> шт. Датчик движения ИК HC-SR501 170 руб розн. 136 руб опт. 130 руб спец. 100.00 руб–> шт. Датчик движения ИК HC-SR505 180 руб розн. 164 руб опт. 155 руб спец. 100.00 руб–> шт. Датчик движения доплеровский RCWL-0516 150 руб розн. 118 руб опт. 104 руб спец. 100.00 руб–> шт. Датчик движения микроволновый. RCWL-0516. (Индукционный) 150 руб розн. 138 руб опт. 133 руб спец. 100.00 руб–> шт. Датчик распознавания цвета TCS230 GY-31 440 руб розн. 389 руб опт. 370 руб спец. 100.00 руб–> шт. Датчик Дождя, уровня воды c модулем FC-37 120 руб розн. 81 руб опт. 67 руб спец. 100.00 руб–> шт. Термопара К-типа с модулем MAX6675 530 руб розн. 505 руб опт. 481 руб спец. 100.00 руб–> шт.
Всем привет. Хочу поделится одним из проектов созданным на базе Arduino Pro Mini. Для меня работа с токовыми датчиками GY-712 была впервые. Перед созданием этого проекта создавался тестовый блок.
Если вам уже интересно, тогда продолжим.
Здесь я расскажу об одном модуле, так как описывать и зарисовывать 7 модулей не очень-то и легко.
Решение было принято такое — используем токовый датчик GY-712 5А
По причинам: 1) Меряет переменный и постоянный ток; 2) Легко подключается к контроллеру Arduino Pro Mini; 3) Компактный; 4) Недорогой при заказе с Китая.
Давайте посмотрим на схему:
Как работает программа.
При старте он проверяется, включен ли тумблер, если включен ты выдается звуковой сигнал и световая индикация, что бы датчик можно было откалибровать без нагрузки. Если тумблер выключить то прога выдаст звук + индикация.
Далее идет калибровка. После калибровки – звуковой сигнал.
И стартует основная программа. Контроль тумблера, если включен то контроль тока нагрузки лампы, если ток выше заданного порога то включить индикацию если тока нет, то выключить индикацию и выдать звуковой сигнал.
Вот простая схема без контроля тумблера, просто световая индикация. Это на тот случай кому просто нужен будет световой индикатор нагрузки – но тогда можно просто намотать на ферритовое кольцо провода(сделать трансформатор тока) и подключить светодиодик
.
Фото тестов:
Этим проектом всё не закончилось, далее поступил заказ на очередное устройство с корректировкой техзадания(напряжения,токи). Всё это Вы можете увидеть во втором Видео ролике(лайф канал).
Пример IDE1.5.2:
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; //Переменная автоматической калибровки float first; void setup() { pinMode(13, OUTPUT);// Пин индикатора pinMode(12, OUTPUT); // пин звука pinMode(2, INPUT); // пин входа реле (тумблер) digitalWrite(13, LOW); digitalWrite(12, LOW); while(digitalRead(2)==0 ) { // Если включен тумблер то выдать звуковой и световой сигнал пока не отключат для возможности калибровки tone(12,2000,500); digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); delay(500); } 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); } // и выдать звуковой сигнал } } else { // Иначе digitalWrite(13, LOW); // // Погасить индикатор } //------------------------------------------------------------------------------------------------------------------------------------------------- delay(250); } int determineVQ(int PIN) { //Serial.print(«estimating avg. quiscent voltage:»); long VQ = 0; //read 5000 samples to stabilise value for (int i=0; i<5000; i++) { VQ += analogRead(PIN); delay(1);//depends on sampling (on filter capacitor), can be 1/80000 (80kHz) max. } VQ /= 5000; //Serial.print(map(VQ, 0, 1023, 0, 5000));Serial.println(" mV"); return int(VQ); } float readCurrent(int PIN, int adc_zero0) { unsigned long currentAcc = 0; unsigned int count = 0; unsigned long prevMicros = micros() — sampleInterval; while (count < numSamples) { if (micros() — prevMicros >= sampleInterval) { int adc_raw = analogRead(PIN) — adc_zero0; currentAcc += (unsigned long)(adc_raw * adc_raw); ++count; prevMicros += sampleInterval; } } float rms = sqrt((float)currentAcc/(float)numSamples) * (75.7576 / 1024.0); return rms; //Serial.println(rms); }
Ссылки на модули: Arduino Pro Mini , GY-712, Реле, DC-DC .
Привет всем! Собрал для себя такой вот тестер. Характеристики: – Мозги. Arduino pro mini. – Тест радиодеталей. – Токовые клещи до 950 ампер. – Вольтметр переменки до 600 вольт. – Вольтметр постоянки до 50 вольт (можно изменить до 600) – Прозвонка. – Тестер термопар ТХА.(К.L) – Термометр до 650 градусов. – Амперметр промышленных сигналов 0-20мА. – Амперметр до 10А – Тестер датчиков ТСМ, ТСП 50-100. – Омметр – Память независимая для записи параметров измеряемых. – Меню настройки для калибровки (чтоб не подключаться к ноутбуку) Работаю на ТЭЦ цех ТАИ. Станция большая, на щиты ходить далеко. Вдруг что-то вышло из строя или крутнуть по клещам задвижку, но или мало чего. Идти до себя далеко, долго чтобы взять “Цэшку” или клещи, и потом груженый барахлом разным идти на заявку. Возникла идея сделать авометр, клещи, термометр в одном корпусе. Да еще и с разными примочками (тестер радиодеталей, память для параметров с записью в режиме реального времени, и прочие мелочи). Итак теперь к делу.
Меню тестера (не полное).
На дисплее отображаются режимы, индикатор заряда батареи, и иногда служебные символы.
Режим токовых клещей. Замерял на подключеном в сеть чайнике термосе. Показывает 0.36 А. Шкала на 2 А установлена. (Шкалу для 2А сделал максимально чувствительной
Измерение тока работающей микроволновки и чайника.
Измерение статора двигателя.
И измерение одной из обмоток с определением ее индуктивности.
Далее тест биполярного транзистора. С определением его выводов (База, коллектор, эмиттер) Структуры (NPN). Коэффициент усиления (87). И напряжение открытия (597мВ).
На борту имеется вольтметр до 600 вольт переменки. После входа в этот режим специально сделал так чтобы загорался светодиод, как сигнал быть внимательным! Не перепутать разьемы подключения, и быть осторожным с высоким напряжением.
И еще измерение датчика типа ТСМ50 (такие используют для измерения температуры)
Тестер замеряет сопротивление датчика, далее математика переводит оМы в температуру для 50М, 100М, 50П, 100П. Погрешность в этом режиме 0,7 градуса. Более подробно о гаджете здесь: https://youtu.be/3ikp3bh8pxY Ну вообщем такой вот аппарат. Схема, функции, и прочее делалось только под себя (свои условия работы) Все легко можно изменить, перепаяв схему (добавить датчики и прочее) или изменив софт (изменить логику работы математических обсчетов, добавить пункты меню, заставить работать новые подключенные устройства). Пользуюсь уже год, замечаний нет. рџ�Ђрџ�Ђ Естественно ТБшники не знают чем я работаю.
28 июня 2019
автоматизацияуниверсальное применениеInfineonновостьдатчикисредства разработки и материалыArduinoд
Датчик тока TLI4970 производства Infineon позволяет достаточно простым образом организовать измерения AC и DC тока с гальванической изоляцией 2,5 кВ от измеряемой цепи.
Построенный на основе эффекта Холла, TLI4970 измеряет ток до 25 A (50 A) c максимальной погрешностью не более 1,6% в течение всего срока жизни конечного изделия. Разрешающая способность датчика составляет 6,25 мА, измеренный 13-битный результат выдается по шине SPI.
Для простой оценки возможностей датчика можно использовать библиотеку для Arduino, где реализован полный протокол взаимодействия с датчиком. Библиотека для TLI4970 может быть свободно скачана с сайта GitHub.
Загрузка Ардуино-библиотеки TLI4970
Библиотека может работать с двумя отладочными платами – более простой S2GOCURSENSETLI4970TOBO1, где установлен только сам сенсор TLI4970 (потребуется внешняя плата Arduino 3.3 В) и с более сложной TLI49700502GOKITTOBO1, где дополнительно имеется контроллер XMC1100 и отладчик. Так как микросхема TLI4970-D050T4 имеет максимальное напряжение питания 3,6 В, ее нельзя подключать напрямую к тем платам Arduino, где рабочее напряжение равно 5 В.
Дополнительную информацию по датчикам и отладочным платам Infineon можно найти в статье «Отладочные наборы Sensor2Go. Простая разработка устройств с датчиками»
•••
ли со статьей или есть что добавить?