Bincika Lambar

Amfani da ACS712 don Nuna Wutar Lantarki akan LCD1602 ko LCD2004 tare da I2C

Amfani da ACS712 don Nuna Wutar Lantarki akan LCD1602 ko LCD2004 tare da I2C

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 da kuma nuna karatun akan LCD1602 ko LCD2004 ta amfani da I2C. Wannan aikin yana da amfani musamman don sa ido kan wutar lantarki a cikin aikace-aikace daban-daban, yana ba da nunin gani na bayanan wutar lantarki na ainihin lokaci. A ƙarshe, za ku sami tsarin aiki wanda zai iya nuna karatun wutar lantarki daidai akan LCD.

LCD1602-I2C display module with 4 wires

Don ƙarin bayani game da haɗin waya da lambar, tabbatar da duba bidiyon a ƙayyadaddun lokutan (a cikin bidiyo a 00:00).

Bayanin Kayan Aiki

Babban ɓangaren wannan aikin shine na'urar auna wutar lantarki ta ACS712, wanda zai iya auna matakan wutar lantarki har zuwa 30A. Yana aiki ta amfani da tasirin Hall don canza wutar lantarki da ke gudana ta cikinsa zuwa fitarwar wutar lantarki daidai gwargwado. Wannan fitarwar wutar lantarki za a iya karanta ta Arduino don ƙididdige matakin wutar lantarki. Na'urar tana da filaye uku don haɗi: VCC don wutar lantarki, GND don ƙasa, da OUT don siginar wutar lantarki.

Nunin LCD1602 ko LCD2004 yana haɗawa ta hanyar I2C, wanda ke ba da damar haɗin waya da sarrafawa cikin sauƙi ta amfani da filayen bayanai biyu kawai (SDA da SCL) ban da wutar lantarki da ƙasa. Wannan yana sauƙaƙa nuna karatun wutar lantarki ba tare da rikitar da wayoyi da haɗi da yawa ba.

Cikakkun Bayanai na Datasheet

Mai ƙeraAllegro Microsystems
Lambar ɓangareACS712ELCTR-30A-T
Wutar Logic/IO4.5–5.5 V
Wutar samarwa5 V
Fitarwar wutar lantarki (kowane tashar)30 A
Jagorar mitar PWMN/A
Ƙofofin shigar da logic0.5 V (fitarwar kwantar da hankali)
Ragewar wutar lantarki / RDS(on) / saturation1.2 mΩ
Iyakokin zafi150 °C max
KunshinTO-220

  • Tabbatar da ingantaccen rarraba zafi don wutar lantarki sama da 20A.
  • Yi amfani da girman waya da ya dace (12 AWG don 30A) don guje wa zafi mai yawa.
  • Haɗa VCC zuwa 5V da GND zuwa ƙasa don aiki mai kyau.
  • Tabbatar da an haɗa filin OUT zuwa filin shigar da analog akan Arduino (misali, A0).
  • Yi la'akari da bambance-bambancen hankali don nau'ikan ACS712 daban-daban.
  • Yi amfani da capacitors don decoupling kamar yadda aka ƙayyade a cikin datasheet.

Umarnin Haɗin Waya

Arduino wiring for Allegro ACS712 current sensor with LCD

Don haɗa na'urar auna wutar lantarki ta ACS712 tare da Arduino da LCD, fara da haɗa filin VCC na ACS712 zuwa filin 5V akan Arduino. Na gaba, haɗa filin GND na ACS712 zuwa filin ƙasa akan Arduino. Filin OUT na ACS712 ya kamata a haɗa shi zuwa filin analog A0 akan Arduino, inda za a karanta siginar wutar lantarki.

Don LCD1602 ko LCD2004, haɗa filin VCC zuwa filin 5V da filin GND zuwa ƙasa. Filin SDA na LCD ya kamata a haɗa shi zuwa filin SDA akan Arduino (yawanci A4 akan UNO), kuma filin SCL ya kamata a haɗa shi zuwa filin SCL akan Arduino (yawanci A5 akan UNO). Tabbatar cewa duk haɗin suna da ƙarfi don tabbatar da aiki mai kyau.

Misalan Lamba & Bayani

A cikin lambar, muna ayyana filin shigar da analog don karanta fitarwar na'urar tare da #define VIN A0. Wannan yana ba mu damar yin nuni cikin sauƙi ga filin da aka haɗa na'urar a cikin shirin.

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

Na gaba, muna saita hankali bisa ga samfurin ACS712 da muke amfani da shi. Ƙimar hankali ana adana su a cikin array, wanda ke ba da damar shiga cikin sauƙi bisa ga zaɓin samfurin.

const int model = 2; // shigar da lambar samfurin (0, 1, ko 2 don 5A, 20A, ko 30A)
float sensitivity[] = {0.185, 0.100, 0.066}; // ƙimar hankali don kowane samfurin

A cikin aikin setup(), muna fara serial monitor da nunin LCD. Wannan yana ba mu damar ganin karatun wutar lantarki na yanzu duka akan LCD da kuma ta hanyar serial monitor don gyara kurakurai.

void setup() {
    Serial.begin(9600); // fara serial monitor
    lcd.begin(); // fara LCD
    lcd.backlight(); // kunna hasken baya
    lcd.print("Robojax ACS712"); // nuna rubutu na farko
    delay(2000); // jira na daƙiƙa 2
}

Aikin loop() yana karanta wutar lantarki daga na'urar, yana ƙididdige wutar lantarki bisa ga hankali, kuma yana nuna sakamakon daidai. Idan wutar lantarki ta wuce ƙayyadaddun iyakar yankewa, yana nuna ƙimar; in ba haka ba, yana nuna cewa babu wutar lantarki da aka gano.

Nuni / Abin da za ku Yi Tsammani

Lokacin kunna kewayen, LCD ya kamata ya nuna "Robojax ACS712" sannan "Current: " tare da ƙimar wutar lantarki da aka auna a cikin amperes. Idan wutar lantarki ta yi ƙasa da iyakar yankewa, nunin zai nuna "No Current." Yi hattara lokacin gwaji tare da manyan wutar lantarki, saboda na'urar na iya yin zafi (a cikin bidiyo a 12:00).

Don gwada tsarin, ƙara wutar lantarki a hankali ta hanyar ACS712 kuma lura da canje-canje akan LCD da serial monitor. Tabbatar cewa wutar lantarki ba ta wuce iyakokin da aka ƙayyade na na'urar ba don guje wa lalacewa.

Hotuna

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

Abin da zaka iya bukata

Albarkatun da kuma shafukan da za a duba

Fayiloli📁

Littattafan Arduino (zip)

Takardar bayanai (pdf)

Fayil Fritzing