顏色傳感器TCS230及顏色識別電路(轉)

摘要

  TCS230是美國TAOS公司生產的一種可編程彩色光到頻率的傳感器。該傳感器具有分辨率高、可編程的顏色選擇與輸出定標、單電源供電等特點;輸出為數字量,可直接與微處理器連接。文中主要介紹TCS230的原理和應用,以及色光和白平衡的知識,并用一個實例說明TCS230識別顏色的過程。
關鍵詞 TCS23 0顏色傳感器 顏色識別 白平衡調整

引言

  隨著現代工業生產向高速化、自動化方向的發展,生產過程中長期以來由人眼起主導作用的顏色識別工作將越來越多地被相應的顏色傳感器所替代。例如:圖書館使用顏色區分對文獻進行分類,能夠極大地提高排架管理和統計等工作;在包裝行業,產品包裝利用不同的顏色或裝潢來表示其不同的性質或用途。目前的顏色傳感器通常是在獨立的光電二極管上覆蓋經過修正的紅、綠、籃濾光片,然后對輸出信號進行相應的處理,才能將顏色信號識別出來;有的將兩者集合起來,但是輸出模擬信號,需要一個A/D電路進行采樣,對該信號進一步處理,才能進行識別,增加了電路的復雜性,并且存在較大的識別誤差,影響了識別的效果。TAOS(Texas Advanced Optoelectronic Solutions)公司最新推出的顏色傳感器TCS230,不僅能夠實現顏色的識別與檢測,與以前的顏色傳感器相比,還具有許多優良的新特性。

1 ?TCS230芯片的結構框圖與特點

  TCS230是TAOS公司推出的可編程彩色光到頻率的轉換器。它把可配置的硅光電二極管與電流頻率轉換器集成在一個單一的CMOS電路上,同時在單一芯片上集成了紅綠藍(RGB)三種濾光器,是業界第一個有數字兼容接口的RGB彩色傳感器。TCS230的輸出信號是數字量,可以驅動標準的TTL或CMOS邏輯輸入,因此可直接與微處理器或其他邏輯電路相連接。由于輸出的是數字量,并且能夠實現每個彩色信道10位以上的轉換精度,因而不再需要A/D轉換電路,使電路變得更簡單。圖1是TCS230的引腳和功能框圖。

  圖1中,TCS230采用8引腳的SOIC表面貼裝式封裝,在單一芯片上集成有64個光電二極管。這些二極管共分為四種類型。其中16個光電二極管帶有紅色濾波器;16個光電二極管帶有綠色濾波器;16個光電二極管帶有藍色濾波器;其余16個不帶有任何濾波器,可以透過全部的光信息。這些光電二極管在芯片內是交叉排列的,能夠最大限度地減少入射光輻射的不均勻性,從而增加顏色識別的精確度;另一方面,相同顏色的16個光電二極管是并聯連接的,均勻分布在二極管陣列中,可以消除顏色的位置誤差。工作時,通過兩個可編程的引腳來動態選擇所需要的濾波器。該傳感器的典型輸出頻率范圍從2 Hz~500 kHz,用戶還可以通過兩個可編程引腳來選擇100%、20%或2%的輸出比例因子,或電源關斷模式。輸出比例因子使傳感器的輸出能夠適應不同的測量范圍,提高了它的適應能力。例如,當使用低速的頻率計數器時,就可以選擇小的定標值,使TCS230的輸出頻率和計數器相匹配。

  從圖1可知:當入射光投射到TCS230上時,通過光電二極管控制引腳S2、S3的不同組合,可以選擇不同的濾波器;經過電流到頻率轉換器后輸出不同頻率的方波(占空比是50%),不同的顏色和光強對應不同頻率的方波;還可以通過輸出定標控制引腳S0、S1,選擇不同的輸出比例因子,對輸出頻率范圍進行調整,以適應不同的需求。
??????????????????

圖1? TCS230的引腳和功能框圖

  下面簡要介紹TCS230芯片各個引腳的功能及它的一些組合選項。

  S0、S1用于選擇輸出比例因子或電源關斷模式;S2、S3用于選擇濾波器的類型;OE是頻率輸出使能引腳,可以控制輸出的狀態,當有多個芯片引腳共用微處理器的輸入引腳時,也可以作為片選信號;OUT是頻率輸出引腳,GND是芯片的接地引腳,VCC為芯片提供工作電壓。表1是S0、S1及S2、S3的可用組合。
??????????????????????????????
??

表1 ?S0、S1及S2、S3的組合選項

2? TCS230識別顏色的原理

  由上面的介紹可知,這種可編程的彩色光到頻率轉換器適合于色度計測量應用領域,如彩色打印、醫療診斷、計算機彩色監視器校準以及油漆、紡織品、化妝品和印刷材料的過程控制和色彩配合。下面以TCS230在液體顏色識別中的應用為例,介紹它的具體使用。首先了解一些光與顏色的知識。

  (1) ?三原色的感應原理
  通常所看到的物體顏色,實際上是物體表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反應。白色是由各種頻率的可見光混合在一起構成的,也就是說白光中包含著各種顏色的色光(如紅R、黃Y、綠G、青V、藍B、紫P)。根據德國物理學家赫姆霍茲(Helinholtz)的三原色理論可知,各種顏色是由不同比例的三原色(紅、綠、藍)混合而成的。

  (2) ?TCS230識別顏色的原理
  由三原色感應原理可知,如果知道構成各種顏色的三原色的值,就能夠知道所測試物體的顏色。對于TCS230來說,當選定一個顏色濾波器時,它只允許某種特定的原色通過,阻止其他原色的通過。例如:當選擇紅色濾波器時,入射光中只有紅色可以通過,藍色和綠色都被阻止,這樣就可以得到紅色光的光強;同理,選擇其他的濾波器,就可以得到藍色光和綠色光的光強。通過這三個值,就可以分析投射到TCS230傳感器上的光的顏色。

  (3)? 白平衡和顏色識別原理
  白平衡就是告訴系統什么是白色。從理論上講,白色是由等量的紅色、綠色和藍色混合而成的;但實際上,白色中的三原色并不完全相等,并且對于TCS230的光傳感器來說,它對這三種基本色的敏感性是不相同的,導致TCS230的RGB輸出并不相等,因此在測試前必須進行白平衡調整,使得TCS230對所檢測的“白色”中的三原色是相等的。進行白平衡調整是為后續的顏色識別作準備。在本裝置中,白平衡調整的具體步驟和方法如下:將空的試管放置在傳感器的上方,試管的上方放置一個白色的光源,使入射光能夠穿過試管照射到TCS230上;根據前面所介紹的方法,依次選通紅色、綠色和藍色濾波器,分別測得紅色、綠色和藍色的值,然后就可計算出需要的3個調整參數。

  當用TCS230識別顏色時,就用這3個參數對所測顏色的R、G和B進行調整。這里有兩種方法來計算調整參數:① 依次選通三種顏色的濾波器,然后對TCS230的輸出脈沖依次進行計數。當計數到255時停止計數,分別計算每個通道所用的時間。這些時間對應于實際測試時TCS230每種濾波器所采用的時間基準,在這段時間內所測得的脈沖數就是所對應的R、G和B的值。② 設置定時器為一固定時間(例如10 ms),然后選通三種顏色的濾波器,計算這段時間內TCS230的輸出脈沖數,計算出一個比例因子,通過這個比例因子可以把這些脈沖數變為255。在實際測試時,使用同樣的時間進行計數,把測得的脈沖數再乘以求得的比例因子,然后就可以得到所對應的R、G和B的值。

3? TCS230的應用——顏色識別電路

  基于上述分析,采用89C51和TCS230設計一個醫用液體顏色識別裝置。該裝置具有結構簡單、識別精度和效率高的特點,并且能夠和上位機通信,以將識別的結果實時傳送給上位機。由于是說明TCS230的使用情況,下面僅給出其中的TCS230識別電路,如圖2所示。圖2中用89C51的P1口的幾圖3軟件流程個引腳來控制TCS230的各個控制引腳,而TCS230的輸出引腳連接到89C51的定時器/計數器1的輸入端(P35)。設置89C51定時器/計數器為相應的工作方式,初始化89C51定時器為一個定值,再選擇TCS230的輸出比例因子,并使能輸出引腳。實際使用中,通過讀取89C51計數器的值,就可以分別計算出TCS230的3種輸出頻率,進而確定R、G、B值及顏色。相應的軟件流程如圖3所示。

?

圖2? TCS230顏色識別接口電路

  在程序流程中:系統初始化負責設置89C51的定時器/計數器的工作方式,選擇TCS230的輸出比例因子,使能輸出引腳以及通信參數的設置。初始化完成后,檢測是否需要進行白平衡調整。如有,調整白平衡子程序;否則,轉到下一步,檢測是否需要進行顏色識別。如不需要顏色識別,返回;如需要顏色識別,調用顏色識別子程序,直到顏色識別完畢。

?

圖3? 軟件流程

4 ?應用中需要注意的問題

  ① ?顏色識別時要避免外界光線的干擾,否則會影響顏色識別的結果。最好把傳感器、光源等放置在一個密閉、無反射的箱子中進行測試。

  ②? 對光源沒有特殊的要求,但是光源發出的光要盡量集中,否則會造成傳感器之間的相互干擾。

  ③ ?當第1次使用TCS230時,或TCS230識別模塊重啟、更換光源等情況時,都需要進行白平衡調整。

結語

  文章從TCS230的結構特點出發,介紹了色光理論和顏色識別的知識,以及白平衡的原理和進行調整的方法。結合一個具體的應用,給出了相應的硬件設計電路和軟件流程圖。該傳感器和文中介紹的方法對進行其他的顏色。

轉載:http://xueshu.baidu.com/s?wd=paperuri%3A%2863995606a186a1e06e13b19a4f082078%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Fwenku.baidu.com%2Fview%2Fcdb6ec583b3567ec112d8a05.html&ie=utf-8&sc_us=1378765146815392236

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396859.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396859.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396859.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自定義對話框 提示:Unable to add window token null is not for an application

這是因為在new Dialog(context);的時候傳入的context是通過getApplicationContext()獲得的,這樣就會報錯。 把context的獲得方式改為MainActivity.this就好了。 轉載于:https://www.cnblogs.com/qlong8807/p/5167560.html

[51Nod 1218] 最長遞增子序列 V2 (LIS)

傳送門 Description 數組A包含N個整數。設S為A的子序列且S中的元素是遞增的,則S為A的遞增子序列。如果S的長度是所有遞增子序列中最長的,則稱S為A的最長遞增子序列(LIS)。A的LIS可能有很多個。例如A為:1 3 2 0 4&#…

linux如何全局搜索目錄,Linux 全目錄全文搜索

文件內容搜索1grep -r root /home/ray/dev/media/wyquery/*通過這種方法來尋找數據庫配置文件的目錄其他$ grep “被查找的字符串” 文件名例子:在當前目錄里第一級文件夾中尋找包含指定字符串的.in文件grep “thermcontact” */*.in從文件內容查找與正則表達式匹配…

mysql命令行導入和導出數據

首先打開命令窗口,輸入命令:mysql -h localhost -u selffabu -p 連接成功后,進行下面的操作 MySQL中導出CSV格式數據的SQL語句樣本如下: Sql代碼select * from test_info into outfile /tmp/test.csv fields terminated by , optionally enclosed by " esc…

Python 拷貝對象(深拷貝deepcopy與淺拷貝copy)

http://www.jb51.net/article/15714.htm 1. copy.copy 淺拷貝 只拷貝父對象,不會拷貝對象的內部的子對象。2. copy.deepcopy 深拷貝 拷貝對象及其子對象 一個很好的例子: 1 import copy2 a [1, 2, 3, 4, [a, b]] #原始對象3 4 b a #賦值&#xff0c…

7.組件連線(貝塞爾曲線)--從零起步實現基于Html5的WEB設計器Jquery插件(含源碼)...

上節講到如何創建組件,清除設計器視圖,以及設計視圖的持久化和恢復,本節將重點講如何實現組件間的連線,前面章節有提到為了方便從持久化文件中恢復,組件和連線是分別存放的:nodes和lines對象,兩…

linux bind命令,LINUX命令bind-系統管理-顯示或設置鍵盤按鍵與其相關的功能

bind命令 用于顯示和設置命令行的鍵盤序列綁定功能。通過這一命令,可以提高命令行中操作效率。您可以利用bind命令了解有哪些按鍵組合與其功能,也可以自行指定要用哪些按鍵組合。語法bind(選項)選項-d:顯示按鍵配置的內容;-f&…

定位排查工作流的計算結果數據量不符合預期的方法

近期有發現一些用戶在咨詢,為什么數據從數據源出來后,經過了一些計算,結果不符合預期了。最常見的是說,為什么我的數據在Mysql里有xx條,怎么到MaxCompute里算了下結果變了。因為這是兩個不同的系統,我們又沒…

canvas 插件_基于canvas的JavaScript 二維碼生成工具——QRCanvas

介紹在我們日常的開發中,特別是在現代的社會環境下,二維碼的應用可謂是豐富多彩,各種各樣讓人眼花繚亂的二維碼,可見二維碼已經滲透進我們生活的方方面面,也可以說目二維碼確確實實方便了我們的生活。因為作為開發人員…

spring cloud feign 上傳文件報not a type supported by this encoder解決方案

上傳文件調用外部服務報錯: not a type supported by this encoder 查看SpringFormEncoder類的源碼: 1 public class SpringFormEncoder extends FormEncoder2 {3 4 public SpringFormEncoder()5 {6 this(((Encoder) (new feign.codec.…

counter 計數器

包含了兩個屬性和一個方法: 1. counter-reset2. counter-increment3. counter()/counters()counter-reset(主要作用就是給計數器起個名字。如果可能,順便告訴下從哪個數字開始計數。默認是0):.xxx { counter-reset: sm…

linux中的變量文件路徑,Linux庫文件和Shell可執行程序命令文件搜索路徑變量的設置...

一、庫文件的搜索路徑:1、在配置文件/etc/ld.so.conf中指定動態庫搜索路徑(需要添加其它庫文件的路徑,在文件的最后添加具體的路徑即可 [ 如:/usr/local/lib ],添加后保存退出,然后在命令行ldconfig2、通過環境變量LD_…

消息隊列NetMQ 原理分析2-IO線程和完成端口

目錄 前言介紹目的IO線程初始化IO線程Proactor啟動Procator線程輪詢處理socketIOObject總結前言 介紹 [NetMQ](https://github.com/zeromq/netmq.git)是ZeroMQ的C#移植版本,它是對標準socket接口的擴展。它提供了一種異步消息隊列,多消息模式,消息過濾(訂閱&#xf…

django——url(路由)配置

URL是Web服務的入口,用戶通過瀏覽器發送過來的任何請求,都是發送到一個指定的URL地址,然后被響應。 在Django項目中編寫路由,就是向外暴露我們接收哪些URL的請求,除此之外的任何URL都不被處理,也沒有返回。…

VC連接mysql數據庫錯誤:libmysql.lib : fatal error LNK1113: invalid machine 解決方法

VC連接MySQL的配置過程在上一篇博文中,不過當你設置好,以為萬事大吉的時候,運行卻出現這個錯誤:libmysql.lib : fatal error LNK1113: invalid machine type。 無效的機器類型,真的是很讓人捉急。 發生這個錯誤的原因是…

linux 內存泄漏 定位,一種內存泄露檢查和定位的方法

一個系統后臺服務進程,可能包括多個線程,在生成環境下要求系統程序能夠穩定長時間穩定運行而不宕機。其中一個基本的前提就是需要保證系統程序不存在內存泄露。那么,該如何判讀系統程序是否存在內存泄露呢?如果存在,又…

python怎么發送郵件_在Python如何使用SMTP發送郵件

SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用于由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。 python的smtplib提供了一種很方便的途徑發送電子郵件。它對smtp協議進行了簡單的封裝。 Python創建 SMTP…

統計單詞個數(劃分型)

codevs 1040 統計單詞個數 2001年NOIP全國聯賽提高組 題目等級 : 黃金 Gold題目描述 Description給出一個長度不超過200的由小寫英文字母組成的字母串(約定;該字串以每行20個字母的方式輸入&#xff0c;且保證每行一定為20個)。要求將此字母串分成k份(1<k<40)&#xff0c…

基于ASP.NET的新聞管理系統(三)代碼展示

5.1.1欄目部分 增加欄目&#xff08;addLanMu.aspx&#xff09;&#xff1a; <html xmlns"http://www.w3.org/1999/xhtml"> <head runat"server"> <title></title> <link rel"stylesheet" type"text/css" …

洛谷-求同構數的個數-NOIP2013提高組復賽

題目描述 Description 所謂同構數是指這樣的數&#xff0c;即它出現在它的平方數的右端。例如&#xff0c;5的平方是25 &#xff08;即5525&#xff09;&#xff0c;5是25右端的數&#xff0c;那么5就是同構數。又如&#xff0c;25的平方是625&#xff08;即2525625&#xff09…