新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 又一神級(jí)DIY!自己動(dòng)手做數(shù)碼相機(jī)

又一神級(jí)DIY!自己動(dòng)手做數(shù)碼相機(jī)

作者: 時(shí)間:2012-04-27 來(lái)源:網(wǎng)絡(luò) 收藏

都白菜價(jià)了?現(xiàn)在白菜都快趕上房?jī)r(jià)了!所以,立志要成為德藝雙馨攝影大師的,無(wú)論普通、文藝還是二逼的青年攝影師們,我們還是自己動(dòng)手吧!

本文引用地址:http://m.butianyuan.cn/article/186510.htm

線(xiàn)性?huà)呙柘鄼C(jī)是的一種。這種相機(jī)一般在各種機(jī)器中作為組成部分發(fā)揮作用,一般來(lái)說(shuō)不容易在實(shí)際生活中獨(dú)立見(jiàn)到。這個(gè)制作能幫助你并且進(jìn)一步了解線(xiàn)性?huà)呙柘鄼C(jī)。

線(xiàn)性CCD傳感器(Charge-coupledDevicelinesensor,線(xiàn)性電荷耦合傳感器)是線(xiàn)性?huà)呙柘鄼C(jī)中最為重要的部分。我十多年前就在電子城中買(mǎi)下了它。但是想要制作一臺(tái)小體積的便攜線(xiàn)性?huà)呙柘鄼C(jī)有些困難,電路部分需要高性能的微處理器和大容量存儲(chǔ)器,在當(dāng)時(shí)一般的個(gè)人制作對(duì)這些昂貴的高級(jí)貨只能敬而遠(yuǎn)之。于是它被我扔到一個(gè)破爛盒子里,連我自己都幾乎忘記了。

十年的時(shí)間之后,拜飛速發(fā)展的半導(dǎo)體工業(yè)所賜,芯片們的價(jià)格終于降到了可以接受的地步?,F(xiàn)在即使是入門(mén)的新手也能隨意享受到32位的微處理器和海量的存儲(chǔ)卡,所以我依靠最新的技術(shù)重新開(kāi)始了這個(gè)項(xiàng)目!

自己動(dòng)手做數(shù)碼相機(jī)
自己動(dòng)手做數(shù)碼相機(jī)
數(shù)碼相機(jī)

1、線(xiàn)性?huà)呙柘鄼C(jī)

1.1、相機(jī)原理

普通平面相機(jī)和線(xiàn)性相機(jī)的比較
普通平面相機(jī)和線(xiàn)性相機(jī)的比較

線(xiàn)性?huà)呙柘鄼C(jī)是數(shù)碼相機(jī)的一種,它使用線(xiàn)性CCD傳感器(一維CCD器件)作為圖像傳感器。普通的數(shù)碼相機(jī)用一個(gè)平面CCD器件(二維CCD器件)捕捉焦平面上的圖像,獲取的圖案是一個(gè)二維的平面。而對(duì)線(xiàn)性?huà)呙柘鄼C(jī)來(lái)說(shuō),它所獲取的圖案是一條一維的線(xiàn)!

即使每次獲得的圖像只有一條線(xiàn),線(xiàn)性?huà)呙柘鄼C(jī)還是有能力獲得完整的圖像。在制作一臺(tái)線(xiàn)性?huà)呙柘鄼C(jī)時(shí),需要不斷移動(dòng)相機(jī)或者被攝物——這樣每次獲得的部分?jǐn)?shù)據(jù)被存儲(chǔ)在內(nèi)存里,并最終像織布一樣一條線(xiàn)一條線(xiàn)地拼湊成完整的圖像。

在過(guò)去的膠片時(shí)代有一種狹縫相機(jī)。它和這里說(shuō)的線(xiàn)性?huà)呙柘鄼C(jī)類(lèi)似,通過(guò)一條窄縫(一維的窗口)成像,拼合一維圖像獲取完整的二維圖像。

1.2、功能應(yīng)用

線(xiàn)性?huà)呙柘鄼C(jī)具有下面這些功能:

-高分辨率。即使便宜的傳感器也能做到10000點(diǎn)以上的分辨率。

-簡(jiǎn)單緊湊的光學(xué)系統(tǒng)。不需要掃描桌。

-對(duì)物體的尺寸和長(zhǎng)度沒(méi)有限制,對(duì)很長(zhǎng)的物體也能正確成像。

由于這些功能,線(xiàn)性?huà)呙柘鄼C(jī)在很多地方得到了廣泛應(yīng)用,你可以在許多重要的設(shè)備上發(fā)現(xiàn)它們。比如:

-復(fù)印機(jī)

-圖像掃描儀

-傳真機(jī)

-機(jī)器視覺(jué)(檢查長(zhǎng)形物體)

-衛(wèi)星(比如拍下google地圖的那些)

-終點(diǎn)攝影(體育比賽)

2、硬件構(gòu)成

2.1、功能模塊

線(xiàn)性?huà)呙柘鄼C(jī)的各個(gè)功能模塊
線(xiàn)性?huà)呙柘鄼C(jī)的各個(gè)功能模塊

上圖展示了構(gòu)成線(xiàn)性?huà)呙柘鄼C(jī)的各個(gè)功能模塊。線(xiàn)性CCD傳感器將收集的光感信息傳遞到AD(模擬-數(shù)字)轉(zhuǎn)換器數(shù)字化,然后以數(shù)字信號(hào)形式輸入控制器。這些數(shù)據(jù)可以顯示在顯示屏上,或者傳輸?shù)酱鎯?chǔ)器里。掃描的頻率在500線(xiàn)每秒到2000線(xiàn)每秒之間可調(diào),視CCD器件的種類(lèi)而定。

電路部分被分成三大部分,每塊之間通過(guò)柔性印刷電路排線(xiàn)相連。我經(jīng)常不使用定制的PCB因?yàn)樗鼈兲F而且沒(méi)有精神,設(shè)計(jì)麻煩,之后有改動(dòng)也麻煩。這種一次性的制作在洞洞板上相機(jī)行事最好了。

這是何等的飛線(xiàn)功力……

2.2、光路和外殼

光路和外殼
光路和外殼

上圖展示了如何為這個(gè)線(xiàn)性?huà)呙柘鄼C(jī)制作外殼。這是從一個(gè)高知電子(Takachielectricindustrial)的SW-85B塑料盒改造而來(lái)的外殼,這個(gè)項(xiàng)目的光路需要控制的非常精確,所以設(shè)計(jì),加工,裝配的時(shí)候都需要特別注意。這里有外殼的圖紙。帶有線(xiàn)性傳感器的模擬部分電路板安裝在可動(dòng)的螺釘上,這樣就能隨意調(diào)整距離。

這次使用的透鏡是C-mount接環(huán)的,它是工業(yè)攝像頭中使用的標(biāo)準(zhǔn)鏡頭之一,但是不那么好弄到。我用了一個(gè)C-CS的轉(zhuǎn)接環(huán)來(lái)將鏡頭裝到殼體上。一個(gè)UNC(英制統(tǒng)一螺紋粗牙系列)螺母粘在盒子的底面上用來(lái)固定攝像頭。盒內(nèi)涂了一層導(dǎo)電涂料做電磁屏蔽。

2.3、模擬電路部分

模擬電路
模擬電路

上圖是這個(gè)制作中的模擬電路部分,它包含線(xiàn)性?huà)呙柘鄼C(jī)中最為重要的器件。上面安裝了一個(gè)CCD線(xiàn)性傳感器和模擬電路。CCD線(xiàn)性傳感器是一枚東芝的TCD132D單色CCD,它對(duì)紅外光也敏感,所以為了獲得與人眼感覺(jué)相近的圖像需要一個(gè)紅外濾鏡(IRCF)。CCD線(xiàn)性傳感器需要一個(gè)來(lái)自主控電路板的時(shí)鐘信號(hào)驅(qū)動(dòng)。傳感器的模擬圖像信號(hào)輸出先經(jīng)過(guò)一個(gè)可變?cè)鲆娣糯笃鳎ˋD8830),再由一個(gè)模數(shù)轉(zhuǎn)換器(ADC1173)轉(zhuǎn)化為數(shù)字信號(hào)。ADC1173的8位數(shù)字信號(hào)輸出送入主控電路板。像素采集率從0.5MHZ到2MHZ可變,但是模數(shù)轉(zhuǎn)換器必須在工作在至少兩倍采樣率的時(shí)鐘頻率下。每?jī)纱尾蓸又螅蛑骺仉娐钒遢敵鲆淮螖?shù)字信號(hào)。

模擬電路部分的電路圖
模擬電路部分的電路圖

2.4、主控電路部分

主控電路部分
主控電路部分

主控電路板包括一個(gè)微處理器(MCU),一個(gè)可編程邏輯器件(PLD)和電源部分。微處理器的芯片是一個(gè)NXP的LPC2368,它集成了一個(gè)在72MHZ下工作的ARM7TDMI核心,512K字節(jié)內(nèi)存,32K+16K+8K字節(jié)的SRAM,還有給力的外圍設(shè)備。它可以通過(guò)一個(gè)集成的SD卡控制器在4位原生模式下控制外置的MicroSD存儲(chǔ)卡。LPC系列的ARM微處理器廣泛用在現(xiàn)在的電子制作中,因?yàn)樗氖袌?chǎng)政策很對(duì)路,物美價(jià)廉。

一個(gè)可編程邏輯器件(LC4256V)被用來(lái)驅(qū)動(dòng)CCD線(xiàn)性傳感器。PLD里配置了一個(gè)用來(lái)給傳感器提供時(shí)鐘的時(shí)鐘產(chǎn)生器和一個(gè)先入先出隊(duì)列。電源供應(yīng)部分提供了數(shù)字電源(3.3V)。和模擬部分的電源(12V)。

主控電路部分電路圖
主控電路部分電路圖

2.5、顯示電路部分

顯示電路部分
顯示電路部分

顯示部分電路安裝在盒子的背面,它提供了相機(jī)的操作界面。上面的器件包括一個(gè)OLED顯示屏,開(kāi)關(guān)。五向鍵和一個(gè)MicroSD插槽。打開(kāi)盒蓋就能安裝或者移除SD卡。

顯示電路部分的電路圖
顯示電路部分的電路圖
自己動(dòng)手做數(shù)碼相機(jī)
數(shù)碼相機(jī)
 鏡頭接口視圖
鏡頭接口視圖

3、軟件構(gòu)成

3.1、數(shù)據(jù)處理

AD轉(zhuǎn)換器的像素采集率可以高達(dá)2.1M像素每秒。首先,圖像數(shù)據(jù)被存儲(chǔ)在微處理器的緩沖存儲(chǔ)器里。因?yàn)槊棵?.1M的數(shù)據(jù)量對(duì)軟件來(lái)說(shuō)實(shí)在太過(guò)分,圖像數(shù)據(jù)會(huì)存儲(chǔ)到PLD的先進(jìn)先出隊(duì)列里。隊(duì)列半滿(mǎn)時(shí)觸發(fā)微處理器的DRDT中斷,然后微處理器一次接受一半隊(duì)列的數(shù)據(jù)。隊(duì)列的大小是16字節(jié),也就是說(shuō)軟件的操作周期只要有像素采集率的1/8就足夠。這對(duì)觸發(fā)中斷來(lái)說(shuō)不算太快,但是仍然需要微處理器高速運(yùn)行。這個(gè)項(xiàng)目里用了ARM7TDMI核心的快速中斷請(qǐng)求功能(FIQ,fastinterrptrequest,通過(guò)編組寄存器產(chǎn)生低延遲中斷),可惜在Cortex-M3核心中這一功能被去掉了。

當(dāng)微處理器響應(yīng)FIQ請(qǐng)求時(shí),一些寄存器切換到FIQ的編組寄存器狀態(tài),然后FIQ例程可以直接進(jìn)入/離開(kāi)而省去了切換過(guò)程。為了最大化執(zhí)行效率,一般來(lái)說(shuō)FIQ例程是用匯編語(yǔ)言寫(xiě)的。在啟用這一功能的數(shù)據(jù)波形圖里,可以觀察到8位的數(shù)據(jù)在不用存儲(chǔ)的時(shí)候只需要0.8微秒處理,加上DMA模式下從總線(xiàn)寫(xiě)入SD卡也只用了2微秒,這樣的延遲可以接受。

在每一行數(shù)據(jù)中有1094個(gè)像素,但其中有效的只有1024個(gè)。這些數(shù)據(jù)被存入內(nèi)存,中斷信號(hào)SYNC#在每一行數(shù)據(jù)的開(kāi)始輸出,用來(lái)同步第一個(gè)像素的數(shù)據(jù)。

3.2、重建圖像

捕捉到的數(shù)據(jù)可以用通用的8位灰度BMP位圖格式存儲(chǔ)在MicroSD卡里,寬1024像素,長(zhǎng)視拍攝時(shí)間而定。存儲(chǔ)的格式是DCIMLCAMYnnnn.BMP(nnnn是編號(hào)),和普通的數(shù)碼相機(jī)幾乎一樣。

在使用廉價(jià)的微處理器將圖像數(shù)據(jù)存入SD卡時(shí)會(huì)遇到一些困難,主要是輸入的數(shù)據(jù)要在極短的時(shí)間內(nèi)存進(jìn)文件。這個(gè)制作中的最大數(shù)據(jù)傳輸率是2MB每秒。幸運(yùn)的是LPC2368有一個(gè)MCI(SD/MMC卡的原生控制模式),它能提供8MB/s的數(shù)據(jù)讀取和6MB/s的數(shù)據(jù)寫(xiě)入能力。但是這是指讀寫(xiě)大文件時(shí)的平均速度,事實(shí)上每次讀寫(xiě)之間都需要一些死時(shí)間用在SD卡的內(nèi)部處理和文件系統(tǒng)上,為了避免這些浪費(fèi),一個(gè)數(shù)據(jù)緩沖器被用來(lái)在死時(shí)間中暫存數(shù)據(jù),但是微處理器系統(tǒng)的內(nèi)存大小是有限的,不一定有足夠的空間進(jìn)行緩沖。

讓我們估計(jì)一下每次寫(xiě)數(shù)據(jù)操作所能容許的時(shí)間耗費(fèi)。在這個(gè)制作里,所有32K的SRAM都用來(lái)做數(shù)據(jù)緩沖器,而程序在16K的ethernetRAM上運(yùn)行。數(shù)據(jù)緩沖器分成兩半,其中一塊填充數(shù)據(jù)的時(shí)候另一塊將數(shù)據(jù)寫(xiě)入閃存。這要求在每8毫秒里寫(xiě)入16KB的數(shù)據(jù),每次操作必須在下次操作之前完成。接下來(lái)的軟件技巧可以解決這個(gè)問(wèn)題。

數(shù)據(jù)寫(xiě)入過(guò)程中最重要的延遲發(fā)生在集群分配時(shí),在實(shí)時(shí)操作系統(tǒng)里這是個(gè)很大的問(wèn)題,集群分配導(dǎo)致的死時(shí)間視情況不同可能高達(dá)數(shù)秒鐘。這個(gè)制作里使用集群預(yù)分配(寫(xiě)入數(shù)據(jù)時(shí)用f-lseek函數(shù)申請(qǐng)一個(gè)比目前需要大很多的空間)來(lái)避免寫(xiě)入數(shù)據(jù)時(shí)進(jìn)入分區(qū)表重新定位。每次寫(xiě)入操作都包含一個(gè)用來(lái)結(jié)束操作的集群邊界條件。想象一下SD卡里的文件預(yù)先整理出一塊整齊的空間給數(shù)據(jù),這就避免了寫(xiě)入數(shù)據(jù)過(guò)程中大量導(dǎo)致延遲的未知問(wèn)題。

盡管有這些用來(lái)盡可能減小死時(shí)間的方法,SD卡或多或少還有一些內(nèi)部處理時(shí)間。在挑選SD卡的時(shí)候需要挑寫(xiě)入速度盡可能快的SD卡。我在許多牌子之間做過(guò)比較,結(jié)果發(fā)現(xiàn)東芝產(chǎn)SD卡有最小的寫(xiě)入延遲,也有最穩(wěn)定的表現(xiàn)。

3.3、顯示圖像

 顯示圖像
顯示圖像

由于獲得的圖像數(shù)據(jù)都是一維的線(xiàn)條,它不能像傳統(tǒng)平面成像的二維圖像一樣顯示。為了這個(gè)問(wèn)題需要一些特別的顯示模式。

其中一種是范圍視圖,輸入的圖像信號(hào)連接到Y(jié)軸,就像像示波器的輸入。Y軸信號(hào)表示亮度,X軸信號(hào)表示各點(diǎn)在線(xiàn)性傳感器上的位置。這個(gè)模式適于用來(lái)觀察感光度和聚焦情況。不同點(diǎn)之間數(shù)據(jù)的差距可以用來(lái)幫助對(duì)焦,當(dāng)圖像聚焦時(shí),波形圖上產(chǎn)生許多峰谷,出現(xiàn)最大的峰峰值表明焦距已經(jīng)對(duì)上。這是現(xiàn)在數(shù)碼相機(jī)里自動(dòng)對(duì)焦功能的原型。

另外一種是卷動(dòng)視圖,圖像向上卷動(dòng),新掃描到的圖像出現(xiàn)在屏幕底部。這個(gè)模式能夠用來(lái)調(diào)整線(xiàn)分辨率。最后生成的二維圖像的高寬比決定于線(xiàn)分辨率和物體移動(dòng)的速度。卷動(dòng)視圖能夠展現(xiàn)出捕捉到的2D景象,但是如果被攝物體不移動(dòng)就只剩下水平的線(xiàn)了,所以相機(jī)或者物體之一一定要在給定的運(yùn)動(dòng)速度下拍攝,這樣才能一邊觀察一邊調(diào)節(jié)線(xiàn)分辨率。

4、使用說(shuō)明

線(xiàn)性?huà)呙柘鄼C(jī)的一般用途同膠片時(shí)代的狹縫相機(jī)類(lèi)似。狹縫相機(jī)很容易在性能上擊敗線(xiàn)性?huà)呙柘鄼C(jī),它的感光顆粒直徑14um,遠(yuǎn)遠(yuǎn)小于CCD中單元的直徑,意味著極好的分辨率。但是玩狹縫相機(jī)意味著你要足夠的取景,對(duì)焦,拍攝和沖印能力,非老鳥(niǎo)不能為。

相機(jī)位置

這個(gè)相機(jī)需要被固定在合適的角度,這樣物體所成的像可以?huà)哌^(guò)線(xiàn)性傳感器。比如說(shuō),但物體橫向移動(dòng)或者橫方向特別長(zhǎng)的話(huà),相機(jī)最好固定在線(xiàn)性傳感器處于垂直的位置。這個(gè)角度必須精確,否則拍出的圖片會(huì)出現(xiàn)類(lèi)似平行四邊形的扭曲。

調(diào)節(jié)焦距

這個(gè)線(xiàn)性?huà)呙柘鄼C(jī)由一個(gè)5向搖桿控制(上下左右和中鍵),向右按可以切換顯示模式(范圍模式或者卷動(dòng)模式)。首先,輸入信號(hào)的電平可以通過(guò)光圈或者增益控制(上下點(diǎn)擊)。增益控制也可以通過(guò)左鍵自動(dòng)調(diào)整。接下來(lái),通過(guò)對(duì)焦環(huán)調(diào)節(jié)焦距直到信號(hào)的峰峰值最大。

調(diào)整傳感器線(xiàn)分辨率

在卷動(dòng)模式下可以調(diào)節(jié)相機(jī)匹配傳感器線(xiàn)分辨率。調(diào)節(jié)直到屏幕上顯示的是正確的高寬比。傳感器線(xiàn)分辨率也可以通過(guò)物體移動(dòng)的速度,物體離鏡頭的距離和焦距來(lái)計(jì)算,這略微有些誤差,但數(shù)字圖片是可以通過(guò)后期處理來(lái)修正的。當(dāng)然如果傳感器線(xiàn)分辨率實(shí)在太低的話(huà),這個(gè)過(guò)程會(huì)損失一些信息。通常來(lái)說(shuō)傳感器線(xiàn)分辨率高不是壞事,就是靈敏度可能低些。傳感器線(xiàn)分辨率影響曝光時(shí)間(靈敏度),所以輸入電平的增益需要和不同的線(xiàn)分辨率匹配。

獲得圖像

中間的按鈕用來(lái)開(kāi)始/停止拍攝。按下按鈕就可以開(kāi)始記錄圖像。集群預(yù)分配會(huì)在0.5秒內(nèi)完成,然后暫停直到松開(kāi)。松開(kāi)按鈕時(shí)會(huì)開(kāi)始記圖像錄,然后在任意按鈕按下時(shí)停止或者直到寫(xiě)入數(shù)據(jù)到達(dá)了集群預(yù)分配區(qū)域的邊界。預(yù)分配的大小被配置到10萬(wàn)行(大約100MB),但是可以根據(jù)拍攝物的尺寸改變。生成的圖像文件可以在電腦上進(jìn)行預(yù)處理,調(diào)節(jié)圖片朝向,高寬比或者做伽瑪校正。

5、實(shí)拍效果展示

 實(shí)拍效果圖像
實(shí)拍效果圖像

更多資訊請(qǐng)關(guān)注:21ic模擬頻道

DIY機(jī)械鍵盤(pán)相關(guān)社區(qū):機(jī)械鍵盤(pán)DIY


三維掃描儀相關(guān)文章:三維掃描儀原理


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉