Sisällysluettelo:
- Vaihe 1: Tarvittavat osat:
- Vaihe 2: Virta ja energia
- Vaihe 3: Jännitteen mittaus
- Vaihe 4: Virran mittaus
- Vaihe 5: Ajan mittaus
- Vaihe 6: Kuinka ARDUINO laskee tehon ja energian
- Vaihe 7: Visuaalinen lähtö
- Vaihe 8: Tietojen lataaminen Xively.com -sivustoon
- Vaihe 9: Xively ja ARDUINO -koodi
- Vaihe 10: Tietojen kirjaaminen SD -kortille
Video: ARDUINO -ENERGIAMITTARI: 10 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
[Toista video]
Kuulun Odishan kylään Intiassa, jossa usein sähkökatko on hyvin yleistä. Se haittaa jokaisen elämää. Lapsuudessani opintojen jatkaminen hämärän jälkeen oli todellinen haaste. Tämän ongelman vuoksi suunnittelin kokeellisesti aurinkokunnan kotiini. Käytin 10 W, 6 V aurinkopaneelia muutaman kirkkaan LED -valon valaisemiseen. Monien vaikeuksien jälkeen projekti onnistui. Sitten päätin seurata järjestelmän jännitettä, virtaa, tehoa ja energiaa. Tästä syntyi idea suunnitella ENERGIAMITTARI. Käytin ARDUINOa tämän projektin ytimessä, koska sen IDE -koodiin on helppo kirjoittaa ja Internetissä on valtava määrä avoimen lähdekoodin kirjastoa, jota voidaan käyttää Olen kokeillut projektia hyvin pienelle (10 W) aurinkokunnalle, mutta sitä voidaan helposti muuttaa käytettäväksi korkeamman luokitusjärjestelmän kanssa.
Löydät kaikki projektini osoitteesta:
Ominaisuus: Energian valvonta 1. LCD -näytön avulla 2. Internetin kautta (Xively upload) 3. Tietojen kirjaaminen SD -kortille
Näet uuden ohjattavan ARDUINO MPPT SOLAR CHARGE CONTROLLER (versio-3.0)
Näet myös muut ohjeeni
ARDUINO SOLAR CHARGE CONTROLLER (Versio 2.0)
ARDUINO SOLAR CHARGE CONTROLLER (Versio-1)
Vaihe 1: Tarvittavat osat:
1. ARDUINO UNO (Amazon) 2. ARDUINO ETHERNET SHIELD (Amazon)
3. 16x2 CHARACTER LCD (Amazon)
4. ACS 712 CURRENT SENSOR (Amazon) 4. RESISTORS (10k, 330ohm) (Amazon) 5. 10K POTENTIOMETRI (Amazon) 6. JUMPER WIRES (Amazon) 7. ETHERNET -KAAPELI (Amazon) 8. BREAD BOARD (Amazon)
Vaihe 2: Virta ja energia
Teho: Teho on jännitteen (voltti) ja virran (A) tulo P = VxI Tehoyksikkö on Wattia tai KW Energia: Energia on tehon (W) ja ajan (Tunti) tulo Tunti (kWh) Yllä olevasta kaavasta käy ilmi, että energian mittaamiseen tarvitaan kolme parametria 1. Jännite 2. Virta 3. Aika
Vaihe 3: Jännitteen mittaus
Jännite mitataan jännitteenjakajapiirin avulla, koska analoginen ARDUINO -nastainen tulojännite on rajoitettu 5 V: iin, suunnittelin jännitteenjakajan siten, että sen lähtöjännitteen tulisi olla alle 5 V. aurinkopaneelin teho on 6v, 5,5Ah, joten minun on poistettava tämä 6,5v alas 5V jännitteeseen. Käytin R1 = 10k ja R2 = 10K. R1: n ja R2: n arvo voi olla pienempi, mutta ongelma on se, että kun vastus on pieni, suurempi virta kulkee sen läpi, minkä seurauksena suuri määrä tehoa (P = I^2R) haihtuu lämmön muodossa. Joten voidaan valita eri vastusarvo, mutta on huolehdittava siitä, että tehohäviö minimoidaan vastuksen yli. Vout = R2/(R1+R2)*Vbat Vbat = 6,5 täysin ladattuna ovat osoittaneet 9 voltin akun paljaassa piirilevyssä vain esim. johtojen liittämiseksi, mutta varsinainen akku, jota käytin, on 6 voltin, 5,5 Ah: n lyijyakku. jännitteen kalibrointi: a Vout = 3,25 V ja pienempi arvo muille alhaisemmille akkujännitteille. AEDUINO ADC muuntaa analogisen signaalin vastaavaksi digitaaliseksi likimääräiseksi. Kun akun jännite on 6,5 V, sain 3,25 V: n jännitteenjakajasta ja näyte1 = 696 sarjamonitorissa, jossa näyte 1 on ADC -arvo vastaa 3,25 V: n ymmärtämiseksi olen liittänyt reaaliaikaisen simulaation 123D. 3.25v vastaa arvoa 696 1 vastaa 3.25/696 = 4.669mv Vout = (4.669*näyte1)/1000 volttia Akun todellinen jännite = (2*Vout) volttia ja keskiarvo sitten kerätyt näytetiedot (int i = 0; i <150; i ++) {näyte1 = näyte1+analoginen lukema (A2); // lukea jännite jakajapiirin viiveestä (2); } näyte1 = näyte1/150; jännite = 4,669*2*näyte1/1000;
Vaihe 4: Virran mittaus
Virranmittauksessa käytin Hall Effect -virtavirtasensoria ACS 712 (20 A). Markkinoilla on erilaisia ACS712 -anturia, joten valitse tarpeidesi mukaan. Leipälevykaaviossa olen osoittanut LEDin kuormana, mutta todellinen kuormitus on erilainen. magneettikenttä kohtisuorassa virtaan nähden. Saat lisätietoja Hall Effect -anturista napsauttamalla tätä. ACS 712 -anturin tietolomake löytyy täältä Tietolomakkeesta 1. ACS 712 mittaa positiivisia ja negatiivisia 20 ampeereja, jotka vastaavat analogista lähtöä 100 mV/A 2. Lähtöjännitteestä ei tule testivirtaa VCC/2 = 5v/2 = 2,5V Kalibrointi: Analoginen lukema tuottaa arvon 0-1023, joka vastaa arvoa 0v-5v. 1000 V Mutta tietolomakkeiden mukaan siirtymä on 2,5 V (kun virran nolla saa 2,5 V anturin lähdöstä) Todellinen arvo = (arvo-2,5) V Virta ampeereissa = todellinen arvo*10ARDUINO CODE: // 150 näytteen ottaminen anturit, joiden aikaväli on 2 sekuntia, ja keskiarvoa sitten kerätyt näytetiedot (int i = 0; i <150; i ++) {sample2+= analogRead (A3); // lukea virta anturin viiveestä (2); } näyte2 = näyte2/150; val = (5,0*näyte2)/1024,0; todellinen arvo = val-2,5; // offset -jännite on 2,5 V ampeeria = todellinen arvo*10;
Vaihe 5: Ajan mittaus
Ajan mittaamiseen ei tarvita ulkoisia laitteita, koska ARDUINO itse sisältää ajastimen. Funktio millis () palauttaa millisekuntien lukumäärän sen jälkeen, kun Arduino -kortti aloitti käynnissä olevan ohjelman. // laske aika millisekunteina pitkä aika = milisec/1000; // muuntaa millisekunteja sekunteiksi
Vaihe 6: Kuinka ARDUINO laskee tehon ja energian
totamps = totamps+vahvistimet; // laskea vahvistimien kokonaismäärä avgamps = totamps/time; // keskimääräinen vahvistin amphr = (avgamps*aika)/3600; // ampeerituntia watt = jännite*ampeeria; // teho = jännite*nykyinen energia = (wattiaika)/3600; Watt-sec muunnetaan jälleen Watt-Hr: ksi jakamalla 1 h (3600 s) // energia = (wattiaika)/(1000*3600); lukemiseen kWh
Vaihe 7: Visuaalinen lähtö
Kaikki tulokset voidaan visualisoida sarjamonitorissa tai käyttämällä nestekidenäyttöä. Käytin 16x2 merkin nestekidenäytössä kaikkien edellisissä vaiheissa saatujen tulosten näyttämistä. Katso kaaviot yllä olevasta leipälevyn piiristä. Kytke nestekidenäyttö ARDUINOon alla olevan mukaisesti: LCD -> Arduino 1. VSS -> Arduino GND 2. VDD - > Arduino + 5v 3. VO -> Arduino GND -tappi + vastus tai potentiometri 4. RS -> Arduino -nasta 8 5. RW -> Arduino -nasta 7 6. E -> Arduino -nasta 6 7. D0 -> Arduino -Ei kytketty 8 D1 -> Arduino -Ei kytketty 9. D2 -> Arduino -Ei kytketty 10. D3 -> Arduino -Ei kytketty 11. D4 -> Arduino -nasta 5 12. D5 -> Arduino -nasta 4 13. D6 -> Arduino -nasta 3 14. D7 -> Arduino -nasta 2 15. A -> Arduino -nasta 13 + vastus (taustavalon teho) 16. K -> Arduino GND (taustavalon maa) ARDUINO -KOODI: Sarjamonitorille:
Serial.print ("JÄNNITE:"); Sarjajälki (jännite); Serial.println ("Volt"); Serial.print ("CURRENT:"); Sarjajälki (vahvistimet); Serial.println ("Vahvistimet"); Serial.print ("POWER:"); Sarjajälki (wattia); Serial.println ("Watt"); Serial.print ("ENERGIA KULUTETTU:"); Sarjajälki (energia); Serial.println ("Watt-tunti"); Serial.println (""); // tulosta seuraavat parametrisarjat tyhjän riviviiveen jälkeen (2000); LCD: LCD -näyttö: sinun on ensin tuotava koodiin "LiquidCrystal" -kirjasto. Saat lisätietoja LequidCrystal -kirjastosta napsauttamalla tätä. LCD -opetusohjelma napsauttamalla tätä Seuraava koodi on muoto, joka näyttää LCD -näytössä kaikki tehon ja energian laskelmat #include lcd (8, 7, 6, 5, 4, 3, 2); int backLight = 9; void setup () {pinMode (taustavalo, OUTPUT); // aseta nasta 9 lähdöksi analogWrite (taustavalo, 150); // ohjaa taustavalon voimakkuutta 0-254 lcd. alku (16, 2); // sarakkeet, rivit. näytön koko lcd.clear (); // tyhjennä näyttö} void loop () {lcd.setCursor (16, 1); // aseta kohdistin näytön lukumäärän ulkopuolelle lcd.print (""); // tulosta tyhjän merkin viive (600); ////////////////////////////////////////////////////////////////////////// Tulostusteho ja energia nestekidenäytölle/ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// (1, 0); // aseta kohdistin kohtaan 1. col ja 1. rivi lcd.print (watt); lcd.print ("W"); lcd.print (jännite); lcd.print ("V"); lcd.setCursor (1, 1); // aseta kohdistin kohtaan 1. kol. ja 2. rivi lcd.print (energia); lcd.print ("WH"); lcd.print (vahvistimet); lcd.print ("A"); }
Vaihe 8: Tietojen lataaminen Xively.com -sivustoon
Katso yllä olevat kuvakaappaukset saadaksesi paremman käsityksen. Jos haluat ladata tietoja osoitteeseen xively.com, seuraava kirjasto ladataan ensin HttpClient: napsauta tätä Xively: napsauta tätä SPI: Tuo arduino IDE: stä (luonnos -> Tuo kirjasto…..) Ethernet: Tuo arduinosta IDE ((luonnos -> Tuo kirjasto…..) Avaa tili osoitteessa https://xively.com (aiemmin pachube.com ja cosm.com) Hanki ilmainen kehittäjätili osoitteessa
Valitse käyttäjätunnus, salasana, aseta osoite ja aikavyöhyke jne. Saat vahvistussähköpostin;
napsauta sitten aktivointilinkkiä aktivoidaksesi tilisi. Kun olet onnistuneesti avannut tilin, sinut ohjataan Kehityslaitteet -sivulle
- Napsauta +Lisää laite -ruutua
- Anna laitteelle nimi ja kuvaus (esim. GENERGY MONITORING) ·
- Valitse yksityiset tai julkiset tiedot (minä valitsen yksityiset) ·
- Napsauta Lisää laite
Laitteen lisäämisen jälkeen sinut ohjataan uudelle sivulle, jossa on monia tärkeitä tietoja
- Tuotetunnus, tuotesalaisuus, sarjanumero, aktivointikoodi ·
- Syötetunnus, FeedURL, API -päätepiste (syötteen tunnusta käytetään ARDUINO -koodissa)
- Lisää kanavia (IChoose ENERGY ja POWER, mutta voit valita valintasi mukaan) Anna parametrin yksikkö ja symboli ·
- Lisää sijainti ·
- API -avaimet (käytetään ARDUINO -koodissa, vältä tämän numeron jakamista) ·
- Laukaisimet (ping aweb -sivu tapahtuman sattuessa, kuten kun energiankulutus ylittää tietyn rajan)
Vaihe 9: Xively ja ARDUINO -koodi
Liitin tähän täydellisen koodin (beta -versio) energiamittarille lukuun ottamatta SD -kortin tietojen kirjaamista, joka on liitetty erikseen seuraavassa vaiheessa. / ** Energianseurannan tietojen lataaminen xively -palveluun **/ #include #include #include #include #define API_KEY "xxxxxxxx" // Anna Xively -sovellusliittymäavaimesi #define FEED_ID xxxxxxxxx // Anna Xively -syötetunnuksesi // MAC -osoitteesi Ethernet -suojatavu tavu mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Analoginen nasta, jota seuraamme (Ethernet -suoja käyttää 0 ja 1) int sensorPin = 2; unsigned long lastConnectionTime = 0; // kun viimeksi yhdistimme Cosm const unsigned long connectionInterval = 15000; // viive Cosm -yhteyden muodostamisen välillä millisekunteina // Alusta Cosm -kirjasto // Määritä tietovirran tunnuksen merkkijono char sensorId = "POWER"; char sensorId2 = "ENERGIA"; XivelyDatastream datastreams = {XivelyDatastream (sensorId, strlen (sensorId), DATASTREAM_FLOAT), XivelyDatastream (sensorId2, strlen (sensorId2), DATASTREAM_FLOAT), DATASTREAM_FLOAT)}; // Kääri datavirta syötteeksi XivelyFeed -syöte (FEED_ID, datavirrat, 2/ * datavirtojen määrä */); EthernetClient -asiakas; XivelyClient xivelyclient (asiakas); void setup () {Serial.begin (9600); Serial.println ("Alustava verkko"); while (Ethernet.begin (mac)! = 1) {Serial.println ("Virhe haettaessa IP -osoitetta DHCP: n kautta, yritetään uudelleen …"); viive (15000); } Serial.println ("Verkko alustettu"); Sarja.println (); } void loop () {if (millis () - lastConnectionTime> connectionInterval) {sendData (); // lähetä tiedot xively getData (); // lukea datavirta takaisin xively lastConnectionTime = millis (); // päivitä yhteysaika, joten odotamme ennen yhdistämistä uudelleen}} void sendData () {int sensor1 = watt; int anturi2 = energia; datastreams [0].setFloat (anturi1); // tehoarvon datastreams [1].setFloat (sensor2); // energia -arvo Serial.print ("Lukuteho"); Serial.println (datastreams [0].getFloat ()); Serial.print ("Lue energia"); Serial.println (datastreams [1].getFloat ()); Serial.println ("Lataaminen Xivelyyn"); int ret = xivelyclient.put (syöte, API_KEY); Serial.print ("PUT -palautuskoodi:"); Serial.println (ret); Sarja.println (); } // hae datavirran arvon xivelystä ja tulostaa saamamme arvon void getData () {Serial.println ("Tietojen lukeminen Xivelystä"); int ret = xivelyclient.get (syöte, API_KEY); Serial.print ("GET return code:"); Serial.println (ret); if (ret> 0) {Serial.print ("Datastream on:"); Serial.println (syöte [0]); Serial.print ("Tehoarvo on:"); Serial.println (syöte [0].getFloat ()); Serial.print ("Datastream on:"); Serial.println (syöte [1]); Serial.print ("Energia -arvo on:"); Serial.println (syöte [1].getFloat ()); } Sarja.println ();
Vaihe 10: Tietojen kirjaaminen SD -kortille
Jos haluat tallentaa tietoja SD -kortille, sinun on tuotava SD -kirjasto Opetusohjelma napsauttamalla tätä Saat lisätietoja SD -kirjastosta napsauttamalla tätä Koodit tietojen tallentamiseksi SD -kortille kirjoitetaan erikseen, koska minulla ei ole tarpeeksi muistia ARDUINO UNO -laitteessani. kirjoittaa koodia nestekidenäyttöön ja tietojen lataamiseen xively.com. Mutta yritän parantaa betaversiokoodia niin, että yksi koodi voi sisältää kaikki ominaisuudet (LCD -näyttö, Xively -tietojen lataaminen ja tietojen tallentaminen SD -kortille). parempi koodi muokkaamalla koodiani, jaa tämä kanssani. Tämä on ensimmäinen tekninen ohjeeni, jos joku löytää siinä virheen, voit kommentoida.. jotta voin parantaa itseäni. Jos löydät parannettavaa tässä projektissa, kommentoi tai lähetä minulle viesti, joten projekti on tehokkaampi, ja mielestäni siitä on apua muille ja minulle.
Kolmas palkinto 123D -piirikilpailussa
Suositeltava:
Arduino Nano - Arduino Uno -sovitin: 6 vaihetta (kuvilla)
Arduino Nano - Arduino Uno -sovitin: Arduino Nano on mukava, pieni ja halpa Arduino -perheen jäsen. Se perustuu Atmega328 -siruun, mikä tekee siitä yhtä voimakkaan kuin hänen veljensä Arduino Uno, mutta sen voi saada pienemmällä rahalla. Ebayssa kiinalaiset versiot voivat nyt
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
Pitkä kantama, 1,8 km, Arduino-Arduino Langaton tiedonsiirto HC-12: n kanssa: 6 vaihetta (kuvilla)
Pitkä kantama, 1,8 km, Arduino-Arduino Langaton tiedonsiirto HC-12: n avulla: Tässä ohjeessa opit kommunikoimaan Arduinojen välillä pitkän matkan, jopa 1,8 km: n päässä ulkona. HC-12 on langaton sarjaportti viestintämoduuli, joka on erittäin hyödyllinen, erittäin tehokas ja helppokäyttöinen. Ensin otat
Halvin Arduino -- Pienin Arduino -- Arduino Pro Mini -- Ohjelmointi -- Arduino Neno: 6 vaihetta (kuvilla)
Halvin Arduino || Pienin Arduino || Arduino Pro Mini || Ohjelmointi || Arduino Neno: …………………………. Tilaa YouTube -kanavani saadaksesi lisää videoita ……. Tässä projektissa keskitytään kaikkien aikojen pienimpään ja halvinan arduinoon. Pienin ja halvin arduino on arduino pro mini. Se muistuttaa arduinoa
LED -matriisijoukon ohjaaminen Arduino Unolla (Arduino -käyttöinen robotti): 4 vaihetta (kuvilla)
LED -matriisiohjaimen ohjaaminen Arduino Unolla (Arduino -käyttöinen robottikasvo): Tämä ohje näyttää kuinka hallita 8x8 LED -matriisiryhmää Arduino Unolla. Tätä opasta voidaan käyttää luomaan yksinkertainen (ja suhteellisen halpa näyttö) omille projekteillesi. Tällä tavalla saatat näyttää kirjaimia, numeroita tai mukautettuja animaatioita