Power Meter

Introducere

Pentru proiect am ales sa fac un sensor care măsoară curentul consumat de orice aparat electronic, dar FOARTE IMPORTANT, sa consume maximum 5 amperi. Ideea a fost inspirată de necesitatea de a da valorile de curent consumate pentru factura la curent. Plănuiesc să îmbunătățesc design-ul pentru a putea monta aparatul la tabloul meu de siguranță, si din casă să pot observa în timp real curentul consumat. Este un proiect destul de compact si ieftin de făcut, așa că oricine îl poate monta în casa lor, fiind în părerea mea foarte util.

Descriere generală

Funcționarea proiectului nu necesită nici-o interacționare din partea omului, tot procesul fiind automat în cod. Senzorul de curent alternativ este legat de firul conectat la borna pozitiva și transmite date către Arduino, care le procesează și le scrie pe un display LCD. !ATENȚIE! În schemă am folosit o fotodiodă, deoarece TinkerCad nu are niciun fel de senzor de curent, dar are cele două borne ale senzorului folosit de mine și permite copierea perfectă a proiectului.

Aici o să scriu câteva detalii importante:

  • Vreau să introduc ideea de burden rezistor. Acesta este un element important pentru fiecare AC sensor, fiind folosit pentru a reduce intensitatea curentului produs de senzor, de exemplu de la 20A cum ar avea un încărcător de laptop mai puternic, la 20mA pentru a putea fi prelucrat de Arduino. Acesta depinde de la senzor la senzor, dar depinde de intensitatea maxima la care poate lucra acel senzor. Senzorul folosit de mine are implementat în construcția sa acest rezistor, așa că eu nu a mai trebuit să modific circuitul.
  • Pentru a face acest proiect cu adevărat util, următorii pași trebuie urmați:
    • Achiziționarea unui senzor mai puternic și mai bun. La ce mă refer prin mai bun? Ei bine, senzorul meu ZMCT103C este unul foarte ieftin, care face față doar la 5A, iar cu cât mai aproape de această intensitate, cu atât mai mare inacuratețea. În general un senzor de 20-30A este suficient, dar se pot folosi și senzori mai puternici de atât
    • Implementarea în circuit a unui burden resistor cu valoarea potrivită pentru senzorul folosit.
    • Folosirea unui multimetru pentru a calibra senzorul.
    • Excluderea unui breadboard si sudarea componentelor între ele.
    • Adaptările necesare în cod.

Hardware Design

Componentele utilizate sunt:

  • Arduino Uno
  • Breadboard
  • LCD1602 Display Module
  • B10K Potentiometer
  • ZMCT103C AC Current Sensor
  • Wires

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare: Arduino IDE
  • librării şi surse 3rd-party: EmonLib.h, LiquidCrystal.h

Aici sunt declarațiile librăriilor

  #include "EmonLib.h"             // Include Emon Library
  #include <LiquidCrystal.h>

Aceste variabile sunt folosite pentru calibrarea senzorului, care trebuie modificate în funcție de Burden Rezistor-ul fiecărui senzor + folosirea unui aparat de măsură pentru calibrare mai fină.

  #define VOLT_CAL 151.1
  #define CURRENT_CAL 25
  EnergyMonitor emon1;             // Create an instance
  const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
  LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

Aici doar am inițializat toate elementele necesare.

  void setup()
  {  
    Serial.begin(9600);
    lcd.begin(16,2);              // columns, rows.  use 16,2 for a 16x2 LCD, etc.
    lcd.clear();
    lcd.setCursor(0,0);           // set cursor to column 0, row 0 (the first row)
    lcd.print("Running");
    emon1.voltage(1, VOLT_CAL, 1.7);  // Voltage: input pin, calibration, phase_shift
    emon1.current(0, CURRENT_CAL);       // Current: input pin, calibration.
  }

La fiecare ciclu, Arduino citește datele de la senzor, calculează valorile și le scrie pe LCD.

  void loop()
  {
    emon1.calcVI(20,2000);         // Calculate all. No.of half wavelengths (crossings), time-out
    float currentDraw = emon1.Irms;             //extract Irms into Variable
    float supplyVoltage = emon1.Vrms;                    //extract Vrms into Variable
    Serial.print("Voltage: ");
    Serial.println(supplyVoltage);
    Serial.print("Current: ");
    Serial.println(currentDraw);
    Serial.print("Watts: ");
    Serial.println(currentDraw * supplyVoltage);
    Serial.println("\n\n");
    delay (2000);
    lcd.clear();
    lcd.setCursor(0,0);           // Displays all current data
    lcd.print(currentDraw);
    lcd.print("A");
    lcd.setCursor(10,0);
    lcd.print(currentDraw * supplyVoltage);
    lcd.print("W");
    lcd.setCursor(0,1);
    lcd.print(supplyVoltage);
    lcd.print("V");
    lcd.setCursor(10,1);
    lcd.print(currentDraw * supplyVoltage / 1000);
    lcd.print("kW");
  }

Rezultate Obţinute

În pozele de mai jos sunt atașate poze cu proiectul pornind, fără niciun consumator și cu un laptop care consuma 3.19A si 19V.

Concluzii

În stagiul actual, proiectul este doar un concept, deoarece în România nu am putut găsi niciun sensor bun, așa că proiectul arată inacuratețe ridicată, mai ales cu consumatori de peste 5A, dar în ciuda limitărilor sale, doar cu simple modificări poate deveni un punct cheie pentru orice casă, fiind extrem de versatil, vă puteți crea prelungitoare care măsoară curentul consumat pentru câțiva consumatori precum un calculator cu monitor și un telefon la încărcat, cât se pot verifica curentul consumat pe întregi circuite din tabloul de siguranță pentru a vă ajuta in diagnosticarea instalațiilor sau pentru a găsii consumatorii cei mai mari pentru economisirea energiei.

Download

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2023/tmiu/voltagemeasurer.txt · Last modified: 2023/05/28 21:16 by eduard.bazarea
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0