Sadržaj:

ARDUINO ENERGETSKI MJERAČ: 10 koraka (sa slikama)
ARDUINO ENERGETSKI MJERAČ: 10 koraka (sa slikama)

Video: ARDUINO ENERGETSKI MJERAČ: 10 koraka (sa slikama)

Video: ARDUINO ENERGETSKI MJERAČ: 10 koraka (sa slikama)
Video: Arduino sekvencer od 64 koraka s minimalnim hardverom, prilagođen sekvencerom bubnjeva 2024, Srpanj
Anonim
Image
Image
ARDUINO ENERGETSKI MJERILAC
ARDUINO ENERGETSKI MJERILAC
ARDUINO ENERGETSKI MJERILAC
ARDUINO ENERGETSKI MJERILAC

[Reproduciraj video]

Pripadam selu Odisha u Indiji gdje je često isključenje struje vrlo često. Ometa život svakome. Za vrijeme mog djetinjstva nastavak studija nakon sumraka bio je pravi izazov. Zbog ovog problema, eksperimentalno sam projektirao solarni sustav za svoj dom. Koristio sam solarnu ploču od 10 W, 6V za osvjetljavanje nekoliko svijetlih LED dioda. Nakon velikih teškoća, projekt je bio uspješan. Tada sam odlučio pratiti napon, struju, snagu i energiju uključenu u sustav. To je donijelo ideju o dizajniranju ENERGETSKOG MJERNIKA. Koristio sam ARDUINO kao srce ovog projekta jer je vrlo lako pisati kôd u njegovom IDE -u, a na internetu je dostupan veliki broj biblioteka otvorenog koda koje se mogu koristiti u skladu s zahtjev. Eksperimentirao sam s projektom za vrlo mali solarni sustav (10 Watt), no to se može lako izmijeniti za upotrebu u sustavu s većom ocjenom.

Sve moje projekte možete pronaći na:

Značajka: Nadzor energije pomoću 1. LCD zaslona 2. putem interneta (Xively upload) 3. Prijava podataka na SD karticu

Možete vidjeti moj novi instruktor ARDUINO MPPT SOLARNI KONTROLER PUNJENJA (Verzija-3.0)

Moje ostale upute možete vidjeti i na

ARDUINO SOLARNI KONTROLER PUNJENJA (Verzija 2.0)

ARDUINO SOLARNI KONTROLER PUNJENJA (verzija-1)

Korak 1: Potrebni dijelovi:

Potrebni dijelovi
Potrebni dijelovi

1. ARDUINO UNO (Amazon) 2. ARDUINO ETHERNET ŠTIT (Amazon)

3. LCD s 16 x 2 LIKOVA (Amazon)

4. ACS 712 TRENUTNI SENZOR (Amazon) 4. OTPORNICI (10 k, 330 ohma) (Amazon) 5. 10K POTENTIOMETAR (Amazon) 6. DŽEMPER ŽICE (Amazon) 7. ETHERNET KABL (Amazon) 8. DASKA ZA KRUH (Amazon)

Korak 2: Snaga i energija

Snaga: Snaga je proizvod napona (volti) i struje (Amp) P = VxI Jedinica snage je Watt ili KWEnergija: Energija je proizvod snage (watt) i vremena (Sat) E = Pxt Jedinica energije je Watt Sat ili kilovat Sat (kWh) Iz gornje formule jasno je da su za mjerenje energije potrebna tri parametra 1. Napon 2. Struja 3. Vrijeme

Korak 3: Mjerenje napona

Mjerenje napona
Mjerenje napona
Mjerenje napona
Mjerenje napona
Mjerenje napona
Mjerenje napona

Napon se mjeri pomoću kruga razdjelnika napona. Budući da je ulazni napon analognog pina ARDUINO ograničen na 5 V, razdjelnik napona sam projektirao tako da izlazni napon s njega treba biti manji od 5 V. Moja baterija se koristi za pohranu napona. snaga iz solarne ploče je 6v, 5.5Ah, pa moram smanjiti 6,5v na napon manji od 5V. Koristio sam R1 = 10k i R2 = 10K. Vrijednost R1 i R2 može biti niža, ali problem je u tome što kada je otpor nizak, kroz nju prolazi veća struja, što rezultira velikom količinom energije (P = I^2R) koja se rasipa u obliku topline. Dakle, mogu se odabrati različite vrijednosti otpora, ali treba paziti da se smanji gubitak snage kroz otpor. Vout = R2/(R1+R2)*Vbat Vbat = 6,5 kada je potpuno napunjen R1 = 10k i R2 = 10k Vout = 10/(10+10)*6,5 = 3,25 V koji je niži od 5 V i prikladan za analogni pin ARDUINO NAPOMENA I su pokazali 9 -voltnu bateriju u ogoljenoj ploči, samo za spajanje žica. Ali stvarna baterija koju sam koristio je olovna baterija od 6 V, 5,5 Ah Ah. Kalibracija napona: Kad je baterija potpuno napunjena (6,5 V) dobit ćemo a Vout = 3,25 V i niža vrijednost za drugi niži napon baterije. AEDUINO ADC pretvara analogni signal u odgovarajuću digitalnu aproksimaciju. Kad je napon baterije 6,5 V, dobio sam 3,25 V iz razdjelnika napona i uzorak 1 = 696 u serijskom monitoru, gdje je uzorak 1 ADC vrijednost odgovara 3,25 V Za bolje razumijevanje priložio sam simulaciju u stvarnom vremenu pomoću 123D. Kruga za mjerenje napona Kalibracija: 3,25 V ekvivalentno 696 1 ekvivalentno je 3,25/696 = 4,669mv Vout = (4,669*uzorak1)/1000 volti Stvarni napon baterije = (2*Vout) voltARDUINO KOD: // uzimanje 150 uzoraka iz razdjelnika napona s intervalom od 2 sekunde a zatim prosječno uzorak prikupljenih podataka za (int i = 0; i <150; i ++) {uzorak1 = uzorak1+analogno čitanje (A2); // očitavanje napona iz kašnjenja razdjelnog kruga (2); } uzorak1 = uzorak1/150; napon = 4,669*2*uzorak 1/1000;

Korak 4: Mjerenje struje

Mjerenje struje
Mjerenje struje
Mjerenje struje
Mjerenje struje

Za mjerenje struje koristio sam Hall Effect osjetnik struje ACS 712 (20 A). Na tržištu su dostupni različiti ACS712 osjetnici raspona struje, pa odaberite prema svojim zahtjevima. Na dijagramu ploče za kruh prikazao sam LED kao opterećenje, ali je stvarno opterećenje različito. NAČELO RADA: Hall -ov učinak je proizvodnja razlike napona (Hallov napon) na električnom vodiču, poprečno na električnu struju u vodiču i magnetsko polje okomito na struju. Da biste saznali više o Hall Effect osjetniku, kliknite ovdje. Tehnički list senzora ACS 712 nalazi se ovdje. Iz podatkovnog lista 1. ACS 712 mjeri pozitivna i negativna 20 ampera, što odgovara analognom izlazu 100mV/A 2. Nema ispitne struje kroz izlazni napon. VCC/2 = 5v/2 = 2.5V Kalibracija: Analogno očitavanje daje vrijednost 0-1023, što je jednako 0v do 5v. Dakle, analogno očitanje 1 = (5/1024) V = 4.89mv Vrijednost = (4.89*Analogna vrijednost čitanja)/ 1000 V Ali prema podatkovnim listovima pomak je 2,5 V (Kad je trenutna nula dobit ćete 2,5 V iz izlaza senzora) Stvarna vrijednost = (vrijednost-2,5) V Struja u ampu = stvarna vrijednost*10ARDUINO KOD: // uzima 150 uzoraka iz senzori s intervalom od 2 sekunde, a zatim procijene podatke uzorka prikupljene za (int i = 0; i <150; i ++) {uzorak2+= analogno čitanje (A3); // očitavanje struje iz kašnjenja senzora (2); } uzorak2 = uzorak2/150; val = (5,0*uzorak 2)/1024,0; stvarni val = val-2,5; // pomak napona je 2,5v ampera = stvarni val*10;

Korak 5: Mjerenje vremena

Za mjerenje vremena nema potrebe za vanjskim hardverom, jer sam ARDUINO ima ugrađen mjerač vremena. Funkcija millis () vraća broj milisekundi otkad je Arduino ploča započela s izvođenjem trenutnog programa. ARDUINO CODE: long milisec = millis (); // izračunati vrijeme u milisekundama long time = milisek/1000; // pretvara milisekunde u sekunde

Korak 6: Kako ARDUINO izračunava snagu i energiju

totamps = totamps+pojačala; // izračunati ukupna pojačala avgamps = totamps/vrijeme; // prosječna ampera amphr = (avgamps*vrijeme)/3600; // amp-satni vat = napon*ampera; // snaga = napon*trenutna energija = (vat*vrijeme)/3600; Watt-sec ponovno se pretvara u Watt-Hr dijeljenjem 1h (3600sec) // energija = (watt*vrijeme)/(1000*3600); za očitanje u kWh

Korak 7: Vizualni izlaz

Vizualni izlaz
Vizualni izlaz

Svi se rezultati mogu vizualizirati na serijskom monitoru ili pomoću LCD -a. Koristio sam LCD s 16x2 znakova za prikaz svih rezultata dobivenih u prethodnim koracima. Za sheme pogledajte gornji krug ploče za kruh. Povežite LCD s ARDUINO -om kako je dolje prikazano: LCD -> Arduino 1. VSS -> Arduino GND 2. VDD - > Arduino + 5v 3. VO -> Arduino GND pin + otpornik ili potenciometar 4. RS -> Arduino pin 8 5. RW -> Arduino pin 7 6. E -> Arduino pin 6 7. D0 -> Arduino -nije povezan 8. D1 -> Arduino -Nije povezan 9. D2 -> Arduino -Nije povezan 10. D3 -> Arduino -Nije povezan 11. D4 -> Arduino pin 5 12. D5 -> Arduino pin 4 13. D6 -> Arduino pin 3 14. D7 -> Arduino pin 2 15. A -> Arduino Pin 13 + Otpornik (snaga pozadinskog osvjetljenja) 16. K -> Arduino GND (pozadinsko osvjetljenje) ARDUINO KOD: Za serijski monitor:

Serial.print ("NAPON:"); Serijski.ispis (napon); Serial.println ("Volt"); Serial.print ("CURRENT:"); Serijski.tisak (pojačala); Serial.println ("Pojačala"); Serial.print ("POWER:"); Serijski.tisak (vati); Serial.println ("Watt"); Serial.print ("POTROŠNA ENERGIJA:"); Serijski.tisak (energija); Serial.println ("Watt-Hour"); Serial.println (""); // ispisuje sljedeće setove parametara nakon kašnjenja praznog retka (2000); Za LCD: Za LCD zaslon morate prvo uvesti biblioteku "LiquidCrystal" u kôd. Za više informacija o knjižnici LequidCrystal kliknite ovdje Za LCD vodič kliknite ovdje Sljedeći kod je format za prikaz na LCD -u sve izračune snage i energije #include lcd (8, 7, 6, 5, 4, 3, 2); int backLight = 9; void setup () {pinMode (backLight, OUTPUT); // postavite pin 9 kao izlaz analogWrite (backLight, 150); // kontrolira intenzitet pozadinskog osvjetljenja 0-254 lcd.begin (16, 2); // stupci, retci. veličina zaslona lcd.clear (); // očisti zaslon} void loop () {lcd.setCursor (16, 1); // postavljanje kursora izvan broja prikaza lcd.print (""); // ispis kašnjenja praznog znaka (600); ////////////////////////////////////////////// snaga i energija ispisa na LCD/ ///////////////////////////////////////////////////// lcd.setCursor (1,1); // postavite kursor na 1. kolonu i 1. red lcd.print (watt); lcd.print ("W"); lcd.tisak (napon); lcd.print ("V"); lcd.setCursor (1, 1); // postavite kursor na 1. kolonu i 2. red lcd.print (energija); lcd.print ("WH"); lcd.tisak (pojačala); lcd.print ("A"); }

Korak 8: Prijenos podataka na Xively.com

Prijenos podataka na Xively.com
Prijenos podataka na Xively.com
Prijenos podataka na Xively.com
Prijenos podataka na Xively.com
Prijenos podataka na Xively.com
Prijenos podataka na Xively.com

Za bolje razumijevanje pogledajte gornje snimke zaslona. Za prijenos podataka na xively.com sljedeću biblioteku najprije preuzmite HttpClient: kliknite ovdjeDugo: kliknite ovdje SPI: Uvoz iz arduino IDE -a (skica -> Uvezi biblioteku …..) Ethernet: Uvoz iz arduina IDE ((skica -> Uvezi biblioteku …..) Otvorite račun na https://xively.com (ranije pachube.com i cosm.com) Prijavite se za besplatni račun razvojnog programera na

Odaberite korisničko ime, lozinku, postavite svoju adresu i vremensku zonu itd. Primit ćete e -poruku s potvrdom;

zatim kliknite vezu za aktivaciju da biste aktivirali svoj račun. Nakon uspješnog otvaranja računa bit ćete preusmjereni na stranicu Razvojni uređaji

  • Pritisnite okvir +Dodaj uređaj
  • Dajte naziv svom uređaju i opis (npr. PRAĆENJE ENERGIJE) ·
  • Odaberite privatne ili javne podatke (ja odabirem privatne) ·
  • Pritisnite Dodaj uređaj

Nakon dodavanja uređaja bit ćete preusmjereni na novu stranicu na kojoj se nalaze mnoge važne informacije

  • ID proizvoda, tajna proizvoda, serijski broj, kôd za aktivaciju ·
  • ID feeda, FeedURL, krajnja točka API -ja (ID feeda koristi se u ARDUINO kodu)
  • Dodajte kanale (IChoose ENERGY i POWER, ali možete birati prema vlastitom izboru) Dajte jedinicu i simbol za parametar ·
  • Dodajte svoju lokaciju ·
  • API ključevi (koriste se u ARDUINO kodu, izbjegavajte dijeljenje ovog broja) ·
  • Okidači (ping web stranica kada se događaj dogodio, primjerice kada potrošnja energije premaši određeno ograničenje)

Korak 9: Xively i ARDUINO kod

Ovdje sam priložio potpuni kod (beta verzija) za mjerač energije isključujući bilježenje podataka sa SD kartice koji se zasebno prilaže u sljedećem koraku. / ** Prijenos podataka o nadzoru energije na xively **/ #include #include #include #include #define API_KEY "xxxxxxxx" // Unesite svoj Xively API ključ #define FEED_ID xxxxxxxxx // Unesite svoj Xively feed ID // MAC adresu za Ethernet štitni bajt mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Analogni pin koji nadgledamo (0 i 1 koristi Ethernet štit) int sensorPin = 2; unsigned long lastConnectionTime = 0; // zadnji put kada smo se povezali na Cosm const unsigned long connectionInterval = 15000; // kašnjenje između povezivanja na Cosm u milisekundama // Inicijalizacija Cosm knjižnice // Definiranje niza za naš ID toka podataka char sensorId = "POWER"; char sensorId2 = "ENERGIJA"; XivelyDatastream tokovi podataka = {XivelyDatastream (sensorId, strlen (sensorId), DATASTREAM_FLOAT), XivelyDatastream (sensorId2, strlen (sensorId2), DATASTREAM_FLOAT), DATASTREAM_FLOAT),}; // Omotajte tok podataka u feed XivelyFeed feed (FEED_ID, tokovi podataka, 2/ * broj tokova podataka */); EthernetClient klijent; XivelyClient xivelyclient (klijent); void setup () {Serial.begin (9600); Serial.println ("Inicijalizacija mreže"); while (Ethernet.begin (mac)! = 1) {Serial.println ("Pogreška pri preuzimanju IP adrese putem DHCP -a, pokušaj ponovno …"); kašnjenje (15000); } Serial.println ("Mreža inicijalizirana"); Serial.println (); } void loop () {if (millis () - lastConnectionTime> connectionInterval) {sendData (); // šalje podatke xively getData (); // čitanje toka podataka natrag iz xively lastConnectionTime = millis (); // ažuriramo vrijeme povezivanja pa čekamo prije ponovnog povezivanja}} void sendData () {int sensor1 = watt; int senzor2 = energija; tokovi podataka [0].setFloat (senzor1); // tokovi podataka o vrijednosti snage [1].setFloat (sensor2); // energetska vrijednost Serial.print ("Očitavanje snage"); Serial.println (tokovi podataka [0].getFloat ()); Serial.print ("Očitavanje energije"); Serial.println (tokovi podataka [1].getFloat ()); Serial.println ("Prijenos u Xively"); int ret = xivelyclient.put (feed, API_KEY); Serial.print ("PUT povratni kod:"); Serial.println (ret); Serial.println (); } // dobivamo vrijednost protoka podataka iz xively, ispisujući vrijednost koju smo primili void getData () {Serial.println ("Čitanje podataka iz Xivelyja"); int ret = xivelyclient.get (feed, API_KEY); Serial.print ("GET povratni kod:"); Serial.println (ret); if (ret> 0) {Serial.print ("Tok podataka je:"); Serial.println (feed [0]); Serial.print ("Vrijednost snage je:"); Serial.println (feed [0].getFloat ()); Serial.print ("Tok podataka je:"); Serial.println (feed [1]); Serial.print ("Energetska vrijednost je:"); Serial.println (feed [1].getFloat ()); } Serial.println ();

Korak 10: Prijava podataka na SD karticu

Za pohranjivanje podataka na SD karticu morate uvesti SD bibliotekuZa vodič kliknite ovdje Da biste saznali više o SD knjižnici kliknite ovdjeKôd za spremanje podataka na SD karticu piše se zasebno jer nemam dovoljno memorije u svom ARDUINO UNO nakon pisanje koda za LCD zaslon i prijenos podataka xively.com. Ali pokušavam poboljšati kôd beta verzije tako da jedan kôd može sadržavati sve značajke (LCD zaslon, Xively prijenos podataka i pohranjivanje podataka na SD karticu). Kôd za bilježenje podataka nalazi se ispod. Ako netko napiše bolji kod izmjenom koda, podijelite sa mnom. Ovo je moje prvo tehničko uputstvo. Ako netko nađe bilo kakvu grešku u tome, slobodno komentirajte.. kako bih se mogao poboljšati. Ako nađete područja poboljšanja u ovom projektu, komentirajte ili mi pošaljite poruku, pa će projekt biti snažniji. Mislim da će biti od koristi i drugima, ali i meni.

Natjecanje 123D kola
Natjecanje 123D kola
Natjecanje 123D kola
Natjecanje 123D kola

Treća nagrada na natjecanju 123D Circuits

Preporučeni: