一、前言
在以前的有些單片機應用中,有的時候會遇到 AD 端口資源不夠用的情況,但又需要測量電阻的大小。比如一個熱敏電阻的阻值。有人給出了一個利用兩個 IO 端口完成電阻精確測量的一個老的方法。下面通過實驗來測試一下這個古老的 IO 端口測量電阻的方法。
二、測量原理
測量原理比較簡單。使用兩個單片機IO口,連接兩個電阻,向同一個電容充電。設置一個IO口為輸出端口,另一個為輸入端口。輸出端口通過連接的電阻向電容充電。電容上的電壓上升,當超過一定閾值,輸入端口邏輯電平就會變成1。這個充電時間與 終止電壓、閾值電壓以及 RC對應的時間常數有關系。具體數值由這個公式決定。這個過程再測量一遍。
對應的時間與R2成正比。因此,兩次時間的比值,就等于電阻的比值。如果已知其中一個電阻阻值,另外一個電阻便可以根據時間比值計算出來。這就是IO口測量電阻的基本原理。
三、實驗結果
1、端口閾值電壓
這是 STM32F030K6 單片機,給它端口 PF0 施加一個三角波。程序循環查詢輸入邏輯電平,并在 PF1 輸出反向邏輯。可以看到單片機對輸入信號進行了離散化。上升和下降具有一定的回滯特性。回滯電壓大約是 200mV。
▲ 圖1.3.1 單片機端口的閾值電壓`
2、測量元器件
下面利用F030 單片機的 PF0, PF1 兩個管腳,來測量電阻。測試一下這種方式測量的精度。
實驗中需要一個電容和兩個電阻。電容容值為 313.8nF,電阻1 的阻值為 19.545kΩ; 電阻2的阻值為 4.718kΩ。將它們安裝在面包板上進行測試。
● 電路器件參數:電容C
:313.8nF電阻R1
:19.545k電阻R2
:4.718k
電容一端接地,另外一端與兩個電阻相連。兩個電阻分別與單片機的 PF0,PF1 端口相連。下面對單片機進行軟件編程。利用其中的定時器作為時標,對延遲計時。
PF0管腳連接R2,PF1連接R1。設置PF0 為輸出端口,PF1 為輸入端口。周期改變PF0高低電平。分別測量 PF0,以及電容上的電壓信號。可以看到電容上的電壓呈現充電曲線。時間常數大約為 1.5ms。根據已知器件數值,可以看到與測量的結果是相符合的。
這是電阻2對電容的充放電曲線。下面測量電阻1對電容的充放電過程。由于電阻1的阻值為20k歐姆,所以對應的充放電過程就比較慢,時間常數大約是 R2對應的時間常數的4倍。為 6.3ms。在測量過程中,兩個端口同時對電容進行放電。放電時間取20ms。
3、測量單片機軟件
測量軟件先將 PF0,PF1 輸出 0 電平,對于電容進行放電。然后將其中一個設置為輸入端口,另外一個置為高電平,對電容充電。同時啟動定時器1進行計時。在此過程中,監視輸入端口邏輯電平是否為 1。當輸入端口變為1時,停止定時器,并讀取時間。然后再進行放電,更換另外一個端口為輸入端口。測試充電時間。這是測量 PF0 和 電容上電壓信號。可以看到兩個充放電過程。黃色曲線是 PF0電壓信號,青色是電容上的充放電電壓信號。這是 PF0 作為輸出端口,PF1作為輸入端口時的測量過程。這兩個充電時間與電阻成正比。
這是給出的測量結果,第一個是 電阻1 對應的充電時間。第二個是電阻2 對應的充電時間。它們的比值在4.1左右。根據前面測量的 R1,R2 的阻值,對應的比值大約為 4.143. 由此可以看到測量時間比值與電阻比值接近。
測試 298 個數據進行統計。數據的平均值為 4.119,標準方差為 0.043。測量平均值比實際電阻比值 4.143 小了 0.6% 左右。
● 數據統計結果:測量次數
:298平均值
:4.119標準方差
:0.043
總結
本文測試了利用單片機 IO 口測量電阻的方法。單片機平臺是 STM32F030K6。測量得到的電阻充放電比值 比 電阻值的比值小了 0.6%左右。
-
單片機
+關注
關注
6035文章
44554瀏覽量
634653 -
熱敏電阻
+關注
關注
14文章
1163瀏覽量
101502 -
定時器
+關注
關注
23文章
3246瀏覽量
114720 -
電容充電
+關注
關注
0文章
68瀏覽量
8589 -
閾值電壓
+關注
關注
0文章
73瀏覽量
51415
發布評論請先 登錄
相關推薦
評論