ccd(ge coupled devices)電荷耦合器件應用系統(tǒng)的關鍵技術在于ccd驅動時序的產(chǎn)生和輸出信號的采集與處理。目前驅動主要有直接數(shù)字電路驅動、eprom驅動、專用ic驅動、復雜的cpld驅動等常用的驅動方法,但是它們存在著邏輯設計較為復雜、調試困難、柔性較差等缺點。在數(shù)據(jù)采集和處理方面,大多數(shù)都經(jīng)過差動放大、采樣保持、a/d轉換,再通過總線或采集卡等接口與pc機相連。這種系統(tǒng)結構龐大,而且在信號處理、通信軟件和界面設計等方面要耗費大量的精力。應該說這種應用系統(tǒng)在靜態(tài)測量處理方面有其優(yōu)點,但如果要滿足實時控制系統(tǒng)的連續(xù)檢測要求以及系統(tǒng)體積精小而容易裝配等特點,則必須簡化驅動電路、數(shù)據(jù)采集過程和處理方式。本文正是出于這種考慮,開發(fā)出了一種基于單片機的實時性檢測系統(tǒng):僅用atmel公司一塊小型的at89c2051單片機便能產(chǎn)生穩(wěn)定、精確、高速的驅動脈沖。該電路結構簡單、調試方便、cpu占用率低,將驅動、采集和處理融為一體,而且與上位機的連接僅用兩條導線便可實現(xiàn)檢測信息傳輸。這種方法大大簡化了線陣ccd檢測系統(tǒng)的結構,在機器人視覺、智能小車、軌跡導引等動態(tài)檢測方面有獨特的應用優(yōu)勢。
1 線陣ccd實時檢測系統(tǒng)模型
以機器人路徑識別為例具體說明如何利用線陣ccd開發(fā)實時動態(tài)環(huán)境檢測系統(tǒng)。
假設在一個深色(如黑色、藍、綠等)平面上用寬度為30mm的白線作為機器人將要運動的軌跡導引線,利用線陣ccd開發(fā)出檢測白線軌跡的檢測系統(tǒng)。先利用光學系統(tǒng)用攝像頭將路面信息成像到ccd的感光面上;然后讀取白線的位置檢測信息作為機器人的視覺,讓機器人在上位機的控制下沿白線軌跡運動。這是一個典型的ccd實時檢測系統(tǒng)。整體檢測系統(tǒng)如圖1所示。
2 硬件設計
利用ccd的光電特性,設計出的電路應能判別視頻信號上輸出的深色和白色區(qū)別,這樣才能識別白線,時刻反應機器人當前所在的物理位置,以便對其運動做相應的調整。 線陣ccd選用nec公司的μpd3575d型號。芯片為20腳dip封裝,像敏單元數(shù)目為1024,像敏單元大小為14μm×l41μm×l4μm(相鄰像元中心距為14μm),光敏區(qū)域采用高靈敏度和低暗電流pn結作為光敏單元,內(nèi)置采用保持電路、輸出放大電路,外觀尺寸為25.5mm×10mm,易于裝卸。該器件工作在5v驅動(脈沖)、12v電源條件下。
系統(tǒng)簡要電路如圖2所示。驅動用的單片機是at89c2051。它是atmel公司生產(chǎn)的自帶2kb可編程flash存儲器的與msc-51兼容的高性能處理器。它與常規(guī)的51芯片有相同的核心和相近的結構功能如ram、定時/記數(shù)器、中斷結構、串行口、振蕩器和時鐘電路等;有最高達24mhz的振蕩頻率,能高速地驅動ccd;有較少的精簡i/o端口,因此體積很小,非常適用做小型應用系統(tǒng)的處理器。對很多嵌入式控制應用提供了一個高度靈活的有效解決方案。本線陣ccd檢測系統(tǒng)發(fā)揮了其小而靈活的特點,既陡系統(tǒng)資源得到了充分的應用又讓系統(tǒng)結陶精簡緊奏,電路中二值化部分的電位器r_t用來調整二值化比較電平的閥值(0~5v),通過它調節(jié)整個ccd的灰度分辨率。同時整個系統(tǒng)對外接口十分簡單,只需接上電源和兩條通向上位機的信號線。上位機只需等待同步信號fc和檢測脈沖信號bin_out到來的中斷信號,與at89c2051相互獨立,彼此之間沒有任何時鐘信號或復用關系。因此實際運用中器件互換性較強。既可選用普通的at89c51進行一定的端口擴展接收fc和bin_out,也可選用中斷能力較強的soc芯片c8051fxx系列等。整個檢測系統(tǒng)具有良好的柔性,最終電路體積可控制在手掌心大小之內(nèi)。
圖2
3 信號時序及軟件設計
由于硬件設計時考慮用軟件產(chǎn)生ccd驅動信號,這樣軟件設計的最大難點為既要滿足ccd芯片的驅動信號要求又要完成檢測信息的完整表述。綜合比較各種方法后得出了整個軟件設計思路如下:
驅動描述:nec公司的線陣μpd3575d所需驅動信號與toshiba公司傳統(tǒng)的tcd系列略有差異,具體驅動信號為:時鐘φ10、轉移脈沖φtg、復位時鐘φro和采樣保持時鐘φsho,時序關系如圖3所示。
μpd3575d為雙溝道線陣ccd,它有兩列525位的ccd移位寄存器,分列在像敏陣列的兩邊,在一個積分的φtg周期中至少有525個φ10脈沖:另外考慮到一些暗信號和空驅動.本系統(tǒng)開發(fā)中取φ10脈沖寬度約為10μs、φtg積分時間為12ms。
單片機驅動主要是通過程序編程控制輸出驅動的時序信號,可以通過修改程序方便地修改輸出時序,單片機是靠指令產(chǎn)生i/o口的輸出邏輯,在使用邏輯轉移指令時,必須注意精心配置,避免產(chǎn)生驅動時序相位上的不同步。因為轉移指令要根據(jù)某些條件產(chǎn)生程序分支,而分支程序在不同的條件下執(zhí)行周期通常不同,會造成ccd驅動時序不同步。
檢測過程描述:參見圖2的系統(tǒng)電路圖,當ccd被驅動后因其光電特性會有視頻模擬信號vout輸出,信號如圖4所示。可以看出:模擬信號vout在ccd掃描到深色區(qū)和白色區(qū)有明顯的幅值大小區(qū)別,要提取的信息就是這個變化的電壓信號,但單片機不能直接處理模擬信號vout,因此必須先將vout通過二值化處理得到數(shù)字信號bin(見圖2二值化電路部分)。這樣便得到了反映白線左右兩個邊緣的脈沖信號bin。為了方便上位機的處理,不直接輸出信號bin,而是將bin反饋給at89c2051,讓其通過程序編制來捕捉其上升沿和下降沿的跳變,再從另外的引腳輸出與bin上升沿和下降沿同步的負脈沖信號bin_out。這樣上位機可方便地通過中斷檢測到白線的左右側。這里at89c205l還要輸出一個同步信號fc(即驅動轉移脈沖φtg)。因為系統(tǒng)是在連續(xù)掃描地面信息,故fc脈沖可標志ccd上一次掃描的結束和新一行掃描的開始。新一行開始掃描時,上位機收到fc負脈沖后可進入中斷對定時器to、tl清零并立即開始計數(shù)。當收到bin_out的第一個負脈沖后進入中斷并停止,定時器to;當收到bin_out的第二個負脈沖后進人中斷并停止定時器t1,讀出定時器to、t1里的數(shù)t0、t1。t0、t1便反映了路面白線的坐標位置,很明顯t1與t0之差便是白線寬度。
綜合以上驅動和檢測信號要求得出:在主程序中用一個死循環(huán)產(chǎn)生連續(xù)的四路驅動脈沖,并通過嵌入相應的其他功能的指令來保證四個驅動脈沖的相位關系,對bin信號的上升沿和下降沿的判斷也在此循環(huán)中完成。對bin信號的當前狀態(tài)還必須有一個狀態(tài)標志bin_state。一旦遇到bin信號有電子變化便給出相應的bin_out負脈沖,而bin_out恢復高電平是靠定時器to溢出中斷服務程序實現(xiàn)的。
本系統(tǒng)用一片小型單片機完全實現(xiàn)了預定功能,幾乎沒有復雜的外圍電路器件,結構簡單可靠,硬件、軟件代價都較低,系統(tǒng)成本預算較低。整個檢測系統(tǒng)角在機器人視覺上實驗效果也非常理想。系統(tǒng)可根據(jù)具體的需要和要求進行擴展和改變,如增加信號輸出、改變檢測系統(tǒng)和上位機的信號接口等。 來源:university