This is an old revision of the document!
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 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 =====
===== 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 =====
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.
===== Bibliografie/Resurse =====