![利用MPPT制作基于物聯(lián)網(wǎng)的太陽能監(jiān)測系統(tǒng)_第1頁](http://file4.renrendoc.com/view10/M00/10/2D/wKhkGWXdVnaAcgi2AALrhni0IZ8568.jpg)
![利用MPPT制作基于物聯(lián)網(wǎng)的太陽能監(jiān)測系統(tǒng)_第2頁](http://file4.renrendoc.com/view10/M00/10/2D/wKhkGWXdVnaAcgi2AALrhni0IZ85682.jpg)
![利用MPPT制作基于物聯(lián)網(wǎng)的太陽能監(jiān)測系統(tǒng)_第3頁](http://file4.renrendoc.com/view10/M00/10/2D/wKhkGWXdVnaAcgi2AALrhni0IZ85683.jpg)
![利用MPPT制作基于物聯(lián)網(wǎng)的太陽能監(jiān)測系統(tǒng)_第4頁](http://file4.renrendoc.com/view10/M00/10/2D/wKhkGWXdVnaAcgi2AALrhni0IZ85684.jpg)
![利用MPPT制作基于物聯(lián)網(wǎng)的太陽能監(jiān)測系統(tǒng)_第5頁](http://file4.renrendoc.com/view10/M00/10/2D/wKhkGWXdVnaAcgi2AALrhni0IZ85685.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
利用MPPT制作基于物聯(lián)網(wǎng)的太陽能監(jiān)測系統(tǒng)在可再生能源領(lǐng)域,太陽能處于最前沿,因為利用太陽能發(fā)電是可再生能源最簡單、商業(yè)上可行的方式。說到太陽能電池板,需要監(jiān)控太陽能電池板輸出的輸出功率,以便從電池板獲得最佳功率輸出。這就是為什么需要實時監(jiān)控系統(tǒng)的原因。在大型太陽能發(fā)電廠中,它還可用于監(jiān)控每個面板的功率輸出,這有助于識別灰塵堆積。它還可以防止運行期間出現(xiàn)任何故障情況。在這個項目中,我們將通過結(jié)合基于MPPT(最大功率點跟蹤器)的電池充電技術(shù)來制作基于物聯(lián)網(wǎng)的太陽能監(jiān)測系統(tǒng),這將有助于減少充電時間并提高效率。此外,我們將測量面板溫度、輸出電壓和電流,以提高電路的安全性。最后,最重要的是,我們將使用ThingSpeak云服務(wù)來監(jiān)控來自世界各地的輸出數(shù)據(jù)。為支持物聯(lián)網(wǎng)的太陽能監(jiān)視器選擇合適的組件使用太陽能監(jiān)視器,監(jiān)視和檢測任何太陽能系統(tǒng)中的故障變得非常容易。這就是為什么在設(shè)計這樣的系統(tǒng)時組件選擇成為一個非常重要的部分。下面給出了我們使用的部件列表。ESP32開發(fā)板MPPT電路(可以是任何太陽能電路)分流電阻器(例如1Ohm1watt-適用于高達(dá)1A的電流)鋰電池(首選7.4v)。有效的Wi-Fi連接太陽能電池板的溫度傳感器分壓器電路(見說明)Esp32開發(fā)板:對于支持物聯(lián)網(wǎng)的應(yīng)用程序,必須選擇正確類型的開發(fā)板,該開發(fā)板能夠處理來自其模擬引腳的數(shù)據(jù)并通過任何類型的連接協(xié)議(如Wi-Fi或云)發(fā)送數(shù)據(jù)服務(wù)器。我們特別選擇了ESP32,因為它是一款具有大量功能的低成本微控制器。此外,它有一個內(nèi)置的Wi-Fi收音機(jī),我們可以通過它非常輕松地連接到互聯(lián)網(wǎng)。太陽能電路:太陽能充電電路是從太陽能電池板獲得更高電壓并將其轉(zhuǎn)換為充電電壓的電路,以便它可以有效地為電池充電。對于這個項目,我們將使用基于LT3562的MPPT充電控制器電路板,我們已經(jīng)在之前的一個項目中制作了該電路板。但是如果你想嵌入這個物聯(lián)網(wǎng)啟用監(jiān)控,你可以使用任何類型的太陽能電路。我們選擇此板是因為該電路配備了最大功率點跟蹤(MPPT),這對低功率太陽能電池板項目非常有利。這是從太陽能電池板為小型鋰電池充電的有效方法。分流電阻:任何電阻器都遵循歐姆定律,這意味著如果一定量的電流流過電阻器,就會出現(xiàn)一定量的電壓降。分流電阻器也不例外,它專門用于測量電流。但是,根據(jù)流過太陽能電池板的標(biāo)稱電流,選擇一個分流電阻器,該電阻器將產(chǎn)生足夠的電壓,該電壓可由微控制器單元測量。但是,與此同時,電阻的瓦數(shù)也很重要。分流電阻功率的選擇也很重要??梢允褂孟旅娼o出的公式計算電壓降。這被稱為歐姆定律——V=IxRV是在“I”期間將產(chǎn)生的電壓,即流過電阻“R”的電流量。例如,1歐姆的電阻在1A的電流流過時會產(chǎn)生1V的壓降。對于電阻器的瓦數(shù),可以使用下面給出的公式-P=I2R其中I是最大電流,R是電阻值。對于具有1歐姆電阻的1A電流,1瓦的功率耗散就足夠了。然而,這對小型太陽能電池板項目很有用,但根本不適合與太陽能電網(wǎng)相關(guān)的應(yīng)用。在這種情況下,實際上需要使用非侵入式電流測量技術(shù)。在這種情況下,可以精確測量電流,其中可以測量非常低的電流量以及非常高的電流量。鋰電池:鋰電池的選擇是任何涉及太陽能電池板的項目的重要組成部分。因為始終保持開啟并不斷檢查和提交數(shù)據(jù)的微控制器單元需要至少一百毫安的電流才能穩(wěn)定運行。當(dāng)由于季風(fēng)而沒有陽光照射時,電池容量應(yīng)該可以為微控制器供電至少4-5天。從電池的角度來看,充電電流必須大于負(fù)載電流也很重要。如果有人將100mA的負(fù)載與電池連接并提供小于該值的充電電流,這是很不尋常的。為了安全起見,我們的充電電流至少應(yīng)該是負(fù)載電流的5倍。另一方面,電池電壓需要高于微控制器所需的任何常用穩(wěn)壓器輸入電壓。例如,一個7.4V鋰電池可以連接在3.3V和5.0V線性穩(wěn)壓器上(因為線性穩(wěn)壓器需要比LDO和開關(guān)更高的壓差電壓。)在我們的項目中,我們使用了額定電壓為7.4V的4000mAH電池。我們使用了一個5.0V穩(wěn)壓器,可為ESP32提供足夠的電流和電壓輸出。分壓器:分壓器是太陽能電池板電壓測量的重要組成部分。應(yīng)該選擇一個分壓器,根據(jù)微控制器I/O電壓輸入來分壓。選擇上述電阻,使分壓器輸出電壓不應(yīng)超過微控制器最大I/O電壓(ESP32為3.3V)。但是,建議使用電位器,因為它可以靈活地選擇任何更高或更低額定電壓的太陽能電池板,并且可以使用萬用表輕松設(shè)置電壓。在我們的例子中,我們在MPPT板電路中有一個電位計,用作分壓器。我們設(shè)置分壓器的分壓系數(shù)為6V。我們接了兩只萬用表,一只在鍋的輸入端,一只在鍋的輸出端,并設(shè)置當(dāng)輸入電壓為18V時輸出為3V,因為太陽能電池板的標(biāo)稱輸出電壓為18V。太陽能電池板的溫度傳感器:太陽能電池板的功率輸出與太陽能電池板的溫度直接相關(guān)。為什么?因為隨著太陽能電池板的溫度開始增加,太陽能電池板的輸出電流呈指數(shù)增長,而電壓輸出開始呈線性下降。根據(jù)功率公式,瓦數(shù)等于電壓乘以電流(W=VxA),即使電流增加,降低輸出電壓也會降低太陽能電池板的輸出功率?,F(xiàn)在,我們想到的下一個問題是,如何測量太陽溫度?好吧,這很有趣,因為太陽能電池板通常暴露在熱環(huán)境中,因為它暴露在陽光直射下,原因很明顯。測量太陽能電池板溫度的最佳方法是使用平面溫度傳感器。還建議使用直接放置在太陽能電池板中的K型熱電偶。對于我們的應(yīng)用,我們使用了基于熱敏電阻的溫度傳感器模塊,如下所示。基于物聯(lián)網(wǎng)的太陽能監(jiān)測電路圖啟用IoT的太陽能監(jiān)視器的完整電路圖如下所示。原理圖很簡單。紅色點劃線板是我們在這個項目中使用的MPPT板。設(shè)置ThingSpeak使用ThingSpeak創(chuàng)建一個帳戶并轉(zhuǎn)到“我的頻道”選項,然后單擊新頻道。使用字段名稱創(chuàng)建一個新通道。現(xiàn)在設(shè)置字段后,轉(zhuǎn)到可以使用WriteAPIKey的APIKeys字段。需要在代碼中提供此密鑰以及通道ID。ThingSpeak地址可在同一頁面上找到。通過上述步驟,您可以非常輕松地設(shè)置ThingSpeak。如果您想了解有關(guān)ThingSpeak及其設(shè)置過程的更多信息,您可以查看我們之前關(guān)于該主題的文章。使用ESP32進(jìn)行太陽能監(jiān)測的Arduino代碼完整的ESP32太陽能監(jiān)控代碼可以在本頁底部找到。代碼首先定義您的SSID、密碼和一些其他常量參數(shù),如下所示。
//為上行鏈路定義WiFiSSID和PWD。#defineWLAN_SSID"xxxx"#defineWLAN_PASS"xxxxxxxxxx"
在此字段中,需要設(shè)置SSID和密碼。
//25攝氏度時的電阻#defineTHERMISTORNOMINAL10000//溫度。對于標(biāo)稱電阻(幾乎總是25C)#defineTEMPERATURENOMINAL25//熱敏電阻的beta系數(shù)(通常為3000-4000)#defineBCOEFFICIENT3950//“其他”電阻的值#defineSERIESRESISTOR10000
熱敏電阻標(biāo)稱歐姆是在標(biāo)稱溫度下提供的。根據(jù)熱敏電阻的數(shù)據(jù)表設(shè)置此值。放熱敏電阻的Beta系數(shù)和串聯(lián)電阻值。
//為電流和電壓定義模擬constintcurr_an_pin=35;常量intvolt_an_pin=34;常量intntc_temp_an_pin=33;
PIN在這里定義。
#definethingSpeakAddress"xxxxxxxx"#definechannelIDxxxxx#definewriteFeedAPIKey"xxxxxxx"#definereadFeedAPIKey"xxxxxxx"#definereadFieldAPIKey"xxxxxxxx"#definereadStatusAPIKey"xxxxxxx"
放入thingSpeakAddress、channelID、WriteFeedAPIKey。其余的東西不是必需的,但如果需要從Web接收數(shù)據(jù),它們?nèi)匀挥杏谩?/p>
voidsetup(){//將您的設(shè)置代碼放在這里,運行一次://將串口設(shè)置為115200Serial.begin(115200);//初始化串行延遲(1000);WiFi.mode(WIFI_STA);ThingSpeak.begin(客戶端);//初始化ThingSpeak//todo:創(chuàng)建一個任務(wù)來讀取引腳以獲取電流和電壓并計算太陽能電池板的瓦特和溫度xTaskCreate(wifi_task,/*任務(wù)函數(shù)。*/"wifi_task",/*名稱為的字符串task.*/1024*2,/*堆棧大?。ㄒ宰止?jié)為單位)。*/NULL,/*作為任務(wù)輸入傳遞的參數(shù)*/5,/*任務(wù)的優(yōu)先級。*/空);/*任務(wù)句柄。*/Serial.print("數(shù)據(jù)讀取。");}
在上面的代碼中,初始化了ThingSpeak服務(wù)器并創(chuàng)建了一個任務(wù),該任務(wù)將獲取與太陽能電池板相關(guān)的數(shù)據(jù)。在主回路中,太陽能電流和電壓通過模擬引腳進(jìn)行檢測,并進(jìn)行平均。
浮動太陽能curr_adc_val=0;浮動太陽能伏特adc_val=0;for(i=0;i<NUMSAMPLES;i++){curr_samples[i]=analogRead(curr_an_pin);volt_samples[i]=模擬讀?。╲olt_an_pin);temp_samples[i]=模擬讀?。╪tc_temp_an_pin);延遲(10);}//平均所有樣本floatcurr_avg=0;浮動volt_avg=0;浮動temp_avg=0;for(i=0;i<NUMSAMPLES;i++){curr_avg+=curr_samples[i];volt_avg+=volt_samples[i];temp_avg+=temp_samples[i];}curr_avg/=NUM??SAMPLES;volt_avg/=NUM??SAMPLES;temp_avg/=NUM??SAMPLES;//Serial.print("ADC值=");//Serial.println(ADC_VALUE);//將adc值轉(zhuǎn)換為電壓以獲得實際電流和電壓。floatsolar_curr=(curr_avg*3.3)/(4095);浮動太陽能伏特=(伏特平均*3.3)/(4095);//通過使用分壓器,我們降低了實際電壓。//因此,我們將6乘以平均電壓,得到太陽能電池板的實際電壓。太陽能電壓*=6;
太陽能電壓通過乘以6得到,因為我們創(chuàng)建了將輸入電壓除以6倍的分壓器。使用對數(shù)形式從熱敏電阻產(chǎn)生溫度。
//將該值轉(zhuǎn)換為電阻temp_avg=4095/temp_avg-1;temp_avg=SERIESRESISTOR/temp_avg;//Serial.print("熱敏電阻");//Serial.println(temp_avg);浮動斯坦哈特;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;//反轉(zhuǎn)steinhart-=273.15;//將絕對溫度轉(zhuǎn)換為C
每15秒讀取一次數(shù)據(jù)。
延遲(1000);計數(shù)++;Serial.print(".");如果(計數(shù)>=15){計數(shù)=0;Serial.println("===========================================================================");Serial.print("太陽能電壓=");Serial.println(solar_volt);Serial.print("太陽能電流=");Serial.println(solar_curr);浮動太陽能瓦特=太陽能伏特*太陽能電流;Serial.print("太陽能瓦特=");Serial.println(solar_watt);Serial.print("太陽溫度=");Serial.println(steinhart);Serial.println("===========================================================================");
使用函數(shù)Thing.Speak.setField()傳輸各個字段的數(shù)據(jù);連接WiFi時。
if(WiFi.status()==WL_CONNECTED){ThingSpeak.setField(1,solar_volt);ThingSpeak.setField(2,solar_curr);ThingSpeak.setField(3,solar_watt);ThingSpeak.setField(4,steinhart);//寫入ThingSpeak通道intx=ThingSpeak.writeFields(channelID,writeFeedAPIKey);if(x==200){Serial.println("頻道更新成功。");}else{Serial.println("更新頻道有問題。HTTP錯誤碼"+String(x));}}其他{Serial.println("\r\n############################################################");Serial.println("更新數(shù)據(jù)到thingSpeak服務(wù)器失敗。");Serial.println("WiFi未連接...");Serial.println("###########################################################\r\n");}Serial.print("數(shù)據(jù)讀取。");}}
在以下代碼片段中創(chuàng)建的Wi-Fi任務(wù)-
voidwifi_task(void*parameter){while(1){if(WiFi.status()!=WL_CONNECTED){Serial.print("正在嘗試連接到SSID:");Serial.println(WLAN_SSID);而(WiFi.status()!=WL_CONNECTED){WiFi.begin(WLAN_SSID,WLAN_PASS);//連接到WPA/WPA2網(wǎng)絡(luò)。如果使用開放或WEP網(wǎng)絡(luò),請更改此行Serial.print(".");延遲(5000);}Serial.println("\n已連接。");序列號.println();Serial.println("WiFi連接");Serial.println("IP地址:");Serial.println(WiFi.localIP());}vTaskDelay(1000/portTICK_PERIOD_MS);}vTaskDelete(NULL);}
測試和監(jiān)控數(shù)據(jù)將太陽能電池板與電路連接并放置在陽光下進(jìn)行測試,如下圖所示。下面的視頻演示了完整的工作。我們的電路能夠從面板讀取輸出電壓、電流和功率,并在thingspeak頻道上實時更新,如下所示。如我們所見,上圖中顯示了15分鐘的數(shù)據(jù)。由于這是一個戶外操作項目,因此需要使用適當(dāng)?shù)腜CB以及一個封閉的盒子。外殼的制造方式需要使電路在雨中保持防水。#include
#include"ThingSpeak.h"
#include
#include
#include
//為上行鏈路定義WiFiSSID和PWD。#defineWLAN_SSID"xxxx"
#defineWLAN_PASS"xxxxxxxxxx"
#defineNUMSAMPLES5
intcurr_samples[NUMSAMPLES];
intvolt_samples[NUMSAMPLES];
inttemp_samples[NUMSAMPLES];
WiFiClient客戶端;//25攝氏度時的電阻#defineTHERMISTORNOMINAL10000
//溫度。#defineSERIESRESISTOR10000
//為電流和電壓定義模擬constintcurr_an_pin=35;
常量intvolt_an_pin=34;
常量intntc_temp_an_pin=33;
整數(shù)計數(shù)=0;//thingSpeakDetails
#definethingSpeakAddress"xxxxxxxx"
#definechannelIDxxxxx
#definewriteFeedAPIKey"xxxxxxx"
#definereadFeedAPIKey"xxxxxxx"
#definereadFieldAPIKey"xxxxxxxx"
#definereadStatusAPIKey"xxxxxxx"
voidsetup(){
//把你的設(shè)置代碼放在這里,運行一次:
//將串口設(shè)置為115200
Serial.begin(115200);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(客戶端);//初始化ThingSpeak
//todo:創(chuàng)建一個任務(wù)來讀取引腳以獲取電流和電壓并計算太陽能電池板的瓦特和溫度
xTaskCreate(
wifi_task,/*任務(wù)函數(shù)。*/
"wifi_task",/*名稱為的字符串task.*/
1024*2,/*以字節(jié)為單位的堆棧大小。*/
NULL,/*作為任務(wù)輸入傳遞的參數(shù)*/
5,/*任務(wù)的優(yōu)先級。*/
NULL);/*任務(wù)句柄。*/
Serial.print("數(shù)據(jù)讀取。");
}無效循環(huán)(){
//把你的主要代碼放在這里,重復(fù)運行:
inti=0;
浮動太陽能curr_adc_val=0;
浮動太陽能伏特adc_val=0;
for(i=0;i<NUMSAMPLES;i++){
curr_samples[i]=analogRead(curr_an_pin);
volt_samples[i]=模擬讀?。╲olt_an_pin);
temp_samples[i]=模擬讀?。╪tc_temp_an_pin);
延遲(10);
}
//平均所有樣本
floatcurr_avg=0;
浮動volt_avg=0;
浮動temp_avg=0;
for(i=0;i<NUMSAMPLES;i++){
curr_avg+=curr_samples[i];
volt_avg+=volt_samples[i];
temp_avg+=temp_samples[i];
}
curr_avg/=NUM??SAMPLES;
volt_avg/=NUM??SAMPLES;
temp_avg/=NUM??SAMPLES;
//Serial.print("ADC值=");
//Serial.println(ADC_VALUE);
//將adc值轉(zhuǎn)換為電壓以獲得實際電流和電壓。
floatsolar_curr=(curr_avg*3.3)/(4095);
浮動太陽能伏特=(伏特平均*3.3)/(4095);
//通過使用分壓器,我們降低了實際電壓。
//因此,我們將6乘以平均電壓,得到太陽能電池板的實際電壓。
太陽能電壓*=6;
//將該值轉(zhuǎn)換為電阻
temp_avg=4095/temp_avg-1;
temp_avg=SERIESRESISTOR/temp_avg;
//Serial.print("熱敏電阻");
//Serial.println(temp_avg);
浮動斯坦哈特;
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;//反轉(zhuǎn)
steinhart-=273.15;//將絕對溫度轉(zhuǎn)換為C
延遲(1000);
計數(shù)++;
Serial.print(".");
如果(計數(shù)>=15){
計數(shù)=0;
Serial.println("===========================================================================");
Serial.print("太陽能電壓=");
Serial.println(solar_volt);
Serial.print("太陽能電流=");
Serial.println(solar_curr);
浮動太陽能瓦特=太陽能伏特*太陽能電流;
Serial.print("太陽能瓦特=");
Serial.println(solar_watt);
Serial.print("太陽溫度=");
Serial.println(steinhart);
Serial.println("===========================================================================");
if(WiFi.status()==WL_CONNECTED){
ThingSpeak.setField(1,solar_volt);
物語。
ThingSpeak.setField(3,solar_watt);
ThingSpeak.setField(4,steinhart);
//寫入ThingSpeak通道
intx=Thing
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 股權(quán)抵押擔(dān)保協(xié)議書年
- 肥料農(nóng)藥采購合同樣本
- 編程語言與軟件開發(fā)職業(yè)規(guī)劃作業(yè)指導(dǎo)書
- 2025年贛州b2貨運資格證多少道題
- 2025年桂林貨運從業(yè)資格證模擬考試駕考
- 2025年洛陽貨車從業(yè)資格證考什么
- 2025年博爾塔拉下載貨運從業(yè)資格證模擬考試題
- 2025年安徽貨運車輛從業(yè)資格證考試題
- 疾病篩查服務(wù)合同(2篇)
- 2024-2025學(xué)年高中物理第14章電磁波第3節(jié)電磁波的發(fā)射和接收課后練習(xí)含解析新人教版選修3-4
- 勾股定理(公開課)2
- 無違法犯罪記錄證明申請表(個人)
- 《藝術(shù)導(dǎo)論(第二版)》藝術(shù)鑒賞
- 身份證籍貫對照表(自動)
- 質(zhì)量問題分析及措施報告
- 汽修廠安全風(fēng)險分級管控清單
- 現(xiàn)代通信原理與技術(shù)(第五版)PPT全套完整教學(xué)課件
- 社區(qū)獲得性肺炎教學(xué)查房
- 病例展示(皮膚科)
- GB/T 39750-2021光伏發(fā)電系統(tǒng)直流電弧保護(hù)技術(shù)要求
- 糖尿病運動指導(dǎo)課件
評論
0/150
提交評論