- IoT Etkin Güneş Enerjisi Monitörü için Doğru Bileşenleri Seçme
- IoT tabanlı Güneş Enerjisi İzleme için Devre Şeması
- ThingSpeak'i Ayarlama
- ESP32 kullanarak Güneş Enerjisi İzleme için Arduino Kodu
- Verilerin Test Edilmesi ve İzlenmesi
Yenilenebilir enerji alanında güneş enerjisi ön plandadır, çünkü güneşin gücünü kullanarak enerji üretmek, yenilenebilir enerjinin en kolay ve ticari olarak uygulanabilir yolu. Güneş panellerinden bahsetmişken, panellerden optimum güç çıkışı elde etmek için bir güneş paneli çıkışının çıkış gücünün izlenmesi gerekir. Bu nedenle gerçek zamanlı bir izleme sistemi gerekli hale gelir. Büyük bir güneş enerjisi santralinde, toz birikiminin belirlenmesine yardımcı olan her panelden gelen güç çıkışını izlemek için de kullanılabilir. Aynı zamanda çalışma sırasında oluşabilecek arıza durumlarını da önler. Önceki yazılarımızın bazılarında, güneş enerjisiyle çalışan cep telefonu şarj cihazı ve güneş invertör devresi gibi güneş enerjisi ile ilgili birkaç proje oluşturduk. Güneş enerjisi ile ilgili daha fazla proje arıyorsanız, bunları kontrol edebilirsiniz.
Bu projede, şarj süresini azaltmaya ve verimliliği artırmaya yardımcı olacak MPPT (Maksimum Güç Noktası İzleyicisi) tabanlı pil şarj tekniğini dahil ederek IoT tabanlı bir Güneş Enerjisi İzleme Sistemi yapacağız. Ayrıca, devrenin güvenlik yönünü iyileştirmek için panel sıcaklığını, çıkış voltajını ve akımı da ölçeceğiz. Son olarak, en önemlisi, dünyanın her yerinden gelen çıktı verilerini izlemek için ThingSpeak bulut hizmetlerini kullanacağız. Bu projenin daha önce inşa ettiğimiz MPPT Solar Şarj Kontrol Projesinin devamı olduğunu unutmayın. Burada, ESP32 IoT geliştirme kartını kullanarak panelin çıkış voltajını, akımını ve gücünü izleyeceğiz.
IoT Etkin Güneş Enerjisi Monitörü için Doğru Bileşenleri Seçme
Bir güneş monitörü ile, herhangi bir güneş sistemindeki arızaları izlemek ve tespit etmek çok kolay hale gelir. Bu nedenle, böyle bir sistemi tasarlarken bileşen seçimi çok önemli bir parça haline gelir. Aşağıda, kullandığımız parçaların listesi verilmiştir.
- ESP32 geliştirme kartı
- MPPT devresi (herhangi bir güneş devresi olabilir)
- Bir şönt direnci (örneğin 1 Ohm 1 watt - 1A'ya kadar akım için uygun)
- Bir lityum pil (7,4v tercih edilir).
- Aktif Wi-Fi bağlantısı
- Güneş paneli için sıcaklık sensörü
- Gerilim bölücü devre (açıklamaya bakın)
Esp32 Geliştirme Kartı:
IoT özellikli bir uygulama için, verileri analog pinlerinden işleyebilecek ve verileri Wi-Fi gibi herhangi bir bağlantı protokolü aracılığıyla veya buluta gönderebilecek doğru türde geliştirme kartını seçmek önemlidir. sunucu. Çok sayıda özelliğe sahip düşük maliyetli bir mikro denetleyici olduğu için ESP32'yi özel olarak seçtik. Ayrıca, internete çok kolay bir şekilde bağlanabileceğimiz yerleşik bir Wi-Fi radyosuna sahiptir.
Güneş Devresi:
Bir güneş şarj devresi, güneş panelinden daha yüksek voltaj alan ve pili verimli bir şekilde şarj edebilmesi için şarj voltajına dönüştüren bir devredir. Bu proje için daha önceki projelerimizden birinde yapmış olduğumuz LT3562 tabanlı MPPT Şarj Kontrol Devre Kartını kullanacağız. Ancak bu IoT etkin izlemeyi gömmek istiyorsanız, her türlü güneş devresini kullanabilirsiniz. Bu kartı seçtik çünkü devre, düşük güçlü güneş paneli projeleri için faydalı olan Maksimum Güç Noktası İzleme (MPPT) ile donatılmıştır. Küçük bir lityum pili bir güneş panelinden şarj etmenin etkili bir yoludur.
Şönt direnci:
Herhangi bir direnç, ohm yasasını izler; bu, dirençten belirli bir miktarda akım akarsa, belirli bir miktarda voltaj düşüşü ortaya çıkacağı anlamına gelir. Şönt dirençler bunun bir istisnası değildir ve özellikle akım akışını ölçmek için kullanılır. Bununla birlikte, güneş panelinden geçen nominal akım akışına bağlı olarak, mikrodenetleyici birimi tarafından ölçülebilen yeterli miktarda voltaj üretecek bir şönt direnci seçin. Ancak aynı zamanda direncin watt değeri de önemli bir şeydir. Şönt direnç watt değerinin seçimi de önemlidir.
Gerilim düşüşü, aşağıda verilen formül kullanılarak hesaplanabilir. Bu Ohm kanunu olarak bilinir.
V = I x R
V, 'I' sırasında üretilecek voltaj, yani direnç 'R' miktarından geçen akım miktarıdır. Örneğin, 1-ohm direnç içinden 1A akım geçtiğinde 1V voltaj düşüşü üretecektir.
Direncin watt değeri için aşağıda verilen formül kullanılabilir.
P = I 2 R
Burada maksimum akım akışı ve R, direnç değeridir. 1 Ohm dirençli 1A akım için, güç kaybı için 1 watt yeterlidir. Bununla birlikte, bu küçük güneş paneli projeleri için kullanışlıdır, ancak güneş şebekesi ile ilgili uygulamalar için hiç uygun değildir. Böyle bir durumda, aslında kullanılması gereken şey non-invaziv akım ölçüm tekniğidir. Böyle bir durumda, akım akışı, çok düşük miktarda akımın yanı sıra çok yüksek miktarda akımın ölçülebildiği yerlerde doğru bir şekilde ölçülebilir.
Lityum pil:
Lityum pilin seçimi, güneş panelleri içeren herhangi bir projenin önemli bir parçasıdır. Çünkü her zaman açık kalan ve verileri sürekli kontrol eden ve gönderen mikrodenetleyici birimi, kararlı çalışma için en az yüz miliamper akım gerektirir.
Batarya kapasitesi, mikrodenetleyiciye muson nedeniyle güneşin parlamadığı en az 4-5 gün boyunca güç sağlayabilecek bir şey olmalıdır. Akü açısından şarj akımının yük akımından fazla olması da önemlidir. Birisinin 100mA'lık yükü bir bataryaya bağlaması ve bundan daha az bir şarj akımı sağlaması oldukça sıra dışıdır. Daha güvenli tarafta olmak için yük akımından en az 5 kat daha fazla şarj akımına sahip olmamız gerekir.
Diğer yandan, pil voltajının, mikro denetleyici için gereken herhangi bir normal voltaj regülatörü giriş voltajından daha yüksek olması gerekir. Örneğin, bir 7.4V lityum pil hem 3.3V hem de 5.0V doğrusal voltaj regülatörüne bağlanabilir (doğrusal regülatör, LDO ve Anahtarlamadan daha yüksek bırakma voltajı gerektirdiğinden).
Projemizde 7.4V dereceli 4000mAH pil kullandık. ESP32 için yeterli akım ve voltaj çıkışı sağlayan 5.0V'luk bir regülatör kullandık.
Gerilim Bölücü:
Gerilim bölücü, Güneş paneli gerilim ölçümünün önemli bir parçasıdır. Mikrodenetleyici I / O voltaj girişine göre voltajı bölen bir voltaj bölücü seçilmelidir.
Yukarıdaki dirençleri, voltaj bölücü çıkış voltajı mikro denetleyici maksimum G / Ç voltajını (ESP32 için 3,3 V) aşmayacak şekilde seçin. Bununla birlikte, bir potansiyometre kullanılması tavsiye edilir, çünkü herhangi bir güneş paneli daha yüksek veya daha düşük voltaj derecesini seçmek için esneklik sağlar ve bir multimetre kullanarak voltajı kolayca ayarlayabilir.
Bizim durumumuzda, MPPT kart devresinde voltaj bölücü görevi gören bir potansiyometremiz var. Voltaj bölücüyü 6V'luk bir bölme faktörü ile ayarladık. Potanın girişine ve çıkışına iki adet multi-metre bağladık ve güneş panelinin nominal çıkış voltajı 18V olduğu için giriş voltajı 18V olduğunda çıkışın 3V olacağı değerini ayarladık.
Güneş Paneli için Sıcaklık Sensörü:
Güneş paneli güç çıkışı, güneş paneli sıcaklığı ile doğrudan bağlantılıdır. Neden? Çünkü bir güneş panelinin sıcaklığı artmaya başladığında, güneş panelinden çıkış akımı katlanarak artarken, voltaj çıkışı doğrusal olarak azalmaya başlar.
Güç formülüne göre Watt, gerilim çarpı akımına eşittir (W = V x A), azalan çıkış voltajı, akım akışının artmasından sonra bile güneş paneli çıkış gücünü azaltır. Şimdi aklımıza gelen bir sonraki soru, güneş sıcaklığı nasıl ölçülür? Aslında, güneş panellerinin doğrudan güneş ışığına maruz kalması ve bariz nedenlerle genellikle ısı ortamına maruz kalması oldukça ilginçtir. Güneş paneli sıcaklığını ölçmenin en iyi yolu düz bir yüzey sıcaklık sensörü kullanmaktır. Doğrudan güneş paneline yerleştirilmiş bir K tipi termokupl kullanılması da önerilir.
Uygulamamız için aşağıda gösterilen termistör tabanlı bir sıcaklık sensörü modülü kullandık.
IoT tabanlı Güneş Enerjisi İzleme için Devre Şeması
IoT Etkin Güneş Enerjisi Monitörü için eksiksiz devre şeması aşağıda gösterilmektedir. Şematik basittir. Kırmızı çizgi nokta panosu, bu proje için kullandığımız MPPT panosudur.
ThingSpeak'i Ayarlama
ThingSpeak ile bir hesap oluşturun ve "kanalım" seçeneğine gidin, ardından Yeni Kanal'a tıklayın.
Alan adlarıyla yeni bir kanal oluşturun.
Şimdi alanı ayarladıktan sonra, Yazma API Anahtarının mevcut olduğu API Anahtarları alanına gidin. Bu anahtarın kodda ve kanal kimliğinde sağlanması gerekir.
ThingSpeak adresi aynı sayfada bulunabilir.
Yukarıdaki adımlarla ThingSpeak'i çok kolay bir şekilde kurabilirsiniz. ThingSpeak ve kurulum süreci hakkında daha fazla bilgi edinmek isterseniz, konuyla ilgili önceki makalelerimize göz atabilirsiniz.
ESP32 kullanarak Güneş Enerjisi İzleme için Arduino Kodu
Tam ESP32 güneş enerjisi izleme kodu bu sayfanın altında bulunabilir. Kod, SSID'nizi, Parolanızı ve aşağıda gösterildiği gibi diğer birkaç sabit parametrenin tanımlanmasıyla başlar.
// uplink için WiFi SSID ve PWD'yi tanımlayın. #define WLAN_SSID "xxxx" #define WLAN_PASS "xxxxxxxxxx"
// 25 derecede direnç C # tanımla TERMİSTORNOMİNAL 10000 // sıcaklık. nominal direnç için (neredeyse her zaman 25 C) #define TEMPERATURENOMINAL 25 // Termistörün beta katsayısı (genellikle 3000-4000) #define BCOEFFICIENT 3950 // 'diğer' direncin değeri #define SERIESRESISTOR 10000
Termistör nominal ohm, nominal sıcaklıkta sağlanır. Bu değeri termistörün veri sayfasına göre ayarlayın. Termistörün Beta katsayısını ve seri direnç değerini koyun.
// Akım ve Gerilim için Analog'u tanımlayın int curr_an_pin = 35; const int volt_an_pin = 34; const int ntc_temp_an_pin = 33;
PIN'ler burada tanımlanmıştır.
#define thingSpeakAddress "xxxxxxxxx" #define channelID xxxxx #define writeFeedAPIKey "xxxxxxx" #define readFeedAPIKey "xxxxxxx" #define readFieldAPIKey "xxxxxxxx" #define readStatusAPIKey "xxxxxxx"
ThingSpeakAddress, channelID, Write Feed API Key. Geri kalan şeyler gerekli değildir, ancak web'den veri alınması gerekiyorsa yine de yararlıdır.
void setup () { // bir kez çalıştırmak için kurulum kodunuzu buraya yerleştirin: // seri bağlantı noktasını 115200 Serial.begin (115200) olarak ayarlayın; // Seri gecikmeyi başlat (1000); WiFi.mode (WIFI_STA); ThingSpeak.begin (müşteri); // ThingSpeak'i başlatın // yapılacaklar: akım ve voltajı almak için bir pin okumak ve xTaskCreate güneş panelinin watt ve sıcaklığını hesaplamak için bir görev oluşturun ( wifi_task, / * Task function. * / "Wifi_task", / * String görev. * / 1024 * 2, / * Bayt cinsinden yığın boyutu. * / NULL, / * Görevin girişi olarak geçirilen parametre * / 5, / * Görevin önceliği. * / NULL); / * Görev tanıtıcısı. * / Serial.print ("Veri Okuma."); }
Yukarıdaki kodda, ThingSpeak sunucusu başlatılır ve güneş paneli ile ilgili verileri alacak bir görev oluşturulur.
Ana döngüde, güneş akımı ve voltajı bir analog pin aracılığıyla algılanır ve ortalama yapılır.
float solar_curr_adc_val = 0; float solar_volt_adc_val = 0; için (i = 0; i <NUMSAMPLES; i ++) { curr_samples = analogRead (curr_an_pin); volt_samples = analogRead (volt_an_pin); temp_samples = analogRead (ntc_temp_an_pin); gecikme (10); } // tüm örneklerin ortalamasını alın float curr_avg = 0; float volt_avg = 0; float temp_avg = 0; için (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); // gerçek Akım ve Gerilimi almak için adc değerini voltajlara dönüştürün. float solar_curr = (curr_avg * 3.3) / (4095); float solar_volt = (volt_avg * 3.3) / (4095); // bir voltaj bölücü kullanarak gerçek voltajı düşürürüz. // bu nedenle güneş panelinin gerçek voltajını elde etmek için 6'yı ortalama voltajla çarpıyoruz. solar_volt * = 6;
Giriş voltajını 6 katına bölecek voltaj bölücü oluşturduğumuzda güneş voltajı 6 ile çarpılarak verilir.
Sıcaklık, termistörden logaritmik bir oluşum kullanılarak üretilir.
// değeri dirence dönüştür temp_avg = 4095 / temp_avg - 1; temp_avg = SERIESRESISTOR / temp_avg; //Serial.print("Thermistor direnci "); //Serial.println(temp_avg); float steinhart; steinhart = temp_avg / TERMİSTORNOMİNAL; // (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; // steinhart'ı ters çevir - = 273.15; // mutlak sıcaklığı C'ye dönüştür
Veriler her 15 saniyede bir okunur.
gecikme (1000); count ++; Seri.baskı ("."); eğer (sayı> = 15) { sayım = 0; Serial.println ("============================================= ============================ "); Serial.print ("Solar Voltage ="); Serial.println (solar_volt); Serial.print ("Solar Current ="); Serial.println (solar_curr); float solar_watt = solar_volt * solar_curr; Seri.print ("Solar Watt ="); Serial.println (solar_watt); Serial.print ("Solar Temperature ="); Serial.println (steinhart); Serial.println ("============================================= ============================ ");
İlgili alanlar için veriler, Thing.Speak.setField () işlevi kullanılarak iletilir ; WiFi bağlandığında.
eğer (WiFi.status () == WL_CONNECTED) { ThingSpeak.setField (1, solar_volt); ThingSpeak.setField (2, solar_curr); ThingSpeak.setField (3, solar_watt); ThingSpeak.setField (4, steinhart); // ThingSpeak kanalına yazın int x = ThingSpeak.writeFields (channelID, writeFeedAPIKey); if (x == 200) { Serial.println ("Kanallar başarıyla güncellendi."); } else { Serial.println ("Kanal güncellenirken sorun. HTTP hata kodu" + String (x)); } } else { Serial.println ("\ r \ n ##################################### ####################### "); Serial.println ("VerilerthingSpeak Sunucusuna güncellenemedi."); Serial.println ("WiFi bağlı değil…"); Serial.println ("############################################### ############### \ r \ n "); } Seri.print ("Veri Okuma."); } }
Aşağıdaki kod parçacığında oluşturulan Wi-Fi görevi-
void wifi_task (void * parametresi) { while (1) { if (WiFi.status ()! = WL_CONNECTED) { Serial.print ("SSID'ye bağlanmaya çalışıyor:"); Serial.println (WLAN_SSID); while (WiFi.status ()! = WL_CONNECTED) { WiFi.begin (WLAN_SSID, WLAN_PASS); // WPA / WPA2 ağına bağlanın. Açık veya WEP ağı kullanıyorsanız bu satırı değiştirin Serial.print ("."); gecikme (5000); } Serial.println ("\ nBağlandı."); Serial.println (); Serial.println ("WiFi bağlı"); Serial.println ("IP adresi:"); Serial.println (WiFi.localIP ()); } vTaskDelay (1000 / portTICK_PERIOD_MS); } vTaskDelete (NULL); }
Verilerin Test Edilmesi ve İzlenmesi
Güneş paneli devreye bağlanır ve aşağıda gösterildiği gibi test için güneş ışığına yerleştirilir.
Tam çalışma aşağıdaki videoda gösterilmektedir. Devremiz, panelden çıkış voltajını, akımını ve gücünü okuyabildi ve aşağıda gösterildiği gibi Thingspeak kanalında canlı olarak güncelleyebildi.
Gördüğümüz gibi 15 dakikalık veriler yukarıdaki grafikte gösterilmektedir. Bu bir dış mekan işletim projesi olduğundan, kapalı bir kutu ile birlikte uygun PCB kullanılması gerekir. Muhafazanın, devrenin yağmurda su geçirmez kalacağı şekilde yapılması gerekir. Bu devreyi değiştirmek veya bu projenin diğer yönlerini tartışmak için lütfen Devre Özetinin aktif forumunu kullanın. Umarım öğreticiden keyif almışsınızdır ve yararlı bir şeyler öğrenmişsinizdir.