Raadi Koodka

Isticmaalka ACS712 si loo Muujiyo Current-ka LCD1602 ama LCD2004 oo leh I2C

Isticmaalka ACS712 si loo Muujiyo Current-ka LCD1602 ama LCD2004 oo leh I2C

Cashigarkii, waxaan baran doonaa sida loo isticmaalo sensor-ka hadda ee Allegro ACS712 si loo cabbiro hadda AC iyo DC labadaba oo loo muujiyo akhrinta LCD1602 ama LCD2004 iyadoo la isticmaalayo I2C. Mashruucani wuxuu si gaar ah faa'iido ugu leeyahay la socodka hadda ee codsiyada kala duwan, isagoo bixinaya muujin muuqaal ah oo ah xogta hadda ee waqtiga dhabta ah. Marka la dhammeeyo, waxaad yeelan doontaa qaab shaqeeya oo si sax ah u muujin kara akhrinta hadda ee LCD-ga.

LCD1602-I2C display module with 4 wires

Si aad u caddeyso fiilooyinka iyo koodhka, hubi inaad daawato fiidiyowga waqtiyada la cayimay (fiidiyowga 00:00).

Qalabka La Sharaxay

Qaybta ugu weyn ee mashruucan waa sensor-ka hadda ee ACS712, kaas oo cabbiri kara heerarka hadda ilaa 30A. Wuxuu u shaqeeyaa isagoo isticmaalaya saamaynta Hall si uu u beddelo hadda ku qulqulaya isaga oo u beddelo wax soo saar danab oo saami ah. Danabkan wax soo saarka ah waxaa akhrin kara Arduino si loo xisaabiyo heerka hadda. Sensor-ku wuxuu leeyahay saddex biin oo xiriir ah: VCC oo loogu talagalay koronto, GND oo loogu talagalay dhulka, iyo OUT oo loogu talagalay calaamadda danabka.

LCD1602 ama LCD2004 waxay ku xidhmaan I2C, kaas oo u oggolaanaya fiilooyin fudud iyo xakameyn iyadoo la isticmaalayo kaliya laba biin oo xog ah (SDA iyo SCL) marka lagu daro korontada iyo dhulka. Tani waxay ka dhigaysaa mid fudud in la muujiyo akhrinta hadda iyada oo aan lagu buufin fiilooyinka xiriirro badan.

Faahfaahinta Xaashida Xogta

Soo saarahaAllegro Microsystems
Nambarka qaybtaACS712ELCTR-30A-T
Danabka Logic/IO4.5–5.5 V
Danabka sahayda5 V
Hadda soo saarista (kanal kasta)30 A
Hagaha soo noqnoqoshada PWMN/A
Heerarka caqabadaha gelinta0.5 V (wax soo saar nasasho ah)
Hoos u dhaca danabka / RDS(on) / dheregsanaanta1.2 mΩ
Xadka kulaylka150 °C ugu badnaan
BaakadTO-220

  • Hubi inaad si fiican u kala bixiso kulaylka hadda ka sarreeya 20A.
  • Isticmaal cabbirka fiilada ku habboon (12 AWG ee 30A) si looga fogaado kulaylka xad dhaafka ah.
  • Ku xidh VCC 5V iyo GND dhulka si ay u shaqeyso si habboon.
  • Hubi in biinka OUT uu ku xidhan yahay biin gelin analog ah oo ku yaal Arduino (tusaale, A0).
  • Ka warqab farqiga xasaasiyadda ee noocyada kala duwan ee ACS712.
  • Isticmaal capacitors-ka decoupling sida lagu qeexay xaashida xogta.

Tilmaamaha Fiilooyinka

Arduino wiring for Allegro ACS712 current sensor with LCD

Si aad ugu xidho sensor-ka hadda ee ACS712 Arduino iyo LCD, bilaab adigoo ku xidhaya biinka VCC ee ACS712 biinka 5V ee Arduino. Marka xigta, ku xidh biinka GND ee ACS712 biin dhul ah oo ku yaal Arduino. Biinka OUT ee ACS712 waa in lagu xidhaa biinka analogga ah A0 ee Arduino, halkaas oo lagu akhrin doono calaamadda danabka.

LCD1602 ama LCD2004, ku xidh biinka VCC biinka 5V iyo biinka GND dhulka. Biinka SDA ee LCD waa in lagu xidhaa biinka SDA ee Arduino (badanaa A4 ee UNO), biinka SCL-na waa in lagu xidhaa biinka SCL ee Arduino (badanaa A5 ee UNO). Hubi in dhammaan xiriirradu ay adag yihiin si loo hubiyo shaqeynta habboon.

Tusaalooyinka Koodhka & Sharaxaadda

Koodhka, waxaan ku qeexaynaa biinka gelinta analogga ah si loo akhriyo wax soo saarka sensor-ka iyadoo la isticmaalayo #define VIN A0. Tani waxay noo oggolaanaysaa in si fudud loo tixraaco biinka uu sensor-ku ku xidhan yahay inta lagu jiro barnaamijka.

#define VIN A0 // ku qeex biinka Arduino A0 sida gelinta danabka (V in)
const float VCC   = 5.0; // danabka sahayda waa 4.5 ilaa 5.5V. Caadi ahaan 5V.

Marka xigta, waxaan dejineynaa xasaasiyadda iyadoo lagu salaynayo nooca ACS712 ee aan isticmaalayno. Qiimaha xasaasiyadda waxaa lagu kaydiyaa array, taas oo u oggolaanaysa gelin fudud iyadoo lagu salaynayo xulashada nooca.

const int model = 2; // geli nambarka nooca (0, 1, ama 2 ee 5A, 20A, ama 30A)
float sensitivity[] = {0.185, 0.100, 0.066}; // qiimaha xasaasiyadda ee nooc kasta

Faalashada setup(), waxaan bilaabaynaa kormeerka serial-ka iyo muujinta LCD. Tani waxay noo oggolaanaysaa inaan aragno akhrinta hadda ee LCD-ga iyo sidoo kale kormeerka serial-ka si loo ogaado khaladaadka.

void setup() {
    Serial.begin(9600); // bilaab kormeerka serial-ka
    lcd.begin(); // bilaab LCD-ga
    lcd.backlight(); // shid iftiinka dambe
    lcd.print("Robojax ACS712"); // muuji qoraalka bilowga ah
    delay(2000); // sug 2 ilbiriqsi
}

Faalashada loop() waxay akhrisaa danabka sensor-ka, waxay xisaabisaa hadda iyadoo lagu salaynayo xasaasiyadda, waxayna muujinaysaa natiijooyinka si waafaqsan. Haddii hadda uu ka sarreeyo xadka goynta ee la cayimay, waxay muujinaysaa qiimaha; haddii kale, waxay muujinaysaa in aan hadda la ogaan.

Banaanbax / Waxa Laga Filan Karo

Marka korontada la shido, LCD-ga waa inuu muujiyaa "Robojax ACS712" oo ay ku xigto "Current: " iyo qiimaha hadda ee la cabbiray ee amperes. Haddii hadda uu ka hooseeyo xadka goynta, muujintu waxay muujin doontaa "No Current." Ka digtoonow markaad tijaabinayso hadda sare, sababtoo ah sensor-ku wuu kululaan karaa (fiidiyowga 12:00).

Si aad u tijaabiso qaabka, si tartiib ah u kordhi hadda ACS712 oo fiiri isbeddelada LCD-ga iyo kormeerka serial-ka. Hubi in hadda uusan ka badnayn xadka lagu qiimeeyay sensor-ka si looga fogaado dhaawac.

Sawirro

Allegro ACS712 DC/AC current sensor with LCD1602/LCD2004 I2C and Arduino code
Allegro ACS712 DC/AC Current sensor with LCD1602/LCD2004 I2C with Arduino Code
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
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
Arduino wiring for Allegro ACS712 current sensor with LCD
Arduino wiring for Allegro ACS712 current sensor with LCD
131-Allegro ACS712 DC/AC current sensor with LCD1602/LCD2004 I2C and Arduino code
Luqadda: C++
/*
 * 
 * Arduino Sketch for Allegro ACS712 Current Sensor with LCD1602/LCD2004 with I2C 
 * This sensor can measure current at a range of up to 30A.
 * The current is measured and displayed on LCD1602 or LCD2004.
 * The current is also displayed on the Serial monitor (click Tools->Serial monitor).
 * It operates with 5V.
 * Please watch the video instruction and explanation for this code.
 * 
 * Written by Ahmad Shamshiri on July 14, 2018 at 07:02 in Ajax, Ontario, Canada
 * for Robojax.com
 * View the video instruction at https://youtu.be/kzXouSzvcp8
 * This code has been downloaded from Robojax.com
 
  * You must watch the following two videos before you can understand this:
 * 1- Introduction to ACS712 Current Sensor: https://www.youtube.com/watch?v=DVp9k3xu9IQ
 * 2- LCD1602 with I2C display: https://www.youtube.com/watch?v=q9YC_GVHy5A
 */
#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  
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


// start of settings for LCD1602 with I2C
#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 settings for LCD1602 with I2C

void setup() {
    //Robojax.com ACS712 Current Sensor 
    Serial.begin(9600);// initialize serial monitor
    Serial.println("Robojax Tutorial");
    Serial.println("ACS712 Current Sensor");
  // initialize the LCD
  lcd.begin();  
  lcd.backlight();
  lcd.print("Robojax ACS712");
  lcd.setCursor(0,1);
  lcd.print("Demo"); 
  delay(2000);     
}

void loop() {
  

  //Robojax.com ACS712 Current Sensor with LCD1601
  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");
    //start of loop Robojax code ACS712 with LCD1602 and I2C
    lcd.clear();
    lcd.setCursor (0,0); // set to line 1, char 0  
    lcd.print("Robojax ACS712");
    lcd.setCursor (0,1); // set to line 1, char 0  
    lcd.print("Current: ");
    lcd.setCursor (9,1); // go to start of 2nd line
    lcd.print(current);
    lcd.setCursor (14,1); // go to start of 2nd line
    lcd.print("A");
 
  }else{
    Serial.println("No Current");
    lcd.clear();
    lcd.setCursor (0,0); // set to line 1, char 0 
    lcd.print("No Current");     
  }
  delay(500);
}

Waad u baahan tahay

Kheyraadka & Tixraacyada

Faylasha📁

Arduino Libraries (zip)

Waraaqa xogta (pdf)

Faylka Fritzing