Bincika Lambar

Amfani da Allegro ACS712 DC/AC Current Sensor tare da Arduino Code

Amfani da Allegro ACS712 DC/AC Current Sensor tare da Arduino Code

A cikin wannan koyawa, za mu koyi yadda ake amfani da na'urar auna wutar lantarki ta Allegro ACS712 don auna wutar AC da DC tare da Arduino. Na'urar ACS712 tana fitar da wutar lantarki daidai da wutar da ke gudana ta cikinta, wanda ke ba mu damar karantawa da nuna ƙimar wutar cikin sauƙi a kan serial monitor na Arduino. Wannan aikin ya dace ga waɗanda ke son kula da wutar a cikin aikace-aikace daban-daban, kamar na'urorin samar da wutar lantarki ko tsarin baturi.

Za mu gina wani da'ira mai sauƙi wanda zai haɗa na'urar ACS712 zuwa Arduino, sannan mu rubuta wani shiri don karanta fitowar na'urar. Sakamakon da ake sa ran shine samun karatun wutar na lokaci-lokaci da aka nuna a kan serial monitor. Don ƙarin bayani game da aiwatarwa, tabbatar da duba bidiyon (a cikin bidiyo a 02:00).

Bayanin Kayan Aiki

Na'urar auna wutar lantarki ta Allegro ACS712 wani ƙaramin modul ne wanda zai iya auna wutar har zuwa 30A, dangane da nau'in da ka zaɓa. Yana da fil uku: VCC don wutar lantarki, GND don ƙasa, da kuma filin fitarwa wanda ke ba da wutar lantarki daidai da wutar da aka auna. Na'urar tana amfani da ka'idar Hall effect, inda wutar da ke gudana ta cikin madugu ke haifar da filin maganadisu. Ana gano wannan filin kuma a canza shi zuwa wutar lantarki, wanda ake aikawa zuwa Arduino.

Modul ɗin yana samuwa a cikin ƙimar wutar daban-daban (5A, 20A, da 30A) kuma yana fitar da matakan wutar lantarki na 185 mV/A, 100 mV/A, da 66 mV/A bi da bi. Wannan yana nufin cewa ga kowane ampere na wutar da ke gudana ta cikin na'urar, za ka sami fitowar wutar lantarki daidai wanda za ka iya karantawa da sarrafa shi. Wannan fasalin yana sa ya zama mai amfani ga aikace-aikace daban-daban.

Cikakkun Bayanai na Datasheet

Mai ƙeraAllegro Microsystems
Lambar sashiACS712ELCTR-30A-T
Wutar Logic/IO4.5–5.5 V
Wutar samarwa5 V
Fitowar wutar (kowane tashar)30 A max
Jagorar mitar PWMN/A
Matakan shigar da logicN/A
Rashin wutar / RDS(on) / saturation1.2 mΩ
Iyakokin zafi150 °C max
KunshinTO-220
Bayanan kula / bambance-bambanceAna samuwa a 5A, 20A, da 30A

  • Tabbatar da ingantaccen haɗin waya don guje wa gajeren kewayawa.
  • Yi amfani da waya mai girman da ya dace don ƙimar wutar (12 AWG don 30A).
  • Kula da zafin modul ɗin yayin aiki.
  • Yi la'akari da ƙara heat sink don aikace-aikacen wutar mafi girma.
  • Daidaita fitowar na'urar bisa ga takamaiman aikace-aikacenka.

Umarnin Haɗin Waya

Arduino wiring for Allegro ACS712 current sensor

Don haɗa na'urar Allegro ACS712 zuwa Arduino, fara da haɗa filin VCC na ACS712 zuwa filin 5V a kan Arduino. Na gaba, haɗa filin GND na na'urar zuwa ɗaya daga cikin filin GND a kan Arduino. Filin fitowar ACS712 ya kamata a haɗa shi zuwa filin shigar analog A0 a kan Arduino.

Don auna wutar, haɗa kayan aiki a jere tare da na'urar. Wannan yana nufin cewa wayar tabbatacciya daga tushen wutar ka ya kamata ta shiga ɗaya daga cikin tashoshin shigar wutar na na'urar, yayin da ɗayan tashar ke haɗawa da kayan aiki. Ɗayan gefen kayan aiki ya kamata ya koma tushen wutar, yana kammala da'irar. Tabbatar da amfani da girman waya da ya dace don wutar da kake aunawa don guje wa zafi mai yawa.

Misalan Code & Bayani

Wannan ɓangaren code na farko yana fara filin analog kuma yana saita serial monitor:

#define VIN A0 // ayyana filin Arduino A0 a matsayin shigar wutar (V in)
const float VCC = 5.0; // wutar samarwa daga 4.5 zuwa 5.5V. Yawanci 5V.

Anan, muna ayyana VIN a matsayin filin shigar analog inda aka haɗa fitowar na'urar. Har ila yau, muna saita wutar samarwa VCC zuwa 5V.

A cikin aikin loop, muna karanta wutar daga na'urar ACS712 kuma mu lissafta wutar:

float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Karanta wutar daga na'urar
float current = voltage / sensitivity[model]; // Lissafta wutar bisa ga sensitivity

Anan, muna karanta ƙarancin wutar daga na'urar kuma mu canza shi zuwa ainihin wutar ta amfani da tsararrun sensitivity dangane da nau'in na'urar da ake amfani da shi.

A ƙarshe, muna buga karatun wutar zuwa serial monitor:

if (abs(current) > cutOffLimit) {
    Serial.print("V: ");
    Serial.print(voltage, 3); // buga wutar tare da wurare 3 na decimal
    Serial.print("V, I: ");
    Serial.print(current, 2); // buga wutar tare da wurare 2 na decimal
    Serial.println("A");
} else {
    Serial.println("Babu Wutar");
}

Wannan ɓangaren yana duba idan wutar ta wuce ƙayyadadden iyakar yankewa, kuma yana buga karatun wutar da wutar zuwa serial monitor. Idan wutar ta yi ƙasa da matakin, yana fitar da "Babu Wutar".

Don cikakken code, da fatan za a koma ga code ɗin da aka ɗora a ƙarƙashin labarin.

Zanga-zanga / Abin da za ka Yi Tsammani

Lokacin da ka kunna code ɗin kuma ka ba da wutar da'irar, ya kamata ka ga karatun wutar da aka nuna a serial monitor. Yayin da kake daidaita kayan aiki, karatun ya kamata ya canza daidai, muddin wutar ta fi iyakar yankewa. Yi hattara da zafin na'urar, musamman lokacin aiki kusa da iyakokin ƙarfinsa.

Hotuna

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
Harshe: 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);
}

Albarkatun da kuma shafukan da za a duba

Babu kayan aiki tukuna.

Fayiloli📁

Takardar bayanai (pdf)

Fayil Fritzing