Isi kandungan:
- Langkah 1: Bahagian yang Diperlukan:
- Langkah 2: Tenaga dan Tenaga
- Langkah 3: Pengukuran Voltan
- Langkah 4: Pengukuran Semasa
- Langkah 5: Pengukuran Masa
- Langkah 6: Bagaimana ARDUINO Mengira Kuasa dan Tenaga
- Langkah 7: Output Visual
- Langkah 8: Memuat naik data ke Xively.com
- Langkah 9: Kod Xively dan ARDUINO
- Langkah 10: Log masuk Data dalam Kad SD
Video: ARDUINO ENERGY METER: 10 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
[Mainkan Video]
Saya berasal dari sebuah kampung di Odisha, India di mana pemadaman elektrik sering berlaku. Ini menghalang kehidupan setiap orang. Semasa zaman kanak-kanak saya melanjutkan pelajaran selepas senja adalah satu cabaran yang nyata. Oleh kerana masalah ini, saya merancang sistem solar untuk kediaman saya secara eksperimen. Saya menggunakan panel solar 10 Watt, 6V untuk menyalakan beberapa LED terang. Setelah menghadapi banyak kesukaran, projek itu berjaya. Kemudian saya memutuskan untuk memantau voltan, arus, kuasa & tenaga yang terlibat dalam sistem. Ini membawa idea untuk merancang ENERGY METER. Saya menggunakan ARDUINO sebagai nadi projek ini kerana sangat mudah untuk menulis kod dalam IDEnya dan terdapat sejumlah besar perpustakaan sumber terbuka yang terdapat di internet yang boleh digunakan mengikut keperluan. Saya telah mengeksperimen projek untuk sistem suria berkadar kecil (10Watt) tetapi ini dapat diubahsuai dengan mudah untuk digunakan untuk sistem penarafan yang lebih tinggi.
Anda boleh mendapatkan semua projek saya di:
Ciri: Pemantauan tenaga dengan paparan 1. LCD 2. melalui internet (Xively upload) 3. Log masuk data dalam kad SD
Anda dapat melihat ARDUINO MPPT SOLAR CHARGE CONTROLLER baru saya yang boleh dipesan (Versi-3.0)
Anda juga boleh melihat arahan saya yang lain
ARDUINO SOLAR CHARGE CONTROLLER (Versi 2.0)
ARDUINO SOLAR CHARGE CONTROLLER (Versi-1)
Langkah 1: Bahagian yang Diperlukan:
1. ARDUINO UNO (Amazon) 2. ARDUINO ETHERNET SHIELD (Amazon)
3. LCD KARAKTER 16x2 (Amazon)
4. SENSOR SEMASA ACS 712 (Amazon) 4. RESISTOR (10k, 330ohm) (Amazon) 5. 10K POTENTIOMETER (Amazon) 6. JUMPER WIRES (Amazon) 7. KABEL ETHERNET (Amazon) 8. PAPAN BREAD (Amazon)
Langkah 2: Tenaga dan Tenaga
Daya: Daya adalah produk voltan (volt) dan arus (Amp) P = VxI Unit kuasa adalah Watt atau KW Tenaga: Tenaga adalah produk kuasa (watt) dan masa (Jam) E = Unit Tenaga Pxt ialah Jam Watt atau Kilowatt Jam (kWh) Dari formula di atas jelas bahawa untuk mengukur Tenaga kita memerlukan tiga parameter 1. Voltan 2. Arus 3. Masa
Langkah 3: Pengukuran Voltan
Voltan diukur dengan bantuan litar pembahagi voltan. Oleh kerana voltan input pin analog ARDUINO dihadkan kepada 5V, saya merancang pembahagi voltan sedemikian rupa sehingga voltan keluaran darinya mestilah kurang dari 5V. Bateri saya digunakan untuk menyimpan kuasa dari panel solar dinilai 6v, 5.5Ah. Oleh itu, saya harus menurunkan 6.5v ini ke voltan yang lebih rendah daripada 5V. Saya menggunakan R1 = 10k dan R2 = 10K. Nilai R1 dan R2 boleh menjadi lebih rendah tetapi masalahnya ialah apabila rintangan rendah arus lebih tinggi melaluinya sebagai akibatnya sejumlah besar daya (P = I ^ 2R) hilang dalam bentuk panas. Oleh itu, nilai rintangan yang berbeza dapat dipilih tetapi berhati-hati harus dilakukan untuk meminimumkan kehilangan daya pada rintangan. Vout = R2 / (R1 + R2) * Vbat Vbat = 6.5 apabila dicas sepenuhnya R1 = 10k dan R2 = 10k Vout = 10 / (10 + 10) * 6.5 = 3.25v yang lebih rendah daripada 5v dan sesuai untuk pin analog ARDUINO CATATAN I telah menunjukkan bateri 9 Volt dalam litar papan bared misalnya untuk menyambungkan wayar. Tetapi bateri sebenar yang saya gunakan adalah bateri asid plumbum 6 Volt, 5.5Ah. Kalibrasi voltan: Apabila bateri terisi penuh (6.5v) kita akan mendapat a Vout = 3.25v dan nilai yang lebih rendah untuk voltan bateri lain yang lebih rendah. AEDUINO ADC menukar isyarat Analog kepada penghampiran digital yang sepadan. Apabila voltan bateri 6.5v, saya mendapat 3.25v dari pembahagi voltan dan sampel1 = 696 dalam monitor bersiri, di mana sampel1 adalah nilai ADC sepadan dengan 3.25v Untuk pemahaman yang lebih baik, saya telah melampirkan simulasi masa nyata oleh 123D. Litar untuk pengukuran voltan Kalibrasi: 3.25v bersamaan 696 1 bersamaan dengan 3.25 / 696 = 4.669mv Vout = (4.669 * sample1) / 1000 volt Voltan bateri sebenar = (2 * Vout) KOD voltARDUINO: // mengambil 150 sampel dari pembahagi voltan dengan selang 2sec dan kemudian rata-rata data sampel yang dikumpulkan untuk (int i = 0; i <150; i ++) {sample1 = sample1 + analogRead (A2); // baca voltan dari kelewatan litar pembahagi (2); } sampel1 = sampel1 / 150; voltan = 4.669 * 2 * sampel1 / 1000;
Langkah 4: Pengukuran Semasa
Untuk pengukuran semasa, saya menggunakan sensor arus Hall Effect ACS 712 (20 A). Terdapat pelbagai jarak ACS712 sensor yang tersedia di pasaran, jadi pilihlah mengikut keperluan anda. Dalam rajah papan roti saya telah menunjukkan LED sebagai beban tetapi beban sebenarnya berbeza. PRINSIP KERJA: Kesan Hall adalah penghasilan perbezaan voltan (voltan Hall) merentasi konduktor elektrik, melintang ke arus elektrik di konduktor dan medan magnet yang berserenjang dengan arus. Untuk mengetahui lebih lanjut mengenai sensor Effect Hall klik di sini Lembaran data sensor ACS 712 terdapat di sini Dari Lembaran Data 1. ACS 712 mengukur 20Amps positif dan negatif, sepadan dengan output analog 100mV / A 2. Tiada arus ujian melalui voltan output adalah VCC / 2 = 5v / 2 = 2.5V Kalibrasi: Pembacaan analog menghasilkan nilai 0-1023, bersamaan dengan 0v hingga 5v Jadi bacaan Analog 1 = (5/1024) V = 4.89mv Nilai = (4.89 * Nilai Baca Analog) / 1000 V Tetapi mengikut lembaran data, offset adalah 2.5V (Apabila sifar semasa anda akan mendapat 2.5V dari output sensor) Nilai sebenar = (nilai-2.5) V Arus dalam amp = nilai sebenar * 10ARDUINO KOD: // mengambil 150 sampel dari sensor dengan selang 2sec dan kemudian rata-rata data sampel yang dikumpulkan untuk (int i = 0; i <150; i ++) {sample2 + = analogRead (A3); // baca arus dari kelewatan sensor (2); } sampel2 = sampel2 / 150; val = (5.0 * sampel2) /1024.0; sebenarval = val-2.5; // voltan mengimbangi ialah 2.5v amp = aktualval * 10;
Langkah 5: Pengukuran Masa
Untuk pengukuran masa tidak memerlukan perkakasan luaran, kerana ARDUINO sendiri mempunyai pemasa terbina dalam. Fungsi milis () mengembalikan bilangan milisaat sejak papan Arduino mula menjalankan program semasa. ARDODININOD: milisec panjang = milis (); // kirakan masa dalam milisaat lama = milisaat / 1000; // tukar milisaat menjadi beberapa saat
Langkah 6: Bagaimana ARDUINO Mengira Kuasa dan Tenaga
totamps = totamps + amp; // hitung jumlah avgamps amp = jumlah / masa; // amp amp purata = (avgamps * masa) / 3600; // amp-jam watt = voltan * amp; // kuasa = voltan * tenaga semasa = (watt * masa) / 3600; Watt-sec sekali lagi ditukar menjadi Watt-Hr dengan membahagikan 1 jam (3600sec) // tenaga = (watt * masa) / (1000 * 3600); untuk bacaan dalam kWh
Langkah 7: Output Visual
Semua hasilnya dapat dilihat dalam monitor bersiri atau dengan menggunakan LCD. Saya menggunakan LCD watak 16x2 untuk memaparkan semua hasil yang diperoleh pada langkah sebelumnya. Untuk skema lihat litar papan roti seperti di atas. Sambungkan LCD dengan ARDUINO seperti yang diberikan di bawah: LCD -> Arduino 1. VSS -> Arduino GND 2. VDD - > Arduino + 5v 3. VO -> Pin Arduino GND + Perintang atau Potensiometer 4. RS -> Pin Arduino 8 5. RW -> Pin Arduino 7 6. E -> Pin Arduino 6 7. D0 -> Arduino - Tidak Bersambung 8. D1 -> Arduino - Tidak Disambungkan 9. D2 -> Arduino - Tidak Disambungkan 10. D3 -> Arduino - Tidak Disambungkan 11. D4 -> Pin Arduino 5 12. D5 -> Pin Arduino 4 13. D6 -> Pin Arduino 3 14. D7 -> Arduino pin 2 15. A -> Arduino Pin 13 + Resistor (backlight power) 16. K -> Arduino GND (Backlight ground) ARDUINO CODE: Untuk Serial Monitor:
Serial.print ("VOLTAGE:"); Cetakan bersiri (voltan); Serial.println ("Volt"); Serial.print ("SEMASA:"); Cetakan bersiri (amp); Serial.println ("Amps"); Serial.print ("KUASA:"); Cetakan bersiri (watt); Serial.println ("Watt"); Serial.print ("ENERGY CONSUMED:"); Serial.print (tenaga); Serial.println ("Watt-Hour"); Serial.println (""); // cetak set parameter berikutnya setelah penundaan garis kosong (2000); Untuk LCD: Untuk paparan LCD, anda harus terlebih dahulu mengimport perpustakaan "LiquidCrystal" dalam kod. Untuk mengetahui lebih lanjut mengenai perpustakaan LequidCrystal klik di sini Untuk tutorial LCD klik di sini Kod berikut adalah format untuk dipaparkan di LCD semua pengiraan untuk kuasa dan tenaga #include lcd (8, 7, 6, 5, 4, 3, 2); int backLight = 9; kekosongan persediaan () {pinMode (backLight, OUTPUT); // tetapkan pin 9 sebagai output analogWrite (backLight, 150); // mengawal intensiti lampu latar 0-254 lcd.begin (16, 2); // lajur, baris. saiz paparan lcd.clear (); // kosongkan skrin} gelung kosong () {lcd.setCursor (16, 1); // tetapkan kursor di luar jumlah paparan lcd.print (""); // cetak kelewatan watak kosong (600); ////////////////////////////////////////// kuasa cetak dan tenaga ke LCD / /////////////////////////////////////////////// lcd.setCursor (1, 0); // tetapkan kursor pada lcd.print 1 baris dan baris pertama (watt); lcd.print ("W"); lcd.print (voltan); lcd.print ("V"); lcd.setCursor (1, 1); // tetapkan kursor pada lcd.print (tenaga) baris pertama dan baris ke-2; lcd.print ("WH"); lcd.print (amp); lcd.print ("A"); }
Langkah 8: Memuat naik data ke Xively.com
Rujuk tangkapan skrin di atas untuk keadaan lebih baik. Untuk memuat naik data ke xively.com pustaka berikut akan dimuat terlebih dahulu HttpClient: klik di siniXively: klik di siniSPI: Import dari arduino IDE (lakaran -> Import perpustakaan…..) Ethernet: Import dari arduino IDE ((lakaran -> Import perpustakaan…..) Buka akaun dengan https://xively.com (sebelumnya pachube.com dan cosm.com) Daftar untuk akaun pembangun percuma di
Pilih nama pengguna, kata laluan, tetapkan alamat anda dan zon waktu dan lain-lain. Anda akan menerima e-mel pengesahan;
kemudian klik pautan pengaktifan untuk mengaktifkan akaun anda. Setelah berjaya membuka akaun, anda akan dialihkan ke halaman peranti Pembangunan
- Klik pada + Tambah kotak Peranti
- Berikan nama pada peranti dan perihalan anda (mis. PEMANTAUAN TENAGA) ·
- Pilih data peribadi atau awam (saya pilih peribadi) ·
- Klik pada Tambah Peranti
Setelah menambahkan peranti anda dialihkan ke halaman baru di mana terdapat banyak maklumat penting
- ID Produk, Rahsia Produk, Nombor Siri, Kod Pengaktifan ·
- Feed ID, FeedURL, API End Point (ID Feed digunakan dalam kod ARDUINO)
- Tambahkan Saluran (Pilih TENAGA dan KUASA, tetapi anda boleh memilih mengikut pilihan anda) Berikan unit dan simbol untuk parameter ·
- Tambahkan lokasi anda ·
- Kunci API (digunakan dalam kod ARDUINO, elakkan untuk berkongsi nombor ini) ·
- Pencetus (halaman ping aweb ketika peristiwa berlaku, seperti ketika penggunaan tenaga melebihi had tertentu)
Langkah 9: Kod Xively dan ARDUINO
Di sini saya melampirkan kod lengkap (versi beta) untuk meter tenaga tidak termasuk data kad SD yang dilampirkan secara berasingan pada langkah seterusnya. / ** Muat naik data pemantauan tenaga ke xively ** / #include #include #include #include #define API_KEY "xxxxxxxx" // Masukkan kunci API Xively anda #define FEED_ID xxxxxxxxx // Masukkan ID suapan XIVE anda // alamat MAC untuk anda Bait perisai Ethernet mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Pin analog yang kami pantau (0 dan 1 digunakan oleh perisai Ethernet) int sensorPin = 2; LastConnectionTime long unsigned = 0; // kali terakhir kami berhubung dengan Cosm const sambungan panjang yang tidak ditandatanganiInterval = 15000; // kelewatan antara menyambung ke Cosm dalam milisaat // Memulakan perpustakaan Cosm // Tentukan rentetan untuk ID sensor aliran data kami sensor = "POWER"; sensor charId2 = "TENAGA"; Strim data XivelyDatastream = {XivelyDatastream (sensorId, strlen (sensorId), DATASTREAM_FLOAT), XivelyDatastream (sensorId2, strlen (sensorId2), DATASTREAM_FLOAT),}; // Bungkus aliran data ke dalam suapan XivelyFeed suapan (FEED_ID, aliran data, 2 / * bilangan aliran data * /); Pelanggan EthernetClient; XivelyClient xivelyclient (pelanggan); batal persediaan () {Serial.begin (9600); Serial.println ("Memulakan rangkaian"); sementara (Ethernet.begin (mac)! = 1) {Serial.println ("Ralat mendapatkan alamat IP melalui DHCP, mencuba lagi …"); kelewatan (15000); } Serial.println ("Rangkaian dimulakan"); Bersiri.println (); } gelung void () {if (millis () - lastConnectionTime> connectionInterval) {sendData (); // hantar data ke getData xively (); // baca kembali aliran data dari xively lastConnectionTime = millis (); // kemas kini masa sambungan sehingga kami menunggu sebelum menyambung lagi}} batal sendData () {int sensor1 = watt; int sensor2 = tenaga; aliran data [0].setFloat (sensor1); // aliran data nilai kuasa [1].setFloat (sensor2); // nilai tenaga Serial.print ("Read power"); Serial.println (aliran data [0].getFloat ()); Serial.print ("Baca tenaga"); Serial.println (aliran data [1].getFloat ()); Serial.println ("Memuat naik ke Xively"); int ret = xivelyclient.put (umpan, API_KEY); Serial.print ("PUT return code:"); Bersiri.println (ret); Bersiri.println (); } // dapatkan nilai aliran data dari xively, mencetak nilai yang kami terima getData tidak sah () {Serial.println ("Membaca data dari Xively"); int ret = xivelyclient.get (suapan, API_KEY); Serial.print ("DAPATKAN kod pengembalian:"); Bersiri.println (ret); jika (ret> 0) {Serial.print ("Datastream adalah:"); Serial.println (suapan [0]); Serial.print ("Nilai kuasa adalah:"); Serial.println (feed [0].getFloat ()); Serial.print ("Datastream adalah:"); Serial.println (suapan [1]); Serial.print ("Nilai tenaga adalah:"); Serial.println (feed [1].getFloat ()); } Bersiri.println ();
Langkah 10: Log masuk Data dalam Kad SD
Untuk menyimpan data dalam kad SD anda perlu mengimport perpustakaan SD Untuk tutorial klik di sini Untuk mengetahui lebih lanjut mengenai perpustakaan SD klik di sini Kod untuk menyimpan data ke kad SD ditulis secara berasingan kerana saya tidak mempunyai memori yang mencukupi di ARDUINO UNO saya selepas menulis kod untuk paparan LCD dan memuat naik data xively.com. Tetapi saya berusaha memperbaiki kod versi beta sehingga satu kod boleh mengandungi semua ciri (paparan LCD, muat naik data Xively dan penyimpanan data dalam kad SD). Kod untuk log data dilampirkan di bawah. Sekiranya ada yang menulis kod yang lebih baik dengan mengubah kod saya, sila kongsi dengan saya. Ini adalah arahan teknikal pertama saya, Sekiranya ada yang salah, sila beri komen.. supaya saya dapat memperbaiki diri. Sekiranya anda menemui bidang penambahbaikan dalam projek ini, sila komen atau pesan saya, Jadi projek itu akan lebih hebat. Saya fikir ia akan bermanfaat untuk orang lain dan juga untuk saya.
Hadiah Ketiga dalam Peraduan Litar 123D
Disyorkan:
DIY Multifungsi Energy Meter V2.0: 12 Langkah (dengan Gambar)
DIY Multifungsi Energy Meter V2.0: Dalam Instructable ini, saya akan menunjukkan kepada anda cara membuat Meter Tenaga Multifungsi berasaskan Wemos (ESP8266). Meter kecil ini adalah peranti yang sangat berguna yang memantau voltan, arus, kuasa, tenaga, dan kapasiti. Selain itu, ia juga memantau ambi
DIY Arduino Multifungsi Energy Meter V1.0: 13 Langkah (dengan Gambar)
DIY Arduino Multifunction Energy Meter V1.0: Dalam Instructable ini, saya akan menunjukkan kepada anda bagaimana membuat Arduino Multifunction Energy Meter. Meter kecil ini adalah alat yang sangat berguna yang memaparkan maklumat penting mengenai parameter elektrik. Peranti ini dapat mengukur 6 parametrik elektrik yang berguna
Voltan Wifi pelbagai Meter & Meter Semasa: 11 Langkah (dengan Gambar)
Voltan & Meter Arus Wifi berbilang saluran: Semasa membuat papan roti, seseorang sering perlu memantau bahagian litar yang berlainan sekaligus. Untuk mengelakkan rasa sakit kerana melekatkan probe multimeter dari satu tempat ke tempat lain, saya ingin merancang meter voltan dan arus pelbagai saluran. Papan Ina260
Arduino Energy Meter - V2.0: 12 Langkah (dengan Gambar)
Arduino Energy Meter - V2.0: Halo kawan, selamat datang kembali setelah berehat panjang. Sebelumnya saya telah menghantar Instructables pada Arduino Energy Meter yang kebanyakannya dirancang untuk memantau daya dari panel solar (DC Power) di kampung saya. Ia menjadi sangat popular di internet, banyak
Arduino DIY Light Meter Dengan Sensor BH1750: 6 Langkah (dengan Gambar)
Arduino DIY Light Meter Dengan BH1750 Sensor: Dalam Instructable ini saya akan menunjukkan kepada anda cara membina Light meter dengan paparan LCD Nokia 5110 yang besar menggunakan Arduino. Membangun Light Meter adalah pengalaman pembelajaran yang hebat. Apabila anda selesai membina projek ini, anda akan mempunyai pemahaman yang lebih baik