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 ƙera | Allegro Microsystems |
|---|---|
| Lambar sashi | ACS712ELCTR-30A-T |
| Wutar Logic/IO | 4.5–5.5 V |
| Wutar samarwa | 5 V |
| Fitowar wutar (kowane tashar) | 30 A max |
| Jagorar mitar PWM | N/A |
| Matakan shigar da logic | N/A |
| Rashin wutar / RDS(on) / saturation | 1.2 mΩ |
| Iyakokin zafi | 150 °C max |
| Kunshin | TO-220 |
| Bayanan kula / bambance-bambance | Ana 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

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.
/*
*
* 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)
-
Allegro ACS712 AC/DC 4A, 20A, 30A Current Sensor Datasheet
robojax-allegro_ACS712_current_sensor.pdf0.65 MB
Fayil Fritzing
-
Allegre ACS712 Current Sensor
Allegreo ACS712 Current Sensor.fzpz0.03 MB