原理篇1、鋰電池充供電與電量檢測(cè)_第1頁
原理篇1、鋰電池充供電與電量檢測(cè)_第2頁
原理篇1、鋰電池充供電與電量檢測(cè)_第3頁
原理篇1、鋰電池充供電與電量檢測(cè)_第4頁
原理篇1、鋰電池充供電與電量檢測(cè)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

原理篇1、鋰電池充供電與電量檢測(cè)?錄1、充電、供電電路鍵盤上的充電電路原理圖數(shù)據(jù)?冊(cè)中的原理圖其中與TP54003腳(PROG)連接的電阻?來設(shè)置充電電流??。電阻??與充電電流的關(guān)系:充電指?燈顯?狀態(tài)TP5400的1腳(Vout)只有5V/1A的輸出能?。在設(shè)計(jì)電路的時(shí)候之間將5V輸出?來給鍵盤供電,由于輸出功率原因,只能限制了WS2812燈珠的顯?亮度。WS2812燈珠的亮度限制在keyboard.h的第185~188?定義#defineLIGHT_BRGIGHTNESS_MAX4//亮度放?倍數(shù)#defineLIGHT_R_MAX10#defineLIGHT_G_MAX10#defineLIGHT_B_MAX102、電量檢測(cè)電路//R值最?值?來限定電流??//G值最?值?來限定電流??//B值最?值?來限定電流??鍵盤上的電量檢測(cè)電路原理圖電量檢測(cè)使?ESP32的GPI/O35引腳,若要更改請(qǐng)選擇GPI/O號(hào)?于30的引腳。電量檢測(cè)引腳在keyboard.h的第176?定義#defineBAT_PIN35//電量檢測(cè)引腳因?yàn)锳DC驅(qū)動(dòng)器API?持ADC1(8個(gè)通道,GPI/O32-39)和ADC2(10個(gè)通道,GPI/O0、2、4、12-15、25-27)。但是Wi-Fi驅(qū)動(dòng)程序使?了ADC2。因此,在開啟WiFi后只能使?ADC1(GPI/O32-39)。..當(dāng)時(shí)設(shè)計(jì)的電路并不完善,后來才考慮到功耗問題,由于經(jīng)濟(jì)原因就沒有另做?個(gè)版本的了。以下是重新設(shè)計(jì)的電路,僅供參考。在上圖中,使??個(gè)NMOS管控制電池與分壓電路的通斷,并將NMOS的G極下拉,額外使??個(gè)GPIO引腳連接POWER_EN,通過輸出?低電平可主動(dòng)控制電池與電路的通斷。也使得ESP32斷電或者進(jìn)?DeepSleep模式時(shí)使電池與分壓電路斷開,減??作電流。WS2812的供電電路也可以使?MOS管進(jìn)?電源隔離。在上圖中,使??個(gè)NMOS管控制TP5400的5V輸出與WS2812的5V輸?電路通斷,并將NMOS的G極下拉。額外使??個(gè)GPIO引腳連接WS2812_EN(可與POWER_EN相連,這樣只使??個(gè)GPIO引腳),通過輸出?低電平可主動(dòng)控制電池與電路的通斷。也使得ESP32斷電或者進(jìn)?DeepSleep模式時(shí)使電池與分壓電路斷開,減??作電流。...3、電量計(jì)算關(guān)于電量的校準(zhǔn)?法已經(jīng)在readme.txt內(nèi)的"?、使?說明"中寫明。電量百分?的計(jì)算?法如下(在scan.ino第49?):intadcpower=(((int)get_power()-BAT_MIN)*100)/(BAT_SUB);set_bat((uint8_t)adcpower);直接獲取電量百分??法:uint8_tget_bat();電量百分?的計(jì)算已經(jīng)在鍵盤掃描任務(wù)中完成,直接調(diào)?get_bat()即可獲得電量百分?。...4、關(guān)于IIR濾波器設(shè)計(jì)在設(shè)計(jì)原理圖時(shí)已經(jīng)在分壓電路輸出部分加了?個(gè)?階RC低通濾波電路,但是效果不理想,所以在程序中對(duì)ADC采樣數(shù)據(jù)增加了IIR濾波處理。具體實(shí)現(xiàn)內(nèi)容在power.ino?件中。實(shí)現(xiàn)原理是創(chuàng)建?個(gè)濾波任務(wù),定時(shí)器,信號(hào)量,隊(duì)列。定時(shí)器每隔4ms釋放信號(hào)量。voidIRAM_ATTRadc_iir_callback(){xSemaphoreGiveFromISR(adc_iir_Semaphore,NULL);}濾波任務(wù)獲取信號(hào)量,成功獲取后進(jìn)?濾波計(jì)算,并將濾波結(jié)果放?隊(duì)列中供其他任務(wù)讀取。for(;;){if(xSemaphoreTake(adc_iir_Semaphore,0)==pdTRUE){x37v[0]=x37v[1];x37v[1]=x37v[2];x37v[2]=(double)analogRead(BAT_PIN);y37v[0]=y37v[1];y37v[1]=y37v[2];y37v[2]=power_iir_a0*x37v[2]+power_iir_a1*x37v[1]+power_iir_a2*x37v[0]-(power_iir_b1)*y37v[1]-(power_iir_b2)*y37v[0];power_iir=y37v[2];xQueueOverwrite(POWER_IIR_QUEUE,&power_iir);}}程序中默認(rèn)的參數(shù):使?定時(shí)器0,濾波階數(shù)為2階,采樣頻率Fs=250Hz,截?頻率Fc=1Hz。IIR濾波參數(shù)在power.ino第32~37?定義#definepower_iir_a00.000155148423475699032397095988855539872#definepower_iir_a10.000310296846951398064794191977711079744#definepower_iir_a20.000155148423475699032397095988855539872#definepower_iir_b01#definepower_iir_b1-1.964460580205231954309397224278654903173#definepower_iir_b20.965081173899134947546940566098783165216..?定義濾波器參數(shù)獲取?法需要使?MATLAB?產(chǎn)濾波系數(shù),以下是濾波系數(shù)的?成?法(??安裝MATLAB軟件)。1、在MATLAB命令?中輸?fdatool然后回車,等待打開濾波器設(shè)計(jì)?具箱。參數(shù)設(shè)置好后點(diǎn)擊Designfilter按鈕,將按要求設(shè)計(jì)濾波器。以上是設(shè)計(jì)采樣頻率為250Hz,截?頻率為0.5Hz的2階低通巴特沃斯型IIR濾波器的參數(shù)設(shè)置。在?具欄上點(diǎn)擊FilterCoefficients圖標(biāo)或者在菜單欄上選擇Analysis→FilterCoefficients可以查看?成的濾波器系數(shù)(默認(rèn)情況下,F(xiàn)ilterCoefficients把結(jié)果分成多個(gè)2階Section顯?,其中還有增益。增益的?的是為了保證計(jì)算的精度和系統(tǒng)的穩(wěn)定性)。選擇Edit→ConverttoSingleSection,這時(shí)候系數(shù)變成我們熟悉的形式:將得到的系數(shù)復(fù)制粘貼到power.ino第32~37?的定義中。.修改過程中需要注意的是,改變階數(shù)和采樣頻率時(shí),需要對(duì)代碼碼進(jìn)?修改。以下是修改?法。.當(dāng)改變了階數(shù)階數(shù)不同,濾波器的系統(tǒng)函數(shù)不同,所以MATLAB?具得出的系數(shù)的個(gè)數(shù)也不同,原因復(fù)雜,??百度。如改為3階,則是從上到下分別對(duì)應(yīng)a0~a3,b0~b3的值。對(duì)應(yīng)的也需要改變?yōu)V波任務(wù)中的計(jì)算公式如果將階數(shù)改為1階,則計(jì)算公式為://保存濾波結(jié)果doublepower_iir=0.0;//1階電源濾波doubley37v[2]={0.0,0.0};doublex37v[2]={0.0,0.0};for(;;){if(xSemaphoreTake(adc_iir_Semaphore,0)==pdTRUE){x37v[0]=x37v[1];x37v[1]=(double)analogRead(BAT_PIN);y37v[0]=y37v[1];y37v[1]=power_iir_a0*x37v[1]+power_iir_a1*x37v[0]-(power_iir_b1)*y37v[0];power_iir=y37v[3];xQueueOverwrite(POWER_IIR_QUEUE,&power_iir);}}如果改為3階,則計(jì)算公式為://保存濾波結(jié)果doublepower_iir=0.0;//3階電源濾波doubley37v[4]={0.0,0.0,0.0,0.0};doublex37v[4]={0.0,0.0,0.0,0.0};for(;;){if(xSemaphoreTake(adc_iir_Semaphore,0)==pdTRUE){x37v[0]=x37v[1];x37v[1]=x37v[2];x37v[2]=x37v[3];x37v[3]=(double)analogRead(BAT_PIN);y37v[0]=y37v[1];y37v[1]=y37v[2];y37v[2]=y37v[3];y37v[3]=power_iir_a0*x37v[3]+power_iir_a1*x37v[2]+power_iir_a2*x37v[1]+power_iir_a3*x37v[0]-(power_iir_b1)*y37v[2]-(power_iir_b2)*y37v[1]-(power_iir_b3)*y37v[0];power_iir=y37v[3];xQueueOverwrite(POWER_IIR_QUEUE,&power_iir);}}可按以上?例??選擇并設(shè)計(jì)階數(shù),需要注意的是,階數(shù)越?,計(jì)算過程越復(fù)雜,也越占CPU。..當(dāng)改變了采樣頻率Fs使?MATLAB設(shè)計(jì)濾波器系數(shù)時(shí),如果選擇采樣頻率為500Hz,相當(dāng)于ESP32的ADC引腳每秒鐘采樣500次,此時(shí)應(yīng)該修改定時(shí)器的參數(shù),使定時(shí)器每隔2ms釋放?次信號(hào)量。修改?法:在power.ino?件中的第135?將4000修改為2000。將timerAlarmWrite(Timer,4000,true);/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論