Последние комментарии
- 09.03.2023 10:51
-
25.01.2023 16:05
Спасибо. Хорошая статья. Хотелось бы увидеть как ...
-
21.01.2023 22:58
Доброго дня! Як можна замовити? І чи є схема або ...
-
05.05.2022 19:14
Спасибо автору, понял почему блинк не работал
-
21.04.2022 13:18
В моём случае он используется совместно с AGP ...
Самое читаемое
- Многофункциональный программатор на CH341A
- Переходник USB to TTL (RS232) YP-01 на чипе PL2303HX
- Знакомство с Arduino Pro mini на примере китайского аналога
- Подключаем мощную нагрузку к Arduino, через реле модуль
- Твердотельное реле из симистора для коммутации мощной нагрузки через Ардуино
- Знакомство с Arduino Micro (ATmega32U4) на примере китайского аналога Pro Micro
- Знакомство с Arduino Nano на примере китайского аналога
- Знакомство с Arduino UNO на примере китайского аналога
- Обход блокировки Одноклассников, Вконтакте, Яндекс и Маил.ру с помощью OpenVPN
- Управляем Arduino через Bluetooth HC-06, с компьютера или смартфона
Измеряем ток с помощью Arduino и датчика тока ACS712
Для измерения тока с помощью Arduino воспользуемся датчиком ACS712 от компании Allegro Microsystems. Данный датчик позволяет измерять переменный и постоянный ток в силовой, промышленной и бытовой электронике. Его можно использовать при управлении двигателями, обнаружении и управлении нагрузкой, создании защит от перегрузки по току.
Согласно документации Allegro, данные датчики не предназначены для применения их в автомобилях, для этих целей применяются ACS714.
Датчик ACS712 поставляется в корпусе SOIC8 и предназначен для поверхностного монтажа. Выводы IP+ и IP- клеммы для измерения тока. FILTER - вывод для подключения конденсатора. VIOUT - аналоговый выход. VCC - питание датчика 5В. GND - земля.
Действие датчика основывается на эффекте Холла. Вблизи точного линейного датчика Холла расположена медная проводящая дорожка (на концах выводы IP+ и IP-). Толщина медной дорожки обеспечивает выживание устройства при 5-кратном превышении тока. Её сопротивление 1,2 мОм. Протекающий через эту дорожку ток, генерирует магнитное поле, которое воспринимается схемой Холла и преобразуется в пропорциональное напряжение.
Семейство датчиков ACS712 состоит из 3-х чипов на разные диапазоны измерения тока: 5А (ACS712ELCTR-05B-T ), 20А (ACS712ELCTR-20A-T) и 30Ампер (ACS712ELCTR-30A-T).
Ниже представлены графики на которых видно, какой будет ток в зависимости от напряжения на выходе датчика:
При питании датчика от 5 вольт, если к его измеряемым клеммам не будет подключена нагрузка, выходное напряжение датчика будет равно 2,5В (рассчитывается по формуле VCC/2, где VCC - напряжение питания датчика) . 2,5В - это базовое напряжение датчика, которое нужно вычитать из измеренного напряжения.
Чувствительность датчиков (Sens) изменяется в зависимости от диапазона измерения силы тока микросхемы и зависит от напряжения питания. С увеличением диапазона — уменьшается чувствительность. На графиках ниже представлены графики чувствительности в зависимости от диапазона измеряемого тока:
ACS712ELCTR-05B-T имеет чувствительность 185 мВ/А
ACS712ELCTR-20A-T чувствительность 100 мВ/А
ACS712ELCTR-30A-T чувствительность 66 мВ/А
Датчик обладает низкой погрешностью ±1% , при температуре от 25 до 150°С. Это достигается благодаря его калибровке на стадии производства. В процессе этой операции измеряется погрешность чувствительности и выходное напряжение в рабочей точке. Эти параметры измеряются при комнатной температуре и температуре в диапазоне 85…150°С. Данные заносятся в специальную память.
Среди прочих характеристик:
- Работа в диапазоне температур -40…85°C.
- Полоса пропускания 80 кГц.
- Почти нулевой магнитный гистерезис.
Подключение датчика ACS712 к Arduino.
Для подключения датчика к Arduino удобнее использовать готовый модуль.
Внешний вид с 2-х сторон.
Принципиальная схема модуля. К разъёму Р1 подключается измеряемая цепь, к разъёму Р2 - микроконтроллер (в примере Ардуино). Измеряемая цепь изолирована от выводов микроконтроллера. Среднеквадратичное минимальное напряжение изоляции между контактами 1 - 4 и 5 - 8 - 2,1 кВ. Светодтод D1 сигнализирует о питающем напряжении на датчике. Считаю это бесполезной функцией, поскольку в готовых проектах подобные датчики спрятаны в каких то коробках и не находятся на видном месте.
Для подключения к Arduino используется 3 вывода:
ACS712 |
Arduino |
VCC |
+5В |
GND |
GND |
OUT |
К любому аналоговому выводу, например А2 |
Скетч №1. Считываем значение с аналогового выхода ACS712:
Как уже упоминал выше, при нулевом значении тока на клеммах датчика, напряжение на его аналоговом выходе VIOUT равняется половине напряжения питания датчика (2,5В). В первом примере ничего не будем подключать к клеммам, что бы создать нагрузку в 0Ампер.
int analogPin = 2; int Value = 0; void setup() { Serial.begin(9600); Value = analogRead(analogPin); } void loop(){ Serial.print("Value = " ); Serial.println(Value); delay(1000); } |
В первой строке скетча прописываем аналоговый пин, к которому подключаем датчик,в примере 2 (A2). В строке "Value = analogRead(analogPin);" с помощью функции "analogRead" считываем значение с аналогового пина в переменную "Value". Далее, с помощью "Serial.println" выводим содержимое переменной на дисплей, которое можно посмотреть в мониторе последовательного порта Arduino IDE.
Результатом выполнения скетча будет повторяющаяся запись со значением 512. Что такое 512?
Вспоминаем, что каждый из 6 каналов аналого-цифрового преобразователя Arduino - 10 битный, это значит, что входное напряжение от 0 до 5В, преобразовывается в значения от 0 до 1023. 2,5В будет соответствовать значению 512.
Скетч №2. Вычисляем постоянный ток с помощью ACS712:
В данном примере подключим лампочку на 12 вольт к аккумулятору. Датчик подключается в разрыв цепи питания, между нагрузкой и источником питания.
Для измерения тока в цепи, датчик подключается в разрыв цепи, между нагрузкой и источником питания. В примере, нагрузка - лампочка на 220В.
В завершению сказанному следует отметить что датчики ACS712 в 2017 году были выведены из эксплуатации Allegro Microsystems и взамен предлагаются новые чипы семейства ACS723.
Подробнее...