張明春


摘要:脈沖寬度調制是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。PIC單片機的定時器PWM功能強大,使用方法簡潔,在電子電路設計中具有廣泛應用。
關鍵詞:定時器;PWM;PIC單片機
中圖分類號:TP319? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)21-0225-02
開放科學(資源服務)標識碼(OSID):
1 PIC單片機及其PWM技術
微芯公司的 PIC 單片機和功能強大的 DSP 芯片都具有電機控制專用外設,如:PWM 模塊、A/D轉換模塊、捕獲模塊(CCP)等, 對于電機控制非常方便。PIC是精簡指令單片機,其執行效率大為提高。[1]與其他單片機相比,PIC最特別的地方是不搞單純的功能堆積,它很遵從實際,重視產品的性能與價格比,考慮到用戶的不種需求,PIC發展了多種型號。此外,PIC單片機還具有其引腳具有防瞬態能力,通過限流電阻可以接至220V交流電源,可直接與繼電器控制電路相連,無須光電耦合器隔離,給應用帶來極大方便。
PWM是Pulse Width Modulation的縮寫,意為脈沖寬度調制,簡稱脈寬調制。它是調整電壓的一種方法,其波形圖如圖1所示。
脈沖寬度調制是一種模擬控制方式,它的工作原理是:根據相應載荷的變化來調制晶體管基極或MOS管柵極的偏置,以此來改變晶體管或MOS管導通時間,從而實現開關穩壓電源輸出的改變。在這種工作模式下,電源的輸出電壓在工作條件變化時也能保持恒定,是利用微處理器的數字信號對模擬電路進行控制的一種非常有效的技術。
要產生PWM波形,有很多方法,本文介紹用PIC單片機的CCP模塊來實現PWM功能的方法。
2 PIC16F877A的CCP功能
PIC16F877A單片機的CCP模塊有很多功能,且每種功能有很多寄存器需要設置。
2.1 PWM波形周期的決定
圖2是一個10位的計數器,它有一個計數輸入端,計數輸入端的頻率越高,這個計數器完成一次計數循環(共計210=1024次計數)所需的時間越短。所以,計數端輸入的信號頻率決定了PWM波形的周期T。
對于PIC16F877A單片機,計數端信號可以來著定時器TMR2。這是一個8位的計數器,其結構圖如圖3所示。
PWM波形主要由系統頻率、前分頻器和PR2寄存器三個因素來決定。
(1)系統頻率Fosc。即單片機的時鐘頻率,可能是外界競爭的頻率,也可能是內部集成的RC振蕩器電路頻率。
(2)前分頻器。這個Fosc/4以后的信號并不是直接送到TMR2的寄存器端,而是經過分頻再送入。分頻的系數可以是1:1(不分頻),1:4(四分頻)或者1:16(16分頻)。控制分頻系數的寄存器是T2CKPS1和T2CKPS2兩個位。
(3)PR2寄存器,這是一個8位的寄存器,可以存放最大的數據是255。當TMR2中的值和PR2的值大小一致時,就產生TMR2輸出信號,這個信號會被送到CCP模塊。
PIC16F877A單片機產生 PWM 信號的過程實質上是計數-比較循環過程 。當定時器 TMR2 計數增量至與周期寄存器 PR2 的值相等時, TMR2 被清零,CCP 模塊的引腳為高電平狀態 , 高電平持續時間參數被鎖存。當 TMR2 的計數值與被鎖存的高電平持續時間相匹配時 ,CCP 模塊的引腳被切換為低電平狀態。[2]
3 占空比配置
占空比是指在一個脈沖循環內,通電時間相對于總時間所占的比例。一個電路在它一個工作周期中有一半時間被接通了,那么它的占空比就是50%。如果加在該工作元件上的信號電壓為5V,則實際的工作電壓平均值或電壓有效值就是2.5V。
CCP模塊包括CCPR1H和CCPR1L兩個8位寄存器,同時各自還有附加的2位寄存器。當TMR2的8位和附加2位(共計10位)計滿1024個數后,PWM周期生成比較器就會將對應的單片機引腳電平由低置為高。而當TMR2的8位和附加2位計數與CCPR1H及附加2位計數器中的值相等時,對應的單片機引腳電平由低置為低[3]。
如果設置CCPR1H及附加2位中的值是306,那么高電平維持的時間(Tp)將是306個計數周期,而整個PWM的周期是1024,此時PWM的占空比是306/1024=30%。
4 呼吸燈功能測試
為了測試定時器PWM功能,按照圖5連接電路圖[4]。PIC16F877A單片機的CCP功能引腳與RC2復用,B1與C1、C2構成晶振電路,R1將復位端MCLR上拉,LED通過限流電阻R2連接到CCP1引腳,J1位下載和仿真器接口。
根據控制定時器T2的寄存器T2CON各位功能,可以將T2CON設置為0x0C,也即預分頻控制為00,T2ON設置為1。通過配置CCP1M3~CCP1M0寄存器來設置工作模式,如果要講CCP1設置為PWM模式,只要設置這4位為11.xx即可(將CCP1M3、CCP1M2設置為1)。CCP1X和CCP1Y是CCPR1L后面的2位附加位,它們和CCPR1L共同構成10位計數器。
在CCP模塊實現PWM功能時,CCPR1H及其后面的附加2位是不能通過程序控制的,它們被固定為CCPR1L及CCP1X、CCP1Y的鏡像,每個PWM周期更新一次。這樣設計的目的是可以隨時更新脈寬參數。
以下程序(部分為偽代碼)可以實現呼吸燈功能。通過不斷改變LedBright的,并且通過程序控制當LedBright等于0是,將亮度方向標識變量置位,當LedBright等1023時,將亮度方向標識變量復位,可以形成上升和下降的過程。
5 總結
PWM控制技術以其控制簡單,靈活和動態響應好的優點而成為電力電子技術最廣泛應用的控制方式,也是人們研究的熱點。PIC單片機的定時器PWM功能強大,相關設置簡潔,使用方法簡單;PWM既經濟、節約空間、抗噪性能強,是一種廣泛應用的有效技術。
參考文獻:
[1] 李愛芹,趙鳳申.基于PIC16C72單片機的簡易變頻器設計[J].機電工程技術,2009,12(38):55-57.
[2] 張紅娟,李維.基于PIC單片機的直流電機PWM調速系統[J].機電工程,2005,2(22):11-12.
[3] 宋戈等.51單片機應用開發范例大全[M].北京:人民郵電出版社,2012.
[4] 朱正偉.EDA技術及其應用[M].北京:清華大學出版社,2005.
【通聯編輯:朱寶貴】