Orodha ya maudhui:

METER YA NISHATI YA ARDUINO: Hatua 10 (na Picha)
METER YA NISHATI YA ARDUINO: Hatua 10 (na Picha)

Video: METER YA NISHATI YA ARDUINO: Hatua 10 (na Picha)

Video: METER YA NISHATI YA ARDUINO: Hatua 10 (na Picha)
Video: Как измерить любое напряжение постоянного тока с Arduino ARDVC-01 2024, Julai
Anonim
Image
Image
MITA YA NISHATI YA ARDUINO
MITA YA NISHATI YA ARDUINO
MITA YA NISHATI YA ARDUINO
MITA YA NISHATI YA ARDUINO

[Cheza Video]

Mimi ni wa kijiji cha Odisha, India ambapo kukatwa umeme mara kwa mara ni kawaida sana. Inazuia maisha ya kila mtu. Wakati wa siku zangu za utoto kuendelea na masomo baada ya jioni ilikuwa changamoto ya kweli. Kwa sababu ya shida hii nilibuni mfumo wa jua kwa nyumba yangu kwa msingi wa majaribio. Nilitumia paneli ya jua ya 10 Watt, 6V kwa kuwasha taa chache za mwangaza. Baada ya kukabiliwa na shida nyingi mradi huo ulifanikiwa. Kisha nikaamua kufuatilia voltage, sasa, nguvu na nishati inayohusika katika mfumo. Hii ilileta wazo la kubuni METER YA NISHATI. Nilitumia ARDUINO kama kiini cha mradi huu kwa sababu ni rahisi sana kuandika nambari katika IDE yake na kuna idadi kubwa ya maktaba ya chanzo wazi kwenye wavuti ambayo inaweza kutumika kulingana na Nimejaribu mradi kwa mfumo mdogo sana wa jua uliokadiriwa (10Watt) lakini hii inaweza kubadilishwa kwa urahisi kuitumia kwa mfumo wa kiwango cha juu.

Unaweza kupata miradi yangu yote kwenye:

Kipengele: Ufuatiliaji wa Nishati na onyesho la 1. LCD 2. kupitia mtandao (upakiaji wa Xively) 3. Uwekaji wa data kwenye kadi ya SD

Unaweza kuona mdhibiti wangu mpya wa ARDUINO MPPT SOLAR CHARGE CONTROLLER (Toleo-3.0)

Unaweza pia kuona mafundisho yangu mengine yakiwashwa

Mdhibiti wa malipo ya jua ya ARDUINO (Toleo la 2.0)

Mdhibiti wa malipo ya jua ya ARDUINO (Toleo-1)

Hatua ya 1: Sehemu Zinazohitajika:

Sehemu Zinazohitajika
Sehemu Zinazohitajika

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

3. 16x2 LCD ya TABIA (Amazon)

4. ACS 712 SENSOR YA SASA (Amazon) 4. WAPINZANI (10k, 330ohm) (Amazon) 5. 10K POTENTIOMETER (Amazon) 6. WIRESI ZA JUMPER (Amazon) 7. KABLE YA ETHERNET (Amazon) 8. BODI YA MIKATE (Amazon)

Hatua ya 2: Nguvu na Nishati

Nguvu: Nguvu ni bidhaa ya voltage (volt) na ya sasa (Amp) P = VxI Kitengo cha nguvu ni Watt au KWEnergy: Nishati ni bidhaa ya nguvu (watt) na wakati (Saa) E = Pxt Kitengo cha Nishati ni Saa ya Watt au Kilowatt Saa (kWh) Kutoka kwa fomula iliyo hapo juu ni wazi kuwa kupima Nishati tunahitaji vigezo vitatu 1. Voltage 2. Sasa 3. Wakati

Hatua ya 3: Upimaji wa Voltage

Upimaji wa Voltage
Upimaji wa Voltage
Upimaji wa Voltage
Upimaji wa Voltage
Upimaji wa Voltage
Upimaji wa Voltage

Voltage hupimwa kwa msaada wa mzunguko wa mgawanyiko wa voltage. Kama voltage ya pembejeo ya pini ya ARDUINO imezuiliwa kwa 5V nilitengeneza mgawanyiko wa voltage kwa njia ambayo voltage ya pato kutoka kwake inapaswa kuwa chini ya 5V. Betri yangu iliyotumiwa kuhifadhi nguvu kutoka kwa jopo la jua imepimwa 6v, 5.5Ah. Kwa hivyo lazima niondoke hii 6.5v kwa voltage ya chini kuliko 5V. Nilitumia R1 = 10k na R2 = 10K. Thamani ya R1 na R2 inaweza kuwa ya chini lakini shida ni kwamba wakati upinzani uko chini zaidi juu ya sasa inapita kwa njia hiyo kama matokeo idadi kubwa ya nguvu (P = I ^ 2R) hupotea kwa njia ya joto. Kwa hivyo thamani tofauti ya upinzani inaweza kuchaguliwa lakini utunzaji unapaswa kuchukuliwa ili kupunguza upotezaji wa nguvu kwenye upinzani. Vout = R2 / (R1 + R2) * Vbat Vbat = 6.5 wakati inashtakiwa kikamilifu R1 = 10k na R2 = 10k Vout = 10 / (10 + 10) * 6.5 = 3.25v ambayo iko chini kuliko 5v na inafaa kwa pini ya analog ya ARDUINO ZINGATIA I nimeonyesha betri 9 ya Volt katika mzunguko wa bodi iliyochomwa ni mfano tu kuunganisha waya. Lakini betri halisi niliyotumia ni 6 Volt, 5.5Ah betri inayoongoza asidi. Upimaji wa Voltage: Wakati betri imejaa (6.5v) tutapata Vout = 3.25v na thamani ya chini kwa voltage nyingine ya chini ya betri. AEDUINO ADC inabadilisha ishara ya Analog kuwa hesabu inayolingana ya dijiti. Wakati voltage ya betri ni 6.5v nilipata 3.25v kutoka kwa msuluhishi wa voltage na sampuli1 = 696 katika ufuatiliaji wa serial, ambapo sampuli1 ni dhamana ya ADC inalingana na 3.25v Kwa uelewa bora nimeambatanisha uigaji wa wakati halisi na 123 D. mzunguko wa Upimaji wa kipimo cha voltage: 3.25v sawa na 696 1 ni sawa na 3.25 / 696 = 4.669mv Piga = (4.669 * sampuli1) / 1000 volt Halisi voltage ya betri = (2 * Vout) voltARDUINO CODE: // kuchukua sampuli 150 kutoka kwa msuluhishi wa voltage na muda wa 2sec na kisha wastani data za sampuli zilizokusanywa kwa (int i = 0; i <150; i ++) {sample1 = sample1 + analogRead (A2); // soma voltage kutoka kwa ucheleweshaji wa mzunguko wa mgawanyiko (2); } sampuli1 = sampuli1 / 150; voltage = 4.669 * 2 * sampuli1 / 1000;

Hatua ya 4: Upimaji wa Sasa

Kipimo cha sasa
Kipimo cha sasa
Kipimo cha sasa
Kipimo cha sasa

Kwa kipimo cha sasa nilitumia sensorer ya Athari ya sasa ya Athari ya Hall ACS 712 (20 A) Kuna tofauti sensor ya sasa ya ACS712 inayopatikana sokoni, kwa hivyo chagua kulingana na mahitaji yako. Katika mchoro wa bodi ya mkate nimeonyesha LED kama mzigo lakini mzigo halisi ni tofauti. KANUNI YA KUFANYA KAZI: Athari ya Jumba ni utengenezaji wa tofauti ya voltage (voltage ya Jumba) kupitia kondakta wa umeme, kupita kwa mkondo wa umeme kwa kondakta na uwanja wa sumaku unaofanana kwa sasa. Ili kujua zaidi juu ya sensorer ya Athari ya Hall bonyeza hapa Karatasi ya data ya sensa ya ACS 712 inapatikana hapa Kutoka Karatasi ya Takwimu 1. ACS 712 kipimo chanya na hasi 20Amps, inayolingana na pato la analog 100mV / A 2. Hakuna mtihani wa sasa kupitia voltage ya pato ni VCC / 2 = 5v / 2 = 2.5Kuhesabu: Analog kusoma hutoa thamani ya 0-1023, sawa na 0v hadi 5v Kwa hivyo Analog soma 1 = (5/1024) V = 4.89mv Thamani = (4.89 * Analog Soma thamani) / 1000 V Lakini kulingana na laha ya data ni 2.5V (Wakati sifuri ya sasa utapata 2.5V kutoka kwa pato la sensa) Thamani halisi = (thamani-2.5) V Sasa katika amp = thamani halisi * 10ARDUINO CODE: // kuchukua sampuli 150 kutoka sensorer zilizo na muda wa 2sec na kisha wastani data za sampuli zilizokusanywa kwa (int i = 0; i <150; i ++) {sample2 + = analogRead (A3); // soma sasa kutoka kucheleweshwa kwa sensa (2); } sampuli2 = sampuli2 / 150; val = (5.0 * sampuli2) /1024.0; halisi = val-2.5; // voltage ya kukomesha ni 2.5v amps = actualval * 10;

Hatua ya 5: Upimaji wa Wakati

Kwa kipimo cha wakati hakuna haja ya vifaa vyovyote vya nje, kwani ARDUINO yenyewe ina kipima muda. Kazi ya millis () inarudisha hakuna milliseconds tangu bodi ya Arduino ilipoanza kuendesha programu ya sasa. // mahesabu ya muda katika milliseconds muda mrefu = milisec / 1000; // kubadilisha milliseconds kuwa sekunde

Hatua ya 6: Jinsi ARDUINO Inavyohesabu Nguvu na Nishati

totamps = totamps + amps; // mahesabu ya jumla ya amps avgamps = totamps / wakati; // amps wastani amphr = (avgamps * wakati) / 3600; // amp-hour watt = voltage * amps; // nguvu = voltage * nishati ya sasa = (watt * time) / 3600; Watt-sec inabadilishwa tena kuwa Watt-Hr kwa kugawanya 1hr (3600sec) // energy = (watt * time) / (1000 * 3600); kwa kusoma katika kWh

Hatua ya 7: Pato la Visual

Pato la Visual
Pato la Visual

Matokeo yote yanaweza kuonyeshwa kwenye mfuatiliaji wa serial au kwa kutumia LCD. Nilitumia LCD yenye herufi 16x2 kuonyesha matokeo yote yaliyopatikana katika hatua zilizopita. Kwa skimu tazama mzunguko wa bodi ya mkate iliyoonyeshwa hapo juu. Unganisha LCD na ARDUINO kama inavyopeanwa: LCD -> Arduino 1. VSS -> Arduino GND 2. VDD - > Arduino + 5v 3. VO -> Arduino GND pin + Resistor au Potentiometer 4. RS -> Arduino pin 8 5. RW -> Arduino pin 7 6. E -> Arduino pin 6 7. D0 -> Arduino - Haijaunganishwa 8. D1 -> Arduino - Haijaunganishwa 9. D2 -> Arduino - Haijaunganishwa 10. D3 -> Arduino - Haijaunganishwa 11. D4 -> Arduino pin 5 12. D5 -> Arduino pin 4 13. D6 -> Arduino pin 3 14. D7 -> Arduino pini 2 15. A -> Arduino Pin 13 + Resistor (Powerlight light) 16. K -> Arduino GND (Backlight ground) ARDUINO CODE: Kwa Serial Monitor:

Serial.print ("VOLTAGE:"); Printa ya serial (voltage); Serial.println ("Volt"); Serial.print ("SASA:"); Printa ya serial (amps); Serial.println ("Amps"); Serial.print ("NGUVU:"); Printa ya serial (watt); Serial.println ("Watt"); Serial.print ("NISHATI IMETUMIWA:"); Rangi ya serial (nishati); Serial.println ("Watt-Saa"); Serial.println (""); // chapisha seti zifuatazo za parameta baada ya kuchelewa kwa laini tupu (2000); Kwa LCD: Kwa onyesho la LCD lazima uingize kwanza maktaba ya "LiquidCrystal" katika kificho. Kujua zaidi juu ya maktaba ya LequidCrystal bonyeza hapa Kwa mafunzo ya LCD hapa Nambari ifuatayo ni fomati ya kuonyesha kwenye LCD hesabu zote za nguvu na nishati # pamoja na LCD (8, 7, 6, 5, 4, 3, 2); int backLight = 9; kuanzisha batili () {pinMode (backLight, OUTPUT); // kuweka pini 9 kama analog pato Andika (backLight, 150); // hudhibiti mwangaza wa mwangaza 0-254 lcd. kuanza (16, 2); // nguzo, safu. saizi ya skrini ya kuonyesha. wazi (); // futa skrini} kitanzi batili () {lcd.setCursor (16, 1); // weka mshale nje ya hesabu lcd.print (""); // kuchapisha ucheleweshaji wa tabia tupu (600); //////////////////////////////////////////// kuchapisha nguvu na nishati kwa LCD / ///////////////////////////////////////////////////// lcd.setCursor (1, 0); // weka mshale kwenye koloni ya 1 na safu ya 1 lcd.print (watt); lcd.print ("W"); lcd.print (voltage); lcd.print ("V"); lcd.setCursor (1, 1); // weka mshale kwenye koloni ya 1 na safu ya 2 lcd.print (nishati); lcd.print ("WH"); lcd.print (amps); lcd.print ("A"); }

Hatua ya 8: Kupakia data kwa Xively.com

Kupakia Takwimu kwa Xively.com
Kupakia Takwimu kwa Xively.com
Kupakia Takwimu kwa Xively.com
Kupakia Takwimu kwa Xively.com
Kupakia Takwimu kwa Xively.com
Kupakia Takwimu kwa Xively.com

Rejelea viwambo vya skrini hapo juu kuwa bora chini ya msimamo. Kwa kupakia data kwa xively.com maktaba ifuatayo kupakuliwa kwanza HttpClient: bonyeza hapa Kwa urahisi: bonyeza hapa SPI: Ingiza kutoka IDU ya arduino (mchoro -> Ingiza maktaba…..) Ethernet: Ingiza kutoka arduino IDE ((mchoro -> Ingiza maktaba…..) Fungua akaunti na https://xively.com (zamani pachube.com na cosm.com) Jisajili kwa akaunti ya msanidi programu wa bure kwa

Chagua jina la mtumiaji, nywila, weka anwani yako na eneo la saa nk Utapokea barua pepe ya uthibitisho;

kisha bonyeza kiungo cha uanzishaji ili kuamsha akaunti yako. Baada ya kufungua akaunti kwa mafanikio utapelekwa kwenye ukurasa wa vifaa vya Maendeleo

  • Bonyeza kwenye + Ongeza sanduku la Kifaa
  • Toa jina kwa kifaa chako na ufafanuzi (mf. Ufuatiliaji wa Nishati) ·
  • Chagua data ya kibinafsi au ya umma (nichagua faragha) ·
  • Bonyeza kwenye Ongeza Kifaa

Baada ya kuongeza kifaa umeelekezwa kwenye ukurasa mpya ambapo habari nyingi muhimu zipo

  • Kitambulisho cha Bidhaa, Siri ya Bidhaa, Nambari ya serial, Msimbo wa Uamilishaji ·
  • Kitambulisho cha Kulisha, FeedURL, Kituo cha Mwisho cha API (Kitambulisho cha Kulisha kinatumika katika nambari ya ARDUINO)
  • Ongeza Vituo (Chagua NISHATI na NGUVU, lakini unaweza kuchagua kulingana na chaguo lako) Toa kitengo na alama kwa parameter ·
  • Ongeza eneo lako ·
  • Funguo za API (usedin ARDUINO code, epuka kushiriki nambari hii) ·
  • Vichochezi (ping ukurasa wa wavuti wakati tukio linatokea, kama wakati matumizi ya nishati huzidi kiwango fulani)

Hatua ya 9: Nambari ya Xively na ARDUINO

Hapa niliambatanisha nambari kamili (toleo la beta) kwa mita ya nishati ukiondoa ukataji wa data ya kadi ya SD ambayo imeambatanishwa kando katika hatua inayofuata. / ** Pakia data ya ufuatiliaji wa nishati kwa xively ** / # pamoja na #jumuisha # pamoja na #jumuisha #fafanua API_KEY "xxxxxxxx" // Ingiza kitufe chako cha Xively API #fafanua FEED_ID xxxxxxx // Ingiza kitambulisho chako cha Xively kulisha // Anwani ya MAC ya anwani yako Byte ya Ethernet mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Pini ya Analog ambayo tunafuatilia (0 na 1 hutumiwa na ngao ya Ethernet) int sensorPin = 2; unsigned long lastConnectionTime = 0; // mara ya mwisho tuliunganisha kwa Cosm const unsigned connection ndefuInterval = 15000; // kuchelewa kati ya kuunganisha kwa Cosm kwa milliseconds // Anzisha maktaba ya Cosm // Fafanua kamba kwa kitambulisho chetu cha kitambulisho cha datastream ID = "POWER"; char sensorId2 = "NISHATI"; Picha za XivelyDatastream = {XivelyDatastream (sensorId, strlen (sensorId), DATASTREAM_FLOAT), XivelyDatastream (sensorId2, strlen (sensorId2), DATASTREAM_FLOAT), DATASTREAM_FLOAT),}; // Funga datastream kwenye malisho ya XivelyFeed feed (FEED_ID, datastreams, 2 / * idadi ya datastreams * /); Mteja wa EthernetMteja; XivelyClient mteja (mteja); kuanzisha batili () {Serial.begin (9600); Serial.println ("Kuanzisha mtandao"); wakati (Ethernet.begin (mac)! = 1) {Serial.println ("Kosa kupata anwani ya IP kupitia DHCP, kujaribu tena…"); kuchelewa (15000); } Serial.println ("Mtandao umeanzishwa"); Serial.println (); } kitanzi batili () {if (millis () - lastConnectionTime> connectionInterval) {sendData (); // tuma data kwa xively getData (); // soma kurudi nyuma kutoka kwa xively lastConnectionTime = millis (); // sasisha wakati wa unganisho kwa hivyo tunasubiri kabla ya kuunganisha tena}} batili sendData () {int sensor1 = watt; int sensor2 = nishati; ndoto za mchana [0].setFloat (sensor1); // data ya thamani ya nguvu ya nguvu [1].setFloat (sensor2); // thamani ya nishati Serial.print ("Soma nguvu"); Serial.println (dondoo za ndoto [0].getFloat ()); Serial.print ("Soma nishati"); Serial.println (dondoo za ndoto [1].getFloat ()); Serial.println ("Inapakia kwa Xively"); int ret = xivelyclient.put (malisho, API_KEY); Serial.print ("PUT msimbo wa kurudi:"); Serial.println (ret); Serial.println (); } // kupata thamani ya mkondo wa data kutoka kwa xively, kuchapisha thamani tuliyopokea batili GetData () {Serial.println ("Kusoma data kutoka Xively"); int ret = xivelyclient.get (malisho, API_KEY); Serial.print ("Pata msimbo wa kurudi:"); Serial.println (ret); ikiwa (ret> 0) {Serial.print ("Datastream ni:"); Serial.println (malisho [0]); Serial.print ("Thamani ya nguvu ni:"); Serial.println (kulisha [0].getFloat ()); Serial.print ("Datastream ni:"); Serial.println (kulisha [1]); Serial.print ("Thamani ya Nishati ni:"); Serial.println (kulisha [1].getFloat ()); } Serial.println ();

Hatua ya 10: Kuingia kwa Takwimu kwenye Kadi ya SD

Kwa kuhifadhi data kwenye kadi ya SD lazima uingize maktaba ya SD Kwa mafunzo bonyeza hapa Kujua zaidi juu ya maktaba ya SD bonyeza hapa Nambari ya kuhifadhi data kwenye kadi ya SD imeandikwa kando kwani sina kumbukumbu ya kutosha katika ARDUINO UNO baada ya nambari ya kuandika ya kuonyesha LCD na kupakia data xively.com. Lakini najaribu kuboresha nambari ya toleo la beta ili nambari moja iweze kuwa na huduma zote (onyesho la LCD, upakiaji wa data ya Xively na kuhifadhi data kwenye kadi ya SD) Nambari ya utaftaji wa data imeambatanishwa. Ikiwa mtu yeyote ataandika nambari bora kwa kubadilisha nambari yangu tafadhali shiriki nami. Hii ndio mafundisho yangu ya kwanza ya kiufundi, Ikiwa mtu yeyote atapata kosa ndani yake, jisikie huru kutoa maoni.. ili niweze kujiboresha. Ukipata maeneo ya maboresho katika mradi huu tafadhali maoni au unitumie ujumbe, Kwa hivyo mradi utakuwa na nguvu zaidi. Nadhani itakuwa muhimu kwa wengine na pia kwangu.

Mashindano ya mizunguko ya 123D
Mashindano ya mizunguko ya 123D
Mashindano ya mizunguko ya 123D
Mashindano ya mizunguko ya 123D

Tuzo ya Tatu katika Mashindano ya Mizunguko ya 123D

Ilipendekeza: