Меню

Датчик переменного напряжения для ардуино

Датчики тока для работы с Ардуино

Главное преимущество микроконтроллера по сравнению со многими средствами управления оборудованием — универсальность. Можно не только отдавать с его помощью конечные команды на включение двигателей, зажигания ламп, или произведения каких-либо действий, но и выполнять определенные «логические» реакции в зависимости от изменившихся внешних условий. Последняя возможность предоставляется в первую очередь внешними датчиками и уже во вторую ветвлениями внутренней программы. В сущности, микроконтроллер — миниатюрный компьютер, ограниченный по мощности, но обладающий определенными плюсами, изначально направленными на применение его в комплексе с различной аппаратурой. Сюда относятся не только контролирующие цепи, но и различные сенсоры, предоставляющие информацию самому логическому блоку. В контексте статьи речь пойдет об одном из ярких представителей названого класса устройств — Ардуино и датчике тока ACS712, специально разработанного в целях совместного с ним использования.

Практические ниши применения

Несмотря на определенные ограничения сенсора, ниши в которых он действительно пригодится весьма широки. Посудите сами — в сущности, потребление электроэнергии возникает единовременно с моментами включения устройств, находящихся на линии. А сам сенсор именно в это время начинает регистрировать показания. То есть датчик тока с Arduino можно использовать не только, как конечный измеряющий прибор, но и в качестве контролирующей части, определяющей активацию какого-либо оборудования. Самый простой пример — обычная лампа. Совместив микроконтроллер с датчиком света и тока можно добиться того, что будет не только производиться активация освещения в темный период времени, но и станет отправляться сигнал пользователю, если источник видимого излучения выйдет из строя. Или, другим примером может стать контроль физического состояния насоса, двигателя, а также любого электрического прибора, потребляющего энергию.

Опять же. Применяя Arduino одновременно с ACS712, как наиболее распространенным датчиком тока платформы, можно использовать микроконтроллер именно в роли детектирующего прибора, который в зависимости от определенного времени производит замер потребления конечной сети. Или как очень «умный» мультиметр, с возможностью построения On-line графиков на дополнительно соединенном к аппарату экране или внешнем компьютере.

ACS712 на основе эффекта Холла

Описываемый датчик построен на основе эффекта Холла. Представьте себе проводящую пластину, к двум сторонам которой подключены полюсы источника тока. На боковых ее гранях напряжение регистрироваться не будет, так как количество «дырок» поступающей энергии с одной стороны равно сумме электронов с другой. Ситуация изменится, если на поверхность начнет действовать магнитное поле. На боковые грани пластины при нем начнет идти часть тока линии, который можно замерить. Его количество станет пропорционально равному воздействию, а значит доступным к определению. Именно названый эффект и лежит в основе работы датчика Холла.

Технологически, в ACS712 сенсор настоящего типа представлен микросхемой SOIC-8, со следующим расположением контактов:

В самом корпусе находится медная полоса, подключаемая к нагрузке. В момент прохождения тока, в ней возникает магнитное поле, которое и регистрируется компонентами устройства по принципам, описанным ранее. Внутреннее строение:

Конечно, в контексте платы дополняющей Arduino, электрические контакты выполнены с более удобным расположением соединяющих проводников:

Два контакта одной стороны устройства предназначены для подключения его в разрыв цепи прохождения тока нагрузки, другие три – целям соединения к самому микроконтроллеру. Здесь OUT связывается с любым аналоговым входом Arduino, на VCC подается +5В питания, GND с общей землей.

Вообще существуют три вида датчиков Холла. В случае Arduino используется только один – униполярный, срабатывающий при наличии тока линии, создающего магнитное поле и прекращающий функционировать при его отсутствии. Реализация возможностей одного из оставшихся – биполярного выполняется введением логической переменной в обычный программный скетч Arduino для ACS712. Суть сенсора указанного типа – поступивший сигнал активирует работу устройства, которая продолжается, даже после его исчезновения. При повторном импульсе на линии выполняется отключение названого состояния.

Технические характеристики

Рассмотрим характеристики платы ACS712 более подробно, естественно с разделением их в зависимости от возможностей различных моделей:

  • Питание — 5В;
  • потребляемый ток — 0,11А;
  • сопротивление по шинам — до 1,2 мОм;
  • вид измеряемой характеристики — постоянный или переменный ток;
  • температурный режим работы — от –40 до +85°С;
  • дополнительные индикаторы — присутствует светодиод поступления тока на питание устройства;
  • размеры (в среднем) — 31 x 13 мм;
  • критичная сила тока, приводящая к пробою устройства — 50А.

Внутренняя электронная схема сенсора:

Ограничения ACS712

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

Отсутствие корпуса, также не вызывает проблем — миниатюрность самой конструкции позволяет ее упаковать в оболочку аппарата содержащую сам микроконтроллер, естественно с электрической изоляцией контактных площадок на случай измерения много амперных токов. А вот устанавливать датчик рядом с излучателями магнитного поля крайне не рекомендуется — будут сбиты показания сенсора. Для чего собственно и нужен, в некоторых случаях, экранирующий корпус.

Теперь, что касается чувствительности: чем датчик рассчитан на больший ампераж работы, тем она ниже. Что тоже нужно брать во внимание, при проектировании схем на основе ACS712. Отдельным вариантом тут выступает ACS713 30A, частично сохраняющий названую возможность за счет относительно удачной схемы.

Схемы подключения и организация работы

Градация аналогового сигнала Arduino составляет 1024 бит. Так как при отсутствии нагрузки сенсор в любом случае показывает 2,5В, значение по умолчанию порта, к которому подключена ACS712 будет 512, что необходимо учитывать при написании скетча микроконтроллера.

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

и скетч для вывода показаний датчика:

#include

LiquidCrystal lcd (7, 6, 5, 4, 3, 2);
const int APIN = A3; // аналоговый пин подключения микроконтроллера
int SENS_ACS712 = 66; // Здесь задается чувствительность конкретного ACS712
int ADCV= 0;
int MINV = 2500;
double ADCVOL = 0;
double tVAL = 0;
void setup()
<
// Отладочная часть, при работе с экраном не используется
// Serial.begin(9600);
lcd.begin(16, 2);
lcd.print(» ACS823 SENS «);
lcd.setCursor(0,1);
lcd.print(» from ARDUINO «);
delay(2000);
>
void loop()
<
ADCV = analogRead(APIN);
ADCVOL = (ADCV / 1024.0) * 5000;
tVAL = ((ADCVOL — MINV) / SENS_ACS712);
// Отладочная часть, при работе с экраном не используется
// Serial.print(«Sens pure = » );
// Serial.print(ADCV);
lcd.clear();
delay(1000);
//lcd.display();
lcd.setCursor(0,0);
lcd.print(«ADC = «);
lcd.setCursor(12,0);
lcd.print(ADCV);
delay(2000);
// Отладочная часть, при работе с экраном не используется
//Serial.print(«\t mV = «);
//Serial.print(ADCVOL,3);
lcd.setCursor(0,0);
lcd.print(«V/mV = «);
lcd.setCursor(10,0);
lcd.print(ADCVOL,1);
delay(2000);
// Отладочная часть, при работе с экраном не используется
//Serial.print(«\t tVAL = «);
//Serial.println(tVAL,3);
lcd.setCursor(0,0);
lcd.print(«ACS712 = «);
lcd.setCursor(10,0);
lcd.print(tVAL,2);
lcd.setCursor(14,0);
lcd.print(«A»);
delay(2500);
>

Есть унифицированные библиотеки, производящие конвертацию показаний сенсора в понятные милливольты без самостоятельной разработки формул. Примером может послужить скетч, выполняющий аналогичные предыдущему действия, только вместо вывода на экран, полученные значения отправляются в COM-порт Arduino. С вычислительными целями применяется библиотека TroykaCurrent. Приведенный код применяется для измерения переменного тока, его модификация для постоянного помечена в тексте.

#include
#define APIN A3
ACS712 dataI(APIN);
void setup() <
Serial.begin(9600);
>
void loop() <
Serial.print(«Troyka value: «);
Serial.print(dataI.readCurrentAC());
// Если требуется постоянный, то используется
// конструкция Serial.print(dataI.readCurrentDC());
Serial.println(» A»);
delay(1000);
>

Теперь, что касается контроля, к примеру, функциональности двигателя. Внешний вид подключенного оборудования:

Кусок кода, который в цикле проверяет работу потребляющего устройства:

const int APIN = A3; // аналоговый пин подключения микроконтроллера
void setup() <
SetSerial(9600);
>
void loop() <
// для обычного контроля любого устройства потребления,
// знание конкретной характеристики объема расходуемого
// тока не важно, главное его определить и отправить
// сообщение в com-порт
if (analogRead(APIN)>2500)
Serial.print(«Device Active)
else
Serial.print(«Device in state OFF»);
delay(2000);
>

Читайте также:  Регулятор напряжения генератора хантера

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

Ну, и напоследок рассмотрим метод серьезного применения датчика ACS712 для контроля нагрузки домашней сети электропитания 220В, до 30А при допустимых потребителях 6 кВт. Несравненным плюсом конструкции служит вывод получаемой информации при помощи Ардуино в сеть, наглядным для человека образом, с графиками и в браузере. Достаточно набрать в подключенном к сети c Arduino компьютере адрес http://192.168.100.10. Единственное ограничение — требуется, чтобы интернет также был доступен. Последнее нужно для внешних компонентов, обрабатывающими числовые значения и выводящие графики.

Сам скетч, который приводится без изменений — уж очень хорошо реализована идея, можно обнаружить по адресу http://liccontrol.com/articles/web_monitor.ino

Вывод

Хотелось бы заметить, что сенсоры ACS712 с 2017 года больше не производятся. Взамен их правообладатель Allegro Microsystems выпускает модификацию ACS723, которая и поставляется на мировые рынки в текущий момент времени.

Источник



Вольтметр переменного тока на Arduino Uno

В этом проекте мы рассмотрим создание вольтметра переменного тока на основе платы Arduino Uno, которым можно будет измерять напряжение переменного тока в вашей квартире. Выводить измеренное напряжение мы будем в окне монитора последовательной связи (serial monitor) Arduino IDE.

Внешний вид вольтметра переменного тока на Arduino Uno

Создание цифрового вольтметра значительно проще создания аналогового вольтметра поскольку в случае аналогового вольтметра нам будут необходимы уверенные знания в таких физических параметрах как крутящий момент, потери на трение и т.д. В то время как для создания цифрового вольтметра нам будет нужен просто ЖК дисплей или даже экран вашего компьютера (в нашем рассматриваемом случае) чтобы вывести измеренное значение напряжения. Также на нашем сайте вы можете посмотреть проект цифрового вольтметра от 0 до 25 В на микроконтроллере AVR.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Трансформатор 12-0-12.
  3. Диод 1N4007 (купить на AliExpress).
  4. Конденсатор 1 мкФ (купить на AliExpress).
  5. Резисторы 10 кОм, 4,7 кОм (купить на AliExpress).
  6. Полупроводниковый стабилитрон 5v (диод Зенера — Zener diode) (купить на AliExpress).
  7. Соединительные провода.

Работа схемы

Схема рассматриваемого нами цифрового вольтметра на основе платы Arduino представлена на следующем рисунке.

Схема вольтметра переменного тока на Arduino Uno

В схеме необходимо сделать следующие соединения:

  1. Соедините высоковольтную часть трансформатора (220V) с источником напряжения, а его низковольтную часть (12v) — с делителем напряжения в схеме.
  2. Соедините резистор 10 кОм последовательно с резистором 4,7 кОм. Убедитесь в том, что на вход схемы напряжение будет поступать с именно с резистора 4,7 кОм (не перепутайте резисторы).
  3. Соедините диод как показано на схеме.
  4. Подсоедините конденсатор и стабилитрон как показано на схеме.
  5. Соедините отрицательный вывод диода с контактом A0 платы Arduino.

Примечание : обязательно соедините землю Arduino с точкой, показанной на рисунке, иначе схема не будет работать.

Трансформатор для нашего проекта
Мультиметр для проверки работы нашего вольтметра Пример работы вольтметра на мониторе ПК

Зачем нужен делитель напряжения

Поскольку мы используем трансформатор 220/12 это значит что на его низковольтной стороне будет напряжение 12 В, которое не подходит для питания платы Arduino (не подходит в качестве ее входного напряжения). Поэтому мы и используем делитель напряжения чтобы получить подходящее напряжение для платы Arduino.

Зачем нужны диод и конденсатор

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

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

Назначение стабилитрона

Можно повредить плату Arduino если на ее контакт подать напряжение более 5 В. Поэтому, чтобы напряжение на контакте Arduino не превысило 5 В, в схеме и используется стабилитрон.

Читайте также:  Как правильно мерить переменное напряжение

Принцип работы вольтметра переменного тока на основе Arduino

Принцип работы нашего проекта составляют следующие действия:

  1. Входное высоковольтное напряжение понижается до напряжения примерно 12 В, приемлемого для работы низковольтных схем.
  2. С выхода делителя напряжения на резисторах мы получаем напряжение, пригодное (по номиналу) для подачи на контакт платы Arduino. Максимальное измеряемое схемой напряжение мы получим с помощью ее симуляции (см. ниже).
  3. Поступающее напряжение (аналоговое) поступает на аналоговый контакт A0 платы Arduino. С помощью аналогово-цифрового преобразования (АЦП), доступного на контакте A0, это входное напряжение преобразуется в число от 0 до 1023. 0 В будет соответствовать 0, а 5 В – 1023.
  4. Плата Arduino конвертирует это значение с выхода АЦП в соответствующее значение напряжения на входе схемы (формула приведена ниже в статье).

Симуляция работы схемы

Моделирование работы схемы было произведено в симуляторе Proteus.

Симуляция работы вольтметра при входном напряжении 311 В

Нахождение максимального входного напряжения осуществлялось методом проб.

При пиковом максимальном переменном напряжении равном 440 В (311 r.m.s, Rated Maximum Sinusoidal — Максимальная (предельная) синусоидальная мощность) напряжение на входе контакта A0 было равно 5 Вольтам, то есть максимуму. То есть наша схема может измерять максимум 311 r.m.s напряжения (440 В пикового напряжения).

Симуляция работы вольтметра при входном напряжении 285 В

Моделирование производилось для различных величин входного напряжения – от 220 r.m.s до 440v.

Исходный код программы

Значение, получаемое с контакта A0, мы будем записывать в переменную m:

m=pinMode (A0,INPUT) ; // режим работы контакта a0 – на ввод данных

Как следует из результатов симуляции схемы, максимальное напряжение 5 В на контакте A0 (1023 после преобразования) достигается при напряжении на входе схемы равном 311 В. То есть значение с выхода АЦП 1023 будет соответствовать 311 Вольтам на входе схемы. Следовательно, чтобы рассчитать значение напряжения на входе схемы, можно использовать формулу:

n=(311/1023)*m Вольт или n=(m*0.304177).

Далее вычисленное по этой схеме измеренное значение напряжения на входе схемы мы будем выводить в окне монитора последовательной связи (serial monitor). Более подробно все эти процессы показаны на видео, приведенном в конце статьи.

Serial.print(» analog input «) ; // выводим строку “analog input” в окно монитора последовательной связи
Serial.print(m);// выводим значение напряжения на входе контакта A0

Далее выводим измеренное значение переменного напряжения на входе схемы.

Serial.print(» ac voltage «) ; // выводим строку “ac voltage” в окно монитора последовательной связи
Serial.print(n) ; // выводим значение напряжения на входе схемы

Вместо вывода значений напряжения в окно монитора последовательной связи можно использовать их вывод на экран ЖК дисплея, который в этом случае необходимо добавить в схему.

Источник

ZMPT101B – датчик переменного напряжения

ZMPT101B - датчик переменного напряжения

ZMPT101B - датчик переменного напряжения

ZMPT101B - датчик переменного напряжения

Измерить постоянное напряжение микроконтроллером – легко: делитель напряжения и все дела! Но что делать, если напряжение почти достигает 250 В и к тому же ещё и переменное? Тут на помощь придёт специальный модуль ZMPT101B!

Москва и МО: Самовывоз
Курьерская доставка
Россия и СНГ: Почта РФ
СДЭК / Boxberry

Купить ZMPT101B — датчик переменного напряжения в Москве или с доставкой по России и СНГ очень просто! До покупки осталось всего 3 клика:

  • Добавьте товар в корзину
  • Оформите заказ, выбрав наиболее удобный способ доставки и оплаты
  • Дождитесь подтверждения от менеджеров или позвоните самостоятельно
  • Оплатите заказ удобным способом и получите его в ближайшее время

Датчик переменного напряжения ZMPT101B для Arduino

ZMPT101B – модуль на основе одноимённого понижающего трансформатора напряжения, позволяющий измерять напряжение переменного тока от 195 до 250 В. Для приведения показаний в более-менее читаемый микроконтроллером вид используется операционный усилитель, установленный на плату.

Всё, что нужно для начала работы – подключить питание 5В от Arduino, высокое напряжение на вход трансформатора и аналоговый выход к любому аналоговому пину Arduino. Ток, потребляемый из сети – до 2 мА.

Соблюдайте технику безопасности при работе с высоким напряжением!

Источник