- Memilih Komponen yang Tepat untuk Monitor Tenaga Surya yang Mengaktifkan IoT
- Diagram Sirkuit untuk Pemantauan Tenaga Surya berbasis IoT
- Menyiapkan ThingSpeak
- Kode Arduino untuk Pemantauan Tenaga Surya menggunakan ESP32
- Pengujian dan Pemantauan Data
Di bidang energi terbarukan, energi matahari berada di garis depan, karena menghasilkan energi dengan menggunakan tenaga matahari adalah cara termudah dan dapat digunakan secara komersial untuk energi terbarukan. Berbicara mengenai panel surya, daya keluaran dari suatu keluaran panel surya perlu dimonitor agar mendapatkan keluaran daya yang optimal dari panel tersebut. Inilah mengapa sistem pemantauan waktu nyata menjadi diperlukan. Di pembangkit listrik tenaga surya besar, ini juga dapat digunakan untuk memantau keluaran daya dari setiap panel yang membantu mengidentifikasi penumpukan debu. Ini juga mencegah kondisi kesalahan apa pun selama waktu operasi. Dalam beberapa artikel kami sebelumnya, kami telah membangun beberapa proyek yang berhubungan dengan energi matahari seperti pengisi daya ponsel bertenaga surya dan rangkaian inverter surya, dll. Anda dapat memeriksanya jika Anda mencari proyek lain tentang tenaga surya.
Dalam proyek ini, kami akan membuat Sistem Pemantauan Tenaga Surya berbasis IoT dengan menggabungkan teknik pengisian baterai berbasis MPPT (Maximum Power Point Tracker), yang akan membantu mengurangi waktu pengisian dan meningkatkan efisiensi. Selain itu, kami akan mengukur suhu panel, tegangan keluaran, dan arus untuk meningkatkan aspek keamanan rangkaian. Terakhir, yang terpenting, kami akan menggunakan layanan cloud ThingSpeak untuk memantau data keluaran dari mana saja di seluruh dunia. Perhatikan bahwa proyek ini merupakan kelanjutan dari Proyek Pengontrol Muatan Surya MPPT yang kami bangun sebelumnya. Di sini, kami akan memantau tegangan output, arus, dan daya panel menggunakan papan pengembangan ESP32 IoT.
Memilih Komponen yang Tepat untuk Monitor Tenaga Surya yang Mengaktifkan IoT
Dengan monitor tenaga surya, menjadi sangat mudah untuk memantau dan mendeteksi kesalahan di tata surya mana pun. Inilah mengapa pemilihan komponen menjadi bagian yang sangat penting dalam mendesain sistem seperti itu. Diberikan di bawah ini adalah daftar bagian yang kami gunakan.
- Papan pengembang ESP32
- Sirkuit MPPT (bisa sirkuit surya apa saja)
- Sebuah resistor shunt (misalnya 1 Ohm 1 watt - cocok untuk arus hingga 1A)
- Baterai lithium (lebih disukai 7.4v).
- Koneksi Wi-Fi aktif
- Sensor suhu untuk panel surya
- Sirkuit pembagi tegangan (lihat deskripsi)
Papan Pengembang Esp32:
Untuk aplikasi berkemampuan IoT, penting untuk memilih jenis papan pengembangan yang tepat yang akan dapat memproses data dari pin analognya dan mengirim data melalui segala jenis protokol koneksi seperti Wi-Fi atau ke cloud server. Kami secara khusus memilih ESP32 karena ini adalah mikrokontroler berbiaya rendah dengan banyak fitur. Juga, ia memiliki radio Wi-Fi built-in di mana kita dapat terhubung ke internet dengan sangat mudah.
Sirkuit Surya:
Rangkaian solar charging merupakan rangkaian yang mendapatkan tegangan lebih tinggi dari panel surya dan mengubahnya menjadi tegangan charging sehingga dapat mengisi baterai secara efisien. Untuk proyek ini, kami akan menggunakan MPPT Charge Controller Circuit Board berbasis LT3562 yang telah kami buat di salah satu proyek kami sebelumnya. Tetapi jika Anda ingin menyematkan pemantauan yang memungkinkan IoT ini, Anda dapat menggunakan jenis sirkuit surya apa pun. Kami memilih papan ini karena rangkaiannya dilengkapi dengan Pelacakan Titik Daya Maksimum (MPPT) yang bermanfaat untuk proyek panel surya berdaya rendah. Ini adalah cara yang efisien untuk mengisi baterai lithium kecil dari panel surya.
Resistor Shunt:
Setiap resistor mengikuti hukum ohm yang berarti jika sejumlah arus mengalir melalui resistor, sejumlah penurunan tegangan akan muncul. Resistor shunt tidak terkecuali dan secara khusus digunakan untuk mengukur aliran arus. Namun, tergantung dari aliran arus nominal yang melalui panel surya, pilih resistor shunt yang akan menghasilkan tegangan yang cukup yang dapat diukur oleh unit mikrokontroler. Tetapi, pada saat yang sama, watt resistor juga merupakan hal yang penting. Pemilihan watt resistor shunt juga penting.
Penurunan tegangan dapat dihitung menggunakan rumus yang diberikan di bawah ini. Ini dikenal sebagai hukum Ohm-
V = I x R
V adalah tegangan yang akan dihasilkan selama 'I' yaitu besaran arus yang melalui besaran resistor 'R'. Misalnya resistor 1-ohm akan menghasilkan penurunan tegangan 1V ketika arus 1A mengalir melaluinya.
Untuk watt resistor, rumus yang diberikan di bawah ini dapat digunakan-
P = I 2 R
Dimana I adalah aliran arus maksimum, dan R adalah nilai resistor. Untuk arus 1A dengan resistor 1 Ohm, 1 watt sudah cukup untuk disipasi daya. Namun, ini berguna untuk proyek panel surya kecil tetapi sama sekali tidak cocok untuk aplikasi terkait jaringan surya. Dalam kasus seperti itu, teknik pengukuran arus non-invasif sebenarnya yang perlu digunakan. Dalam kasus seperti itu, aliran arus dapat diukur secara akurat dimana jumlah arus yang sangat rendah, serta jumlah arus yang sangat tinggi, dapat diukur.
Baterai Lithium:
Pemilihan baterai lithium adalah bagian penting dari setiap proyek yang melibatkan panel surya. Pasalnya, unit mikrokontroler yang selalu menyala dan terus menerus memeriksa dan mengirimkan data membutuhkan arus setidaknya seratus miliampere untuk operasi yang stabil.
Kapasitas baterai harus menjadi sesuatu yang dapat memberi daya pada mikrokontroler setidaknya selama 4-5 hari saat matahari tidak bersinar karena musim hujan. Juga penting bahwa arus pengisian harus lebih dari arus beban dari perspektif baterai. Sangat tidak biasa jika seseorang menghubungkan 100mA beban dengan baterai dan memberikan arus pengisian, yang kurang dari itu. Untuk berada di sisi yang lebih aman, kita harus memiliki arus pengisian setidaknya 5 kali lebih banyak daripada arus beban.
Di sisi lain, tegangan baterai harus lebih tinggi daripada tegangan input regulator tegangan biasa yang diperlukan untuk mikrokontroler. Misalnya, baterai lithium 7,4V dapat dihubungkan ke regulator tegangan linier 3.3V dan 5.0V (karena regulator linier membutuhkan tegangan putus yang lebih tinggi daripada LDO dan Switching.)
Dalam proyek kami, kami menggunakan baterai 4000mAH dengan rating 7,4V. Kami menggunakan regulator 5.0V yang menyediakan output arus dan tegangan yang cukup untuk ESP32.
Pembagi Tegangan:
Pembagi tegangan adalah bagian penting dari pengukuran tegangan panel surya. Seseorang harus memilih pembagi tegangan yang akan membagi tegangan sesuai input tegangan I / O mikrokontroler.
Pilih resistor di atas sedemikian rupa sehingga tegangan keluaran pembagi tegangan tidak boleh melebihi tegangan I / O pepatah mikrokontroler (3.3V untuk ESP32). Namun, disarankan untuk menggunakan potensiometer karena akan memberikan fleksibilitas untuk memilih panel surya dengan tingkat tegangan yang lebih tinggi atau lebih rendah dan dapat dengan mudah mengatur tegangan menggunakan multimeter.
Dalam kasus kami, kami memiliki potensiometer di sirkuit papan MPPT yang bertindak sebagai pembagi tegangan. Kami mengatur pembagi tegangan dengan faktor pembagian 6V. Kami menghubungkan dua multi-meter, satu di input dan satu lagi di output pot, dan mengatur nilai bahwa ketika tegangan input 18V output akan menjadi 3V karena tegangan output nominal panel surya adalah 18V.
Sensor Suhu untuk Panel Surya:
Keluaran daya panel surya memiliki hubungan langsung dengan suhu panel surya. Mengapa? Karena ketika suhu panel surya mulai meningkat, arus keluaran dari panel surya meningkat secara eksponensial sedangkan tegangan keluaran mulai berkurang secara linier.
Sesuai rumus daya, Watt sama dengan tegangan dikalikan arus (W = V x A), penurunan tegangan keluaran juga akan menurunkan daya keluaran panel surya bahkan setelah peningkatan aliran arus. Sekarang, pertanyaan selanjutnya yang muncul di benak kita adalah, bagaimana cara mengukur suhu matahari? Ini agak menarik karena panel surya umumnya terkena panas lingkungan karena terkena sinar matahari langsung dan untuk alasan yang jelas. Cara terbaik untuk mengukur suhu panel surya adalah dengan menggunakan sensor suhu permukaan datar. Juga disarankan untuk menggunakan termokopel tipe K yang ditempatkan langsung di panel surya.
Untuk aplikasi kami, kami telah menggunakan modul sensor suhu berbasis termistor, yang ditunjukkan di bawah ini.
Diagram Sirkuit untuk Pemantauan Tenaga Surya berbasis IoT
Diagram rangkaian lengkap untuk Pemantau Tenaga Surya dengan Pengaktifan IoT ditunjukkan di bawah ini. Skema sederhana. Papan dash-dot merah adalah papan MPPT yang kami gunakan untuk proyek ini.
Menyiapkan ThingSpeak
Buat akun dengan ThingSpeak dan buka opsi "saluran saya", lalu klik Saluran Baru.
Buat saluran baru dengan nama bidang.
Sekarang setelah mengatur bidang, buka bidang API Keys tempat Write API Key tersedia. Kunci ini harus diberikan dalam kode serta ID saluran.
Alamat ThingSpeak dapat ditemukan di halaman yang sama.
Dengan langkah-langkah di atas, Anda dapat menyiapkan ThingSpeak dengan sangat mudah. Jika Anda ingin mempelajari lebih lanjut tentang ThingSpeak dan proses penyiapannya, Anda dapat melihat artikel kami sebelumnya tentang topik tersebut.
Kode Arduino untuk Pemantauan Tenaga Surya menggunakan ESP32
Kode pemantauan tenaga surya ESP32 lengkap dapat ditemukan di bagian bawah halaman ini. Kode dimulai dengan menentukan SSID, Kata Sandi, dan beberapa parameter konstan lainnya seperti yang ditunjukkan di bawah ini.
// tentukan WiFi SSID & PWD untuk uplink. # Tentukan WLAN_SSID "xxxx" # Tentukan WLAN_PASS "xxxxxxxxxx"
// resistansi pada 25 derajat C # tentukan THERMISTORNOMINAL 10000 // temp. untuk resistansi nominal (hampir selalu 25 C) # tentukan TEMPERATURENOMINAL 25 // Koefisien beta termistor (biasanya 3000-4000) # tentukan BCOEFFICIENT 3950 // nilai resistor 'lain' # tentukan SERIESRESISTOR 10000
Ohm nominal termistor disediakan pada suhu nominal. Tetapkan nilai ini tergantung pada lembar data termistor. Masukkan koefisien Beta dan nilai resistor seri termistor.
// tentukan Analog untuk Arus dan Tegangan const 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"
Letakkan thingSpeakAddress, channelID, Write Feed API Key. Hal-hal lainnya tidak diperlukan tetapi masih berguna jika data perlu diterima dari web.
void setup () { // letakkan kode setup Anda di sini, untuk dijalankan sekali: // setel port serial di 115200 Serial.begin (115200); // Inisialisasi penundaan serial (1000); WiFi.mode (WIFI_STA); ThingSpeak.begin (klien); // Inisialisasi ThingSpeak // todo: membuat tugas untuk membaca pin untuk mendapatkan arus & voltase dan menghitung watt dan suhu panel surya xTaskCreate ( wifi_task, / * Fungsi tugas . * / "Wifi_task", / * String dengan nama tugas. * / 1024 * 2, / * Ukuran tumpukan dalam byte. * / NULL, / * Parameter diteruskan sebagai masukan dari tugas * / 5, / * Prioritas tugas. * / NULL); / * Pegangan tugas. * / Serial.print ("Pembacaan Data."); }
Dalam kode di atas, server ThingSpeak diinisialisasi dan sebuah tugas dibuat yang akan mendapatkan data yang terkait dengan panel surya.
Di loop utama, arus dan tegangan matahari dirasakan melalui pin analog dan dilakukan rata-rata.
float solar_curr_adc_val = 0; float 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); penundaan (10); } // rata-rata semua sampel keluar float curr_avg = 0; float volt_avg = 0; float temp_avg = 0; untuk (i = 0; i <NUMSAMPLES; i ++) { curr_avg + = curr_samples; volt_avg + = volt_samples; temp_avg + = temp_samples; } curr_avg / = NUMSAMPLES; volt_avg / = NUMSAMPLES; temp_avg / = NUMSAMPLES; //Serial.print("ADC VALUE = "); //Serial.println(ADC_VALUE); // ubah nilai adc menjadi voltase untuk mendapatkan Arus & Voltase aktual. float solar_curr = (curr_avg * 3,3) / (4095); float solar_volt = (volt_avg * 3.3) / (4095); // dengan menggunakan pembagi tegangan kita menurunkan tegangan sebenarnya. // untuk itu kita mengalikan 6 dengan tegangan rata-rata untuk mendapatkan tegangan panel surya yang sebenarnya. solar_volt * = 6;
Tegangan matahari dikirimkan dengan mengalikan dengan 6 saat kami membuat pembagi tegangan yang akan membagi tegangan input dengan 6 kali.
Suhu dihasilkan dari termistor menggunakan formasi logaritmik.
// konversikan nilai menjadi resistansi temp_avg = 4095 / temp_avg - 1; temp_avg = SERIESRESISTOR / temp_avg; //Serial.print("Thermistor resistance "); //Serial.println(temp_avg); steinhart mengambang; 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 / Kepada) steinhart = 1.0 / steinhart; // Balikkan steinhart - = 273,15; // ubah suhu absolut ke C
Data dibaca setiap 15 detik.
penundaan (1000); hitung ++; Serial.print ("."); jika (hitung> = 15) { hitung = 0; Serial.println ("============================================= ============================ "); Serial.print ("Solar Voltage ="); Serial.println (solar_volt); Serial.print ("Arus Surya ="); Serial.println (solar_curr); float solar_watt = solar_volt * solar_curr; Serial.print ("Solar Watt ="); Serial.println (solar_watt); Serial.print ("Suhu Surya ="); Serial.println (steinhart); Serial.println ("============================================= ============================ ");
Data untuk masing-masing bidang dikirim menggunakan fungsi Thing.Speak.setField (); saat WiFi terhubung.
if (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 ("Pembaruan saluran berhasil."); } else { Serial.println ("Masalah memperbarui saluran. Kode kesalahan HTTP" + String (x)); } } lain { Serial.println ("\ r \ n ################################### ###################### "); Serial.println ("Gagal memperbarui Data ke Server thingSpeak."); Serial.println ("WiFi tidak tersambung…"); Serial.println ("########################################### ############### \ r \ n "); } Serial.print ("Membaca Data."); } }
Tugas Wi-Fi dibuat di cuplikan kode di bawah ini-
void wifi_task (void * parameter) { while (1) { if (WiFi.status ()! = WL_CONNECTED) { Serial.print ("Mencoba menyambung ke SSID:"); Serial.println (WLAN_SSID); sementara (WiFi.status ()! = WL_CONNECTED) { WiFi.begin (WLAN_SSID, WLAN_PASS); // Hubungkan ke jaringan WPA / WPA2. Ubah baris ini jika menggunakan jaringan terbuka atau WEP Serial.print ("."); penundaan (5000); } Serial.println ("\ nConnected."); Serial.println (); Serial.println ("WiFi tersambung"); Serial.println ("alamat IP:"); Serial.println (WiFi.localIP ()); } vTaskDelay (1000 / portTICK_PERIOD_MS); } vTaskDelete (NULL); }
Pengujian dan Pemantauan Data
Panel surya dihubungkan dengan sirkuit dan ditempatkan di bawah sinar matahari untuk pengujian seperti yang ditunjukkan di bawah ini.
Pekerjaan lengkap ditunjukkan dalam video di bawah ini. Rangkaian kami dapat membaca tegangan keluaran, arus, dan daya dari panel dan memperbaruinya secara langsung di saluran thingspeak seperti yang ditunjukkan di bawah ini.
Seperti yang bisa kita lihat, data 15 menit ditampilkan pada grafik di atas. Karena ini adalah proyek operasi luar ruangan, PCB yang tepat bersama dengan kotak tertutup perlu digunakan. Enklosur perlu dibuat sedemikian rupa agar sirkuit tetap kedap air saat hujan. Untuk memodifikasi sirkuit ini atau untuk membahas aspek lebih lanjut dari proyek ini, silakan gunakan forum aktif Circuit Digest. Semoga Anda menikmati tutorial ini dan mempelajari sesuatu yang bermanfaat.