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