Isi kandungan:

ARDUINO ENERGY METER: 10 Langkah (dengan Gambar)
ARDUINO ENERGY METER: 10 Langkah (dengan Gambar)

Video: ARDUINO ENERGY METER: 10 Langkah (dengan Gambar)

Video: ARDUINO ENERGY METER: 10 Langkah (dengan Gambar)
Video: Amazing arduino project 2024, Julai
Anonim
Image
Image
METER TENAGA ARDUINO
METER TENAGA ARDUINO
METER TENAGA ARDUINO
METER TENAGA ARDUINO

[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:

Bahagian yang Diperlukan
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

Pengukuran Voltan
Pengukuran Voltan
Pengukuran Voltan
Pengukuran Voltan
Pengukuran Voltan
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

Pengukuran Semasa
Pengukuran Semasa
Pengukuran Semasa
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

Keluaran Visual
Keluaran 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

Memuat naik data ke Xively.com
Memuat naik data ke Xively.com
Memuat naik data ke Xively.com
Memuat naik data ke Xively.com
Memuat naik data ke Xively.com
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.

Peraduan Litar 123D
Peraduan Litar 123D
Peraduan Litar 123D
Peraduan Litar 123D

Hadiah Ketiga dalam Peraduan Litar 123D

Disyorkan: