I2Cセンサーの種類 |
デジタル光センサー |
|
主な機能 |
1ch 16bit 光センサー 検出する光を赤外線、フルスペクトラム、可視光より選択可能 |
|
I2Cデバイス名 |
TSL2561 |
|
写真
|
|
|
開発したデバイスの入手先 製品名 品番・型番 |
スイッチサイエンス GROVE – I2C デジタル光センサ(SEEED-101020030) |
|
デバイスのData-Sheet |
||
デバイスの主な仕様
|
電源電圧 I2Cアドレス 分解能 検出光 I2C通信速度 |
2.7V~3.6V (5Vでは使えません) 0X29、0X73、0X49(ADDR SEL ピンで選択可能) 16bit 赤外線、フルスペクトラム、可視光
100K/400Kbps |
説明 |
650nm付近にピークを持つフォトダイオードと、800nm付近にピークを持つフォトダイオード、各々チャンネル0、チャンネル1の構成で光をデジタル変換する光、デジタル変換のI2Cデバイスです。 センサーが指向性を持っている為、センサーのセンター部より45度程度光源がずれると 計測値は60%程度に落ちます。
I2Cセンサー・ドライバーを用いない場合、アドレス指定時の最下位bitがR/Wを指定するbitで、スレーブアドレスでは有りませんので注意して下さい。・
測定値の読み出す場合や割り込みレベル設定は、全て16bitですので2つの8bitのレジスタよりデータを得て合算や8bitへの分割処理が必要となります。I2Cセンサードライバーでは16bitへの合算/分割はドライバー内部で処理し、16bitの10進数でプロパティへセットされます。
通常のレジスタの読み書きは、register |
|
|
|
|
開発・テスト風景
赤外線の確認は、赤外線リモコンでのテストが有効です。 |
I2Cデバイス内部のレジスタ構成(レジスタに対する設定値、レジスタの内容内容等のご質問はお答えできません)
Specifies register address |
Low byte of ADC channel 1 |
Control of basic functions |
High byte of ADC channel 1 |
Integration time/gain control |
|
Low byte of low interrupt threshold |
|
High byte of low interrupt threshold |
|
Low byte of high interrupt threshold |
|
High byte of high interrupt threshold |
|
Interrupt control |
|
Factory test — not a user register |
|
Part number/ Rev ID |
|
Low byte of ADC channel 0 |
|
High byte of ADC channel 0 |
|
I2Cセンサー・ドライバーで準備済みのプロパティ・メソッド
プロパティ
機能名 |
機能説明 |
POWER |
パワーアップ/パワーダウンを指定します。 |
GAIN |
低ゲインモードと高ゲインモードの間でゲインを切り替えます。 |
Manual |
積分サイクルの開始/停止を指定します。 |
INTEG |
積分時間を指定します。 |
THRESHLOW |
ADCチャネル0低しきい値を取得または設定します。 |
THRESHHIGH |
ADCチャネル0高しきい値を取得または設定します。 |
INTR |
INTRコントロールを取得または設定します。 |
PERSIST |
割り込みの持続性を取得または設定します。 |
PARTNO |
品番識別情報を取得します。 |
REVNO |
リビジョン番号を取得します。 |
DATA0 |
ADCチャネル0のデータを取得します。 |
DATA1 |
ADCチャネル1のデータを取得します。 |
|
|
メソッド
機能名 |
機能説明 |
Init |
I2Cバスコントローラに指定された接続設定を使って非同期的に接続します。 |
Read |
指定レジスタ読込 |
Write |
指定レジスタ書込 |
定数
機能名 |
機能説明 |
定数値 |
REG_ADDR.CONTROL |
基本的な機能の制御 |
0x00 |
REG_ADDR.TIMING |
積分時間/ゲイン・コントロール |
0x01 |
REG_ADDR.THRESHLOW |
低割り込みしきい値 |
0x02 |
REG_ADDR.THRESHHIGH |
高割り込みしきい値 |
0x04 |
REG_ADDR.INTERRUPT |
割り込み制御 |
0x06 |
REG_ADDR.CRC |
工場テスト用 |
0x08 |
REG_ADDR.ID |
部品番号/ Rev ID |
0x0A |
REG_ADDR.DATA0 |
ADCチャネル0データ |
0x0C |
REG_ADDR.DATA1 |
ADCチャネル1データ |
0x0E |
I2Cセンサードライバーを使ったVBでのサンプルソース
Imports I2CLibrary Public NotInheritable Class TSL2561Page Inherits Page
Private Const TSL2561_Address As Byte = CType(TSL2561.SLAVE_ADDRESS.ADDR0, Byte) Private TSL2561 As TSL2561 = New TSL2561() Private WithEvents RefreshTimer As DispatcherTimer = New DispatcherTimer()
Public Sub New()
Call Init() End Sub
Private Async Sub Init() Await TSL2561.Init(TSL2561_Address)
TSL2561.INTR = TSL2561.Interrupt_Control.Interrupt_output_disabled TSL2561.PERSIST = &H0 TSL2561.Write(TSL2561.REG_ADDR.INTERRUPT)
TSL2561.GAIN = True TSL2561.Manual = False TSL2561.INTEG = TSL2561.Integration_Time.ms013 TSL2561.Write(TSL2561.REG_ADDR.TIMING)
TSL2561.THRESHLOW = &H11 TSL2561.Write(TSL2561.REG_ADDR.THRESHLOW)
TSL2561.THRESHHIGH = &H1234 TSL2561.Write(TSL2561.REG_ADDR.THRESHHIGH)
TSL2561.POWER = &H3 TSL2561.Write(TSL2561.REG_ADDR.CONTROL) End Sub
Private Sub btnStart_Click(sender As Object, e As RoutedEventArgs) RefreshTimer.Interval = TimeSpan.FromMilliseconds(100) RefreshTimer.Start() End Sub
Private Sub Measurement(sender As Object, e As Object) Handles RefreshTimer.Tick RefreshTimer.Stop()
TSL2561.Read(TSL2561.REG_ADDR.DATA0) Debug.WriteLine(“DATA0 = {0:D}”, TSL2561.DATA0)
TSL2561.Read(TSL2561.REG_ADDR.DATA1) Debug.WriteLine(“DATA1 = {0:D}”, TSL2561.DATA1)
TSL2561.Read(TSL2561.REG_ADDR.THRESHLOW) Debug.WriteLine(“THRESHLOW = {0:D}”, TSL2561.THRESHLOW)
TSL2561.Read(TSL2561.REG_ADDR.THRESHHIGH) Debug.WriteLine(“THRESHHIGH = {0:D}”, TSL2561.THRESHHIGH)
RefreshTimer.Start() End Sub
Private Sub btnStop_Click(sender As Object, e As RoutedEventArgs) RefreshTimer.Stop() End Sub
Private Sub btnBack_Click(sender As Object, e As RoutedEventArgs) RefreshTimer.Stop() TSL2561.close() App.rootFrame.Navigate(GetType(MenuPage)) End Sub End Class
|