テキスト ボックス:  TSL2561

 

 

 

  I2Cセンサーの種類

デジタル光センサー

主な機能

1ch 16bit 光センサー

検出する光を赤外線、フルスペクトラム、可視光より選択可能

I2Cデバイス名

TSL2561

写真

 

GROVE - I2C デジタル光センサ

開発したデバイスの入手先 

製品名 品番・型番

スイッチサイエンス

GROVE – I2C デジタル光センサ(SEEED-101020030

デバイスのData-Sheet

https://cdn-shop.adafruit.com/datasheets/TSL2561.pdf

デバイスの主な仕様

 

電源電圧

I2Cアドレス

分解能

検出光

I2C通信速度

2.7~3.6V (5Vでは使えません)

0290X730X49ADDR SEL ピンで選択可能)

16bit

赤外線、フルスペクトラム、可視光

 

100K/400Kbps

説明

650nm付近にピークを持つフォトダイオードと、800nm付近にピークを持つフォトダイオード、各々チャンネル0、チャンネル1の構成で光をデジタル変換する光、デジタル変換のI2Cデバイスです。

センサーが指向性を持っている為、センサーのセンター部より45度程度光源がずれると

計測値は60%程度に落ちます。

 

I2Cセンサー・ドライバーを用いない場合、アドレス指定時の最下位bitR/Wを指定するbitで、スレーブアドレスでは有りませんので注意して下さい。・

 

測定値の読み出す場合や割り込みレベル設定は、全て16bitですので2つの8bitのレジスタよりデータを得て合算や8bitへの分割処理が必要となります。I2Cセンサードライバーでは16bitへの合算/分割はドライバー内部で処理し、16bit10進数でプロパティへセットされます。

 

通常のレジスタの読み書きは、register
address
を指定した後に処理を行いますが、I2Cセンサー・ドライバーを使用する場合は使用するプロパティにregister addressが紐づけして有る為レジスタアドレスの指定は不要でプロパティへ値の代入、読み出しのみで可能です。

 

 

 

 

開発・テスト風景

IMG_2416

赤外線の確認は、赤外線リモコンでのテストが有効です。

 

 

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()


  InitializeComponent()

  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