Пребарување код

Користење на Allegro ACS712 DC/AC сензор за струја со Arduino код

Користење на Allegro ACS712 DC/AC сензор за струја со Arduino код

Во ова упатство, ќе научиме како да го користиме Allegro ACS712 сензорот за струја за мерење и на наизменична и на еднонасочна струја со Arduino. Сензорот ACS712 излегува напон пропорционален на струјата што тече низ него, што ни овозможува лесно да ги читаме и прикажуваме вредностите на струјата на серискиот монитор на Arduino. Овој проект е идеален за оние кои сакаат да ја следат струјата во различни апликации, како што се напојувања или батериски системи.

Ќе изградиме едноставно коло што го поврзува сензорот ACS712 со Arduino, а потоа ќе напишеме програма за читање на излезот од сензорот. Очекуваниот резултат е да имаме отчитувања на струјата во реално време прикажани на серискиот монитор. За појаснување околу имплементацијата, задолжително погледнете го видеото (во видеото на 02:00).

Објаснување на хардверот

Allegro ACS712 сензорот за струја е компактен модул кој може да мери струи до 30A, во зависност од верзијата што ќе ја изберете. Има три пина: VCC за напојување, GND за заземјување и излезен пин кој обезбедува напон што одговара на измерената струја. Сензорот користи принцип на Холов ефект, каде што струјата што минува низ проводник генерира магнетно поле. Ова поле се детектира и се претвора во напон, кој потоа се испраќа до Arduino.

Модулот е достапен во различни опсези на струја (5A, 20A и 30A) и излегува напонски нивоа од 185 mV/A, 100 mV/A и 66 mV/A соодветно. Ова значи дека за секој ампер струја што тече низ сензорот, ќе добиете соодветен напонски излез што можете да го читате и обработувате. Оваа карактеристика го прави разновиден за различни апликации.

Детали од техничката документација

ПроизводителAllegro Microsystems
Број на делACS712ELCTR-30A-T
Логички/IO напон4.5–5.5 V
Напон на напојување5 V
Излезна струја (по канал)30 A макс
Насоки за PWM фреквенцијаН/П
Прагови на влезна логикаН/П
Пад на напон / RDS(on) / заситување1.2 mΩ
Термички граници150 °C макс
ПакетTO-220
Белешки / варијантиДостапен во 5A, 20A и 30A

  • Осигурете се дека жиците се правилно поврзани за да избегнете кратки споеви.
  • Користете соодветен пресек на жица за опсегот на струја (12 AWG за 30A).
  • Следете ја температурата на модулот за време на работа.
  • Размислете за додавање ладилник за апликации со повисока струја.
  • Калибрирајте го излезот на сензорот според вашата специфична апликација.

Инструкции за поврзување

Arduino wiring for Allegro ACS712 current sensor

За да го поврзете Allegro ACS712 сензорот со вашиот Arduino, започнете со поврзување на VCC пинот од ACS712 со 5V пинот на Arduino. Потоа, поврзете го GND пинот на сензорот со еден од GND пиновите на Arduino. Излезниот пин на ACS712 треба да се поврзе со аналогниот влезен пин A0 на Arduino.

За мерење на струјата, поврзете го товарот во серија со сензорот. Ова значи дека позитивната жица од вашето напојување треба да влезе во еден од влезните терминали на сензорот за струја, додека другиот терминал се поврзува со товарот. Другата страна на товарот треба да се врати на напојувањето, затворајќи го колото. Погрижете се да користите соодветен пресек на жица за струјата што ја мерите за да избегнете прегревање.

Примери на код и објаснување

Следниот фрагмент од код го иницијализира аналогниот пин и го поставува серискиот монитор:

#define VIN A0 // дефинирај го пинот A0 на Arduino како влез за напон (V in)
const float VCC = 5.0; // напонот на напојување е од 4.5 до 5.5V. Обично 5V.

Овде, го дефинираме VIN како аналоген влезен пин каде што е поврзан излезот на сензорот. Исто така, го поставуваме напонот на напојување VCC на 5V.

Во функцијата loop, го читаме напонот од сензорот ACS712 и ја пресметуваме струјата:

float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Читај го напонот од сензорот
float current = voltage / sensitivity[model]; // Пресметај ја струјата врз основа на чувствителноста

Овде, го читаме суровиот напон од сензорот и го претвораме во вистинска струја користејќи ја низата за чувствителност врз основа на моделот на сензорот што се користи.

Конечно, ги печатиме отчитувањата на струјата на серискиот монитор:

if (abs(current) > cutOffLimit) {
    Serial.print("V: ");
    Serial.print(voltage, 3); // печати го напонот со 3 децимални места
    Serial.print("V, I: ");
    Serial.print(current, 2); // печати ја струјата со 2 децимални места
    Serial.println("A");
} else {
    Serial.println("No Current");
}

Овој дел проверува дали струјата ја надминува дефинираната граница на исклучување и ги печати отчитувањата на напонот и струјата на серискиот монитор. Ако струјата е под прагот, излегува "No Current".

За целосниот код, ве молиме погледнете го кодот вчитан под статијата.

Демонстрација / Што да очекувате

Кога ќе го стартувате кодот и ќе го напојувате колото, треба да видите отчитувања на струјата прикажани на серискиот монитор. Како што го прилагодувате товарот, отчитувањата треба соодветно да се менуваат, под услов струјата да е над границата на исклучување. Бидете внимателни со температурата на сензорот, особено кога работите блиску до неговите максимални вредности.

Слики

Arduino wiring for Allegro ACS712 current sensor
Arduino wiring for Allegro ACS712 current sensor
ACS712_in_series_with_load
ACS712_in_series_with_load
allegro_ACS712_module-1
allegro_ACS712_module-1
allegro_ACS712_module-2
allegro_ACS712_module-2
allegro_ACS712_module-4
allegro_ACS712_module-4
allegro_ACS712_module-0
allegro_ACS712_module-0
130-Allegro ACS712 DC/AC current sensor with Arduino code
Јазик: C++
/*
 * 
 * Arduino Sketch for Allegro ACS712 Current Sensor 
 * This sensor can measure current at a range of up to 30A.
 * It operates with 5V.
 * Please watch the video instruction and explanation for this code.
 * 
 * Written by Ahmad Shamshiri on Sunday, June 17, 2018 at 22:06 in Ajax, Ontario, Canada
 * for Robojax.com
 * View the video instruction at https://youtu.be/DVp9k3xu9IQ
 * This code has been downloaded from Robojax.com
 */
#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC   = 5.0;// supply voltage is from 4.5 to 5.5V. Normally 5V.
const int model = 2;   // enter the model number (see below)

float cutOffLimit = 1.01;// set the current which, below that value, doesn't matter. Or set 0.5

/*
          "ACS712ELCTR-05B-T",// for model use 0
          "ACS712ELCTR-20A-T",// for model use 1
          "ACS712ELCTR-30A-T"// for model use 2  
The sensitivity array is holding the sensitivity of the ACS712
current sensors. Do not change. All values are from page 5 of the data sheet          
*/
float sensitivity[] ={
          0.185,// for ACS712ELCTR-05B-T
          0.100,// for ACS712ELCTR-20A-T
          0.066// for ACS712ELCTR-30A-T
     
         }; 


const float QOV =   0.5 * VCC;// set quiescent Output voltage of 0.5V
float voltage;// internal variable for voltage

void setup() {
    //Robojax.com ACS712 Current Sensor 
    Serial.begin(9600);// initialize serial monitor
    Serial.println("Robojax Tutorial");
    Serial.println("ACS712 Current Sensor");
}

void loop() {
  

  //Robojax.com ACS712 Current Sensor 
  float voltage_raw =   (5.0 / 1023.0)* analogRead(VIN);// Read the voltage from sensor
  voltage =  voltage_raw - QOV + 0.012 ;// 0.000 is a value to make voltage zero when there is no current
  float current = voltage / sensitivity[model];
 
  if(abs(current) > cutOffLimit ){
    Serial.print("V: ");
    Serial.print(voltage,3);// print voltage with 3 decimal places
    Serial.print("V, I: ");
    Serial.print(current,2); // print the current with 2 decimal places
    Serial.println("A");
  }else{
    Serial.println("No Current");
  }
  delay(500);
}

Ресурси и референци

Сè уште нема ресурси.

Датотеки📁

Технички лист (pdf)

Fritzing датотека