- Memilih Komponen yang Tepat untuk Monitor Tenaga Suria yang Diaktifkan IoT
- Diagram Litar untuk Pemantauan Tenaga Suria berasaskan IoT
- Menyiapkan ThingSpeak
- Kod Arduino untuk Pemantauan Tenaga Suria menggunakan ESP32
- Data Pengujian dan Pemantauan
Di bidang tenaga boleh diperbaharui, tenaga suria berada di barisan hadapan, kerana menghasilkan tenaga dengan menggunakan tenaga matahari adalah kaedah tenaga boleh diperbaharui yang paling mudah dan boleh dikomersialkan. Bercakap mengenai panel suria, daya output output panel suria perlu dipantau untuk mendapatkan output daya optimum dari panel. Inilah sebabnya mengapa sistem pemantauan masa nyata diperlukan. Di loji tenaga suria yang besar, ia juga dapat digunakan untuk memantau output daya dari setiap panel yang membantu mengenal pasti penumpukan debu. Ia juga mencegah sebarang keadaan kerosakan semasa operasi. Dalam beberapa artikel sebelumnya, kami telah membina beberapa projek berkaitan tenaga suria seperti pengecas telefon bimbit bertenaga suria dan litar penyongsang solar, dll. Anda boleh menyemaknya jika anda mencari lebih banyak projek mengenai tenaga suria.
Dalam projek ini, kami akan membuat Sistem Pemantauan Tenaga Suria berasaskan IoT dengan memasukkan teknik pengisian bateri berasaskan MPPT (Maximum Power Point Tracker), yang akan membantu mengurangkan masa pengisian dan meningkatkan kecekapan. Kami juga akan mengukur suhu panel, voltan keluaran, dan arus untuk meningkatkan aspek keselamatan litar. Akhirnya, untuk mengatasinya, kami akan menggunakan perkhidmatan awan ThingSpeak untuk memantau data output dari mana saja di seluruh dunia. Perhatikan bahawa projek ini adalah kesinambungan dari Projek Pengawal Caj Solar MPPT yang kami bina sebelumnya. Di sini, kita akan memantau voltan output, arus, dan kuasa panel menggunakan papan pengembangan ESP32 IoT.
Memilih Komponen yang Tepat untuk Monitor Tenaga Suria yang Diaktifkan IoT
Dengan monitor suria, sangat mudah untuk memantau dan mengesan kerosakan pada sistem suria mana pun. Inilah sebabnya mengapa pemilihan komponen menjadi bahagian yang sangat penting ketika merancang sistem sedemikian. Diberikan di bawah adalah senarai bahagian yang kami gunakan.
- Papan dev ESP32
- Litar MPPT (boleh menjadi litar solar)
- Perintang shunt (contohnya 1 Ohm 1 watt - sesuai untuk arus 1A)
- Bateri litium (disukai 7.4v).
- Sambungan Wi-Fi aktif
- Sensor suhu untuk panel solar
- Litar pembahagi voltan (lihat keterangan)
Papan Dev Esp32:
Untuk aplikasi berkemampuan IoT, adalah penting untuk memilih jenis papan pengembangan jenis yang sesuai yang dapat memproses data dari pin analognya dan mengirim data melalui apa-apa jenis protokol sambungan seperti Wi-Fi atau ke awan pelayan. Kami memilih ESP32 secara khusus kerana ia adalah mikrokontroler kos rendah dengan banyak ciri. Ia juga mempunyai radio Wi-Fi bawaan di mana kita dapat menyambung ke internet dengan mudah.
Litar Suria:
Litar pengisian solar adalah litar yang mendapat voltan lebih tinggi dari panel solar dan mengubahnya menjadi voltan pengecasan sehingga dapat mengecas bateri dengan cekap. Untuk projek ini, kami akan menggunakan Papan Litar Pengawal Beban MPPT berasaskan LT3562 yang telah kami buat di salah satu projek kami sebelumnya. Tetapi jika anda ingin menanamkan pemantauan IoT ini, anda boleh menggunakan jenis litar solar. Kami memilih papan ini kerana litar ini dilengkapi dengan Maximum Power Point Tracking (MPPT) yang bermanfaat untuk projek panel solar berkuasa rendah. Ini adalah kaedah yang berkesan untuk mengecas bateri litium kecil dari panel solar.
Perintang Shunt:
Mana-mana perintang mengikut undang-undang ohm yang bermaksud jika sejumlah arus mengalir melalui perintang, sejumlah penurunan voltan akan muncul. Perintang shunt bukanlah pengecualian dari ini dan ia digunakan secara khusus untuk mengukur aliran arus. Namun, bergantung pada arus arus nominal melalui panel suria, pilih perintang shunt yang akan menghasilkan jumlah voltan yang mencukupi yang dapat diukur oleh unit mikrokontroler. Tetapi, pada masa yang sama, watt perintang juga merupakan perkara penting. Pemilihan watt perintang shunt juga penting.
Penurunan voltan dapat dikira menggunakan formula yang diberikan di bawah. Ini dikenali sebagai undang-undang Ohm-
V = I x R
V adalah voltan yang akan dihasilkan semasa 'I' iaitu jumlah arus yang mengalir melalui jumlah perintang 'R'. Sebagai contoh, perintang 1 ohm akan menghasilkan penurunan voltan 1V apabila arus 1A mengalir melaluinya.
Untuk watt perintang, formula yang diberikan di bawah boleh digunakan-
P = I 2 R
Di mana saya adalah arus arus maksimum, dan R adalah nilai perintang. Untuk arus 1A dengan perintang 1 Ohms, 1 watt mencukupi untuk pelesapan kuasa. Walau bagaimanapun, ini berguna untuk projek panel suria kecil tetapi sama sekali tidak sesuai untuk aplikasi berkaitan grid solar. Dalam kes sedemikian, teknik pengukuran arus yang tidak invasif sebenarnya adalah apa yang perlu digunakan. Dalam kes sedemikian, aliran arus dapat diukur dengan tepat di mana jumlah arus yang sangat rendah, dan juga jumlah arus yang sangat tinggi, dapat diukur.
Bateri litium:
Pemilihan bateri litium adalah bahagian penting dari setiap projek yang melibatkan panel solar. Kerana unit mikrokontroler yang selalu aktif dan sentiasa memeriksa dan menyerahkan data memerlukan sekurang-kurangnya seratus milimeter arus untuk operasi yang stabil.
Kapasiti bateri mestilah sesuatu yang dapat memberi kuasa kepada mikrokontroler sekurang-kurangnya 4-5 hari ketika matahari tidak bersinar kerana monsun. Juga penting bahawa arus pengecasan mestilah lebih banyak daripada arus beban dari perspektif bateri. Amat tidak biasa jika seseorang menghubungkan 100mA muatan dengan bateri dan memberikan arus cas, yang kurang dari itu. Untuk berada di sisi yang lebih selamat, kita harus mempunyai arus pengecasan sekurang-kurangnya 5 kali lebih banyak daripada arus beban.
Sebaliknya, voltan bateri perlu lebih tinggi daripada voltan input pengatur voltan biasa yang diperlukan untuk mikrokontroler. Sebagai contoh, bateri litium 7.4V dapat disambungkan di kedua-dua pengatur voltan linear 3.3V dan 5.0V (kerana pengatur linier memerlukan voltan putus yang lebih tinggi daripada LDO dan Switching.)
Dalam projek kami, kami menggunakan bateri 4000mAH dengan penarafan 7.4V. Kami menggunakan pengatur 5.0V yang memberikan output arus dan voltan yang mencukupi untuk ESP32.
Pembahagi Voltan:
Pembahagi voltan adalah bahagian penting dalam pengukuran voltan panel Suria. Seseorang harus memilih pembahagi voltan yang akan membahagikan voltan mengikut input voltan I / O mikrokontroler.
Pilih perintang di atas sedemikian rupa sehingga voltan keluaran pembahagi voltan tidak boleh melebihi voltan I / O maksim mikrokontroler (3.3V untuk ESP32). Walau bagaimanapun, disarankan untuk menggunakan potensiometer kerana akan memberikan fleksibiliti untuk memilih mana-mana panel suria dengan voltan yang lebih tinggi atau rendah dan dapat mengatur voltan dengan mudah menggunakan multimeter.
Dalam kes kami, kami mempunyai potensiometer dalam litar papan MPPT yang bertindak sebagai pembahagi voltan. Kami menetapkan pembahagi voltan dengan faktor pembahagian 6V. Kami menghubungkan dua multi-meter, satu di input dan satu lagi di output periuk, dan menetapkan nilai bahawa apabila voltan input 18V output akan menjadi 3V kerana voltan output nominal panel suria adalah 18V.
Sensor Suhu untuk Panel Suria:
Output kuasa panel suria mempunyai hubungan langsung dengan suhu panel solar. Kenapa? Kerana sebagai suhu panel suria mulai meningkat arus keluaran dari panel suria meningkat secara eksponen sementara output voltan mula berkurang secara linear.
Sesuai formula daya, Watt sama dengan voltan kali arus (W = V x A), penurunan voltan keluaran juga menurunkan daya output panel suria walaupun setelah kenaikan arus. Sekarang, soalan seterusnya yang terlintas di fikiran kita adalah, bagaimana mengukur suhu suria? Ia agak menarik kerana panel suria pada umumnya terdedah kepada persekitaran panas kerana terkena cahaya matahari langsung dan dengan alasan yang jelas. Kaedah terbaik untuk mengukur suhu panel suria adalah dengan menggunakan sensor suhu permukaan rata. Juga disarankan untuk menggunakan termokopel jenis K yang diletakkan secara langsung di panel solar.
Untuk aplikasi kami, kami telah menggunakan modul sensor suhu berdasarkan termistor, yang ditunjukkan di bawah.
Diagram Litar untuk Pemantauan Tenaga Suria berasaskan IoT
Gambarajah litar lengkap untuk IoT Enabled Solar Power Monitor ditunjukkan di bawah. Skematiknya mudah. Papan tanda titik merah adalah papan MPPT yang kami gunakan untuk projek ini.
Menyiapkan ThingSpeak
Buat akaun dengan ThingSpeak dan pergi ke pilihan "saluran saya", kemudian klik pada Saluran Baru.
Buat saluran baru dengan nama medan.
Sekarang setelah menetapkan bidang, pergi ke medan Kunci API di mana Tulis Kunci API tersedia. Kunci ini perlu diberikan dalam kod dan juga ID saluran.
Alamat ThingSpeak boleh didapati di halaman yang sama.
Dengan langkah di atas, anda boleh menyiapkan ThingSpeak dengan sangat mudah. Sekiranya anda ingin mengetahui lebih lanjut mengenai ThingSpeak dan proses penyediaannya, anda boleh menyemak artikel sebelumnya mengenai topik tersebut.
Kod Arduino untuk Pemantauan Tenaga Suria menggunakan ESP32
Kod pemantauan tenaga suria ESP32 yang lengkap boleh didapati di bahagian bawah halaman ini. Kod bermula dengan menentukan SSID, Kata Laluan anda, dan beberapa parameter tetap lain seperti yang ditunjukkan di bawah.
// tentukan WiFi SSID & PWD untuk uplink. #define WLAN_SSID "xxxx" #define WLAN_PASS "xxxxxxxxxx"
// rintangan pada 25 darjah C #tentukan THERMISTORNOMINAL 10000 // temp. untuk rintangan nominal (hampir selalu 25 C) #define TEMPERATURENOMINAL 25 // Pekali beta termistor (biasanya 3000-4000) #define BCOEFFICIENT 3950 // nilai perintang 'lain' #define SERIESRESISTOR 10000
Ohm nominal termistor disediakan pada suhu nominal. Tetapkan nilai ini bergantung pada lembar data termistor. Masukkan nilai pekali dan perintang siri termistor.
// tentukan Analog untuk Arus dan Voltan tetap int curr_an_pin = 35; const int volt_an_pin = 34; const int ntc_temp_an_pin = 33;
PIN ditentukan di sini.
#define thingSpeakAddress "xxxxxxxxx" #define channelID xxxxx #define writeFeedAPIKey "xxxxxxx" #define readFeedAPIKey "xxxxxxx" #define readFieldAPIKey "xxxxxxxx" #define readStatusAPIKey "xxxxxxx"
Masukkan perkara ituSpeakAddress, channelID, Write Feed API Key. Perkara-perkara selebihnya tidak diperlukan tetapi masih berguna sekiranya data perlu diterima dari web.
batal persediaan () { // masukkan kod persediaan anda di sini, untuk dijalankan sekali: // tetapkan port bersiri pada 115200 Serial.begin (115200); // Memulakan kelewatan bersiri (1000); WiFi.mode (WIFI_STA); ThingSpeak.begin (pelanggan); // Initialize ThingSpeak // todo: buat tugas untuk membaca pin untuk mendapatkan arus & voltan dan mengira watt dan suhu panel solar xTaskCreate ( wifi_task, / * Fungsi tugas. * / "Wifi_task", / * String dengan nama tugas. * / 1024 * 2, / * Ukuran tumpukan dalam bait. * / NULL, / * Parameter dilewatkan sebagai input tugas * / 5, / * Keutamaan tugas. * / NULL); / * Pemegang tugas. * / Serial.print ("Pembacaan Data."); }
Dalam kod di atas, pelayan ThingSpeak diinisialisasi dan tugas dibuat yang akan mendapatkan data yang berkaitan dengan panel suria.
Dalam gelung utama, arus dan voltan suria dirasakan melalui pin analog dan rata-rata dilakukan.
terapung solar_curr_adc_val = 0; terapung solar_volt_adc_val = 0; untuk (i = 0; i <NUMSAMPLES; i ++) { curr_samples = analogRead (curr_an_pin); volt_samples = analogRead (volt_an_pin); temp_samples = analogRead (ntc_temp_an_pin); kelewatan (10); } // rata-rata semua sampel keluar mengambang curr_avg = 0; terapung volt_avg = 0; terapung temp_avg = 0; untuk (i = 0; i <NUMSAMPLES; i ++) { curr_avg + = curr_samples; volt_avg + = volt_sampel; temp_avg + = temp_sampel; } curr_avg / = NOMBOR; volt_avg / = NOMBORAN; temp_avg / = NOMBORAN; //Serial.print("ADC VALUE = "); //Serial.println(ADC_VALUE); // tukar nilai adc ke voltan untuk mendapatkan arus & voltan sebenar. float solar_curr = (curr_avg * 3.3) / (4095); float solar_volt = (volt_avg * 3.3) / (4095); // dengan menggunakan pembahagi voltan kita menurunkan voltan sebenar. // dengan sebab itu kita mengalikan voltan 6 dengan purata untuk mendapatkan voltan sebenar panel suria. solar_volt * = 6;
Voltan suria dihantar dengan mengalikan dengan 6 ketika kita membuat pembahagi voltan yang akan membahagikan voltan masukan dengan 6 kali.
Suhu dihasilkan dari termistor menggunakan formasi logaritma.
// tukar nilai ke rintangan temp_avg = 4095 / temp_avg - 1; temp_avg = SERIESRESISTOR / temp_avg; //Serial.print("Thermistor resistance "); //Serial.println(temp_avg); float steinhart; steinhart = temp_avg / THERMISTORNOMINAL; // (R / Ro) steinhart = log (steinhart); // ln (R / Ro) steinhart / = BCOEFFICIENT; // 1 / B * ln (R / Ro) steinhart + = 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1 / To) steinhart = 1.0 / steinhart; // Balik steinhart - = 273.15; // tukar suhu mutlak menjadi C
Data dibaca setiap 15 saat.
kelewatan (1000); kira ++; Cetakan bersiri ("."); jika (kiraan> = 15) { kiraan = 0; Serial.println ("============================================= ============================ "); Serial.print ("Voltan Suria ="); Serial.println (solar_volt); Serial.print ("Arus Suria ="); Serial.println (solar_curr); float solar_watt = solar_volt * solar_curr; Serial.print ("Solar Watt ="); Serial.println (solar_watt); Serial.print ("Suhu Suria ="); Serial.println (steinhart); Serial.println ("============================================= ============================ ");
Data untuk bidang masing-masing dihantar menggunakan fungsi Thing.Speak.setField (); semasa WiFi disambungkan.
jika (WiFi.status () == WL_CONNECTED) { ThingSpeak.setField (1, solar_volt); ThingSpeak.setField (2, solar_curr); ThingSpeak.setField (3, solar_watt); ThingSpeak.setField (4, steinhart); // tulis ke saluran ThingSpeak int x = ThingSpeak.writeFields (channelID, writeFeedAPIKey); if (x == 200) { Serial.println ("Kemas kini saluran berjaya."); } lain { Serial.println ("Masalah mengemas kini saluran. Kod ralat HTTP" + String (x)); } } lain { Serial.println ("\ r \ n ##################################### ####################### "); Serial.println ("Gagal mengemas kini Data ke thingSpeak Server."); Serial.println ("WiFi tidak disambungkan…"); Serial.println ("############################################# ############### \ r \ n "); } Serial.print ("Pembacaan Data."); } }
Tugas Wi-Fi yang dibuat dalam coretan kod di bawah-
void wifi_task (parameter void *) { sementara (1) { if (WiFi.status ()! = WL_CONNECTED) { Serial.print ("Mencuba untuk menyambung ke SSID:"); Serial.println (WLAN_SSID); sementara (WiFi.status ()! = WL_CONNECTED) { WiFi.begin (WLAN_SSID, WLAN_PASS); // Sambungkan ke rangkaian WPA / WPA2. Tukar baris ini jika menggunakan rangkaian terbuka atau WEP Serial.print ("."); kelewatan (5000); } Serial.println ("\ nSambungan."); Bersiri.println (); Serial.println ("WiFi disambungkan"); Serial.println ("Alamat IP:"); Serial.println (WiFi.localIP ()); } vTaskDelay (1000 / portTICK_PERIOD_MS); } vTaskDelete (NULL); }
Data Pengujian dan Pemantauan
Panel suria dihubungkan dengan litar dan diletakkan di bawah sinar matahari untuk ujian seperti gambar di bawah.
Kerja lengkap ditunjukkan dalam video di bawah. Litar kami dapat membaca voltan keluaran, arus, dan kuasa dari panel dan mengemas kini secara langsung di saluran thingspeak seperti gambar di bawah.
Seperti yang kita lihat, data 15 minit ditunjukkan dalam grafik di atas. Oleh kerana ini adalah projek operasi luar, PCB yang betul dan kotak tertutup perlu digunakan. Pagar perlu dibuat sedemikian rupa sehingga litar tetap kalis air ketika hujan. Untuk mengubah suai litar ini atau untuk membincangkan aspek selanjutnya dari projek ini, sila gunakan forum aktif Circuit Digest. Semoga anda menikmati tutorial dan mempelajari sesuatu yang berguna.