基于單片機(jī)的線陣CCD實(shí)時(shí)檢測(cè)系統(tǒng)的開(kāi)發(fā)
摘要:分析了線陣CCD用于實(shí)時(shí)檢測(cè)系統(tǒng)的特點(diǎn)和要求,介紹了一種基于AT89C2051單片機(jī)的線陣CCD實(shí)時(shí)檢測(cè)系統(tǒng)的設(shè)計(jì)方案。本方案電路結(jié)構(gòu)簡(jiǎn)單可靠,信號(hào)處理靈活檢當(dāng),有一定的通用性和啟發(fā)性。 關(guān)鍵詞:CCD 單片機(jī) 驅(qū)動(dòng) 檢測(cè)系統(tǒng) CCD(Charge Coupled Devices)電荷耦合器件應(yīng)用系統(tǒng)的關(guān)鍵技術(shù)在于CCD驅(qū)動(dòng)時(shí)序的產(chǎn)生和輸出信號(hào)的采集與處理。目前驅(qū)動(dòng)主要有直接數(shù)字電路驅(qū)動(dòng)、EPROM驅(qū)動(dòng)、專用IC驅(qū)動(dòng)、復(fù)雜的CPLD驅(qū)動(dòng)等常用的驅(qū)動(dòng)方法,但是它們存在著邏輯設(shè)計(jì)較為復(fù)雜、調(diào)試?yán)щy、柔性較差等缺點(diǎn)。在數(shù)據(jù)采集和處理方面,大多數(shù)都經(jīng)過(guò)差動(dòng)放大、采樣保持、A/D轉(zhuǎn)換,再通過(guò)總線或采集卡等接口與PC機(jī)相連。這種系統(tǒng)結(jié)構(gòu)龐大,而且在信號(hào)處理、通信軟件和界面設(shè)計(jì)等方面要耗費(fèi)大量的精力。應(yīng)該說(shuō)這種應(yīng)用系統(tǒng)在靜態(tài)測(cè)量處理方面有其優(yōu)點(diǎn),但如果要滿足實(shí)時(shí)控制系統(tǒng)的連續(xù)檢測(cè)要求以及系統(tǒng)體積精小而容易裝配等特點(diǎn),則必須簡(jiǎn)化驅(qū)動(dòng)電路、數(shù)據(jù)采集過(guò)程和處理方式。本文正是出于這種考慮,開(kāi)發(fā)出了一種基于單片機(jī)的實(shí)時(shí)性檢測(cè)系統(tǒng):僅用Atmel公司一塊小型的AT89C2051單片機(jī)便能產(chǎn)生穩(wěn)定、精確、高速的驅(qū)動(dòng)脈沖。該電路結(jié)構(gòu)簡(jiǎn)單、調(diào)試方便、CPU占用率低,將驅(qū)動(dòng)、采集和處理融為一體,而且與上位機(jī)的連接僅用兩條導(dǎo)線便可實(shí)現(xiàn)檢測(cè)信息傳輸。這種方法大大簡(jiǎn)化了線陣CCD檢測(cè)系統(tǒng)的結(jié)構(gòu),在機(jī)器人視覺(jué)、智能小車、軌跡導(dǎo)引等動(dòng)態(tài)檢測(cè)方面有獨(dú)特的應(yīng)用優(yōu)勢(shì)。 1 線陣CCD實(shí)時(shí)檢測(cè)系統(tǒng)模型 以機(jī)器人路徑識(shí)別為例具體說(shuō)明如何利用線陣CCD開(kāi)發(fā)實(shí)時(shí)動(dòng)態(tài)環(huán)境檢測(cè)系統(tǒng)。 假設(shè)在一個(gè)深色(如黑色、藍(lán)、綠等)平面上用寬度為30mm的白線作為機(jī)器人將要運(yùn)動(dòng)的軌跡導(dǎo)引線,利用線陣CCD開(kāi)發(fā)出檢測(cè)白線軌跡的檢測(cè)系統(tǒng)。先利用光學(xué)系統(tǒng)用攝像頭將路面信息成像到CCD的感光面上;然后讀取白線的位置檢測(cè)信息作為機(jī)器人的視覺(jué),讓機(jī)器人在上位機(jī)的控制下沿白線軌跡運(yùn)動(dòng)。這是一個(gè)典型的CCD實(shí)時(shí)檢測(cè)系統(tǒng)。整體檢測(cè)系統(tǒng)如圖1所示。
2 硬件設(shè)計(jì) 利用CCD的光電特性,設(shè)計(jì)出的電路應(yīng)能判別視頻信號(hào)上輸出的深色和白色區(qū)別,這樣才能識(shí)別白線,時(shí)刻反應(yīng)機(jī)器人當(dāng)前所在的物理位置,以便對(duì)其運(yùn)動(dòng)做相應(yīng)的調(diào)整。 線陣CCD選用NEC公司的μPD3575D型號(hào)。芯片為20腳DIP封裝,像敏單元數(shù)目為1024,像敏單元大小為 14μm%26;#215;l41μm%26;#215;l4μm(相鄰像元中心距為14μm),光敏區(qū)域采用高靈敏度和低暗電流PN結(jié)作為光敏單元,內(nèi)置采用保持電路、輸出放大電路,外觀尺寸為25.5mm%26;#215;10mm,易于裝卸。該器件工作在5V驅(qū)動(dòng)(脈沖)、12V電源條件下。 系統(tǒng)簡(jiǎn)要電路如圖2所示。驅(qū)動(dòng)用的單片機(jī)是AT89C2051。它是Atmel公司生產(chǎn)的自帶2KB可編程Flash存儲(chǔ)器的與MSC-51兼容的高性能處理器。它與常規(guī)的51芯片有相同的核心和相近的結(jié)構(gòu)功能如RAM、定時(shí)/記數(shù)器、中斷結(jié)構(gòu)、串行口、振蕩器和時(shí)鐘電路等;有最高達(dá)24MHz的振蕩頻率,能高速地驅(qū)動(dòng)CCD;有較少的精簡(jiǎn)I/O端口,因此體積很小,非常適用做小型應(yīng)用系統(tǒng)的處理器。對(duì)很多嵌入式控制應(yīng)用提供了一個(gè)高度靈活的有效解決方案。本線陣CCD檢測(cè)系統(tǒng)發(fā)揮了其小而靈活的特點(diǎn),既陡系統(tǒng)資源得到了充分的應(yīng)用又讓系統(tǒng)結(jié)陶精簡(jiǎn)緊奏,電路中二值化部分的電位器R_T用來(lái)調(diào)整二值化比較電平的閥值(0~5V),通過(guò)它調(diào)節(jié)整個(gè)CCD的灰度分辨率。同時(shí)整個(gè)系統(tǒng)對(duì)外接口十分簡(jiǎn)單,只需接上電源和兩條通向上位機(jī)的信號(hào)線。上位機(jī)只需等待同步信號(hào)FC和檢測(cè)脈沖信號(hào)BIN_OUT到來(lái)的中斷信號(hào),與AT89C2051相互獨(dú)立,彼此之間沒(méi)有任何時(shí)鐘信號(hào)或復(fù)用關(guān)系。因此實(shí)際運(yùn)用中器件互換性較強(qiáng)。既可選用普通的AT89C51進(jìn)行一定的端口擴(kuò)展接收FC和BIN_OUT,也可選用中斷能力較強(qiáng)的SOC芯片C8051FXX系列等。整個(gè)檢測(cè)系統(tǒng)具有良好的柔性,最終電路體積可控制在手掌心大小之內(nèi)。 圖2 3 信號(hào)時(shí)序及軟件設(shè)計(jì) 由于硬件設(shè)計(jì)時(shí)考慮用軟件產(chǎn)生CCD驅(qū)動(dòng)信號(hào),這樣軟件設(shè)計(jì)的最大難點(diǎn)為既要滿足CCD芯片的驅(qū)動(dòng)信號(hào)要求又要完成檢測(cè)信息的完整表述。綜合比較各種方法后得出了整個(gè)軟件設(shè)計(jì)思路如下: 驅(qū)動(dòng)描述:NEC公司的線陣μPD3575D所需驅(qū)動(dòng)信號(hào)與TOSHIBA公司傳統(tǒng)的TCD系列略有差異,具體驅(qū)動(dòng)信號(hào)為:時(shí)鐘φ10、轉(zhuǎn)移脈沖φTG、復(fù)位時(shí)鐘φRO和采樣保持時(shí)鐘φSHO,時(shí)序關(guān)系如圖3所示。 μPD3575D為雙溝道線陣CCD,它有兩列525位的CCD移位寄存器,分列在像敏陣列的兩邊,在一個(gè)積分的φTG周期中至少有525個(gè)φ10脈沖:另外考慮到一些暗信號(hào)和空驅(qū)動(dòng).本系統(tǒng)開(kāi)發(fā)中取φ10脈沖寬度約為10μs、φTG積分時(shí)間為12ms。 單片機(jī)驅(qū)動(dòng)主要是通過(guò)程序編程控制輸出驅(qū)動(dòng)的時(shí)序信號(hào),可以通過(guò)修改程序方便地修改輸出時(shí)序,單片機(jī)是靠指令產(chǎn)生I/O口的輸出邏輯,在使用邏輯轉(zhuǎn)移指令時(shí),必須注意精心配置,避免產(chǎn)生驅(qū)動(dòng)時(shí)序相位上的不同步。因?yàn)檗D(zhuǎn)移指令要根據(jù)某些條件產(chǎn)生程序分支,而分支程序在不同的條件下執(zhí)行周期通常不同,會(huì)造成 CCD驅(qū)動(dòng)時(shí)序不同步。
檢測(cè)過(guò)程描述:參見(jiàn)圖2的系統(tǒng)電路圖,當(dāng)CCD被驅(qū)動(dòng)后因其光電特性會(huì)有視頻模擬信號(hào)Vout輸出,信號(hào)如圖4所示??梢钥闯觯耗M信號(hào)Vout在CCD 掃描到深色區(qū)和白色區(qū)有明顯的幅值大小區(qū)別,要提取的信息就是這個(gè)變化的電壓信號(hào),但單片機(jī)不能直接處理模擬信號(hào)Vout,因此必須先將Vout通過(guò)二值化處理得到數(shù)字信號(hào)BIN(見(jiàn)圖2二值化電路部分)。這樣便得到了反映白線左右兩個(gè)邊緣的脈沖信號(hào)BIN。為了方便上位機(jī)的處理,不直接輸出信號(hào)BIN,而是將BIN反饋給AT89C2051,讓其通過(guò)程序編制來(lái)捕捉其上升沿和下降沿的跳變,再?gòu)牧硗獾囊_輸出與BIN上升沿和下降沿同步的負(fù)脈沖信號(hào) BIN_OUT。這樣上位機(jī)可方便地通過(guò)中斷檢測(cè)到白線的左右側(cè)。這里AT89C205l還要輸出一個(gè)同步信號(hào)FC(即驅(qū)動(dòng)轉(zhuǎn)移脈沖φTG)。因?yàn)橄到y(tǒng)是在連續(xù)掃描地面信息,故FC脈沖可標(biāo)志CCD上一次掃描的結(jié)束和新一行掃描的開(kāi)始。新一行開(kāi)始掃描時(shí),上位機(jī)收到FC負(fù)脈沖后可進(jìn)入中斷對(duì)定時(shí)器TO、 Tl清零并立即開(kāi)始計(jì)數(shù)。當(dāng)收到BIN_OUT的第一個(gè)負(fù)脈沖后進(jìn)入中斷并停止,定時(shí)器TO;當(dāng)收到BIN_OUT的第二個(gè)負(fù)脈沖后進(jìn)人中斷并停止定時(shí)器 T1,讀出定時(shí)器TO、T1里的數(shù)t0、t1。t0、t1便反映了路面白線的坐標(biāo)位置,很明顯t1與t0之差便是白線寬度。 綜合以上驅(qū)動(dòng)和檢測(cè)信號(hào)要求得出:在主程序中用一個(gè)死循環(huán)產(chǎn)生連續(xù)的四路驅(qū)動(dòng)脈沖,并通過(guò)嵌入相應(yīng)的其他功能的指令來(lái)保證四個(gè)驅(qū)動(dòng)脈沖的相位關(guān)系,對(duì) BIN信號(hào)的上升沿和下降沿的判斷也在此循環(huán)中完成。對(duì)BIN信號(hào)的當(dāng)前狀態(tài)還必須有一個(gè)狀態(tài)標(biāo)志BIN_STATE。一旦遇到BIN信號(hào)有電子變化便給出相應(yīng)的BIN_OUT負(fù)脈沖,而B(niǎo)IN_OUT恢復(fù)高電平是靠定時(shí)器TO溢出中斷服務(wù)程序?qū)崿F(xiàn)的。
本系統(tǒng)用一片小型單片機(jī)完全實(shí)現(xiàn)了預(yù)定功能,幾乎沒(méi)有復(fù)雜的外圍電路器件,結(jié)構(gòu)簡(jiǎn)單可靠,硬件、軟件代價(jià)都較低,系統(tǒng)成本預(yù)算較低。整個(gè)檢測(cè)系統(tǒng)角在機(jī)器人視覺(jué)上實(shí)驗(yàn)效果也非常理想。系統(tǒng)可根據(jù)具體的需要和要求進(jìn)行擴(kuò)展和改變,如增加信號(hào)輸出、改變檢測(cè)系統(tǒng)和上位機(jī)的信號(hào)接口等。