ADC內(nèi)部溫度監(jiān)測(cè)不準(zhǔn)確
int?ADC_Temp(void)
{
????UINT8?i;
????UINT16?AdcTemp=0;
????ADC_InterTSSampInit();
????adclen?=?0;
????PFIC_EnableIRQ(?ADC_IRQn?);
????ADC_StartUp();
????while(?adclen?<?12?);
????PFIC_DisableIRQ(?ADC_IRQn?);
????for(?i?=?2;?i?<?12;?i++?)
????????AdcTemp?+=?abcBuff[i];
????AdcTemp?/=?10;
????return?ADC_GetCurrentTS(AdcTemp);
}
__attribute__((interrupt("WCH-Interrupt-fast")))
__attribute__((section(".highcode")))
void?ADC_IRQHandler(?void?)?????????//adc中斷服務(wù)程序
{
??if(?ADC_GetITStatus()?)
??{
????ADC_ClearITFlag();
????if(?adclen?<?12?)
????{
??????abcBuff[adclen]?=?ADC_ReadConverValue();
??????ADC_StartUp();????????????????//?作用清除中斷標(biāo)志并開(kāi)啟新一輪采樣
????}
????adclen++;
??}
}
int?ADC_GetCurrentTS(?UINT16?ts_v?)
{
??UINT32?C25_Data[2];
??int??cal;
??FLASH_EEPROM_CMD(?CMD_GET_ROM_INFO,?ROM_CFG_TMP_25C,?C25_Data,?0?);
??cal?=?(?(?(ts_v?*?1050)?+?2048?)?>>?12?)?+?(?1050?>>?1?);
??cal?=?25?+?((cal?-?(int)(C25_Data[0]&0xFFFF))*10/14);
??return?(??cal?);
}

代碼如上,溫度測(cè)出來(lái)一直都是8、9度的樣子,室溫27度,按理說(shuō)測(cè)出來(lái)不應(yīng)該是27度左右嗎,不知道是哪里的問(wèn)題

因?yàn)樾酒锩鏇](méi)有存溫度校準(zhǔn)的基值。
你可以這樣用,比如當(dāng)前室溫30°,對(duì)應(yīng)當(dāng)前實(shí)測(cè)溫度是8或者9,做個(gè)對(duì)應(yīng)關(guān)系。
然后計(jì)算溫度的變化量就可以了,
比如溫度變化后,轉(zhuǎn)換對(duì)應(yīng)的溫度是15,相當(dāng)于+6度,那么實(shí)際溫度是30+6=36°;
比如溫度變化后,轉(zhuǎn)換對(duì)應(yīng)的溫度是3,相當(dāng)于-6度,那么實(shí)際溫度是30-6=24°;

但是因?yàn)槭莾?nèi)部溫度,跟實(shí)際室溫還是有差距的,手冊(cè)上標(biāo)的誤差是±10°,這個(gè)要注意。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频