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


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


Arduino и датчик тока ACS712

В этом проекте мы расскажем о датчике тока ACS712, о том, как работает датчик тока на основе эффекта Холла и, наконец, о том, как соединить датчик тока ACS712 с Arduino.


Микросхема датчика тока ACS712


Датчик тока ACS712 является продуктом Allegro MicroSystems, он может использоваться для точного измерения как переменного, так и постоянного тока. Этот датчик основан на эффекте Холла, а ИС имеет встроенное устройство с эффектом Холла. На выходе датчика тока ACS712 выдается аналоговое напряжение, пропорциональное переменному или постоянному току (в зависимости от того, что измеряется).


ACS712 доступна в 8-выводном корпусе SOIC, и на следующем рисунке показана ее схема контактов (распиновка ACS712).


Микросхема датчика тока ACS712

IP+ – это плюсовая клемма для измерения тока, IP- – это минусовая клемма для измерения тока, GND – это сигнальная земля, FILTER – для подключения внешнего конденсатора, VIOUT – аналоговый выход, VCC – питание.


Существует три варианта датчика ACS712 в зависимости от диапазона его измерения тока. Оптимизированные диапазоны: +/- 5А, +/- 20А и +/- 30А. в зависимости от варианта чувствительность на выходе также изменяется следующим образом: ACS712 ELC-05 (+/- 5A) чувствительность 185 мВ/А, ACS712 ELC-20 (+/- 20A) чувствительность 100 мВ/А, ACS712 ELC-30 (+/- 30A) чувствительность 66 мВ/А.


Как упоминалось ранее, ASC712 основана на эффекте Холла. В микросхеме имеется медная полоса, соединяющая контакты IP+ и IP- внутри. Когда некоторый ток протекает через этот медный проводник, создается магнитное поле, которое определяется датчиком Холла.


Микросхема датчика тока ACS712

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


Схема датчика тока на основе ACS712


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


Схема датчика тока на основе ACS712

Модуль датчика тока ACS712


Используя один из вариантов ИС ACS712 (5А, 20А или 30А), несколько производителей разработали платы модуля датчика тока ASC712, которые могут быть легко подключены к микроконтроллеру, такому как Arduino. На следующем рисунке показана плата датчика тока ASC712, используемая в этом проекте.


Модуль датчика тока ACS712

Как видите, это довольно простая плата с несколькими компонентами, включая микросхему ASC712, несколько пассивных компонентов и разъемов. Эта конкретная плата состоит из ASC712 ELC-30, то есть диапазон этой платы +/-30A.


Подключение ACS712 к Arduino (схема)


Измерение напряжения (постоянного напряжения) с помощью Arduino очень просто. Если ваше требование состоит в том, чтобы измерять напряжение меньше или равное 5 В, то вы можете напрямую измерять с помощью аналоговых выводов Arduino. Если вам нужно измерить более 5 В, то вы можете использовать простую сеть делителя напряжения или модуль датчика напряжения.


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


Принципиальная схема подключения датчика тока ACS712 к Arduino показана на следующем рисунке.


Принципиальная схема подключения датчика тока ACS712 к Arduino

Код программы взаимодействия Arduino и датчика тока ACS712



#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
 
const int currentPin = A0;
int sensitivity = 66;
int adcValue= 0;
int offsetVoltage = 2500;
double adcVoltage = 0;
double currentValue = 0;
 
void setup() 
{
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.print(" Current Sensor ");
  lcd.setCursor(0,1);
  lcd.print("  with Arduino  ");
  delay(2000);
}
 
void loop()
{
  adcValue = analogRead(currentPin);
  adcVoltage = (adcValue / 1024.0) * 5000;
  currentValue = ((adcVoltage - offsetVoltage) / sensitivity);
  
  Serial.print("Raw Sensor Value = " );
  Serial.print(adcValue);
 
  lcd.clear();
  delay(1000);
  //lcd.display();
  lcd.setCursor(0,0);
  lcd.print("ADC Value =     ");
  lcd.setCursor(12,0);
  lcd.print(adcValue);

  delay(2000);

  Serial.print("\t Voltage(mV) = ");
  Serial.print(adcVoltage,3);
  
  lcd.setCursor(0,0);
  lcd.print("V in mV =       ");
  lcd.setCursor(10,0);
  lcd.print(adcVoltage,1);

  delay(2000);
 
  Serial.print("\t Current = ");
  Serial.println(currentValue,3);
 
  lcd.setCursor(0,0);
  lcd.print("Current =       ");
  lcd.setCursor(10,0);
  lcd.print(currentValue,2);
  lcd.setCursor(14,0);
  lcd.print("A");
  delay(2500);
}

Работа датчика тока ACS712 с Arduino


Подключите все согласно принципиальной схеме и загрузите код в Arduino. В коде есть небольшой расчет для измерения тока. Во-первых, если предположить, что напряжение VCC-ASC712 составляет 5 В, то при отсутствии тока, протекающего через клеммы IP + и IP-, выходное напряжение на VIOUT ACS712 составляет 2,5 В. Это означает, что вам нужно вычесть 2,5 В из напряжения, измеренного на аналоговом выводе.


Теперь, чтобы рассчитать ток, разделите это значение на чувствительность датчика (185 мВ / A для датчика 5A, 100 мВ / A для датчика 20A и 66 мВ / A для датчика 30A). Это все реализовано в коде.


Arduino и датчик тока ACS712



© digitrode.ru