Isticmaalka Allegro ACS712 Sensor-ka Hadaya DC/AC ee Arduino Code-ka
Cashigarkani, waxaan ku baran doonnaa sida loo isticmaalo sensor-ka hadda ee Allegro ACS712 si loo cabbiro hadda AC iyo DC labadaba Arduino. Sensor-ka ACS712 wuxuu soo saaraa danab u dhigma hadda ku socda, taasoo noo ogolaanaysa in si fudud u akhrino oo muujinno qiimaha hadda ee kormeerka taxanaha ah ee Arduino. Mashruucani wuxuu ku habboon yahay kuwa raba inay la socdaan hadda codsiyada kala duwan, sida koronto ama nidaamyada batteriga.

Waxaan dhisi doonnaa wareeg fudud oo ku xira sensor-ka ACS712 Arduino-ga, ka dibna waxaan qori doonnaa barnaamij si loo akhriyo wax soo saarka sensor-ka. Natiijada la filayo waa in la helo akhrin hadda ah oo waqti-riil ah oo lagu muujiyo kormeerka taxanaha ah. Si aad u caddeyso hirgelinta, hubi inaad fiiriso fiidiyowga (fiidiyowga 02:00).
Qalabka La Sharxay
Sensor-ka hadda ee Allegro ACS712 waa module isku dhafan oo cabbiri kara hadda ilaa 30A, iyadoo ku xiran nooca aad doorato. Wuxuu leeyahay saddex biin: VCC oo loogu talagalay koronto, GND oo loogu talagalay dhulka, iyo biin wax soo saar ah oo bixiya danab u dhigma hadda la cabbiray. Sensor-ku wuxuu isticmaalaa mabda'a saamaynta Hall, halkaas oo hadda ku socda conductor uu dhaliyo goob magnetic ah. Goobtan waa la ogaadaa oo waxaa loo beddelaa danab, ka dibna waxaa loo diraa Arduino-ga.
Module-ku wuxuu ku yimaadaa qiimeynno hadda oo kala duwan (5A, 20A, iyo 30A) wuxuuna soo saaraa heerarka danab ee 185 mV/A, 100 mV/A, iyo 66 mV/A siday u kala horreeyaan. Tani waxay ka dhigan tahay in ampere kasta oo hadda ah oo ku socda sensor-ka, aad heleysid wax soo saar danab oo u dhigma oo aad akhrin karto oo aad habayn karto. Astaamahani waxay ka dhigaysaa mid ku habboon codsiyada kala duwan.
Faahfaahinta Xogta
| Soo saaraha | Allegro Microsystems |
|---|---|
| Nambarka qaybta | ACS712ELCTR-30A-T |
| Danabka Logic/IO | 4.5–5.5 V |
| Danabka sahayda | 5 V |
| Hadda soo saarista (kanal kasta) | 30 A ugu badnaan |
| Hagaha soo noqnoqoshada PWM | N/A |
| Heerarka caqabadaha gelinta | N/A |
| Hoos u dhaca danabka / RDS(on) / saturation | 1.2 mΩ |
| Xadka kulaylka | 150 °C ugu badnaan |
| Baakad | TO-220 |
| Qoraalo / noocyo | Waxaa laga heli karaa 5A, 20A, iyo 30A |
- Hubi in si habboon loo xiro si looga fogaado wareegyada gaaban.
- Isticmaal fiilo cabbir ku habboon qiimeynaha hadda (12 AWG ee 30A).
- La soco heerkulka module-ka inta lagu jiro hawlgalka.
- Tixgeli ku darista kulayl-qaboojiyaha codsiyada hadda sare.
- Hagaaji wax soo saarka sensor-ka iyadoo ku xiran codsigaaga gaarka ah.
Tilmaamaha Xirista

Si aad u xirto sensor-ka Allegro ACS712 Arduino-gaaga, ka bilow adoo ku xira biinka VCC ee ACS712 biinka 5V ee Arduino-ga. Marka xigta, ku xir biinka GND ee sensor-ka mid ka mid ah biinanka GND ee Arduino-ga. Biinka wax soo saarka ee ACS712 waa in lagu xiraa biinka gelinta analogga ah ee A0 ee Arduino-ga.
Marka la cabbirayo hadda, ku xir culeyska si taxane ah sensor-ka. Tani waxay ka dhigan tahay in fiilada togan ee ilaha korontadaadu ay gasho mid ka mid ah terminaalada gelinta ee sensor-ka hadda, halka terminaalka kale uu ku xirma culeyska. Dhinaca kale ee culeyska waa inuu ku soo noqdaa ilaha korontada, isagoo dhammaystiraya wareegga. Hubi inaad isticmaasho fiilo cabbir ku habboon hadda aad cabbiraysid si aad uga fogaato kulaylka xad dhaafka ah.
Tusaalooyinka Koodka & Sharaxaad
Qaybta koodka ee soo socota waxay bilaabaysaa biinka analogga ah waxayna dejineysaa kormeerka taxanaha ah:
#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.
Halkan, waxaan ku qeexaynaa VIN inuu yahay biinka gelinta analogga ah halkaas oo wax soo saarka sensor-ka lagu xiro. Sidoo kale waxaan dejineynaa danabka sahayda VCC inuu yahay 5V.

Faalashada loop-ka, waxaan akhrinaynaa danabka sensor-ka ACS712 waxaanan xisaabinaynaa hadda:
float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Read the voltage from sensor
float current = voltage / sensitivity[model]; // Calculate current based on sensitivity
Halkan, waxaan akhrinaynaa danabka ceyriinka ah ee sensor-ka waxaanan u beddelaynaa hadda dhabta ah iyadoo la isticmaalayo array-ga sensitivity iyadoo ku xiran nooca sensor-ka la isticmaalayo.
Ugu dambeyntii, waxaan daabacaynaa akhrinta hadda ee kormeerka taxanaha ah:
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");
}
Qaybtani waxay hubinaysaa in hadda uu ka sarreeyo xadka goynta ee la qeexay, waxayna daabacaysaa akhrinta danabka iyo hadda ee kormeerka taxanaha ah. Haddii hadda uu ka hooseeyo heerka, waxay soo saartaa "No Current".
Koodka buuxa, fadlan tixraac koodka hoos ku shuban ee maqaalka.
Muuujin / Waxa Laga Filanayo
Markaad wado koodka oo aad koronto siiso wareegga, waa inaad aragtaa akhrinta hadda ee lagu muujiyo kormeerka taxanaha ah. Markaad hagaajiso culeyska, akhrintu waa inay si waafaqsan is beddesho, haddii hadda uu ka sarreeyo xadka goynta. Ka digtoonow heerkulka sensor-ka, gaar ahaan markaad ku shaqeyneysid meel u dhow qiimeyntiisa ugu sarreeya.
/*
*
* 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);
}
Kheyraadka & Tixraacyada
Wali wax kaydsan ah oo weli ma jiro.
Faylasha📁
Waraaqa xogta (pdf)
-
Allegro ACS712 AC/DC 4A, 20A, 30A Current Sensor Datasheet
robojax-allegro_ACS712_current_sensor.pdf0.65 MB
Faylka Fritzing
-
Allegre ACS712 Current Sensor
Allegreo ACS712 Current Sensor.fzpz0.03 MB