Arduino измерить напряжение ток

Датчик тока (Trema-модуль V2.0)

Общие сведения:

Trema-модуль Датчик тока — это аналоговый модуль, позволяющий определять силу как постоянного, так и переменного тока до 5А. Для определения силы тока протекающего по исследуемой цепи, нужно один из её проводов подключить через клеммник на плате модуля. Потенциал на выходе модуля «S» (Signal) будет меняться в соответствии с направлением и силой измеряемого тока.

Видео:

Спецификация:

  • Чип ACS712ELCTR-05B-T.
  • Питание модуля: 5 В постоянного тока.
  • Измеряемый постоянный ток: ±5 А.
  • Измеряемый переменный ток:

5 А.

  • Максимальное напряжение исследуемой цепи: 300 В.
  • Частота измеряемого переменного тока: до 60 Гц.
  • Сопротивление между выводами клеммника: 1,2 мОм.
  • Потенциал на выходе «S» при отсутствии измеряемого тока: Vcc/2 В.
  • Чувствительность модуля: 130,7 мВ/A. (Ток в 1 А смещает потенциал выхода «S» на 130,7 мВ).
  • Рабочая температура: -40 . 85 °C.
  • Габариты модуля 30×30 мм.
  • Все модули линейки «Trema» выполнены в одном формате

    Подключение:

    Trema-модуль Датчик тока (5А) является аналоговым модулем, а значит его выход «S» (Signal) подключается к любому аналоговому входу Arduino.

    В комплекте имеется кабель для быстрого и удобного подключения модуля к Trema Shield .

    Модуль удобно подключать 3 способами, в зависимости от ситуации:

    Способ — 1 : Используя проводной шлейф и Piranha UNO

    Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha UNO

    Способ — 2 : Используя Trema Set Shield

    Модуль можно подключить к любому из аналоговых входов Trema Set Shield.

    Способ — 3 : Используя проводной шлейф и Shield

    Используя 3-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.

    Питание:

    Входное напряжение питания 5 В постоянного тока, подаётся на выводы «V» (Vcc) и «G» (GND) модуля.

    Подробнее о модуле:

    Trema-модуль Датчик тока (5А) построен на базе чипа ACS712 (Analog Current Sensor). Выводы чипа подключённые к клеммнику модуля соединены внутри чипа медной дорожкой, расположенной вблизи датчика Холла. При наличии тока протекающего по этой медной дорожке, генерируемое им магнитное поле, воспринимается датчиком Холла и преобразуется в напряжение на выходе чипа, пропорциональное силе тока. Таким образом выводы подключаемые к исследуемой цепи (ток которой измеряется) электрически изолированы от выхода и шины питания модуля. Для улучшения соотношения сигнал-шум, на выходе Trema модуля установлен RC-фильтр.

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

    Ток протекающий через клеммы Trema-модуля Датчик тока (5А) генерирует магнитное поле, которое воспринимается датчиком Холла и преобразуется в напряжение на выходе «S» модуля, пропорциональное силе и направлению измеряемого тока.

    Для работы с модулем предлагаем воспользоваться библиотекой iarduino_ACS712, в которой реализовано по 4 функции для работы с постоянным и переменным током:

    • 4 функции для работы с постоянным током: setZeroVDC(), getZeroVDC(), readDC(), calibrationDC().
    • 4 функции для работы с переменным током: setZeroVAC(), getZeroVAC(), readAC(), calibrationAC().

    Перечисленные функции идентичны по назначению и отличаются лишь окончанием DC (для постоянного тока) / AC (для переменного тока).

    Чтение силы тока осуществляется вызовом функции readDC() или readAC(), например, float i = readDC() // прочитать силу постоянного тока в переменную i. Функция не только возвращает силу тока в амперах, но и автоматически сглаживает выводимые показания (чем чаще вызывается функция, тем сильнее сглаживание показаний — показания меняются плавнее).

    Если показания возвращаемые функцией readDC() или readAC() отличаются от реально измеренных, то их можно откорректировать вызвав функцию calibrationDC() или calibrationAC(), с параметром в виде числа от 0 до 1023 (по умолчанию 511). Данная функция удобна если для корректировки показаний датчика тока используется подстроечный резистор, подключённый к свободному аналоговому входу Arduino, показание АЦП которой как раз лежат в диапазоне от 0 до 1023. Например, calibrationDC(analogRead(A5)); // Показания возвращаемые функцией readDC() корректируются потенциометром подключённым к выводу A5.

    Напряжение на выходе модуля «S» может измениться при подключении модуля к цепи измеряемого тока, даже если цепь обесточена. На это могут повлиять такие факторы как: токи утечки, электромагнитные и магнитные поля создаваемые другими цепями, или устройствами, намагниченные предметы вблизи модуля и т.д. Значит, перед началом работы с модулем, нужно указать напряжение на выходе «S» которое соответствует отсутствию тока в подключённой цепи. Это напряжение указывается через функцию setZeroVDC() или setZeroVAC(), например, setZeroVDC(2.5); // напряжение на выходе модуля при отсутствии измеряемого постоянного тока соответствует значению 2,5 В. Так же эта функция может быть использована если Вам требуется измерить не реальное значение тока, а отклонение показаний от требуемой силы тока.

    Получить среднее значение напряжения на выходе «S» модуля можно вызвав функцию getZeroVDC() или getZeroVAC(), например, float i = getZeroVDC(); // сохранить среднее значение напряжения в переменную i. Функция вернёт усреднённое напряжение в вольтах на выходе модуля, которое соответствует текущему току в измеряемой цепи. Далее это значение можно использовать в качестве параметра для функции setZeroVDC() или setZeroVAC().

    Если Вы желаете использовать модуль для измерения тока в разных цепях, то в коде setup можно указать: float i = getZeroVDC(); setZeroVDC(i); // получить и установить среднее значение напряжения на выходе модуля, например, соответствующее отсутствию постоянного тока в измеряемой цепи. Но тогда при каждом старте скетча, ток в цепи действительно должен отсутствовать.

    Если Вы желаете использовать модуль для измерения тока в одной и той же цепи, то можно считать напряжение на выходе модуля (при отсутствии измеряемого тока) используя функцию getZeroVDC() или getZeroVAC(), только один раз. Запомнить полученное значение. И переписать скетч, где в коде setup вызывать только функцию setZeroVDC() или setZeroVAC() с указанием этого значения, не вызывая функцию getZeroVDC() или getZeroVAC(). Например, setZeroVDC(2.5); Тогда обесточивать цепь при старте скетча не потребуется.

    Подробнее про установку библиотеки читайте в нашей инструкции..

    Примеры:

    Измерение постоянного тока:

    В данном скетче, Trema датчик тока 5A используется для вывода измеренного постоянного тока в монитор последовательного порта. Следующий скетч предназначен для измерения переменного тока и отличается от данного скетча только тем, что в нём изменены окончания функций библиотеки iarduino_ACS712 (вместо DC указано AC).

    Измерение переменного тока:

    В данном скетче, Trema датчик тока 5A используется для вывода измеренного переменного тока в монитор последовательного порта. Данный скетч отличается от предыдущего только тем, что в нём изменены окончания функций библиотеки iarduino_ACS712 (вместо DC указано AC).

    Измерение переменного тока с регулировкой показаний:

    Как видно из предыдущих скетчей, функция calibrationDC() или calibrationAC(), позволяет откорректировать выводимые показания, но её удобно использовать с подстроечным резистором подключённым к свободному аналоговому входу Arduino, что и сделано в следующем скетче:

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

    Описание основных функций библиотеки:

    Библиотека iarduino_ACS712 предназначена для работы только с Trema датчиком тока 5A .

    Источник

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

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

    Создание цифрового вольтметра значительно проще создания аналогового вольтметра поскольку в случае аналогового вольтметра нам будут необходимы уверенные знания в таких физических параметрах как крутящий момент, потери на трение и т.д. В то время как для создания цифрового вольтметра нам будет нужен просто ЖК дисплей или даже экран вашего компьютера (в нашем рассматриваемом случае) чтобы вывести измеренное значение напряжения. Также на нашем сайте вы можете посмотреть проект цифрового вольтметра от 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 представлена на следующем рисунке.

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

    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.

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

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

    Моделирование производилось для различных величин входного напряжения – от 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) ; // выводим значение напряжения на входе схемы

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

    Источник

    Adblock
    detector