AVR單片機的全功能工業控制器設計
引言
在自動控制產品的設計過程中,實現方案的選擇常常是很矛盾的。使用可編程邏輯控制器(PLC)和人機界面(HMI)來實現,開發速度較快,但成本太高,所開發的產品沒有市場競爭力;使用單片機開發,成本低但開發周期長、開發量大且通用性不好。用戶需要的是一種成本低、開發周期較短、通用性較好的控制器,因此全功能工業控制器有很大的應用市場。
全功能工業控制器的整個電路分為信號隔離輸入部分、控制器輸出部分、實時時鐘與歷史數據存儲部分、彩色液晶顯示和觸摸屏控制部分、通信接口等。
1 信號隔離輸入電路
信號隔離輸入電路分為開關量隔離輸入、模擬量隔離輸入、高速電脈沖隔離輸入,電路如圖1所示,開關量的隔離輸入較為簡單,輸入信號采用光耦進行隔離后送入單片的普通I/O,單片機用查詢方式進行采集。
圖1 信號隔離輸入電路
高速電脈沖的采集需要注意的是,所設計的電路必須適應高速信號采集的要求,因此隔離光耦應采用高速光耦(如6N137等)。采用查詢方式采集高速脈沖容易造成采集數據的丟失,高速脈沖應采用中斷方式進行采集。
模擬量隔離采集是本控制器的一個重點和難點,筆者之前采用了線性光耦等多種方式進行模擬量的隔離采集實驗,均未獲滿意的效果。這里采用一種先將模擬量數字化(使用AD7705),然后通過有光耦隔離的數據口送到CPU進行模擬量隔離采集的方式,效果理想。
2 控制器輸出電路
控制器的輸出方式有繼電器輸出、晶體管輸出、模擬電壓輸出,如圖2所示。繼電器輸出和晶體管輸出電路較為簡單,這里不作詳細的介紹。下面著重介紹模擬電壓的產生原理。
圖2 控制器輸出電路
模擬電壓的輸出主要利用ATmega128的PWM端口來實現,PWM輸出脈沖經光耦隔離后再進行濾波產生所需的直流信號。為了提高驅動能力,加了一級射極跟隨器,如圖2上半部所示。
PWM電壓調節實現的程序如下:
#define PWM1_IN(){DDRB.5=1;PORTB.5=0;}//PWM端口控制
#define PWM1_OUT() DDRB.5=1;
/**********************
PWM初始化程序:
使用TIMER1,預分頻為8,設置10位快速PWM模式,關閉中斷
**********************/
void pwm_init(void){
TIMSK=0xC3; //關閉TIMER1中斷
ETIMSK=0xFE;
TCCR1A=0; //關閉定時器
TCCR1B=0;
OCR1A=0x0000; //關閉輸出
OCR1B=0x0000;
TCCR1A=0xA3; //設置10位快速PWM
//模式,預分頻為8
TCCR1B=0x0A;
PWM1_IN()
}
/***************************
PWM通道控制程序: 功能——可以進行單通道的開關和調整輸出
入口參數—— b為通道控制(1—改值,2—開端口,3—關端口);
評論