AMS TCS3430(arduino/STM32)
前言
該設備具有先進的環境傳感(ALS)和C IE 1931三刺激顏色控制(和C光傳感)。每個設備通道過濾器來使其能夠準確地測量環境環境,並根據光學特性來測量環境。顏色。這些用於計算色度、照度和色溫,所有這些都支持各種潛在的應用程序。
DFRobot_TCS3430 |
|
連線
傳感器板子與上圖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能夠回歸基準值
參考資料
- TCS3430_datasheet
- Application Note(Improving Color Sensor Lux Accuracy)
- Application Note(Lux / CCT Calculations)
- DFRobot_TCS3430