此文轉(zhuǎn)載STC官網(wǎng) 對(duì)于沒有ADC的MCU,而又要測量外部的一個(gè)電壓時(shí),使用RC充放電的方式是比較容易實(shí)現(xiàn)并且低成本的方法。 STC15F系列是1T的MCU,其IO口有OPEN-DRAIN模式,此模式可以很容易用一個(gè)IO口配合一個(gè)定時(shí)器實(shí)現(xiàn)RC充放電來測量外部未知電壓。如果沒有空余的定時(shí)器,也可以使用指令循環(huán)的方式實(shí)現(xiàn)。本例使用定時(shí)器。 本范例使用P3.2(INT0)來做RC測量,電路和波形示意圖如下:
1.png (18.54 KB, 下載次數(shù): 65)
下載附件
2022-1-17 20:11 上傳
2.png (38.79 KB, 下載次數(shù): 45)
下載附件
2022-1-17 20:11 上傳
操作流程: 1、 初始化程序?qū)3.2設(shè)置成OPEN-DRAIN模式,并將P3.2輸出0給電容放電。INT0設(shè)置成上升沿中斷。Timer 0設(shè)置成16位自動(dòng)重裝定時(shí)器模式,時(shí)鐘源為12T,允許中斷。 2、 測量時(shí),先清Timer 0的TH0、TL0,然后將P3.2輸出1開始對(duì)電容充電,接著設(shè)置TR0 = 1來啟動(dòng)Timer 0,然后在INT0中斷里設(shè)置TR0 = 0來停止計(jì)數(shù),并將P3.2輸出0對(duì)電容放電。讀出TH0、TL0的值就是RC充電時(shí)間。 由于MCU工作在5V時(shí),IO口讀到“1”的門限電壓大約為2V,所以要求輸入的電壓高于2V,本例的測試數(shù)據(jù)從4~12.4V,測試結(jié)果參考后面的附錄1。 假設(shè)輸入電壓為Ux,IO口門限電壓為2V,則RC充電時(shí)間為: T = - R * C * ln ( 1 – 2 / Ux ) 按圖示參數(shù),當(dāng)輸入為10V時(shí),RC時(shí)間大約為446uS,附錄1中實(shí)測為447uS。 由于RC時(shí)間跟R和C有關(guān),而R的溫漂一般較小,但普通電容的溫漂較大,所以要使用溫漂小并且漏電也小的電容。 由充電公式或曲線圖可知,Ux和RC值的關(guān)系是非線性的,所以實(shí)際項(xiàng)目使用時(shí),要根據(jù)自己的實(shí)際電路做一些標(biāo)定,這樣可以得到比較準(zhǔn)確的值。 本方法適用于對(duì)測量精度要求不是很高的場合。
完整的Word格式文檔51黑下載地址:
STC15F104W利用RC充放電使用IO口測量外部電壓.DOC
(145.5 KB, 下載次數(shù): 13)
2022-1-17 20:12 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|