Daftar Isi:

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: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Juli
Anonim
Image
Image
METER ENERGI ARDUINO
METER ENERGI ARDUINO
METER ENERGI ARDUINO
METER ENERGI ARDUINO

[Putar Video]

Saya berasal dari desa Odisha, India di mana sering terjadi pemadaman listrik. Ini menghambat kehidupan setiap orang. Selama masa kanak-kanak saya melanjutkan studi setelah senja adalah tantangan nyata. Karena masalah ini saya merancang tata surya untuk rumah saya secara eksperimental. Saya menggunakan panel surya 10 Watt, 6V untuk menyalakan beberapa LED terang. Setelah menghadapi banyak kesulitan, proyek ini berhasil. Kemudian saya memutuskan untuk memantau tegangan, arus, daya & energi yang terlibat dalam sistem. Hal ini memunculkan ide untuk merancang ENERGY METER. Saya menggunakan ARDUINO sebagai inti dari proyek ini karena sangat mudah untuk menulis kode dalam IDE-nya dan ada banyak sekali perpustakaan open source yang tersedia di internet yang dapat digunakan sesuai dengan kebutuhan. persyaratan. Saya telah bereksperimen proyek untuk sistem tata surya dengan nilai yang sangat kecil (10Watt) tetapi ini dapat dengan mudah dimodifikasi untuk digunakan untuk sistem peringkat yang lebih tinggi.

Anda dapat menemukan semua proyek saya di:

Fitur: Pemantauan energi oleh 1. LCD display 2. melalui internet (Xively upload) 3. Data logging di kartu SD

Anda dapat melihat ARDUINO MPPT SOLAR CHARGE CONTROLLER baru saya yang dapat diinstruksikan (Versi-3.0)

Anda juga dapat melihat instruksi saya yang lain di

ARDUINO SOLAR CHARGE CONTROLLER (Versi 2.0)

ARDUINO SOLAR CHARGE CONTROLLER (Versi-1)

Langkah 1: Bagian yang Diperlukan:

Bagian yang Diperlukan
Bagian yang Diperlukan

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

3. LCD KARAKTER 16x2 (Amazon)

4. SENSOR LANCAR ACS 712 (Amazon)4. RESISTOR (10k, 330ohm) (Amazon)5. 10K POTENSIMETER (Amazon)6. KABEL JUMPER (Amazon)7. KABEL ETHERNET (Amazon)8. PAPAN ROTI (Amazon)

Langkah 2: Daya dan Energi

Daya: Daya adalah perkalian antara tegangan (volt) dan arus (Amp) P=VxI Satuan daya adalah Watt atau KWEEnergi: Energi adalah hasil kali daya (watt) dan waktu (Jam) E= Pxt Satuan Energi adalah Watt Hour atau Kilowatt Jam (kWh) Dari rumus di atas jelas bahwa untuk mengukur Energi kita membutuhkan tiga parameter 1. Tegangan 2. Arus 3. Waktu

Langkah 3: Pengukuran Tegangan

Pengukuran tegangan
Pengukuran tegangan
Pengukuran tegangan
Pengukuran tegangan
Pengukuran tegangan
Pengukuran tegangan

Tegangan diukur dengan bantuan rangkaian pembagi tegangan. Karena tegangan input pin analog ARDUINO dibatasi hingga 5V, saya merancang pembagi tegangan sedemikian rupa sehingga tegangan output darinya harus kurang dari 5V. Baterai saya digunakan untuk menyimpan daya dari panel surya diberi nilai 6v, 5.5Ah. Jadi saya harus menurunkan 6.5v ini ke tegangan yang lebih rendah dari 5V. Saya menggunakan R1=10k dan R2 =10K. Nilai R1 dan R2 bisa lebih rendah satu tetapi masalahnya adalah ketika resistansi rendah, arus yang lebih tinggi mengalir melaluinya sebagai akibatnya sejumlah besar daya (P = I^2R) hilang dalam bentuk panas. Jadi nilai resistansi yang berbeda dapat dipilih tetapi perawatan harus dilakukan untuk meminimalkan kehilangan daya di seluruh resistansi. Vout=R2/(R1+R2)*Vbat Vbat=6.5 saat terisi penuh R1=10k dan R2=10k Vout=10/(10+10)*6.5=3.25v yang lebih rendah dari 5v dan cocok untuk pin analog ARDUINOCATATAN I telah menunjukkan baterai 9 Volt di sirkuit papan telanjang hanya sebagai contoh untuk menghubungkan kabel. Tetapi baterai sebenarnya yang saya gunakan adalah baterai asam timbal 6 Volt, 5,5Ah. Kalibrasi Tegangan: Ketika baterai terisi penuh (6.5v) kita akan mendapatkan a Vout = 3.25v dan nilai yang lebih rendah untuk tegangan baterai yang lebih rendah lainnya. AEDUINO ADC mengkonversi sinyal Analog ke perkiraan digital yang sesuai. Ketika tegangan baterai 6.5v saya mendapat 3.25v dari pembagi tegangan dan sample1 = 696 di monitor serial, di mana sample1 adalah nilai ADC sesuai dengan 3.25vUntuk pemahaman yang lebih baik saya telah melampirkan simulasi real time oleh 123D.circuit untuk pengukuran tegangan Kalibrasi: 3.25v setara dengan 696 1 setara dengan 3,25/696=4.669mv Vout = (4.669*sampel1)/1000 volt Tegangan baterai aktual = (2*Vout) voltARDUINO KODE: // mengambil 150 sampel dari pembagi tegangan dengan selang waktu 2 detik dan kemudian rata-ratakan sampel data yang dikumpulkan untuk(int i=0;i<150;i++) { sample1=sample1+analogRead(A2); //membaca tegangan dari delay rangkaian pembagi (2); } sampel1=contoh1/150; tegangan=4.669*2*sampel1/1000;

Langkah 4: Pengukuran Saat Ini

Pengukuran saat ini
Pengukuran saat ini
Pengukuran saat ini
Pengukuran saat ini

Untuk pengukuran arus saya menggunakan sensor arus Hall Effect ACS 712 (20 A). Ada berbagai macam sensor ACS712 yang tersedia di pasaran, jadi pilihlah sesuai dengan kebutuhan Anda. Dalam diagram papan roti saya telah menunjukkan LED sebagai beban tetapi beban sebenarnya berbeda. PRINSIP KERJA: Efek Hall adalah produksi perbedaan tegangan (tegangan Hall) melintasi sebuah konduktor listrik, transversal ke arus listrik di konduktor dan medan magnet yang tegak lurus dengan arus. Untuk mengetahui lebih lanjut tentang sensor Hall Effect klik di sini Lembar data sensor ACS 712 ditemukan di sini Dari Lembar Data 1. ACS 712 mengukur positif dan negatif 20Amp, sesuai dengan output analog 100mV/A 2. Tidak ada arus uji melalui tegangan output VCC / 2 =5v/2=2.5VKalibrasi: Pembacaan analog menghasilkan nilai 0-1023, setara dengan 0v hingga 5v Jadi Pembacaan analog 1 = (5/1024) V =4.89mv Nilai = (4.89*Nilai Baca Analog)/ 1000 V Tetapi sesuai lembar data offset adalah 2.5V (Ketika arus nol Anda akan mendapatkan 2.5V dari output sensor) Nilai aktual = (nilai-2.5) V Arus dalam amp = nilai aktual*10 KODE ARDUINO: // mengambil 150 sampel dari sensor dengan interval 2 detik dan kemudian rata-rata data sampel yang dikumpulkan untuk(int i=0;i<150;i++) { sample2+=analogRead(A3); //membaca arus dari sensor delay(2); } sampel2=sampel2/150; val =(5.0*sampel2)/1024.0; aktualval = val-2,5; // tegangan offset adalah 2.5v amp =actualval*10;

Langkah 5: Pengukuran Waktu

Untuk pengukuran waktu tidak memerlukan perangkat keras eksternal apa pun, karena ARDUINO sendiri memiliki pengatur waktu bawaan. Fungsi milis() mengembalikan jumlah milidetik sejak papan Arduino mulai menjalankan program saat ini. KODE ARDUINO: long milisec = milis(); // menghitung waktu dalam milidetik long time=milisec/1000; // konversi milidetik ke detik

Langkah 6: Bagaimana ARDUINO Menghitung Daya dan Energi

totamps=totamps+amp; // hitung total amp avgamps=totamps/time; // rata-rata amp amphr=(avgamps*time)/3600; // amp-jam watt = tegangan*amp; // daya=tegangan*energi arus=(watt*waktu)/3600; Watt-sec kembali dikonversi ke Watt-Hr dengan membagi 1hr(3600sec) // energy=(watt*time)/(1000*3600); untuk membaca dalam kWh

Langkah 7: Keluaran Visual

Keluaran Visual
Keluaran Visual

Semua hasil dapat divisualisasikan di monitor serial atau dengan menggunakan LCD. Saya menggunakan LCD karakter 16x2 untuk menampilkan semua hasil yang diperoleh pada langkah sebelumnya. Untuk skema lihat rangkaian papan roti yang ditunjukkan di atas. Hubungkan LCD dengan ARDUINO seperti yang diberikan di bawah ini: LCD -> Arduino 1. VSS -> Arduino GND 2. VDD - > Arduino +5v 3. VO -> Pin Arduino GND + Resistor atau Potensiometer 4. RS -> Pin Arduino 8 5. RW -> Pin Arduino 7 6. E -> Pin Arduino 6 7. D0 -> Arduino - Tidak Terhubung 8 D1 -> Arduino - Tidak Terhubung 9. D2 -> Arduino - Tidak Terhubung 10. D3 -> Arduino - Tidak Terhubung 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 + Resistor (Backlight power) 16. K -> Arduino GND (Backlight ground) KODE ARDUINO: Untuk Serial Monitor:

Serial.print("TEGANGAN: "); Serial.print(tegangan); Serial.println("Volt"); Serial.print("SAAT INI:"); Serial.print(amp); Serial.println("Amp"); Serial.print("DAYA:"); Serial.print(watt); Serial.println("Watt"); Serial.print("ENERGI YANG DIKONSUMSI:"); Serial.print(energi); Serial.println("Watt-Jam"); Serial.println(""); // mencetak set parameter berikutnya setelah penundaan baris kosong(2000);Untuk LCD: Untuk tampilan LCD, Anda harus terlebih dahulu mengimpor pustaka "LiquidCrystal" ke dalam kode. Untuk mengetahui lebih lanjut tentang perpustakaan LequidCrystal klik di sini Untuk tutorial LCD klik di sini Kode berikut adalah format untuk menampilkan di LCD semua perhitungan daya dan energi #termasuk lcd(8, 7, 6, 5, 4, 3, 2); int lampu latar = 9; void setup() { pinMode(lampu latar, OUTPUT); //set pin 9 sebagai output analogWrite(backLight, 150); //mengontrol intensitas cahaya latar 0-254 lcd.begin(16, 2); // kolom baris. ukuran tampilan lcd.clear(); // bersihkan layar } void loop() { lcd.setCursor(16, 1); // mengatur kursor di luar jumlah tampilan lcd.print(" "); // cetak penundaan karakter kosong(600); ////////////////////////////////////////mencetak daya dan energi ke LCD/ ///////////////////////////////////////////// lcd.setCursor (1, 0); // atur kursor pada kolom pertama dan baris pertama lcd.print(watt); lcd.print("L"); lcd.print(tegangan); lcd.print("V"); lcd.setCursor(1, 1); // atur kursor pada kolom ke-1 dan baris ke-2 lcd.print(energi); lcd.print("WH"); lcd.print(amp); lcd.print("A"); }

Langkah 8: Mengunggah Data ke Xively.com

Mengunggah Data ke Xively.com
Mengunggah Data ke Xively.com
Mengunggah Data ke Xively.com
Mengunggah Data ke Xively.com
Mengunggah Data ke Xively.com
Mengunggah Data ke Xively.com

Lihat tangkapan layar di atas untuk pemahaman yang lebih baik. Untuk mengunggah data ke xively.com, perpustakaan berikut harus diunduh terlebih dahulu HttpClient: klik di siniXively: klik di siniSPI: Impor dari arduino IDE (sketsa -> Impor pustaka…..)Ethernet: Impor dari arduino IDE ((sketsa -> Impor perpustakaan…..) Buka akun dengan https://xively.com (sebelumnya pachube.com dan cosm.com)Daftar untuk mendapatkan akun pengembang gratis di

Pilih nama pengguna, kata sandi, atur alamat dan zona waktu Anda, dll. Anda akan menerima email konfirmasi;

lalu klik tautan aktivasi untuk mengaktifkan akun Anda. Setelah berhasil membuka akun Anda akan dialihkan ke halaman perangkat Pengembangan

  • Klik pada + Tambahkan kotak Perangkat
  • Beri nama perangkat Anda dan deskripsinya (mis. PEMANTAUAN ENERGI)·
  • Pilih data pribadi atau publik (saya pilih pribadi)·
  • Klik Tambah Perangkat

Setelah menambahkan perangkat, Anda dialihkan ke halaman baru di mana banyak informasi penting ada di sana

  • ID Produk, Rahasia Produk, Nomor Seri, Kode Aktivasi·
  • Feed ID, FeedURL, API End Point (Feed ID digunakan dalam kode ARDUINO)
  • Tambah Saluran (IPilih ENERGY dan POWER, tetapi Anda dapat memilih sesuai dengan pilihan Anda)Berikan satuan dan simbol untuk parameter·
  • Tambahkan lokasi Anda ·
  • Kunci API (digunakan dalam kode ARDUINO, hindari untuk membagikan nomor ini)·
  • Pemicu (ping halaman web ketika suatu peristiwa terjadi, seperti ketika konsumsi energi melebihi batas tertentu)

Langkah 9: Xively dan Kode ARDUINO

Di sini saya melampirkan kode lengkap (versi beta) untuk pengukur energi tidak termasuk pencatatan data kartu SD yang dilampirkan secara terpisah pada langkah berikutnya. /** Unggah data pemantauan energi ke xively **/ #include #include #include #include #define API_KEY "xxxxxxxx" // Masukkan kunci API Xively Anda #define FEED_ID xxxxxxxxx // Masukkan ID umpan Xively Anda // alamat MAC untuk Ethernet shield byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Pin analog yang kita pantau (0 dan 1 digunakan oleh perisai Ethernet) int sensorPin = 2; unsigned long lastConnectionTime = 0; // terakhir kali kita terhubung ke Cosm const unsigned long connectionInterval = 15000; // penundaan antara menghubungkan ke Cosm dalam milidetik // Inisialisasi perpustakaan Cosm // Tentukan string untuk ID aliran data kami char sensorId = "POWER"; char sensorId2 = "ENERGI"; Aliran data XivelyDatastream = { XivelyDatastream(sensorId, strlen(sensorId), DATASTREAM_FLOAT), XivelyDatastream(sensorId2, strlen(sensorId2), DATASTREAM_FLOAT), DATASTREAM_FLOAT), }; // Bungkus datastream menjadi feed XivelyFeed feed(FEED_ID, datastreams, 2 /* number of datastreams */); klien EthernetClient; XivelyClient xivelyclient(klien); void setup() { Serial.begin(9600); Serial.println("Inisialisasi jaringan"); while (Ethernet.begin(mac) != 1) { Serial.println("Error mendapatkan alamat IP melalui DHCP, coba lagi…"); penundaan (15000); } Serial.println("Jaringan diinisialisasi"); Serial.println(); } void loop() { if (millis() - lastConnectionTime > connectionInterval) { sendData(); // kirim data ke getData(); // membaca aliran data kembali dari xively lastConnectionTime = milis(); // perbarui waktu koneksi jadi kami menunggu sebelum menghubungkan lagi } } void sendData() { int sensor1 = watt; int sensor2 = energi; datastreams[0].setFloat(sensor1); // aliran data nilai daya[1].setFloat(sensor2); // nilai energi Serial.print("Baca daya"); Serial.println(datastreams[0].getFloat()); Serial.print("Baca energi"); Serial.println(aliran data[1].getFloat()); Serial.println("Mengunggah ke Xively"); int ret = xivelyclient.put(feed, API_KEY); Serial.print("PUT kembalikan kode: "); Serial.println(ret); Serial.println(); } // mendapatkan nilai datastream dari xively, mencetak nilai yang kita terima void getData() { Serial.println("Membaca data dari Xively"); int ret = xivelyclient.get(feed, API_KEY); Serial.print("DAPATKAN kode pengembalian: "); Serial.println(ret); if (ret > 0) { Serial.print("Datastream adalah: "); Serial.println(feed[0]); Serial.print("Nilai daya adalah: "); Serial.println(feed[0].getFloat()); Serial.print("Datastream adalah: "); Serial.println(umpan[1]); Serial.print("Nilai energi adalah: "); Serial.println(feed[1].getFloat()); } Serial.println();

Langkah 10: Data Logging di SD Card

Untuk penyimpanan data dalam kartu SD Anda harus mengimpor perpustakaan SDUntuk tutorial klik di siniUntuk mengetahui lebih lanjut tentang perpustakaan SD klik di siniKode untuk menyimpan data ke dalam kartu SD ditulis secara terpisah karena saya tidak memiliki cukup memori di ARDUINO UNO saya setelahnya penulisan kode untuk tampilan LCD dan pengunggahan data xively.com. Tetapi saya mencoba untuk meningkatkan kode versi beta sehingga satu kode dapat berisi semua fitur (tampilan LCD, pengunggahan data Xively dan penyimpanan data dalam kartu SD). Kode untuk pencatatan data terlampir di bawah. Jika ada yang menulis a kode yang lebih baik dengan memodifikasi kode saya, silakan bagikan dengan saya. Ini adalah instruksi teknis pertama saya, Jika ada yang menemukan kesalahan di dalamnya, jangan ragu untuk berkomentar.. sehingga saya dapat meningkatkan diri. Jika Anda menemukan area perbaikan dalam proyek ini, silakan komentar atau pesan saya, Jadi proyek ini akan lebih kuat. Saya pikir ini akan bermanfaat bagi orang lain dan juga untuk saya.

Kontes Sirkuit 123D
Kontes Sirkuit 123D
Kontes Sirkuit 123D
Kontes Sirkuit 123D

Hadiah Ketiga dalam Kontes Sirkuit 123D

Direkomendasikan: