張敏 ZHANG Min;李成林 LI Cheng-lin
(①湖北工業大學工程技術學院,武漢 430068;②湖北省機電研究設計院股份公司,武漢 430068)
電位計被廣泛應用在機車控制面板上,作為信號發生器件,通常與數模轉換器搭配使用。其原理在于,旋鈕電位計旋轉一定角度,其阻值隨旋轉角度(或刻度)線性變化,通過與MCU 定時器建立映射關系,從而產生不同頻率的脈沖信號。然而,以STM32F103 系列芯片為例,定時器產生不同脈沖信號的本質在于改變預裝載值和分頻系數,因而只需使ADC 值(或刻度)與預裝載值建立映射關系,就可實現脈沖信號變頻輸出。
假設預分頻系數為(psc+1),則通用定時器脈沖頻率ft=72MHz/(psc+1),每個計數周期為Tt=1/ft。假設電機轉速需要的脈沖頻率為f,則脈沖周期T=1/f。而I/O 每T/2 翻轉一次,由此可知,裝載值arr 脈沖頻率f 之間存在如下關系:
假設最低脈沖頻率fl為50Hz,最高頻率fh為500Hz。如果分頻系數(psc+1)為7200,脈沖頻率f 帶入(1)式,得到最大裝載值arrmax為99,最小裝載值arrmin為9。STM32F103 為12 位ADC,其最大值為4095(0xFFF),如圖1 所示,arr 和adcx 建立起線性關系,有:

圖1 arr 隨adcx 的變化關系
并有如圖1 所示關系。
式(2)代入式(1),有:
并得到如圖2 所示關系。

圖2 靈敏度K 隨adcx 的變化關系
由此可見,靈敏度并不是均勻變化的。如圖2 所示,adcx 取值范圍在[0,1500]之間時,靈敏度K 反應遲鈍,幾乎為0,導致在調整旋鈕時頻率無明顯變化;adcx 取值范圍在[3500,4096]之間時,靈敏度K 反應過激,即使微調旋鈕,也會導致頻率急劇增加。
由上節可知,線性控制預裝載值,無法線性控制脈沖信號頻率,存在靈敏度不均勻的問題。為了解決該問題,提出了一種新的預裝載值填充辦法。
假設電機需要最低脈沖頻率fl,最高脈沖頻率fh,且頻率值隨adcx 線性變化。則電機脈沖頻率f 與adcx 可以建立起如下關系:
聯立式(1)、式(3)得:
假設最低脈沖頻率fl為50Hz,最高頻率fh為500Hz。如果分頻系數(psc+1)為7200,則arr 與adcx 有如下關系,如圖3 所示。

圖3 arr 隨adcx 的變化關系
由于arr 在隨adcx 的變化過程中只能取整數,采用四舍五入(或floor、ceil 取整運算)取整的方法得到arr 的近似值Modify_arr,得到如下關系,如圖4 所示。

圖4 arr 取整近似值隨adcx 變化關系
將近似得到的Modify_arr 帶入(1)式,得到修正之后的脈沖頻率Modify_f 與Modify_arr 的關系,如圖5 所示。

圖5 Modify_f 隨Modify_arr 變化關系
當adcx 取值為3185 的時候,f 的值存在不確定性,可能是416.6667,也有可能是384.6154,所有的跳變點都是這種情形,如圖6 所示。

圖6 Modify_f 隨adcx 變化關系
還可進一步知道最低分辨率為3878-3502=376。這樣導致的后果是,旋鈕的刻度值越大,頻率的跳變越嚴重,分辨率越低。
為了分頻系數對頻率變化曲線線性度和分辨率的影響,可改變預分頻系數psc+1。以下為改變的結果。
①psc+1=72000(圖7)

圖7 Modify_f 隨adcx 變化關系(psc+1=72000)
②psc+1=7200(圖8)

圖8 Modify_f 隨adcx 變化關系(psc+1=7200)
③psc+1=720(圖9)

圖9 Modify_f 隨adcx 變化關系(psc+1=720)
④psc+1=72(圖10)

圖10 Modify_f 隨adcx 變化關系(psc+1=72)
由圖10 可知,隨著分頻系數的減小,預裝載值越趨于確定,且頻率變化曲線直線度越好,分辨率越高。
為了解決輸出脈沖信號頻率不隨ADC 值線性變化的問題,預裝載值線性填充會導致脈沖輸出控制靈敏度不均勻問題,本文以STM32F103 芯片為例,給出了一種新的預裝載值填充方法,并分析了分頻系數對分辨率的影響。仿真結果表明,預分頻系數越小,預裝載值越來趨于確定,且頻率變化曲線直線度越好,分辨率越高。