當前位置:製作窩 >

創意生活 >電子DIY >

自己動手做數碼相機手工電子DIY教程

自己動手做數碼相機手工電子DIY教程

自己動手做數碼相機

DIYer: ChaN 製作時間: 半個月 製作難度: ★★★★☆ GEEK指數: ★★★★★

 

線性掃描相機是數碼相機的一種。這種相機一般在各種機器中作為組成部分發揮作用,一般來說不容易在實際生活中獨立見到。這個製作能幫助你DIY並且進一步瞭解線性掃描相機。

線性CCD感測器(Charge-coupled Device line sensor,線性電荷耦合感測器)是線性掃描相機中最為重要的部分。我十多年前就在電子城中買下了它。但是想要製作一臺小體積的便攜線性掃描相機有些困難,電路部分需要高效能的微處理器和大容量儲存器,在當時一般的個人製作對這些昂貴的高階貨只能敬而遠之。於是它被我扔到一個破爛盒子裡,連我自己都幾乎忘記了。

十年的時間之後,拜飛速發展的半導體工業所賜,晶片們的價格終於降到了可以接受的地步。現在即使是入門的新手也能隨意享受到32位的微處理器和海量的儲存卡,所以我依靠最新的技術重新開始了這個專案!

 

雙向電梯

1   線性掃描相機1.1   相機原理1.2   功能應用2   硬體構成2.1   功能模組2.2   光路和外殼2.3   類比電路部分2.4   主控電路部分2.5   顯示電路部分2.6   組合效果3   軟體構成3.1   資料處理3.2   重建影象3.3   顯示影象4   使用說明5   實拍效果展示6   相關資源

 

1   線性掃描相機1.1   相機原理

圖注:普通平面相機和線性相機的比較

線性掃描相機是數碼相機的一種,它使用線性CCD感測器(一維CCD器件)作為影象感測器。普通的數碼相機用一個平面CCD器件(二維CCD器件)捕捉焦平面上的影象,獲取的圖案是一個二維的平面。而對線性掃描相機來說,它所獲取的圖案是一條一維的線!

即使每次獲得的影象只有一條線,線性掃描相機還是有能力獲得完整的影象。在製作一臺線性掃描相機時,需要不斷移動相機或者被攝物——這樣每次獲得的部分資料被儲存在記憶體裡,並最終像織布一樣一條線一條線地拼湊成完整的影象。

在過去的膠片時代有一種狹縫相機。它和這裡說的線性掃描相機類似,通過一條窄縫(一維的視窗)成像,拼合一維影象獲取完整的二維影象。

 

1.2   功能應用線性掃描相機具有下面這些功能:

高解析度。即使便宜的感測器也能做到10000點以上的解析度。簡單緊湊的光學系統。不需要掃描桌。對物體的尺寸和長度沒有限制,對很長的物體也能正確成像。由於這些功能,線性掃描相機在很多地方得到了廣泛應用,你可以在許多重要的裝置上發現它們。比如:

影印機影象掃描器傳真機機器視覺(檢查長形物體)衛星(比如拍下google地圖的那些)終點攝影(體育比賽) 

2   硬體構成2.1   功能模組上圖展示了構成線性掃描相機的各個功能模組。線性CCD感測器將收集的光感資訊傳遞到AD(模擬-數字)轉換器數字化,然後以數字訊號形式輸入控制器。這些資料可以顯示在顯示屏上,或者傳輸到儲存器裡。掃描的頻率在500線每秒到2000線每秒之間可調,視CCD器件的種類而定。

電路部分被分成三大部分,每塊之間通過柔性印刷電路排線相連。我經常不使用定製的PCB因為它們太貴而且沒有DIY精神,設計麻煩,之後有改動也麻煩。這種一次性的製作在洞洞板上相機行事最好了。

譯註:神一樣的DIYer……這是何等的飛線功力…… 

2.2   光路和外殼上圖展示瞭如何為這個線性掃描相機制作外殼。這是從一個高知電子(Takachi electric industrial)的SW-85B塑料盒改造而來的外殼,這個專案的光路需要控制的非常精確,所以設計,加工,裝配的時候都需要特別注意。這裡有 外殼的圖紙 。帶有線性感測器的模擬部分電路板安裝在可動的螺釘上,這樣就能隨意調整距離。

這次使用的透鏡是C-mount接環的,它是工業攝像頭中使用的標準鏡頭之一,但是不那麼好弄到。我用了一個C-CS的轉接環來將鏡頭裝到殼體上。一個UNC(英制統一螺紋粗牙系列)螺母粘在盒子的底面上用來固定攝像頭。盒內塗了一層導電塗料做電磁遮蔽。

 

2.3   類比電路部分上圖是這個製作中的類比電路部分,它包含線性掃描相機中最為重要的器件。上面安裝了一個CCD線性感測器和類比電路。CCD線性感測器是一枚東芝的TCD132D單色CCD,它對紅外光也敏感,所以為了獲得與人眼感覺相近的影象需要一個紅外濾鏡(IRCF)。CCD線性感測器需要一個來自主控電路板的時鐘訊號驅動。感測器的模擬影象訊號輸出先經過一個可變增益放大器(AD8830),再由一個模數轉換器(ADC1173)轉化為數字訊號。ADC1173的8位數字訊號輸出送入主控電路板。畫素採集率從0.5MHZ到2MHZ可變,但是模數轉換器必須在工作在至少兩倍取樣率的時鐘頻率下。每兩次取樣之後,向主控電路板輸出一次數字訊號。這裡可以看到 波形圖 。

 

這是類比電路部分的電路圖,大圖下載請點選 類比電路圖大圖 。

 

2.4   主控電路部分主控電路板包括一個微處理器(MCU),一個可程式設計邏輯器件(PLD)和電源部分(見圖4)。微處理器的晶片是一個NXP的LPC2368,它集成了一個在72MHZ下工作的ARM7TDMI核心,512K位元組記憶體,32K+16K+8K位元組的SRAM,還有給力的外圍裝置。它可以通過一個整合的SD卡控制器在4位原生模式下控制外接的MicroSD儲存卡。LPC系列的ARM微處理器廣泛用在現在的電子製作中,因為它的市場政策很對路,物美價廉。

一個可程式設計邏輯器件(LC4256V)被用來驅動CCD線性感測器。PLD裡配置了一個用來給感測器提供時鐘的時鐘產生器和一個先入先出佇列。電源供應部分提供了數字電源(3.3V)。和模擬部分的電源(12V)。

 

這是主控電路部分的電路圖,大圖下載請點選 主控電路圖大圖 。好可怕的一張電路圖…… 

2.5   顯示電路部分顯示部分電路安裝在盒子的背面,它提供了相機的操作介面。上面的器件包括一個OLED顯示屏,開關。五向鍵和一個MicroSD插槽。開啟盒蓋就能安裝或者移除SD卡。

 

這是顯示電路部分的電路圖,大圖下載請點選 顯示電路圖大圖 。

 

2.6   組合效果內檢視。 

底檢視。 

鏡頭介面檢視。 

3   軟體構成3.1   資料處理AD轉換器的畫素採集率可以高達2.1M畫素每秒。首先,影象資料被儲存在微處理器的緩衝儲存器裡。因為每秒2.1M的資料量對軟體來說實在太過分,影象資料會儲存到PLD的先進先出佇列裡。佇列半滿時觸發微處理器的DRDT中斷,然後微處理器一次接受一半佇列的資料。佇列的大小是16位元組,也就是說軟體的操作週期只要有畫素採集率的1/8就足夠。這對觸發中斷來說不算太快,但是仍然需要微處理器高速執行。這個專案裡用了ARM7TDMI核心的快速中斷請求功能(FIQ,fast interrpt request,通過編組暫存器產生低延遲中斷),可惜在Cortex-M3核心中這一功能被去掉了。

當微處理器響應FIQ請求時,一些暫存器切換到FIQ的編組暫存器狀態,然後FIQ例程可以直接進入/離開而省去了切換過程。為了最大化執行效率,一般來說FIQ例程是用匯編語言寫的。在啟用這一功能的 資料波形圖 裡,可以觀察到8位的資料在不用儲存的時候只需要0.8微秒處理,加上DMA模式下從匯流排寫入SD卡也只用了2微秒,這樣的延遲可以接受。

在每一行資料中有1094個畫素,但其中有效的只有1024個。這些資料被存入記憶體,中斷訊號SYNC#在每一行資料的開始輸出,用來同步第一個畫素的資料。

 

3.2   重建影象捕捉到的資料可以用通用的8位灰度BMP點陣圖格式儲存在MicroSD卡里,寬1024畫素,長視拍攝時間而定。儲存的格式是DCIMLCAMYnnnn.BMP(nnnn 是編號),和普通的數碼相機幾乎一樣。

在使用廉價的微處理器將影象資料存入SD卡時會遇到一些困難,主要是輸入的資料要在極短的時間記憶體進檔案。這個製作中的最大資料傳輸率是2MB每秒。幸運的是LPC2368有一個MCI(SD/MMC卡的原生控制模式),它能提供8MB/s的資料讀取和6MB/s的資料寫入能力。但是這是指讀寫大檔案時的平均速度,事實上每次讀寫之間都需要一些死時間用在SD卡的內部處理和檔案系統上,為了避免這些浪費,一個數據緩衝器被用來在死時間中暫存資料,但是微處理器系統的記憶體大小是有限的,不一定有足夠的空間進行緩衝。

讓我們估計一下每次寫資料操作所能容許的時間耗費。在這個製作裡,所有32K的SRAM都用來做資料緩衝器,而程式在16K的ethernet RAM上執行。資料緩衝器分成兩半,其中一塊填充資料的時候另一塊將資料寫入快閃記憶體。 這要求在每8毫秒裡寫入16KB的資料,每次操作必須在下次操作之前完成 。接下來的軟體技巧可以解決這個問題。

資料寫入過程中最重要的延遲發生在叢集分配時,在實時作業系統裡這是個很大的問題,叢集分配導致的死時間視情況不同可能高達數秒鐘。這個製作裡使用叢集預分配(寫入資料時用f-lseek函式申請一個比目前需要大很多的空間)來避免寫入資料時進入分割槽表重新定位。每次寫入操作都包含一個用來結束操作的叢集邊界條件。想象一下SD卡里的檔案預先整理出一塊整齊的空間給資料,這就避免了寫入資料過程中大量導致延遲的未知問題。

儘管有這些用來儘可能減小死時間的方法,SD卡或多或少還有一些內部處理時間。在挑選SD卡的時候需要挑寫入速度儘可能快的SD卡。我在許多牌子之間做過比較,結果發現東芝產SD卡有最小的寫入延遲,也有最穩定的表現。

 

3.3   顯示影象由於獲得的影象資料都是一維的線條,它不能像傳統平面成像的二維影象一樣顯示。為了這個問題需要一些特別的顯示模式。

其中一種是範圍檢視,輸入的影象訊號連線到Y軸,就像像示波器的輸入。Y軸訊號表示亮度,X軸訊號表示各點線上性感測器上的位置。這個模式適於用來觀察感光度和聚焦情況。不同點之間資料的差距可以用來幫助對焦,當影象聚焦時,波形圖上產生許多峰谷,出現最大的峰峰值表明焦距已經對上。這是現在數碼相機裡自動對焦功能的原型。

另外一種是捲動檢視,影象向上捲動,新掃描到的影象出現在螢幕底部。這個模式能夠用來調整線解析度。最後生成的二維影象的高寬比決定於線解析度和物體移動的速度。捲動檢視能夠展現出捕捉到的2D景象,但是如果被攝物體不移動就只剩下水平的線了,所以相機或者物體之一一定要在給定的運動速度下拍攝,這樣才能一邊觀察一邊調節線解析度。

 

4   使用說明線性掃描相機的一般用途同膠片時代的狹縫相機類似。狹縫相機很容易在效能上擊敗線性掃描相機,它的感光顆粒直徑14um,遠遠小於CCD中單元的直徑,意味著極好的解析度。但是玩狹縫相機意味著你要足夠的取景,對焦,拍攝和沖印能力,非老鳥不能為。

相機位置

這個相機需要被固定在合適的角度,這樣物體所成的像可以掃過線性感測器。比如說,但物體橫向移動或者橫方向特別長的話,相機最好固定線上性感測器處於垂直的位置。這個角度必須精確,否則拍出的圖片會出現類似平行四邊形的扭曲。

調節焦距

這個線性掃描相機由一個5向搖桿控制(上下左右和中鍵),向右按可以切換顯示模式(範圍模式或者捲動模式)。首先,輸入訊號的電平可以通過光圈或者增益控制(上下點選)。增益控制也可以通過左鍵自動調整。接下來,通過對焦環調節焦距直到訊號的峰峰值最大。

調整感測器線解析度

在捲動模式下可以調節相機匹配感測器線解析度。調節直到螢幕上顯示的是正確的高寬比。感測器線解析度也可以通過物體移動的速度,物體離鏡頭的距離和焦距來計算,這略微有些誤差,但數字圖片是可以通過後期處理來修正的。當然如果感測器線解析度實在太低的話,這個過程會損失一些資訊。通常來說感測器線解析度高不是壞事,就是靈敏度可能低些。感測器線解析度影響曝光時間(靈敏度),所以輸入電平的增益需要和不同的線解析度匹配。

獲得影象

中間的按鈕用來開始/停止拍攝。按下按鈕就可以開始記錄影象。叢集預分配會在0.5秒內完成,然後暫停直到鬆開。鬆開按鈕時會開始記影象錄,然後在任意按鈕按下時停止或者直到寫入資料到達了叢集預分配區域的邊界。預分配的大小被配置到10萬行(大約100MB),但是可以根據拍攝物的尺寸改變。生成的影象檔案可以在電腦上進行預處理,調節圖片朝向,高寬比或者做伽瑪校正。

 

5   實拍效果展示一列火車——橫向運動拍攝。此圖為拼圖效果,原始大圖請點選 火車大圖 。 

果汁罐——旋轉拍攝。原始大圖請點選 果汁罐大圖 。 

手辦——旋轉拍攝。原始大圖請點選 旋轉手辦大圖 。 

手辦——旋轉加垂直平移拍攝。原始大圖請點選 旋轉平移手辦大圖 。 

  • 文章版權屬於文章作者所有,轉載請註明 https://zhizuowo.com/shenghuo/dianzidiy/0dlj9.html