Mündəricat:

ARDUINO ENERJİ METERİ: 10 addım (şəkillərlə)
ARDUINO ENERJİ METERİ: 10 addım (şəkillərlə)

Video: ARDUINO ENERJİ METERİ: 10 addım (şəkillərlə)

Video: ARDUINO ENERJİ METERİ: 10 addım (şəkillərlə)
Video: AVO Metr I Analoq Metr və Rəqəmsal Metr I Multimetr I Hobbi Elektron #6 2024, Iyul
Anonim
Image
Image
ARDUINO ENERJİ METERİ
ARDUINO ENERJİ METERİ
ARDUINO ENERJİ METERİ
ARDUINO ENERJİ METERİ

[Videonu Oxu]

Tez -tez elektrik kəsilməsinin çox yayıldığı Hindistanın Odişa kəndindənəm. Hər kəsin həyatına mane olur. Uşaqlıq günlərimdə qaranlıqdan sonra təhsilimi davam etdirmək əsl problem idi. Bu problemdən ötəri eksperimental olaraq evim üçün bir günəş sistemi hazırladım. Bir neçə parlaq LED işıqlandırmaq üçün 10 Vt, 6V gücündə bir günəş paneli istifadə etdim. Çox çətinliklərlə üzləşdikdən sonra layihə uğur qazandı. Sonra sistemdəki gərginliyi, cərəyanı, gücü və enerjini izləməyə qərar verdim. Bu, bir ENERGY METER dizaynı ideyasını gətirdi. IDE -də kod yazmaq çox asandır və internetdə mövcud olan çox sayda açıq mənbə kitabxanası olduğu üçün bu layihənin ürəyi olaraq ARDUINO -dan istifadə etdim. Layihəni çox kiçik (10Watt) günəş sistemi üçün sınaqdan keçirdim, lakin bu, daha yüksək reytinq sistemi üçün istifadə etmək üçün asanlıqla dəyişdirilə bilər.

Bütün layihələrimi https://www.opengreenenergy.com/ saytında tapa bilərsiniz.

Xüsusiyyət: 1. LCD ekranı ilə enerji monitorinqi 2. İnternet vasitəsilə (Xively yükləmə) 3. Məlumatların SD karta daxil edilməsi

Yeni təlimatlı ARDUINO MPPT SOLAR CHARGE CONTROLLER-i görə bilərsiniz (Versiya-3.0)

Digər təlimatlarımı da görə bilərsiniz

ARDUINO SOLAR CHARGE CONTROLLER (Versiya 2.0)

ARDUINO SOLAR CHARGE CONTROLLER (Versiya-1)

Addım 1: Lazım olan hissələr:

Lazım olan hissələr
Lazım olan hissələr

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

3. 16x2 XARAKTER LCD (Amazon)

4. ACS 712 CARİ SENSORU (Amazon) 4. Rezistorlar (10k, 330ohm) (Amazon) 5. 10K POTANSİYOMETRİ (Amazon) 6. JUMPER WIRES (Amazon) 7. ETHERNET KABLO (Amazon) 8. Çörək lövhəsi (Amazon)

Addım 2: Güc və Enerji

Güc: Güc, gərginliyin (volt) və cərəyanın (Amp) məhsuludur P = VxI Güc vahidi Watt və ya KW Enerji: Enerji gücün (vat) və zamanın (Saat) məhsuludur E = Pxt Enerji Vahidi Vat Saat və ya Kilovattdır Saat (kWh) Yuxarıdakı düsturdan aydın olur ki, Enerjini ölçmək üçün üç parametrə ehtiyacımız var 1. Gərginlik 2. Cərəyan 3. Zaman

Addım 3: Gərginliyin ölçülməsi

Gərginlik ölçülməsi
Gərginlik ölçülməsi
Gərginlik ölçülməsi
Gərginlik ölçülməsi
Gərginlik ölçülməsi
Gərginlik ölçülməsi

Gərginlik bir gərginlik bölücü dövrənin köməyi ilə ölçülür. ARDUINO analoq pin giriş gərginliyi 5V ilə məhdudlaşdırıldığı üçün, gərginlik bölücüsünü ondan çıxan gərginliyin 5V -dən az olması üçün dizayn etmişəm. günəş panelinin gücü 6v, 5.5Ah qiymətləndirilir, buna görə də bu 6.5v -ni 5V -dan aşağı bir gərginliyə endirməliyəm. R1 = 10k və R2 = 10K istifadə etdim. R1 və R2 -nin dəyəri birdən aşağı ola bilər, amma problem ondadır ki, müqavimət aşağı olduqda daha yüksək cərəyan keçir, nəticədə çox miqdarda güc (P = I^2R) istilik şəklində yayılır. Buna görə fərqli müqavimət dəyəri seçilə bilər, ancaq müqavimət boyunca güc itkisini minimuma endirmək üçün diqqət yetirilməlidir. Vout = R2/(R1+R2)*Vbat Vbat = 6.5, tam doldurulduqda R1 = 10k və R2 = 10k Vout = 10/(10+10)*6.5 = 3.25v, 5v -dən aşağı və ARDUINO analog pininə uyğundur. telləri bağlamaq üçün yalnız 9 voltlu bir batareyanı göstərdim, amma əslində istifadə etdiyim batareya 6 volt, 5.5Ah qurğuşun turşusudur. a Vout = 3.25v və digər aşağı batareya gərginliyi üçün daha aşağı dəyər. AEDUINO ADC, analoq siqnalını müvafiq rəqəmsal yaxınlaşmaya çevirir. Batareya gərginliyi 6.5v olduğunda, gərginlik ayırıcıdan 3.25v aldım və nümunə1 ADC dəyərinin 3.25v -ə uyğun olduğu serial monitorda sample1 = 696 aldım Daha yaxşı başa düşmək üçün, real vaxt simulyasiyasını gərginlik ölçümü üçün 123D dövrə ilə əlavə etdim. 3.25v 696 1 -ə bərabərdir 3.25/696 = 4.669mv Vout = (4.669*nümunə1)/1000 volt Həqiqi batareya gərginliyi = (2*Vout) volt və sonra toplanan nümunə məlumatlarını (int i = 0; i <150; i ++) {sample1 = sample1+analogRead (A2); // bölücü dövrə gecikməsindən gələn gərginliyi oxuyun (2); } nümunə1 = nümunə1/150; gərginlik = 4.669*2*nümunə 1/1000;

Addım 4: Cari Ölçmə

Cari Ölçmə
Cari Ölçmə
Cari Ölçmə
Cari Ölçmə

Cari ölçmə üçün ACS 712 (20 A) Hall Effect cərəyan sensoru istifadə etdim. Bazarda mövcud olan ACS712 sensorunun fərqli cərəyan diapazonu var, buna görə tələbinizə uyğun olaraq seçin. Çörək lövhəsi diaqramında bir yük olaraq LED göstərdim, amma əsl yük fərqlidir. İŞ PRİNSİBİ: Hall Efekti, elektrik keçiricisində elektrik keçiricisinə eninə olan bir gərginlik fərqinin (Hall gərginliyi) meydana gəlməsidir. cərəyana dik olan bir maqnit sahəsi. Hall Effect sensoru haqqında daha çox məlumat əldə etmək üçün buraya vurun ACS 712 sensorunun məlumat vərəqi burada Məlumat Vərəqindən 1. ACS 712, 100mV/A analog çıxışına uyğun olaraq müsbət və mənfi 20Amps ölçür. Çıxış gərginliyində heç bir sınaq cərəyanı yoxdur VCC/2 = 5v/2 = 2.5V Kalibrləmə: Analog oxu 0v-dən 5v-ə bərabər olan 0-1023 bir dəyər istehsal edir. Buna görə də Analog oxu 1 = (5/1024) V = 4.89mv Dəyər = (4.89*Analog Oxu dəyəri)/ 1000 V Lakin məlumat vərəqlərinə görə ofset 2,5V-dir (Cari sıfır olduqda sensorun çıxışından 2,5V alacaqsınız) Həqiqi dəyər = (dəyər-2,5) V Amperdəki cərəyan = faktiki dəyər*10ARDUINO KODU: // 150 nümunə götürmək 2 saniyə aralığında olan sensorlar və sonra toplanan nümunə məlumatlarını (int i = 0; i <150; i ++) {sample2+= analogRead (A3); // sensor gecikməsindən cərəyanı oxuyun (2); } nümunə2 = nümunə2/150; val = (5.0*nümunə2) /1024.0; actualval = val-2.5; // ofset gərginliyi 2,5v amperdir = aktualval*10;

Addım 5: Zaman Ölçmə

Zaman ölçmək üçün heç bir xarici aparata ehtiyac yoxdur, çünki ARDUINO -nun özündə quraşdırılmış taymer var. Millis () funksiyası Arduino lövhəsi cari proqramı işə saldıqdan bəri millisaniyələrin sayını qaytarır. ARDUINO KODU: long milisec = millis (); // vaxtı milisaniyələrlə hesablayın uzun müddət = milisek/1000; // milisaniyələri saniyəyə çevirin

Addım 6: ARDUINO güc və enerjini necə hesablayır

totamplar = totamplar+amperlər; // ümumi amper avgamps = totamp/time hesablayın; // orta amper amphr = (avgamps*time)/3600; // amp-saat vatt = gərginlik*amper; // güc = gərginlik*cari enerji = (vat*vaxt)/3600; Watt-san, 1hr (3600sn) // enerji = (watt*vaxt)/(1000*3600) bölməklə yenidən Watt-Hr-ə çevrilir; kWh -də oxumaq üçün

Addım 7: Vizual Çıxış

Vizual Çıxış
Vizual Çıxış

Bütün nəticələr serial monitorda və ya LCD istifadə edərək görüntülənə bilər. Əvvəlki addımlarda əldə edilən bütün nəticələri göstərmək üçün 16x2 xarakterli bir LCD istifadə etdim. Sxemlər üçün yuxarıda göstərilən çörək lövhəsi sxeminə baxın. LCD -ni ARDUINO ilə aşağıdakı kimi bağlayın: LCD -> Arduino 1. VSS -> Arduino GND 2. VDD - > Arduino + 5v 3. VO -> Arduino GND pin + Rezistor və ya Potensiometr 4. RS -> Arduino pin 8 5. RW -> Arduino pin 7 6. E -> Arduino pin 6 7. D0 -> Arduino -Bağlı deyil 8 D1 -> Arduino -Bağlanmadı 9. D2 -> Arduino -Bağlanmadı 10. D3 -> Arduino -Bağlanmadı 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 + Rezistor (Arxa işıq gücü) 16. K -> Arduino GND (Arxa işıq zəmini) ARDUINO KODU: Serial Monitor üçün:

Serial.print ("VOLTAGE:"); Serial. çap (gərginlik); Serial.println ("Volt"); Serial.print ("CARİ:"); Serial. Çap (amper); Serial.println ("Amps"); Serial.print ("GÜC:"); Serial çapı (vat); Serial.println ("Vatt"); Serial.print ("ENERGY CONSUMED:"); Serial. Çap (enerji); Serial.println ("Watt-Hour"); Serial.println (""); // boş bir xətt gecikməsindən sonra növbəti parametr dəstlərini çap edin (2000); LCD üçün: LCD ekran üçün əvvəlcə koda "LiquidCrystal" kitabxanasını daxil etməlisiniz. LequidCrystal kitabxanası haqqında daha çox məlumat əldə etmək üçün bura vurun LCD təlimatı üçün bura basın Aşağıdakı kod #clude lcd (8, 7, 6, 5, 4, 3, 2) bütün hesablamalarını LCD -də göstərmək üçün bir formatdır; int backLight = 9; void setup () {pinMode (backLight, OUTPUT); // pin 9 -u çıxış analogWrite olaraq təyin edin (backLight, 150); // arxa işığın intensivliyinə nəzarət edir 0-254 lcd.begin (16, 2); // sütunlar, sətirlər. ekran ölçüsü lcd.clear (); // ekranı sil} boşluq döngəsi () {lcd.setCursor (16, 1); // imleci ekran sayının xaricində təyin edin lcd.print (""); // boş simvol gecikməsini çap et (600); //////////////////////////////////////////// Bir LCD -də çap gücü və enerjisi/ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////l/d/set (1, 0); // imleci 1 -ci sütunda və 1 -ci sırada lcd.print (vat) olaraq təyin edin; lcd.print ("W"); lcd çap (gərginlik); lcd.print ("V"); lcd.setCursor (1, 1); // imleci 1 -ci sütuna və 2 -ci sıraya təyin edin lcd.print (enerji); lcd.print ("WH"); lcd çap (amper); lcd.print ("A"); }

Addım 8: Məlumatların Xively.com -a yüklənməsi

Xively.com -a məlumatların yüklənməsi
Xively.com -a məlumatların yüklənməsi
Xively.com -a məlumatların yüklənməsi
Xively.com -a məlumatların yüklənməsi
Xively.com -a məlumatların yüklənməsi
Xively.com -a məlumatların yüklənməsi

Daha yaxşı vəziyyətdə olmaq üçün yuxarıdakı ekran görüntülərinə baxın. Xively.com saytına məlumat yükləmək üçün aşağıdakı kitabxananı əvvəlcə HttpClient yükləyin: bura Xively vurun: bura vurun SPI: arduino IDE -dən idxal et (eskiz -> Kitabxananı idxal et….) Ethernet: arduino -dan idxal et IDE ((eskiz -> Kitabxananı idxal et …..) https://xively.com (əvvəllər pachube.com və cosm.com) ilə bir hesab aç

Bir istifadəçi adı, şifrə seçin, ünvanınızı və vaxt qurşağınızı təyin edin və s. Bir təsdiq e -poçtu alacaqsınız;

sonra hesabınızı aktivləşdirmək üçün aktivasiya bağlantısını vurun. Hesabı uğurla açdıqdan sonra İnkişaf cihazları səhifəsinə yönləndiriləcəksiniz

  • +Cihaz əlavə et qutusuna vurun
  • Cihazınıza və təsvirinizə bir ad verin (məsələn, ENERGY MONITORING) ·
  • Şəxsi və ya ümumi məlumatları seçin (özəl seçirəm) ·
  • Cihaz əlavə et düyməsini vurun

Cihazı əlavə etdikdən sonra bir çox vacib məlumatın olduğu yeni bir səhifəyə yönləndirilirsiniz

  • Məhsul ID, Məhsul Sirri, Seriya nömrəsi, Aktivləşdirmə Kodu ·
  • Feed ID, FeedURL, API Bitiş Noktası (Feed ID -si ARDUINO kodunda istifadə olunur)
  • Kanallar əlavə edin (ENERGY və POWER seçin, ancaq seçiminizə görə seçə bilərsiniz) Parametr üçün vahid və simvol verin ·
  • Yerinizi əlavə edin ·
  • API açarları (ARDUINO kodunda istifadə olunur, bu nömrəni paylaşmaqdan çəkinin) ·
  • Tetikleyiciler (bir hadisə baş verdikdə, enerji istehlakı müəyyən bir limiti aşanda olduğu kimi ping aweb səhifəsi)

Addım 9: Xively və ARDUINO Kodu

Növbəti addımda ayrıca əlavə olunan SD kart məlumatlarının qeydiyyatı istisna olmaqla enerji sayğacı üçün tam kodu (beta versiyası) əlavə etdim. / ** Enerji izləmə məlumatları xively -a yüklənir **/ #include #include #include #include #define API_KEY "xxxxxxxx" // Xively API açarınızı daxil edin #FEED_ID xxxxxxxxxx təyin edin // Xively feed ID -ni daxil edin // MAC ünvanınızı daxil edin Ethernet qalxanı bayt mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // İzlədiyimiz analoq pin (0 və 1 Ethernet qalxanı tərəfindən istifadə olunur) int sensorPin = 2; imzasız uzun lastConnectionTime = 0; // son dəfə Cosm const -a qoşulduqda imzasız uzun bağlantıInterval = 15000; // milisaniyələrdə Cosm -a qoşulma arasındakı gecikmə // Cosm kitabxanasını işə salın // Data axını ID char sensorId = "POWER" üçün simli müəyyən edin; char sensorId2 = "ENERGY"; XivelyDatastream məlumat axınları = {XivelyDatastream (sensorId, strlen (sensorId), DATASTREAM_FLOAT), XivelyDatastream (sensorId2, strlen (sensorId2), DATASTREAM_FLOAT), DATASTREAM_FLOAT),}; // Məlumat axını XivelyFeed yeminə sarılır (FEED_ID, datastreams, 2/ * datastreams */); EthernetClient müştəri; XivelyClient xivelyclient (müştəri); void setup () {Serial.begin (9600); Serial.println ("Şəbəkə başlatılır"); while (Ethernet.begin (mac)! = 1) {Serial.println ("IP ünvanını DHCP vasitəsilə əldə etmək xətası, yenidən cəhd edilir …"); gecikmə (15000); } Serial.println ("Şəbəkə işə salındı"); Serial.println (); } void loop () {if (millis () - lastConnectionTime> connectionInterval) {sendData (); // məlumatları xively getData () göndərin; // məlumat axını xively lastConnectionTime = millis () -dən geri oxuyun; // əlaqə vaxtını yeniləyin, buna görə yenidən bağlanmadan əvvəl gözləyək}} void sendData () {int sensor1 = watt; int sensor2 = enerji; datastreams [0].setFloat (sensor1); // güc dəyəri məlumat axınları [1].setFloat (sensor2); // enerji dəyəri Serial.print ("Güc oxu"); Serial.println (məlumat axınları [0].getFloat ()); Serial.print ("Enerji oxu"); Serial.println (məlumat axınları [1].getFloat ()); Serial.println ("Xively -a yüklənir"); int ret = xivelyclient.put (feed, API_KEY); Serial.print ("PUT qaytarma kodu:"); Serial.println (ret); Serial.println (); } // məlumat axınının dəyərini xively -dən əldə edin, etibarsız aldığımız dəyəri çap edin getData () {Serial.println ("Xively -dən məlumatların oxunması"); int ret = xivelyclient.get (feed, API_KEY); Serial.print ("Geri qaytarma kodu:"); Serial.println (ret); if (ret> 0) {Serial.print ("Datastream is:"); Serial.println (feed [0]); Serial.print ("Güc dəyəri:"); Serial.println (feed [0].getFloat ()); Serial.print ("Datastream:"); Serial.println (feed [1]); Serial.print ("Enerji dəyəri:"); Serial.println (feed [1].getFloat ()); } Serial.println ();

Addım 10: SD Kartda Məlumat Girişi

SD kartda məlumatların saxlanması üçün SD kitabxanasını idxal etməlisiniz Dərslik üçün bura vurun SD kitabxana haqqında daha çox məlumat əldə etmək üçün bura vurun Məlumatların SD kartda saxlanılması üçün kod ayrıca yazılır, çünki ARDUINO UNO -da kifayət qədər yaddaşım yoxdur. LCD ekran üçün məlumat yazmaq və xively.com məlumat yükləmək. Ancaq beta kodunu təkmilləşdirməyə çalışıram ki, tək bir kod bütün xüsusiyyətləri (LCD ekran, Xively məlumat yükləmə və SD kartda saxlama) ehtiva etsin. Kodumu dəyişdirərək daha yaxşı kod yazın, mənimlə bölüşün. Bu mənim ilk texniki təlimatımdır, hər kəs hər hansı bir səhv taparsa, şərh yazmaqdan çəkinməyin.. özümü inkişaf etdirə biləcəyim üçün. və ya mənə mesaj göndərin, belə ki, layihə daha güclü olacaq. Düşünürəm ki, bunun həm mənim, həm də başqaları üçün faydalı olacağını düşünürəm.

123D Dövrə Yarışması
123D Dövrə Yarışması
123D Dövrə Yarışması
123D Dövrə Yarışması

123D Circuit Yarışmasında Üçüncü Mükafat

Tövsiyə: