產品分類

      當前位置: 首頁 > 傳感測量產品 > 工業傳感器 > 顏色識別傳感器 > 顏色傳感器

      類型分類:
      科普知識
      數據分類:
      顏色傳感器

      顏色傳感器程序:STM32F429 使用 TCS34725 顏色傳感器的驅動程序

      發布日期:2022-10-09 點擊率:79


      顏色傳感器程序:STM32F429 使用 TCS 顏色傳感器的驅動程序

      用到了 TCS 顏色傳感器,網上百度一圈都沒有發現驅動程序,自己照著 Arduino 的程序和數據手冊寫了下,記錄一下 (~ ̄▽ ̄)~

      第一步,先來看看數據手冊,了解到 TCS 是 I2C 器件,那就好辦了,根據以前寫的 I2C 驅動改一改就好啦 b( ̄▽ ̄)d(具體代碼貼在后邊)。

      然后干嘛嘞?當然是找器件地址和寄存器地址啦,繼續翻手冊…(⊙_⊙;)…

      找到 TCS 地址為 0x29 ,各個寄存器的地址如下:

      到這里,發現這貨不僅器件地址是奇數,而且還有個沒有地址的 COMMAND 寄存器,嗯,隱隱感覺肯定有個坑在這里 ヾ(。 ̄□ ̄)?゜゜゜

      接下來就可以著手寫程序啦 (o゜▽゜)o☆

      首先定義一下用到的引腳:

      然后把之前寫的 I2C 驅動程序粘過來改一下(^-^)V

      OK,以上就是最基本 I2C 的驅動程序,下邊就到了第一個重點啦(~ ̄▽ ̄)~,也就是為毛這貨的器件地址是個奇數,我們知道 I2C 的從機地址是 8 bit ,前 7 bit 是器件地址,最后 1 bit 代表是讀操作(1)還是寫操作(0),所以一般來說器件地址應該是偶數。但是,有的廠家給的地址是低 7 bit (例如這貨),所以就會出現奇數的情況,這樣就需要給它左移 1 bit 。

      好了,地址的問題解決了,就可以寫讀操作和寫操作的程序了

      基本驅動通訊搞定,接下來就給跟它嘮嘮嗑兒了,先定義一下暗號 (?≧?≦?) ,暗號摘自 Arduino 下的驅動程序文件。

      發現其中有個 TCS_COMMAND_BIT ,而且發現 Arduino 代碼中只要發送寄存器地址的地方都有它 (?°?°?)?,此處必有蹊蹺!翻開我們的葵花寶典,啊不,是數據手冊,居然發現了這個!

      寶典告訴我們,若要尋址,此 bit 必須置 1 ,也就是說我們在發送需要操作的寄存器地址時,必需要將 MSB 置為 1 。怪不得你丫兒沒地址,原來哪都有你 (°ー°〃)

      知道了這個就好辦了,我們先封裝一下基本的讀寫操作

      接下來就可以根據寶典里對各個寄存器的說明來編程了,我就寫了我用到的幾個功能 (?-?) ,各位看官有需要可以自己補充。廢話不多說,上代碼:

      TCS 的 ID 是 0x44 可以根據這個來判斷是否成功連接。

      兩個個主要設置,設置積分時間(ATIME 寄存器)和增益(ConTROL 寄存器)。這個直接和最后獲取到的數據相關,積分時間越長,增益越大,最后獲得值越大,需要根據實際應用情況進行設置。

      積分時間的計算如下文所示:

      器件上電后默認是在睡覺(Sleep 模式),得踹一腳(Enable)才醒(Idle 模式),然后告訴它是等一會干活還是馬上滾去干活 (╯﹏╰)b

      我這里讓它直接干活去了,注意從 Idle 模式退出后,需要 2.4 ms 的時間來進行 RGBC 初始化,所以給個 3 ms 的延時就可以了。干完一次活后,如果不讓它回去睡覺(Disable),就會自動繼續干活,開始一個新的循環。(經@weixin_提醒,原來這里寫錯了,應該是在設置AEN之后等待2.4 ms 的RGBC Init)

      然后我們就可以拿到轉換數據了,這里我根據自己的需要對 Arduino 的代碼做了些修改

      好了,到這里 TCS 的驅動程序就完成啦ヽ(=?ω?=)丿
      <a title=顏色傳感器程序:STM32F429 使用 TCS34725 顏色傳感器的驅動程序 第1張" title="顏色傳感器程序:STM32F429 使用 TCS34725 顏色傳感器的驅動程序 第1張-傳感器知識網"/>

      顏色傳感器程序:TCS3200顏色傳感器51單片機例程 顏色識別程序帶RGB值

      TCS3200顏色傳感器51例程
      //==============LCD1602接口連接方法=====================
      //================================================*/
      #define LCM_Data     P0    //LCD1602數據接口
      #define Busy         0x80   //用于檢測LCM狀態字中的Busy標識
      sbit    LCM_RW     =P2^3;  //讀寫控制輸入端,LCD1602的第五腳
      sbit    LCM_RS     =P2^4;  //寄存器選擇輸入端,LCD1602的第四腳
      sbit    LCM_E      =P2^2;  //使能信號輸入端,LCD1602的第6腳
      //=================顏色傳感模塊連接=====================
      sbit    tcs230_s2=P2^0;//TCS230 S2接單片機P2.0
      sbit    tcs230_s3=P2^1;//TCS230 S3接單片機P2.1
      sbit    tcs230_en=P3^0; //TCS230 EN(E0)接GND
      /
      void LCMInit(void)
      {
      LCM_Data=0;
      WriteCommandLCM(0x38,0); //三次顯示模式設置,不檢測忙信號
      DelayMs(5);
      WriteCommandLCM(0x38,0);
      DelayMs(5);
      WriteCommandLCM(0x38,0);
      DelayMs(5);
      WriteCommandLCM(0x38,1); //顯示模式設置,開始要求每次檢測忙信號
      WriteCommandLCM(0x08,1); //關閉顯示
      WriteCommandLCM(0x01,1); //顯示清屏
      WriteCommandLCM(0x06,1); // 顯示光標移動設置
      WriteCommandLCM(0x0C,1); // 顯示開及光標設置
      DelayMs(100);
      }
      //==============================LCD1602顯示子程序================================================
      // 寫數據函數: E=高脈沖 RS=1 RW=0
      //======================================================================*/
      void WriteDataLCM(uchar WDLCM)
      {
      ReadStatusLCM(); //檢測忙
      LCM_Data=WDLCM;
      LCM_RS=1;
      LCM_RW=0;
      LCM_E=0; //若晶振速度太高可以在這后加小的延時
      LCM_E=0; //延時
      LCM_E=1;
      }
      void WriteCommandLCM(uchar WCLCM,BuysC) //BuysC為0時忽略忙檢測
      {
      if (BuysC) ReadStatusLCM(); //根據需要檢測忙
      LCM_Data=WCLCM;
      LCM_RS=0;
      LCM_RW=0;
      LCM_E=0;
      LCM_E=0;
      LCM_E=1;
      }
      uchar ReadStatusLCM(void)
      {
      LCM_Data=0xFF;
      LCM_RS=0;
      LCM_RW=1;
      LCM_E=0;
      LCM_E=0;
      LCM_E=1;
      while (LCM_Data & Busy); //檢測忙信號
      return(LCM_Data);
      }
      void DisplayOneChar( uchar X, uchar Y, uchar ASCII)
      {
       X &=0x1;
       Y &=0xF; //限制Y不能大于15,X不能大于1
       if (X) Y |=0x40; //當要顯示第二行時地址碼+0x40;
       Y |=0x80; // 算出指令碼
       WriteCommandLCM(Y, 0); //這里不檢測忙信號,發送地址碼
       WriteDataLCM(ASCII);
      }
      void DelayMs(uint Ms)
      {
       uint i,TempCyc;
       for(i=0;i<ms;i++) {="" tempcyc="250;" while(tempcyc--);="" }=""

      顏色傳感器程序:TCS3200顏色傳感器模塊 TCS230顏色識別感應 送程序資料 智能小車

      寶貝尺寸:28.7MM*21.3MM(長寬)
      接口定義:VCC GND 供電
      SO-S3 E0  OUT 通訊接口
      采用原裝進口芯片TCS(咨詢特價)
      TCS3200是TCS230升級版本,效果更好
      供電電源 3-5v
      抗光干擾
      白色貼片LED,可檢測不發光物體顏色
      非常佳檢測距離1cm

      提供51單片機測試程序,模塊原理圖!

      (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的值。
      在程序流程中:系統初始化負責設置89C51的定時器/計數器的工作方尸選擇TCS230的輸出比例因子,使能輸出引腳以及通信參數的設置。初始化完成后,檢測是否需要進行白平衡調整。如有,調整白平衡子程序;否則,轉到下一鉑檢測是否需要進行顏色識別。如不需要顏色識別,返回;如需要顏色識別,調用顏色識別子程序,直到顏色識別完畢。
      發貨清單:顏色傳感器模塊一塊
      提供的資料均通過郵箱發送,親收到貨后客服。
      顏色傳感器程序:STM32F429 使用 TCS34725 顏色傳感器的驅動程序  第3張

      顏色傳感器程序:使用色彩傳感器采集和處理RGB數據

      使用色彩傳感器采集和處理RGB數據
      本篇文章主要介紹如何采集并處理由BH1745NUC色彩傳感器生成的RGB數據。
      傳感器
      在第1部分中,我們討論了如何使用DAC和一些負反饋來精確控制紅色、綠色和藍色LED的強度。我們現在可以使用RGB LED模塊作為單像素顯示器 - 即,通過操縱紅色、綠色和藍色光的混合,我們可以產生多種顏色。
      我們希望使用這個LED模塊復制照亮RGB傳感器的光線顏色。如第一篇文章中所述,我們使用由Rohm制造的BH1745NUC顏色傳感器(以下簡稱為BH1745)。這實際上是一個令人印象深刻的設備封裝非常?。ù蠹s2 mm×2 mm),這也是我們為這個項目使用定制設計PCB的一個原因。盡管體積小,但該部件具有廣泛的功能,僅需少量外部組件。以下是數據表中的“典型應用電路”:
      電路中需要光學濾波器、四個光電二極管、四個獨立的16位ADC以及一些信號調制電路、一個I2C接口和一些中斷邏輯,可用于在紅色、綠色、藍色或透明測量值超過時提醒微控制器或者低于可定制的閾值 。
      更多內容請參考以下鏈接:

      版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
      本文鏈接:
      原作者刪帖
      不實內容刪帖
      廣告或垃圾文章投訴
      智能推薦
      《Arduino計算機視覺編程》一3.2 傳感器數據采集
      本節書摘來自華章出版社《Arduino計算機視覺編程》一書中的第3章,第3.2節,作者[土耳其] 歐森·奧茲卡亞(zen zkaya),吉拉伊·伊利茨(Giray Yilliki),更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。 3.2 傳感器數據采集 對大多數實時應用程序來說,視覺信息和傳感器信息的結合對于更好地理解環境是至關重要的。系...
      Predix之玩轉樹莓派(2) 從傳感器采集數據
      作者:唐翊國,開發者生態資深經理,GE數字集團 23年工作經驗,長期在杜邦、歐文斯科寧、莊信萬豐等從事制造業信息化工作,規劃、實施了大量MES、SAP ERP、LIMS、BPM等項目,積累了豐富的制造業數字化轉型經驗。   如果您還沒有Predix試用帳號,請訪問
      傳感器模擬信號數據采集與PLC系統匹配方案
      在工業現場中,壓力、位移、溫度、流量、轉速等各類模擬量傳感器因設計使用的技術方法不同。傳感器工作配電的方式主要分為兩線制和四線制,其輸出的模擬信號也各有差異,而常見的有0-20mA/4-20mA電流信號和0-75mV/0-5V /1-5V電壓信號。要把各類傳感器模擬信號成功采集到PLC/DCS/FCS/MCU/FA/PC系統,就要根據傳感器與數據采集系統的功能和技術特點進行匹配選型,同時也要考慮到...
      常見的無線傳感器數據采集傳輸系統的三種組網
      無線傳感器數據采集傳輸系統,可以實現對溫度,壓力,氣體,溫濕度,液位,流量,光照,降雨量,振動,轉速等數據參數的實時采集,無線傳輸,無線監控與預警。在實際應用中,無線傳感器數據采集傳輸系統常見的有信立XL農業物聯網智能大棚環境監控系統,智慧養殖環境監控系統,智慧管網管溝監控系統,倉儲館藏環境監控系統,機房實驗室環境監控系統,危險品倉庫環境監控系統,大氣環境監控系統,智能制造運行過程監控系統,能源管...
      溫度傳感器數據采集與曲線圖表顯示
      1 概述  傳感器(英文名稱:transducer/sensor)是一種檢測裝置,能感受到被測量的信息,并能將感受到的信息,按一定規律變換成為電信號或其他所需形式的信息輸出,以滿足信息的傳輸、處理、存儲、顯示、記錄和控制等要求。 傳感器按用途可以分為力敏傳感器、位置傳感器、液位傳感器、能耗傳感器、速度傳感器、加速度傳感器、射線輻射傳感器、熱敏傳感器等。 隨著集成度的不斷提高,多種傳感器集...
      猜你喜歡
      bno055傳感器數據不更新_大數據時代必修課:讓傳感器采集的數據成為資產
      歷經數年的市場沉淀,結合實體經濟的深度融合,數據已成為企業內更有價值的資產之一,數據資產運營的重要意義也已經成為各個行業的一種共識。 尤其是對于一些工業企業來說,從物聯網傳感器收集的數據用于預測分析、工業生產,這不僅是大數據時代下的必修課,也是推動企業經濟實現快速發展、包容性增長、可持續增長的強大驅動力量。而法米特的企業愿景便是讓傳感器采集的數據成為資產。 法米特作為一家專門從事于物聯技術的品牌,...
      解析基于keras深度學習框架下yolov3的算法
      一.前言        由于前一段時間以及實現了基于keras深度學習框架下yolov3的算法,本來想趁著余熱將自己的心得體會進行總結,但由于前幾天有點事就沒有完成計劃,現在趁午休時間整理一下。 二.Keras框架的介紹       1.Keras是一個用Python編寫的高級API,它提供了一個簡單和模塊化的API來創建和訓練...
      使用面向服務分解技術來滿足架構目標,定義與業務模型一致的服務
      引言 通常,企業已經擁有一組支持大多數必需業務功能的應用程序。因此,談到服務定義,您可能以為這不過就是將現有的應用程序功能作為一組服務來公開,類似于傳統的企業應用程序集成(enterprise application integration,EAI)實踐。其實不然。在實現基于面向服務的體系結構(Service-Oriented Architecture,SOA)的解決方案時,正確定義服務是最困難的...
      單片機自學多久可以成功?學單片機需要什么基礎知識?
      單片機自學完全是可以學會的,現在入門的教程可以用泛濫來形容了。 泛濫不代表講的不好,有些確實講的非常不錯啊。 我也是自學過來的,下面通過我的經歷來解答這些問題。 一、單片機自學多久可以成功 我曾經從零基礎學習單片機到找到相應研發工作大概花了3個多月。 很多人可能覺得不可思議,我們學校學一年我都學不會,當然也有大神10天就學會的。 當初有2個因素鞭策著我前進: 1.必須趕緊找個工作 2.強烈的興趣 ...
      趣拿洞察:2020年社交電商發展分析
      趣拿對電子商務消費者進行單項深入研究,從消費者角度反思市場狀態,并將傳統電商與社交電商進行對比分析,從中找到更好服務消費者的方法,并為電商企業的發展提供戰略支持。 2020年中國電子商務領域的社交電商創新已經進入第十個年頭,經過十年不斷地探索、嘗試、發展、糾錯,社交電商已經全面發力,成為中國電子商務領域不可分割的一部分。 中國社交電商發展具有四大特點: 人數多規模大。2020手機用戶規模約9億;2...

      下一篇: PLC、DCS、FCS三大控

      上一篇: 電氣控制線路圖控制原

      推薦產品

      更多
      主站蜘蛛池模板: 一区二区视频在线播放| 久久久国产一区二区三区| 精品人妻少妇一区二区| 精品国产AⅤ一区二区三区4区 | 麻豆亚洲av熟女国产一区二| 国产激情一区二区三区四区 | 成人免费一区二区三区在线观看| 人妻久久久一区二区三区| 亚洲av色香蕉一区二区三区| 中文字幕一区二区三区免费视频| 69久久精品无码一区二区| 99精品国产一区二区三区| 国产成人一区二区三区| 亚洲国产一区在线| 久久se精品一区二区影院| 极品少妇一区二区三区四区| 久久se精品一区二区国产| 久久精品国产一区二区| 国产亚洲综合精品一区二区三区| 精品国产一区二区三区无码| 亚洲欧洲一区二区三区| 亚洲欧洲无码一区二区三区| 日韩一区精品视频一区二区| 亚洲综合av永久无码精品一区二区| 一区二区高清在线| 中文字幕在线播放一区| 亚洲一区精品伊人久久伊人| 国产激情一区二区三区| 成人午夜视频精品一区| 色妞AV永久一区二区国产AV| 亚洲综合国产一区二区三区| 无码人妻一区二区三区在线视频| 日韩AV无码一区二区三区不卡毛片| 中文字幕亚洲一区| 亚洲国产精品成人一区| 中文字幕精品一区二区 | 国产福利一区二区三区视频在线| 日韩精品视频一区二区三区 | 日韩一区二区三区在线观看| 国产在线精品一区二区在线看| 国产一区二区三区在线观看免费|