AMS TCS3430(arduino/STM32)

 

前言

該設備具有先進的環境傳感(ALS)和C IE 1931三刺激顏色控制(和C光傳感)。每個設備通道過濾器來使其能夠準確地測量環境環境,並根據光學特性來測量環境。顏色。這些用於計算色度、照度和色溫,所有這些都支持各種潛在的應用程序。

DFRobot_TCS3430

  • Nucleo-F401RE

連線

傳感器板子與上圖Nucleo-F401RE腳位對接部分硬件即完成

 

  • 注意此板是3.3V非5V,與I2C的腳為傳感器板是含電阻的,如果是焊路電路板記得要外加電阻正常

編碼流程

 

  • 首先在開始感應前先把TCS3430內的記憶體reset才不會造成I2C編寫指令錯誤

 

The Sensor Initialization

 

 

bool begin()
{ uint8_t x=0x00,y=0x00;
// _pWire->begin();
softReset();
printf("softreset finish nr");
setPowerALSADC();
printf("setPower finish nr");
x=read_register(0x92);//ID=0xDC
y=read_register(0x91);//ID=0x41
if((x!=TCS3430_ID) || (y != TCS3430_REVISION_ID)){
printf("DeviceID=%#x ,RevisionID=%#x nr",x,y);
disableALSADC();
powerOFF();
return false;
}
return true;
}

 

 

首先在開始Sensing前要先把TCS3430內的ADC等等全部重新設定,避免I2C寫入或讀取Fail

 

 

初始化表

 

 

 

 

初始化完成後即可抓取Data

 

 

XData = getXData();
YData = getYData();
ZData = getZData();
IR1Data = getIR1Data();
IR2Data = getIR2Data();
printf("X :%d Y :%d Z :%d IR1 :%d IR2 :%d;nr",XData,YData,ZData,IR1Data,IR2Data);
HAL_Delay(500);

 

 

其中getXData()等等涵式庫如下以此類推

 

 

uint16_t getXData()
{
return read_register(eRegCH3DATALAddr);
}

 

 

額外設定

 

 

setWaitTimer/setALSGain/setHighGAIN

 

 

以上等等不同Gain設定最主要是影響感光程度可把其調整得更加敏感,Wait time主要是看檢測時間間隔用於節電

 

 

校正與Lux / CCT Calculations

這邊請參考AMS官網給的標準Excel讓Color sensor能夠回歸基準值

 

 

 

這邊參考AMS Application Note使用Excel對標準光源量測使其校準,這邊注意是對同一標準光源量測非量測不同點位

 

 

參考資料

  1. TCS3430_datasheet
  2. Application Note(Improving Color Sensor Lux Accuracy)
  3. Application Note(Lux / CCT Calculations)
  4. DFRobot_TCS3430

 

 

 

Leave a Comment

Your email address will not be published. Required fields are marked *

Shopping Cart