Sadržaj:
- Korak 1: Potrebni dijelovi:
- Korak 2: Snaga i energija
- Korak 3: Mjerenje napona
- Korak 4: Mjerenje struje
- Korak 5: Mjerenje vremena
- Korak 6: Kako ARDUINO izračunava snagu i energiju
- Korak 7: Vizualni izlaz
- Korak 8: Prijenos podataka na Xively.com
- Korak 9: Xively i ARDUINO kod
- Korak 10: Prijava podataka na SD karticu
Video: ARDUINO ENERGETSKI MJERAČ: 10 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
[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:
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
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
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
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
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.
Treća nagrada na natjecanju 123D Circuits
Preporučeni:
DIY Arduino višenamjenski mjerač energije V1.0: 13 koraka (sa slikama)
DIY Arduino višenamjenski mjerač energije V1.0: U ovom uputstvu pokazat ću vam kako napraviti višenamjenski mjerač energije baziran na Arduinu. Ovaj mali mjerač je vrlo koristan uređaj koji prikazuje važne informacije o električnim parametrima. Uređaj može mjeriti 6 korisnih električnih parametara
Mjerač zvuka - Arduino: 10 koraka (sa slikama)
Mjerač zvuka - Arduino: U ovom Instructableu pokazat ću kako izraditi mjerač zvuka pomoću Arduina i još nekih komponenti. Ovo je školski projekt koji sam nedavno napravio, a za koji sam trebao završiti godinu dana, a temelji se na izgradnji Mjerač zvuka koji registrira razinu zvuka
Energetski saveznik: 5 koraka
Energetski saveznik: Naš projekt omogućuje vlasnicima kuća da mogu testirati učinkovitost svojih HVAC sustava u cijelom domu, što im zatim omogućuje donošenje energetski učinkovitijih odluka. Dizajnirali i producirali: Christopher Cannon, Brent Nanney, Kayla Sims &
Energetski učinkovita ulična svjetla aktivirana pokretom: 8 koraka
Energetski učinkovita ulična svjetla aktivirana kretanjem: Naš cilj s ovim projektom bio je stvoriti nešto što će zajednicama uštedjeti energiju i financijske resurse. Ulična svjetla koja se aktiviraju pokretom učinila bi obje ove stvari. Širom zemlje energija se troši na ulična svjetla koja osvjetljavaju ulice
Energetski lanac: 4 koraka
EnergyChain: / * Radovi su još u tijeku * /Energy Chain je POC koji kombinira IOT i Blockchain. Ono što smo napravili omogućuje ljudima da prodaju energiju koju proizvode bilo kome bez ikakvog nivoa. Kako bi se osigurala sigurnost između proizvođača i potrošača, potrošač može