Mundarija:

ARDUINO ENERGY METER: 10 qadam (rasmlar bilan)
ARDUINO ENERGY METER: 10 qadam (rasmlar bilan)

Video: ARDUINO ENERGY METER: 10 qadam (rasmlar bilan)

Video: ARDUINO ENERGY METER: 10 qadam (rasmlar bilan)
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Noyabr
Anonim
Image
Image
ARDUINO ENERJI METER
ARDUINO ENERJI METER
ARDUINO ENERJI METER
ARDUINO ENERJI METER

[Videoni ijro etish]

Men Hindistonning Odisha qishlog'iga mansubman, u erda elektr energiyasini tez -tez uzib qo'yish odatiy holdir. Bu har kimning hayotiga to'sqinlik qiladi. Bolaligimda, tushdan keyin o'qishni davom ettirish juda qiyin edi. Bu muammo tufayli men o'z uyim uchun eksperimental tarzda quyosh sistemasini yaratdim. Men bir nechta yorqin LEDlarni yoqish uchun 10 Vt, 6V quyosh panelini ishlatardim. Ko'p qiyinchiliklarga duch kelganidan so'ng, loyiha muvaffaqiyatli bo'ldi. Keyin men tizimdagi kuchlanish, oqim, quvvat va energiyani kuzatishga qaror qildim. Bu "ENERGY METER" ni loyihalash g'oyasini keltirib chiqardi. Men ARDUINO -ni ushbu loyihaning yuragi sifatida ishlatardim, chunki uning IDE -da kod yozish juda oson va Internetda juda ko'p ochiq manbali kutubxonalar mavjud. Men loyihani juda kichik nominal (10 Vt) quyosh sistemasi uchun sinab ko'rdim, lekin uni yuqori reytingli tizim uchun ishlatish uchun o'zgartirish mumkin.

Siz mening barcha loyihalarimni https://www.opengreenenergy.com/ saytida topishingiz mumkin.

Xususiyat: 1. LCD displeyi orqali energiya monitoringi 2. Internet orqali (Xively yuklash) 3. SD -kartadagi ma'lumotlarni qayd etish

Siz mening yangi ko'rsatma beradigan ARDUINO MPPT SOLAR CHARGE CONTROLLER (Versiya-3.0) ni ko'rishingiz mumkin.

Siz mening boshqa ko'rsatmalarni ko'rishingiz mumkin

ARDUINO SOLAR CHARGE CONTROLLER (2.0 versiya)

ARDUINO SOLAR CHARGE CONTROLLER (Versiya-1)

1 -qadam: Kerakli qismlar:

Kerakli qismlar
Kerakli qismlar

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

3. 16x2 CHARACTER LCD (Amazon)

4. ACS 712 CURRENT SENSOR (Amazon) 4. Rezistorlar (10k, 330ohm) (Amazon) 5. 10K potentsiyometr (Amazon) 6. Jumper simlari (Amazon) 7. ETHERNET kabeli (Amazon) 8. NAN BOARD (Amazon)

2 -qadam: Quvvat va energiya

Quvvat: Quvvat - kuchlanish (volt) va oqim (Amp) mahsuloti P = VxI Quvvat birligi - Vatt yoki KW Energiya: Energiya - quvvat (vatt) va vaqt (Soat) mahsuloti Soat (kVt soat) Yuqoridagi formuladan ko'rinib turibdiki, Energiyani o'lchash uchun bizga uchta parametr kerak: kuchlanish 2. oqim 3. vaqt

3 -qadam: kuchlanishni o'lchash

Voltaj o'lchovi
Voltaj o'lchovi
Voltaj o'lchovi
Voltaj o'lchovi
Voltaj o'lchovi
Voltaj o'lchovi

Voltajni ajratish sxemasi yordamida o'lchanadi. ARDUINO analog pinining kirish voltaji 5V bilan cheklanganligi sababli, men kuchlanish bo'lgichini shunday chiqardimki, undan chiqish voltaji 5V dan kam bo'lishi kerak. Quyosh panelining quvvati 6V, 5.5Ah ga teng, shuning uchun men bu 6.5Vni 5V dan past kuchlanishga tushirishim kerak. Men R1 = 10k va R2 = 10K ni ishlatardim. R1 va R2 qiymatlari pastroq bo'lishi mumkin, lekin muammo shundaki, qarshilik past bo'lsa, u orqali yuqori oqim oqadi, natijada issiqlik shaklida katta quvvat (P = I^2R) tarqaladi. Shunday qilib, qarshilikning har xil qiymatini tanlash mumkin, lekin qarshilik paytida quvvat yo'qotilishini minimallashtirish kerak. Vout = R2/(R1+R2)*Vbat Vbat = 6,5 to'liq zaryadlanganda R1 = 10k va R2 = 10k Vout = 10/(10+10)*6,5 = 3,25v, bu 5v dan past va ARDUINO analog piniga mos keladi. 9 voltli akkumulyator batareyasi, masalan, simlarni ulash uchun, lekin men ishlatgan akkumulyator 6 voltli, 5,5Ah qo'rg'oshin kislotali batareyadir. a Vout = 3.25v va boshqa pastroq batareya zo'riqishida past qiymat. AEDUINO ADC analog signalni mos keladigan raqamli yaqinlashtirishga o'zgartiradi. Batareya zo'riqishida 6,5v bo'lganida, men kuchlanish taqsimlagichidan 3,25v va ketma -ket monitorda namuna1 = 696 ni oldim, bu erda namuna1 ADC qiymati 3,25v ga to'g'ri keladi. Yaxshi tushunish uchun men real vaqt simulyatsiyasini 123D. kuchlanish o'lchash sxemasi bilan biriktirdim Kalibrlash: 3.25v 696 1 ga teng 3.25/696 = 4.669mv ga teng Vout = (4.669*namuna1)/1000 volt Batareyaning haqiqiy kuchlanishi = (2*Vout) voltARDUINO KODI: // 2 soniya oralig'ida kuchlanish bo'luvchidan 150 ta namuna olish. va keyin yig'ilgan namunalar ma'lumotlarini o'rtacha (int i = 0; i <150; i ++) {sample1 = sample1+analogRead (A2); // bo'linuvchi kontaktlarning zanglashiga olib keladigan kuchlanishni o'qing (2); } namuna1 = namuna1/150; kuchlanish = 4,669*2*namuna1/1000;

4 -qadam: Joriy o'lchov

Joriy o'lchov
Joriy o'lchov
Joriy o'lchov
Joriy o'lchov

Hozirgi o'lchash uchun ACS 712 (20 A) Hall Effect oqim sensori ishlatilgan. Bozorda ACS712 sensorining har xil diapazoni mavjud, shuning uchun sizning talabingizga muvofiq tanlang. Non taxtasi diagrammasida men LEDni yuk sifatida ko'rsatdim, lekin haqiqiy yuk boshqacha. Ish printsipi: Hall effekti - o'tkazgichdagi elektr tokiga ko'ndalang bo'lgan elektr o'tkazgichda kuchlanish farqini (Hall zo'riqishida) ishlab chiqarish. oqimga perpendikulyar bo'lgan magnit maydon. Hall Effect sensori haqida ko'proq bilish uchun bu erni bosing. ACS 712 sensorining ma'lumot varaqasi bu erda. Ma'lumotlar varag'idan 1. ACS 712 100mV/A analog chiqishiga mos keladigan ijobiy va salbiy 20Ampsni o'lchaydi. 2. Chiqish kuchlanishi orqali sinov oqimi yo'q. VCC/2 = 5v/2 = 2,5V Kalibrlash: Analog o'qish 0v dan 5v ga teng bo'lgan 0-1023 qiymatini ishlab chiqaradi. 1000 V Lekin ma'lumotlar varaqlari bo'yicha ofset 2,5V (joriy nol bo'lsa, siz sensorning chiqishidan 2,5V olasiz) Haqiqiy qiymat = (qiymat-2,5) V Amperdagi oqim = haqiqiy qiymat*10ARDUINO KODI: // 150 ta namunani olish sensorlar 2 soniya oralig'ida va keyin yig'ilgan ma'lumotlarning o'rtacha ma'lumotlari (int i = 0; i <150; i ++) {sample2+= analogRead (A3); // sensorning kechikishidan oqimni o'qing (2); } namuna2 = namuna2/150; val = (5.0*namuna2) /1024.0; haqiqiy qiymat = val-2,5; // ofset kuchlanishi 2,5v amper = haqiqiy qiymat*10;

5 -qadam: Vaqtni o'lchash

Vaqtni o'lchash uchun hech qanday tashqi uskuna kerak emas, chunki ARDUINO -da o'rnatilgan taymer mavjud. Millis () funktsiyasi Arduino platasi joriy dasturni ishga tushirganidan beri millisekundlar sonini qaytaradi. ARDUINO KODI: long milisek = millis (); // vaqtni millisekundlarda hisoblang uzoq vaqt = milisek/1000; // millisekundlarni soniyalarga aylantirish

6 -qadam: ARDUINO qanday qilib quvvat va energiyani hisoblab chiqadi

totamplar = totamplar+kuchaytirgichlar; // umumiy amper avgamps = totamplar/vaqtni hisoblang; // o'rtacha amper amfr = (avgamps*vaqti)/3600; // amper-soat vatt = kuchlanish*amper; // quvvat = kuchlanish*oqim energiyasi = (vatt*vaqt)/3600; Vatt-sek yana 1 soat (3600 soniya) // energiya = (vatt*vaqti)/(1000*3600) ga bo'linib, Vatt-Hr ga aylanadi; kVt / soat o'qish uchun

7 -qadam: Vizual chiqish

Vizual chiqish
Vizual chiqish

Barcha natijalarni ketma -ket monitorda yoki LCD yordamida ko'rish mumkin. Men oldingi qadamlarda olingan barcha natijalarni ko'rsatish uchun 16x2 belgili LCD -ni ishlatardim. Sxemalar uchun yuqorida ko'rsatilgan non taxtasi sxemasiga qarang: LCD ni ARDUINO bilan quyidagi tarzda ulang: LCD -> Arduino 1. VSS -> Arduino GND 2. VDD - > Arduino + 5v 3. VO -> Arduino GND pin + rezistor yoki potensiometr 4. RS -> Arduino pin 8 5. RW -> Arduino pin 7 6. E -> Arduino pin 6 7. D0 -> Arduino -Ulanmagan 8 D1 -> Arduino -Ulanmagan 9. D2 -> Arduino -Ulanmagan 10. D3 -> Arduino -Ulanmagan 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 (Orqa yorug'lik kuchi) 16. K -> Arduino GND (Orqa yorug'lik) ARDUINO KODI: Serial monitor uchun:

Serial.print ("VOLTAGE:"); Ketma -ket chop etish (kuchlanish); Serial.println ("Volt"); Serial.print ("Joriy:"); Ketma -ket chop etish (amper); Serial.println ("Amper"); Serial.print ("QUVAT:"); Ketma -ket chop etish (vatt); Serial.println ("Vatt"); Serial.print ("ENERJI SARFATILADI:"); Ketma -ket chop etish (energiya); Serial.println ("Vatt-soat"); Serial.println (""); // bo'sh satr kechiktirilgandan keyin keyingi parametrlar to'plamini chop eting (2000); LCD uchun: LCD displey uchun avval "LiquidCrystal" kutubxonasini kodga import qilish kerak. LequidCrystal kutubxonasi haqida ko'proq ma'lumot olish uchun bu erni bosing LCD ko'rsatmalari uchun bu yerni bosing Quyidagi kod LCD displeyda quvvat va energiya uchun barcha hisob -kitoblarni ko'rsatish uchun #include lcd (8, 7, 6, 5, 4, 3, 2); int backLight = 9; void setup () {pinMode (backLight, OUTPUT); // pin 9ni analog analogWrite sifatida o'rnating (backLight, 150); // orqa yorug'lik intensivligini nazorat qiladi 0-254 lcd.begin (16, 2); // ustunlar, qatorlar. displey hajmi lcd.clear (); // ekranni tozalash} void loop () {lcd.setCursor (16, 1); // kursorni displeydan tashqarida lcd.print ("") o'rnating; // bosma bo'sh belgini kechiktirish (600); ////////////////////////////////////////////// Quvvat va energiyani LCD displeyda chop etish/ ////////////////////////////////////////////////////////////cl.setCursor (1, 0); // kursorni 1 -ustun va 1 -qatorda lcd.print (vatt) ga o'rnating; lcd.print ("V"); lcd.print (kuchlanish); lcd.print ("V"); lcd.setCursor (1, 1); // kursorni 1 -ustun va 2 -qatorda lcd.print (energiya) ga o'rnating; lcd.print ("WH"); lcd.print (amper); lcd.print ("A"); }

8 -qadam: Xively.com saytiga ma'lumotlarni yuklash

Xively.com saytiga ma'lumotlarni yuklash
Xively.com saytiga ma'lumotlarni yuklash
Xively.com saytiga ma'lumotlarni yuklash
Xively.com saytiga ma'lumotlarni yuklash
Xively.com saytiga ma'lumotlarni yuklash
Xively.com saytiga ma'lumotlarni yuklash

Yuqoridagi ekran tasvirlarini qarang. Xively.com saytiga ma'lumotlarni yuklash uchun quyidagi kutubxonani birinchi HttpClient yuklab olish uchun bu erga bosing: jonli: bu erni bosing SPI: arduino IDE -dan import qilish (eskiz -> kutubxonani import qilish ….) Ethernet: arduino -dan import qilish. IDE ((eskiz -> Kutubxonani import qilish …..) https://xively.com (avval pachube.com va cosm.com) bilan hisob oching https://xively.com saytida bepul dasturchi hisobiga yoziling.

Foydalanuvchi nomi, parolni tanlang, manzilingizni va vaqt mintaqangizni belgilang va hokazo. Siz tasdiqlovchi elektron pochta xabarini olasiz;

keyin hisobingizni faollashtirish uchun faollashtirish havolasini bosing. Hisobni muvaffaqiyatli ochganingizdan so'ng, siz "Development devices" sahifasiga yo'naltirilasiz

  • +Qurilma qo'shish maydoniga bosing
  • Qurilmangizga ism va tavsif bering (masalan, ENERGY MONITORING) ·
  • Shaxsiy yoki ochiq ma'lumotlarni tanlang (men shaxsiy ma'lumotni tanlayman) ·
  • Qurilma qo'shish -ni bosing

Qurilmani qo'shgandan so'ng, siz ko'plab muhim ma'lumotlar mavjud bo'lgan yangi sahifaga yo'naltirilasiz

  • Mahsulot identifikatori, mahsulot siri, seriya raqami, faollashtirish kodi ·
  • Feed ID, FeedURL, API -ning so'nggi nuqtasi (Feed ID ARDUINO kodida ishlatiladi)
  • Kanal qo'shish (ENERGY va POWER ni tanlang, lekin siz xohlaganingizga qarab tanlashingiz mumkin) · Parametr uchun birlik va belgini bering ·
  • Joyingizni qo'shing ·
  • API kalitlari (ARDUINO kodida ishlatilgan, bu raqamni ulashishdan saqlaning) ·
  • Triggerlar (voqea sodir bo'lganda, masalan, energiya sarfi ma'lum chegaradan oshib ketganda)

9 -qadam: Xively va ARDUINO kodlari

Bu erda men energiya o'lchagich uchun to'liq kodni (beta -versiya) qo'shdim, keyingi bosqichda alohida biriktirilgan SD -karta ma'lumotlarini hisobga olish. / ** Energiya monitoringi ma'lumotlari xively -ga yuklanadi **/ #include #include #include #include #define API_KEY "xxxxxxxx" // Xively API kalitini kiriting #FEED_ID xxxxxxxxxxni belgilang // Xively feed identifikatoringizni kiriting // MAC manzilingizni kiriting. Ethernet qalqoni bayt mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Biz kuzatayotgan analog pin (0 va 1 chekilgan qalqoni tomonidan ishlatiladi) int sensorPin = 2; imzosiz uzoq lastConnectionTime = 0; // oxirgi marta biz Cosm const ga ulanganmiz unsigned long connectionInterval = 15000; // millisekundlarda Cosm -ga ulanish orasidagi kechikish // Cosm kutubxonasini ishga tushirish // Bizning ma'lumotlar oqimining simini belgilang char sensorId = "POWER"; char sensorId2 = "ENERGY"; XivelyDatastream ma'lumotlar oqimi = {XivelyDatastream (sensorId, strlen (sensorId), DATASTREAM_FLOAT), XivelyDatastream (sensorId2, strlen (sensorId2), DATASTREAM_FLOAT), DATASTREAM_FLOAT),}; // Ma'lumot oqimini XivelyFeed tasmasiga joylashtiring (FEED_ID, ma'lumotlar oqimlari, 2/ * ma'lumotlar oqimlari soni */); EthernetClient mijozi; XivelyClient xivelyclient (mijoz); void setup () {Serial.begin (9600); Serial.println ("Tarmoq ishga tushirilmoqda"); while (Ethernet.begin (mac)! = 1) {Serial.println ("IP -manzilni DHCP orqali olishda xato, qayta urinib ko'ring…"); kechikish (15000); } Serial.println ("Tarmoq ishga tushirildi"); Serial.println (); } void loop () {if (millis () - lastConnectionTime> connectionInterval) {sendData (); // ma'lumotlarni xively getData () ga yuborish; // ma'lumotlar oqimini xively lastConnectionTime = millis () dan o'qing; // ulanish vaqtini yangilang, shuning uchun qayta ulanishni kutamiz}} void sendData () {int sensor1 = vatt; int sensori2 = energiya; ma'lumotlar oqimlari [0].setFloat (sensor1); // quvvat qiymati ma'lumotlar oqimlari [1].setFloat (sensor2); // energiya qiymati Serial.print ("O'qish kuchi"); Serial.println (ma'lumotlar oqimlari [0].getFloat ()); Serial.print ("Energiyani o'qing"); Serial.println (ma'lumotlar oqimlari [1].getFloat ()); Serial.println ("Xively -ga yuklash"); int ret = xivelyclient.put (tasma, API_KEY); Serial.print ("PUT qaytarish kodi:"); Serial.println (ret); Serial.println (); } // ma'lumotlar oqimining qiymatini xively -dan oling, biz olgan bo'sh qiymatni chop etamiz getData () {Serial.println ("Xively -dan ma'lumotlarni o'qish"); int ret = xivelyclient.get (tasma, API_KEY); Serial.print ("Qaytish kodini oling:"); Serial.println (ret); if (ret> 0) {Serial.print ("Ma'lumotlar oqimi:"); Serial.println (tasma [0]); Serial.print ("Quvvat qiymati:"); Serial.println (feed [0].getFloat ()); Serial.print ("Ma'lumotlar oqimi:"); Serial.println (tasma [1]); Serial.print ("Energiya qiymati:"); Serial.println (feed [1].getFloat ()); } Serial.println ();

10 -qadam: ma'lumotlarni SD -kartaga yozib olish

Ma'lumotni SD -kartada saqlash uchun siz SD kutubxonasini import qilishingiz kerak Qo'llanma uchun bu erni bosing SD -kutubxona haqida ko'proq ma'lumot olish uchun bu erni bosing SD -kartadagi ma'lumotlarni saqlash kodi alohida yoziladi, chunki mening ARDUINO UNO -da xotiram etarli emas. LCD displey uchun kod yozish va ma'lumotlarni yuklash xively.com. Lekin men beta -versiya kodini takomillashtirishga harakat qilyapman, shunda bitta kod barcha funktsiyalarni o'z ichiga olishi mumkin (LCD displey, Xively ma'lumotlarni yuklash va ma'lumotlarni SD -kartada saqlash). Ma'lumotlarni yozish uchun kod quyida biriktirilgan. Mening kodimni o'zgartirish orqali yaxshiroq kodni iltimos, men bilan baham ko'ring. Bu mening birinchi texnik yo'riqnomam, agar kimdir bu erda xato topsa, o'zimni takomillashtirishim uchun izohlarda qoldiring. yoki menga xabar bering, shuning uchun loyiha kuchliroq bo'ladi, menimcha, bu men uchun ham, boshqalar uchun ham foydali bo'ladi.

123D davralari musobaqasi
123D davralari musobaqasi
123D davralari musobaqasi
123D davralari musobaqasi

123D davralari tanlovida uchinchi mukofot

Tavsiya: