摘 要: 提出了一種驅(qū)動線陣CCD工作的方法,給出了PWM模式的工作原理。采用單片機ATmega16的CTC模式及相位和頻率修正PWM模式產(chǎn)生CCD工作所需要的信號,,電路簡單,易于調(diào)試,。
關鍵詞: CCD,; ATmega16; 頻率和相位修正,; CTC,; 驅(qū)動電路
CCD是一種固體成像器件[1],應用廣泛,。CCD工作需要多路脈沖驅(qū)動,,并且各路脈沖在時序上要嚴格對應。對于CCD時序的設計,,通常采用CPLD和FPGA技術(shù),CPLD在低頻CCD時序設計中使用[2-4],,F(xiàn)PGA則用在更為復雜的時序設計中[5],。對于驅(qū)動比較簡單的線陣CCD沒有必要用這種成本比較高的電路。本文針對東芝公司的線陣CCD芯片TCD1304設計了基于單片機ATmega16的驅(qū)動電路,。采用ATmega16的定時器/計數(shù)器timer0的CTC(比較匹配時清零定時器)模式和timer1的相位與頻率修正PWM模式產(chǎn)生所需要的基本波形,,可通過修改單片機程序中的參數(shù)來改變輸出波形的頻率和占空比,使得波形調(diào)整便捷。
1 ATmega16的CTC模式及相位與頻率修正PWM模式
ATmega16的timer0的CTC模式可通過令控制寄存器TCCR0的WGM01=1和WGM00=0來設定,。寄存器OCR0用于調(diào)節(jié)計數(shù)器的分辨率,,當計數(shù)器的數(shù)值TCNT0等于OCR0中的值時計數(shù)器清零,即OCR0定義了計數(shù)器的TOP值,,亦即分辨率,。這個模式使得用戶可以很容易地控制比較匹配輸出的頻率。CTC模式的時序圖如圖1所示,。計數(shù)器數(shù)值TCNT0一直累加到TCNT0與OCR0匹配,,然后TCNT0清零。
為了在CTC模式下得到波形輸出,,可以設置輸出腳OC0在每次比較匹配發(fā)生時改變邏輯電平,,這可以通過設置COM01:0=1來完成。在期望獲得OC0輸出之前,,首先要將其端口設置為輸出,。波形發(fā)生器能夠產(chǎn)生的最大頻率由公式fOC0=fclk_I/O/2·N·(1+OCR0)來確定,變量N代表預分頻因子(1,、8,、64或1 024)。
ATmega16的timer1的相位與頻率修正模式可通過令控制寄存器TCCR1A和TCCR1B中的WGM13:0=8或9來設定,。該種模式可以產(chǎn)生高精度的,、相位與頻率都準確的PWM波形,其工作時序圖如圖2所示,。這是一種雙斜坡操作的模式,,計數(shù)器重復地從BOTTOM計數(shù)到TOP,然后又從TOP倒退回到BOTTOM,。TOP的值可由ICR1(WGM13:0=8)或OCR1A(WGM13:0=9)來確定,。在一般比較輸出模式下,當TCNT1向TOP計數(shù)時,,若TCNT1與OCR1A相匹配,,輸出腳OC1A(B)清零,并置為低電平,;當TCNT1向BOTTOM計數(shù)時,,若TCNT1與OCR1A相匹配時,輸出腳OC1A(B)置為高電平,,工作于反向輸出比較時正好相反,。輸出的PWM波形的頻率由公式fOC1A(B)=fclk_I/O/2·N·TOP來確定,變量N代表預分頻因子(1,、8,、64或1 024)。通過改變ICR1及OCR1A兩個寄存器的值就可完成PWM波形占空比的調(diào)整。
2 線陣圖像傳感器TCD1304的時序分析
CCD芯片TCD1304是一款高靈敏度,、低暗電流的線陣圖像傳感器,,其光電靈敏度的典型值可達到160 V/lx.s,可用于條碼掃描,、光譜測量等場合,。TCD1304有兩種工作方式:普通工作方式和電子快門工作方式,圖3為在普通工作方式下的時序圖,。
TCD1304工作時需要SH,、ICG和ФM 3路驅(qū)動信號。SH的周期表示光信號積累時間,,即積分時間,,ICG和SH是同步的,ФM是主脈沖,,其典型值為2 MHz,。OS表示信號輸出,每4個ФM脈沖周期對應1位信號周期,??梢钥闯觯琓CD1304工作時需要的驅(qū)動信號比較簡單,,完全可以用ATmega16來產(chǎn)生,。
3 電路設計及實驗結(jié)果
3.1 電路設計
基于ATmega16的TCD1304的驅(qū)動電路如圖4所示。
使用ATmega16的timer0的CTC工作模式產(chǎn)生2 MHz的方波,,并由輸出腳OC0輸出,,然后經(jīng)過施密特反向器整形后輸出作為ФM(即圖4中的FM);使用timer1的相位與頻率修正PWM模式產(chǎn)生一定周期的波形,,由OC1A腳輸出,同樣經(jīng)過施密特反向器整形后輸出作為ICG,;將ICG波形經(jīng)過延時和變窄處理后得到SH信號。圖4中還給出了ATmega16的復位電路,。單片機工作時使用系統(tǒng)內(nèi)部時鐘8MHz,,timer1采用8分頻(即1 MHz)作為時鐘輸入。部分的單片機程序如下:
初始化部分:
LDI TEMP, $00
OUT TCCR0, TEMP
OUT TCNT0, TEMP
OUT TCNT1L, TEMP
OUT TCNT1H, TEMP
OUT TIMSK, TEMP
設置timer1和timer0的相關寄存器:
LDI TEMP, $80
OUT TCCR1A, TEMP
LDI TEMP, $00
OUT OCR1AH, TEMP
LDI TEMP, $04
OUT OCR1AL, TEMP
LDI TEMP, $0e
OUT ICR1H, TEMP
LDI TEMP, $74,;
OUT ICR1L, TEMP
LDI TEMP, $02,;
OUT OCR0, TEMP
啟動輸出:
LDI TEMP, $71
OUT TCCR0, TEMP
NOP
LDI TEMP, $12
OUT TCCR1B, TEMP
在程序中,由輸出腳OC0輸出的是2 MHz方波,,通過寄存器OCR0和TCCR0來確定,。輸出腳OC1A輸出的波形周期為T=7.4 ms(ICR1·2·1 μs),對應CCD的最短積分時間,。改變timer1的寄存器的設置就可以調(diào)整積分時間。
3.2 實驗結(jié)果
用示波器測量圖4所示電路產(chǎn)生的SH和ICG波形如圖5所示。通道1為SH波形,,通道2為ICG波形,,SH的高電平相對于ICG的低電平有一定的延時且寬度較窄。圖6為ICG和ФM的波形圖,,通道1為ICG波形,,圖中顯示出了上升沿部分,通道2為ФM波形,。CCD的輸出信號波形和ICG如圖7所示,,通道1為ICG波形,通道2為CCD波形,。
基于單片機ATmega16的CTC模式和相位與頻率修正的PWM工作模式,,設計了CCD時序驅(qū)動電路,結(jié)構(gòu)簡單,,調(diào)試方便,。另外兩種工作模式只使用了單片機很少一部分資源,后續(xù)的CCD信號處理部分(模數(shù)轉(zhuǎn)換,、數(shù)據(jù)存儲等)可以充分利用單片機的現(xiàn)有資源,。
參考文獻
[1] 王慶有,王晉疆,,張存林,等. 光電技術(shù)[M]. 北京:電子工業(yè)出版社,,2008.
[2] 許秀貞,李自田. 基于CPLD的可選輸出CCD驅(qū)動時序設計[J]. 光子學報,,2004,,33(12):1504-1507.
[3] 冉曉強,汶德勝. 基于CPLD的空間面陣CCD相機驅(qū)動時序發(fā)生器的設計與硬件實現(xiàn)[J]. 光子學報,,2007,,36(2):364-367.
[4] 谷林,胡曉東,,羅長州. 基于CPLD的線陣CCD光積分時間的自適應調(diào)節(jié)[J]. 光子學報,,2003,31(12):1533-1537.
[5] 周建康,,陳新華,,周望,等.積分時間可調(diào)的CCD相機驅(qū)動時序設計與實現(xiàn)[J]. 光子學報,,2008,,37(11):2300-2304.