Obsah:

ARDUINO ENERGY METER: 10 krokov (s obrázkami)
ARDUINO ENERGY METER: 10 krokov (s obrázkami)

Video: ARDUINO ENERGY METER: 10 krokov (s obrázkami)

Video: ARDUINO ENERGY METER: 10 krokov (s obrázkami)
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Júl
Anonim
Image
Image
ARDUINO ENERGY METER
ARDUINO ENERGY METER
ARDUINO ENERGY METER
ARDUINO ENERGY METER

[Prehrať video]

Patrím do dediny Urísa v Indii, kde je časté prerušenie dodávky elektrickej energie veľmi časté. Brzdí život každému z nich. Počas mojich detských dní bolo pokračovanie štúdií po súmraku skutočnou výzvou. Vzhľadom na tento problém som pre svoj dom experimentálne navrhol slnečnú sústavu. Na osvetlenie niekoľkých jasných diód LED som použil solárny panel 10 W, 6 V. Napriek mnohým ťažkostiam bol projekt úspešný. Potom som sa rozhodol monitorovať napätie, prúd, výkon a energiu zapojenú do systému. To prinieslo myšlienku navrhnúť ENERGETICKÝ METER. Ako jadro tohto projektu som použil ARDUINO, pretože do jeho IDE je veľmi ľahké písať kód a na internete je k dispozícii obrovské množstvo knižníc s otvoreným zdrojovým kódom, ktoré je možné použiť podľa Požiadavka. Experimentoval som s projektom pre veľmi malý (10 W) solárny systém, ktorý však možno ľahko upraviť tak, aby používal systém s vyšším hodnotením.

Všetky moje projekty nájdete na:

Funkcia: Monitorovanie energie pomocou 1. LCD displeja 2. cez internet (Xively upload) 3. Zápis dát na SD kartu

Môžete vidieť môj nový inštruovateľný ARDUINO MPPT SOLAR CHARGE CONTROLLER (verzia-3.0)

Môžete si tiež pozrieť moje ďalšie pokyny

ARDUINO SOLAR CHARGE CONTROLLER (Verzia 2.0)

ARDUINO SOLAR CHARGE CONTROLLER (Verzia-1)

Krok 1: Potrebné diely:

Potrebné diely
Potrebné diely

1. ARDUINO UNO (Amazon) 2. ARDUINO ETHERNET SHIELD (Amazon)

3. LCD CHARAKTER 16x2 (Amazon)

4. SÚČASNÝ SENZOR ACS 712 (Amazon) 4. ODPORY (10 k, 330 ohmov) (Amazon) 5. 10K POTENTIOMETER (Amazon) 6. JUMPER WIRES (Amazon) 7. KÁBEL ETHERNET (Amazon) 8. BREAD BOARD (Amazon)

Krok 2: Sila a energia

Výkon: Výkon je súčin napätia (voltov) a prúdu (Amp) P = VxI Jednotka výkonu je Watt alebo KW Energia: Energia je súčinom výkonu (watt) a času (hodina) E = Pxt Jednotka energie je watthodina alebo Kilowatt Hodina (kWh) Z vyššie uvedeného vzorca je zrejmé, že na meranie energie potrebujeme tri parametre 1. Napätie 2. Prúd 3. Čas

Krok 3: Meranie napätia

Meranie napätia
Meranie napätia
Meranie napätia
Meranie napätia
Meranie napätia
Meranie napätia

Napätie sa meria pomocou obvodu deliča napätia. Keďže vstupné napätie analógového kolíka ARDUINO je obmedzené na 5 V, delič napätia som skonštruoval tak, aby výstupné napätie z neho bolo menšie ako 5 V. Moja batéria používaná na ukladanie výkon zo solárneho panelu je 6 V, 5,5 Ah. Takže musím 6,5 V znížiť na napätie nižšie ako 5 V. Použil som R1 = 10k a R2 = 10K. Hodnota R1 a R2 môže byť nižšia, ale problémom je, že keď je odpor nízky, prúdi ním vyšší prúd, v dôsledku čoho sa veľké množstvo energie (P = I^2R) rozptýli vo forme tepla. Môžu sa teda zvoliť rôzne hodnoty odporu, ale je potrebné dbať na minimalizáciu straty výkonu cez odpor. Vout = R2/(R1+R2)*Vbat Vbat = 6,5 pri plnom nabití R1 = 10k a R2 = 10k Vout = 10/(10+10)*6,5 = 3,25v, čo je nižšie ako 5v a vhodné pre analógový pin ARDUINO UPOZORNENIE I ukázali 9 voltovú batériu v obvode s obloženou doskou je len napríklad na pripojenie vodičov. Ale skutočná batéria, ktorú som použil, je 6 voltová, 5,5 Ah olovená batéria. Kalibrácia napätia: Keď je batéria úplne nabitá (6,5 V), dostaneme a Vout = 3,25 V a nižšia hodnota pre iné nižšie napätie batérie. AEDUINO ADC prevádza analógový signál na zodpovedajúcu digitálnu aproximáciu. Keď je napätie batérie 6,5 V, dostal som 3,25 V z deliča napätia a sample1 = 696 v sériovom monitore, kde sample1 je hodnota ADC zodpovedá 3,25 v. Pre lepšie pochopenie som pripojil simuláciu v reálnom čase pomocou 123D.obvod pre meranie napätia Kalibrácia: 3,25 V zodpovedá 696 1 je ekvivalentný 3,25/696 = 4,669 mv Vout = (4,669*vzorka 1)/1 000 voltov Skutočné napätie batérie = (2*Vout) voltARDUINO KÓD: // odber 150 vzoriek z deliča napätia s intervalom 2 s a potom spriemerujte údaje vzoriek zozbierané pre (int i = 0; i <150; i ++) {sample1 = sample1+analogRead (A2); // odčítanie napätia z oneskorenia obvodu deliča (2); } sample1 = sample1/150; napätie = 4,669*2*vzorka1/1000;

Krok 4: Meranie prúdu

Aktuálne meranie
Aktuálne meranie
Aktuálne meranie
Aktuálne meranie

Na meranie prúdu som použil Hallov prúdový snímač ACS 712 (20 A). Na trhu sú k dispozícii rôzne snímače ACS712 s aktuálnym rozsahom, takže si vyberte podľa svojich požiadaviek. V diagrame chlebovej dosky som ukázal LED ako záťaž, ale skutočné zaťaženie je odlišné. PRACOVNÝ PRINCÍP: Hallov efekt je vytváranie rozdielu napätia (napätie Hall) cez elektrický vodič, priečne na elektrický prúd vo vodiči a magnetické pole kolmé na prúd. Ak sa chcete dozvedieť viac o snímači s Hallovým efektom, kliknite sem. List s údajmi o senzore ACS 712 nájdete tu z dátového listu 1. ACS 712 meria kladné a záporné napätie 20 A, čo zodpovedá analógovému výstupu 100 mV/A 2. Žiadny testovací prúd cez výstupné napätie nie je VCC/2 = 5v/2 = 2,5V Kalibrácia: Analógové čítanie produkuje hodnotu 0-1023, čo sa rovná 0v až 5v Takže analógové čítanie 1 = (5/1024) V = 4,89mv Hodnota = (4,89*Hodnota analógového čítania)/ 1 000 V, ale podľa údajov v údajoch je offset 2,5 V (pri nulovom prúde získate 2,5 V z výstupu snímača) Skutočná hodnota = (hodnota-2,5) V Prúd v zosilňovači = skutočná hodnota*10 KÓDU ARDUINO: // odobratie 150 vzoriek z senzory s intervalom 2 s a potom spriemerujú údaje vzoriek zozbierané pre (int i = 0; i <150; i ++) {sample2+= analogRead (A3); // odčítanie prúdu z oneskorenia snímača (2); } sample2 = sample2/150; val = (5,0*vzorka2)/1024,0; aktuálna hodnota = val-2,5; // offsetové napätie je 2,5v ampéry = aktuálna hodnota*10;

Krok 5: Meranie času

Na meranie času nie je potrebný žiadny externý hardvér, pretože samotný ARDUINO má vstavaný časovač. Funkcia millis () vracia počet milisekúnd od spustenia aktuálneho programu na doske Arduino. ARDUINO CODE: long milisec = millis (); // výpočet času v milisekundách dlhý čas = milisec/1000; // previesť milisekundy na sekundy

Krok 6: Ako ARDUINO vypočítava výkon a energiu

totampy = totampy+ampéry; // výpočet celkového zosilňovača avgamp = totamp/čas; // priemerné zosilňovače amphr = (priemer*času)/3600; // amp-hodina watt = napätie*ampéry; // výkon = napätie*aktuálna energia = (watt*čas)/3600; Watt-s sa opäť prevedie na Watt-Hr delením 1 hodiny (3600 s) // energia = (watt*čas)/(1 000*3 600); na čítanie v kWh

Krok 7: Vizuálny výstup

Vizuálny výstup
Vizuálny výstup

Všetky výsledky je možné zobraziť na sériovom monitore alebo pomocou displeja LCD. Na zobrazenie všetkých výsledkov získaných v predchádzajúcich krokoch som použil 16x2 znakový LCD displej. Schémy nájdete v schéme chlebovej dosky uvedenej vyššie. Pripojte LCD pomocou ARDUINO ako je uvedené nižšie: LCD -> Arduino 1. VSS -> Arduino GND 2. VDD - > Arduino + 5v 3. VO -> Arduino GND pin + odpor alebo potenciometer 4. RS -> Arduino pin 8 5. RW -> Arduino pin 7 6. E -> Arduino pin 6 7. D0 -> Arduino -Nepripojené 8. D1 -> Arduino -nepripojené 9. D2 -> Arduino -nepripojené 10. D3 -> Arduino -nepripojené 11. D4 -> pin Arduino 5 12. D5 -> pin Arduino 4 13. D6 -> Arduino pin 3 14. D7 -> Arduino pin 2 15. A -> Arduino Pin 13 + odpor (výkon podsvietenia) 16. K -> Arduino GND (kostra podsvietenia) ARDUINO KÓD: Pre sériový monitor:

Serial.print ("NAPÄTIE:"); Serial.print (napätie); Serial.println ("Volt"); Serial.print ("AKTUÁLNE:"); Serial.print (zosilňovače); Serial.println ("zosilňovače"); Serial.print ("NAPÁJANIE:"); Serial.print (watt); Serial.println ("Watt"); Serial.print ("ENERGETICKÁ SPOTREBA:"); Serial.print (energia); Serial.println ("Watt-Hour"); Serial.println (""); // vytlačí ďalšie sady parametrov po oneskorení prázdneho riadka (2000); Pre LCD: Pre LCD displej musíte najskôr importovať knižnicu „LiquidCrystal“do kódu. Ak sa chcete dozvedieť viac o knižnici LequidCrystal, kliknite sem. Návod na LCD kliknite sem. Nasledujúci kód je formát, ktorý na LCD displeji zobrazí všetky výpočty výkonu a energie #include lcd (8, 7, 6, 5, 4, 3, 2); int backLight = 9; void setup () {pinMode (backLight, OUTPUT); // nastavenie kolíka 9 ako výstupu analogWrite (backLight, 150); // ovláda intenzitu podsvietenia 0-254 lcd.begin (16, 2); // stĺpce, riadky. veľkosť displeja lcd.clear (); // vymazanie obrazovky} void loop () {lcd.setCursor (16, 1); // nastavenie kurzora mimo počet zobrazení lcd.print (""); // tlač oneskorenia prázdnych znakov (600); ////////////////////////////////////////////// tlačový výkon a energia na LCD/ ///////////////////////////////////////////////////// lcd.setCursor (1, 0); // nastav kurzor na 1. col a 1. riadok lcd.print (watt); lcd.print („W“); lcd.print (napätie); lcd.print ("V"); lcd.setCursor (1, 1); // nastav kurzor na 1. col a 2. riadok lcd.print (energia); lcd.print („WH“); lcd.print (zosilňovače); lcd.print ("A"); }

Krok 8: Odovzdanie údajov na server Xively.com

Odovzdávanie údajov na server Xively.com
Odovzdávanie údajov na server Xively.com
Odovzdávanie údajov na server Xively.com
Odovzdávanie údajov na server Xively.com
Odovzdávanie údajov na server Xively.com
Odovzdávanie údajov na server Xively.com

Lepšie pochopenie nájdete na vyššie uvedených snímkach obrazovky. Na odoslanie údajov na server xively.com je potrebné najskôr stiahnuť nasledujúcu knižnicu HttpClient: kliknite semXively: kliknite semSPI: Import z Arduino IDE (skica -> Importovať knižnicu …..) Ethernet: Import z Arduina IDE ((skica -> Importovať knižnicu …..) Otvorte si účet na https://xively.com (predtým pachube.com a cosm.com) Zaregistrujte si bezplatný účet vývojára na

Vyberte používateľské meno, heslo, nastavte adresu a časové pásmo atď. Dostanete potvrdzovací e -mail;

potom aktivujte svoj účet kliknutím na aktivačný odkaz. Po úspešnom otvorení účtu budete presmerovaní na stránku Vývojové zariadenia

  • Kliknite na pole +Pridať zariadenie
  • Pomenujte zariadenie a popis (napr. MONITOROVANIE ENERGIE) ·
  • Vyberte súkromné alebo verejné údaje (vyberám súkromné) ·
  • Kliknite na položku Pridať zariadenie

Po pridaní zariadenia budete presmerovaní na novú stránku, kde je veľa dôležitých informácií

  • ID produktu, tajomstvo produktu, sériové číslo, aktivačný kód ·
  • ID kanála, FeedURL, koncový bod API (ID kanála sa používa v kóde ARDUINO)
  • Pridajte kanály (IChoose ENERGY a POWER, ale môžete si vybrať podľa svojho výberu) Uveďte jednotku a symbol pre parameter ·
  • Pridajte svoju polohu ·
  • Kľúče API (používané v kóde ARDUINO, vyhýbajte sa zdieľaniu tohto čísla) ·
  • Spúšťače (stránka ping na webovú stránku, keď sa stala udalosť, napríklad keď spotreba energie prekročí určitý limit)

Krok 9: XIVE a kód ARDUINO

Tu som pripojil kompletný kód (beta verzia) pre merač energie okrem zaznamenávania údajov na kartu SD, ktorý je v ďalšom kroku pripojený samostatne. / ** Nahrávanie údajov monitorovania energie do xively **/ #include #include #include #include #define API_KEY "xxxxxxxx" // Zadajte svoj kľúč Xively API #define FEED_ID xxxxxxxxx // Zadajte svoje Xively feed ID // MAC adresu pre váš Ethernetový štít bajt mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Analógový pin, ktorý monitorujeme (0 a 1 používa ethernetový štít) int sensorPin = 2; bez znamienka long lastConnectionTime = 0; // minule sme sa napojili na Cosm const unsigned long connectionInterval = 15000; // oneskorenie medzi pripojením k Cosmu v milisekundách // inicializácia knižnice Cosm // definovanie reťazca pre náš datastream ID char sensorId = "NAPÁJANIE"; char sensorId2 = "ENERGIA"; Dátové toky XivelyDatastream = {XivelyDatastream (sensorId, strlen (sensorId), DATASTREAM_FLOAT), XivelyDatastream (sensorId2, strlen (sensorId2), DATASTREAM_FLOAT), DATASTREAM_FLOAT),}; // Zabalenie dátového toku do informačného kanála XivelyFeed informačného kanála (FEED_ID, datové toky, 2/ * počet dátových tokov */); Klient EthernetClient; XivelyClient xivelyclient (klient); void setup () {Serial.begin (9600); Serial.println ("Inicializácia siete"); while (Ethernet.begin (mac)! = 1) {Serial.println ("Chyba pri získavaní adresy IP cez DHCP, pokúšam sa znova …"); oneskorenie (15 000); } Serial.println ("Sieť inicializovaná"); Serial.println (); } void loop () {if (millis () - lastConnectionTime> connectionInterval) {sendData (); // odoslanie údajov na xively getData (); // prečítajte dátový tok späť z xively lastConnectionTime = millis (); // aktualizujte čas pripojenia, takže počkáme, kým sa znova pripojíme}} void sendData () {int sensor1 = watt; int senzor2 = energia; dátové toky [0].setFloat (senzor1); // dátové toky hodnoty výkonu [1].setFloat (senzor2); // energetická hodnota Serial.print ("Výkon čítania"); Serial.println (dátové toky [0].getFloat ()); Serial.print („Energia na čítanie“); Serial.println (dátové toky [1].getFloat ()); Serial.println ("Nahrávanie na Xively"); int ret = xivelyclient.put (feed, API_KEY); Serial.print ("návratový kód PUT:"); Serial.println (ret); Serial.println (); } // získať hodnotu dátového toku zo služby xively, vytlačiť hodnotu, ktorú sme dostali, void getData () {Serial.println ("Čítanie údajov zo služby Xively"); int ret = xivelyclient.get (feed, API_KEY); Serial.print ("ZÍSKAJTE návratový kód:"); Serial.println (ret); if (ret> 0) {Serial.print ("Datastream is:"); Serial.println (feed [0]); Serial.print ("Hodnota výkonu je:"); Serial.println (feed [0].getFloat ()); Serial.print ("Datastream je:"); Serial.println (feed [1]); Serial.print („Energetická hodnota je:“); Serial.println (feed [1].getFloat ()); } Serial.println ();

Krok 10: Zaznamenávanie údajov na kartu SD

Na ukladanie údajov na kartu SD musíte importovať knižnicu SD. Návod nájdete tu. Ak chcete vedieť viac o knižnici SD, kliknite sem. Kód na ukladanie údajov na kartu SD je zapísaný oddelene, pretože v počítači ARDUINO UNO nemám po písací kód pre LCD displej a odosielanie údajov xively.com. Snažím sa však vylepšiť kód verzie beta, aby jeden kód mohol obsahovať všetky funkcie (LCD displej, Xively nahrávanie údajov a ukladanie údajov na kartu SD). Kód na zaznamenávanie údajov je priložený nižšie. Ak niekto napíše lepší kód úpravou môjho kódu, prosím, podeľte sa so mnou. Toto je môj prvý technický návod. Ak v ňom niekto nájde nejakú chybu, neváhajte komentovať.. aby som sa mohol zlepšiť. Ak nájdete v tomto projekte oblasti zlepšenia, komentujte alebo mi pošlite správu, takže projekt bude silnejší. Myslím si, že to bude užitočné pre ostatných aj pre mňa.

Súťaž o obvody 123D
Súťaž o obvody 123D
Súťaž o obvody 123D
Súťaž o obvody 123D

Tretia cena v súťaži obvodov 123D

Odporúča: