Auna ƙarfin wutar lantarki ta amfani da Allegro ACS758 Sensor na ƙarfin wutar lantarki tare da LCD1602 (I2C) don Arduino
A cikin wannan koyawa, za mu koyi yadda ake auna wutar lantarki ta amfani da na'urar auna wutar Allegro ACS758 da kuma nuna sakamakon akan LCD1602 ta amfani da sadarwar I2C. Wannan saitin yana da amfani ga aikace-aikace daban-daban, kamar kula da amfani da wutar lantarki a cikin da'irori ko sarrafa amfani da baturi a cikin na'urori. A ƙarshen wannan aikin, za ku sami tsarin da ke aiki wanda ke nuna karatun wutar lantarki na ainihin lokaci.


Na'urar auna wutar ACS758 na iya auna wutar lantarki har zuwa 200A, wanda ya sa ta dace da aikace-aikacen wutar lantarki mai girma. Nunin LCD1602 zai nuna wutar lantarki a cikin amperes tare da daidaitaccen ƙarfin lantarki da na'urar auna wutar ta gano. Don fayyace kowane mataki, tabbatar da duba bidiyon (a cikin bidiyo a 00:00) don nunin gani.
Kayan Aiki Da Aka Yi Bayani
Babban abubuwan wannan aikin sun haɗa da na'urar auna wutar Allegro ACS758 da nunin LCD1602 tare da I2C. ACS758 yana aiki ta hanyar auna filin maganadisu da wutar lantarki ke haifarwa yayin da take gudana ta cikin madugu. Yana ba da ƙarfin fitarwa wanda ya dace da wutar da ke gudana, wanda Arduino zai iya karantawa cikin sauƙi.
LCD1602 nunin haruffa ne na 16x2 wanda ke amfani da sadarwar I2C, yana ba da damar haɗi da sarrafawa cikin sauƙi tare da ƙananan fil ɗin bayanai guda biyu kawai. Wannan yana rage yawan wayoyi da ake buƙata, yana sauƙaƙa tsarin haɗi. Ƙirar I2C tana ba da damar na'urori da yawa su sadarwa akan hanya ɗaya, wanda ya sa ta zama zaɓi mai amfani ga ayyuka.
Bayanan Datasheet
| Mai ƙirƙira | Allegro Microsystems |
|---|---|
| Lambar sashi | ACS758 |
| Ƙarfin Logic/IO | 3.3V / 5V |
| Ƙarfin samarwa | 5V |
| Wutar fitarwa (kowane tashar) | 200 A max |
| Wutar kololuwa (kowane tashar) | 200 A |
| Jagorar mitar PWM | N/A |
| Ƙofofin ƙarfin shigarwa | 0.3V (ƙasa), 2.7V (babba) |
| Ragewar ƙarfin / RDS(on) / cikar | 0.5V max |
| Iyakokin zafi | har zuwa 150°C |
| Kunshin | TO-220 |
| Bayanan kula / bambance-bambance | Zaɓuɓɓukan bidirectional da unidirectional |
- Tabbatar da ingantaccen zubar da zafi don aikace-aikacen wutar lantarki mai girma.
- Rarraba samar da wutar lantarki don guje wa ƙarar da ke shafar karatu.
- Yi amfani da wayoyi masu murɗawa don hanyar wutar lantarki don rage tsangwama.
- Tabbatar da ƙarfin fitarwa daidai da sifili na wutar don daidaitawa.
- Duba polarity lokacin amfani da na'urori masu unidirectional.
Umarnin Haɗi

Don haɗa na'urar auna wutar Allegro ACS758 da nunin LCD1602, fara da haɗa wutar lantarki da ƙasa. Haɗa fil ɗin VCC na ACS758 zuwa fil ɗin 5V akan Arduino, kuma haɗa fil ɗin GND zuwa ƙasan Arduino. Fil ɗin fitarwa na sigina (Vout) daga ACS758 ya kamata a haɗa shi zuwa fil ɗin shigarwa na analog A0 akan Arduino.
Na gaba, don nunin LCD1602, haɗa fil ɗin VCC zuwa fil ɗin 5V akan Arduino da fil ɗin GND zuwa ƙasa. SDA (layin bayanai) daga LCD ya kamata ya haɗa zuwa fil ɗin A4 na Arduino, kuma SCL (layin agogo) ya kamata ya haɗa zuwa fil ɗin A5. Wannan saitin yana ba da damar sadarwar I2C tsakanin Arduino da LCD1602.
Misalan Lamba & Bayani
Sketch ɗin Arduino yana farawa ta hanyar ayyana fil ɗin shigarwa don na'urar auna wutar. An ayyana maɓallin VIN a matsayin A0, wanda shine inda za a karanta fitarwar na'urar. An kuma ayyana ƙarfin samarwa da samfurin ACS758. An ƙididdige ƙarfin ji don zaɓaɓɓen samfurin ta amfani da tsarar sensitivity.
#define VIN A0 // ayyana fil ɗin Arduino A0 a matsayin shigarwar ƙarfin (V in)
const float VCC = 5.0; // ƙarfin samarwa 5V ko 3.3V
const int model = 2; // shigar da samfurin (duba ƙasa)
A cikin aikin setup(), an fara LCD kuma an nuna saƙon maraba. An kunna hasken baya don ingantaccen gani. Wannan shine inda za ku iya daidaita saƙon nunin farko don dacewa da aikinku.
void setup() {
Serial.begin(9600); // fara serial monitor
lcd.begin(); // fara LCD
lcd.backlight();
lcd.print("Robojax");
lcd.setCursor (0,1); // je zuwa farkon layi na 2
lcd.print("ACS758 Current Sensor");
delay(2000); // jinkiri na daƙiƙa 2
lcd.clear();
}
A cikin aikin loop(), ana karanta ƙarfin daga na'urar kuma ana sarrafa shi don ƙididdige wutar. Idan ƙarfin ya wuce iyakar da aka ayyana, ana nuna wutar akan duka serial monitor da LCD. Idan ba a gano wutar ba, ana nuna saƙo mai nuna "Babu Wutar". Wannan yana ba da damar kula da wutar lantarki na ainihin lokaci.
void loop() {
float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Karanta ƙarfin daga na'urar
float current = voltage / FACTOR;
if (abs(voltage) > cutOff) {
Serial.print("V: "); Serial.print(voltage, 3); // buga ƙarfin
lcd.print(current); // nuna wutar akan LCD
} else {
Serial.println("Babu Wutar"); // fitarwa lokacin da ba a gano wutar ba
}
delay(500); // jira kafin karatu na gaba
}
Tabbatar da kallon cikakken bayanin lamba a cikin bidiyon (a cikin bidiyo a 01:30) don cikakken bayani na kowane sashi.
Nuni / Abin Da Za Ku Yi Tsammani
Lokacin da aka kunna wutar, tsarin zai nuna halin yanzu da ke gudana ta cikin na'urar a kan LCD a lokaci-lokaci. Kuna iya gwada saitin ta hanyar amfani da sanannen halin yanzu da kuma lura da karatun. Idan na'urar ta gano halin yanzu, ƙimar wutar lantarki da halin yanzu za su sabunta akan nuni. Idan babu halin yanzu, saƙon "Babu Halin Yanzu" zai bayyana. Yi hattara da haɗin polarity da aka juyar da shi, wanda zai iya haifar da karatun da ba daidai ba ko lalacewa ga abubuwan.
/*
*
* Arduino Sketch for Allegro ACS758 Current Sensor with LCD1602 & I2C module
* This sensor can measure current at a range of up to 200A.
* It operates with 3.3V or 5V.
* This sketch requires you to watch the following two videos before using this code:
* 1- ACS758 Sensor https://www.youtube.com/watch?v=SiHfjzcqnU4
* 2- LCD1602 with I2C https://www.youtube.com/watch?v=q9YC_GVHy5A
*
*
* Written by Ahmad Shamshiri on Tuesday, June 19, 2018, at 20:40 in Ajax, Ontario, Canada
* for Robojax.com
* View the video instruction for this code at https://youtu.be/tug9wjCwDQA
* 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 5V or 3.3V. If using PCB, set to 5V only.
const int model = 2; // enter the model (see below)
float cutOffLimit = 1.00;// reading cut-off current. 1.00 is 1 Amper
/*
"ACS758LCB-050B",// for model use 0
"ACS758LCB-050U",// for model use 1
"ACS758LCB-100B",// for model use 2
"ACS758LCB-100U",// for model use 3
"ACS758KCB-150B",// for model use 4
"ACS758KCB-150U",// for model use 5
"ACS758ECB-200B",// for model use 6
"ACS758ECB-200U"// for model use 7
The sensitivity array is holding the sensitivity of the ACS758
current sensors. Do not change.
*/
float sensitivity[] ={
40.0,// for ACS758LCB-050B
60.0,// for ACS758LCB-050U
20.0,// for ACS758LCB-100B
40.0,// for ACS758LCB-100U
13.3,// for ACS758KCB-150B
16.7,// for ACS758KCB-150U
10.0,// for ACS758ECB-200B
20.0,// for ACS758ECB-200U
};
/*
* Quiescent output voltage is a factor of VCC that appears at the output
* when the current is zero.
* For bidirectional sensors it is 0.5 x VCC
* For unidirectional sensors it is 0.12 x VCC
* For model ACS758LCB-050B, the B at the end represents Bidirectional (polarity doesn't matter)
* For model ACS758LCB-100U, the U at the end represents Unidirectional (polarity must match)
* Do not change.
*/
float quiescent_Output_voltage [] ={
0.5,// for ACS758LCB-050B
0.12,// for ACS758LCB-050U
0.5,// for ACS758LCB-100B
0.12,// for ACS758LCB-100U
0.5,// for ACS758KCB-150B
0.12,// for ACS758KCB-150U
0.5,// for ACS758ECB-200B
0.12,// for ACS758ECB-200U
};
const float FACTOR = sensitivity[model]/1000;// set sensitivity for selected model
const float QOV = quiescent_Output_voltage [model] * VCC;// set quiescent Output voltage for selected model
float voltage;// internal variable for voltage
float cutOff = FACTOR/cutOffLimit;// convert current cut off to mV
// ======== start of LCD1602 with i2C settings
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// ======= END of LCD1602 with i2C settings
void setup() {
//Robojax.com ACS758 Current Sensor
Serial.begin(9600);// initialize serial monitor
Serial.println("Robojax Tutorial");
Serial.println("ACS758 Current Sensor");
Serial.println("with LCD1602 & I2C");
// initialize the LCD,
lcd.begin();
// Turn on the backlight and print a message.
lcd.backlight();
lcd.clear();
lcd.print("Robojax");
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print("ACS758 Current Sensor");
delay(2000);
lcd.clear();
}
void loop() {
//Robojax code ACS758 with LCD1602 and I2C
float voltage_raw = (5.0 / 1023.0)* analogRead(VIN);// Read the voltage from sensor
voltage = voltage_raw - QOV + 0.007 ;// 0.007 is a value to make voltage zero when there is no current
float current = voltage / FACTOR;
if(abs(voltage) > cutOff ){
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");
//start of loop Robojax code ACS758 with LCD1602 and I2C
lcd.clear();
lcd.setCursor (0,0); // set to line 1, char 0
lcd.print("Current: ");
lcd.setCursor (9,0); // go to start of 2nd line
lcd.print(current);
lcd.setCursor (15,0); // go to start of 2nd line
lcd.print("A");
lcd.setCursor (0,1);
lcd.print("Sense V: ");
lcd.setCursor (9,1); // go to start of 2nd line
lcd.print(voltage);
lcd.setCursor (15,1); // go to start of 2nd line
lcd.print("V");
lcd.backlight();
//end of loopcode Robojax code ACS758 with LCD1602 and I2C
}else{
Serial.println("No Current");
lcd.clear();
lcd.setCursor (0,0);
lcd.print("No Current");
}
delay(500);
}
Abin da zaka iya bukata
-
AmazonACS758 Current Sensor on Amazonamzn.to
-
eBay
-
AliExpressPurchase Allegro ACS758 Current Sensor from AliExpresss.click.aliexpress.com
Albarkatun da kuma shafukan da za a duba
Babu kayan aiki tukuna.
Fayiloli📁
Fayil Fritzing
-
LCD LCD1602-I2C module with 4 wires
LCD1602-I2C.fzpz0.01 MB
Sauran fayiloli
-
Alegro ACS Current LibraryArduino library for Allegro ACS current sensor modules. Provides functions to read current measurements from ACS712 and similar sensors.
robojax_Alegro_ACS_Current_library.zip0.02 MB