This is an old revision of the document!


Nume proiect

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");
  }
  </note>

===== Rezultate Obţinute =====

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

===== Concluzii =====

===== Download =====

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

===== Jurnal =====

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

===== 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.1685295770.txt.gz · Last modified: 2023/05/28 20:42 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