I2Cセンサーの種類 |
12bit アナログデジタルコンバーター |
|
主な機能 |
1ch12bit A/Dコンバーター アナログ電圧をデジタル信号に変換します。 |
|
I2Cデバイス名 |
ADC121C021 |
|
写真 |
||
開発したデバイスの入手先 製品名 品番・型番 |
スイッチサイエンス GROVE – I2C ADC (SEEED-103020013) |
|
デバイスのData-Sheet |
||
デバイスの主な仕様 |
電源電圧 I2Cアドレス 分解能 I2C通信速度 サンプリング速度 |
3.3V~5.0V 0X50 ~ 0X5A (ジャンパー切り替え可能) 12bit 100K/400K/3.4Mbps 22.2Khz(I2C通信速度 400Kbps時) |
説明 |
この基板のリファレンス電圧がVCC電圧の1/2で回路構成されていますので、VCC3.3V時にアナログ入力を3.3V入力しても0XFFF では無く0x7FFに成ります。 その他の機能としてアラートフラグ、オーバーレンジアラート、アンダーレンジアラート、ヒステリシスの設定が可能です。 測定値の読み出すResult アラートフラグはアラートフラグのプロパティで個別に得る事ができます。 通常のレジスタの読み書きは、register |
開発・テスト風景
テストはVCCの電圧をボリューム可変させてアナログ入力し確認しました。 |
I2Cデバイス内部のレジスタ構成(レジスタに対する設定値、レジスタの内容内容等のご質問はお答えできません)
Address |
Conversion |
Alert |
Configuration |
Alert |
Alert |
Alert |
Lowest |
Highest |
I2Cセンサー・ドライバーで準備済みのプロパティ・メソッド
プロパティ
機能名 |
機能説明 |
Polarity |
このビットは、ALERT出力ピンのアクティブレベルの極性を設定します。 0:アクティブ・ローのALERTピンを設定します。 1:アクティブ・ハイにALERTピンを設定します。 |
AlertPinEnable |
0:ALERT出力ピンを無効にします。ピンが無効になっているときにALERT出力はハイインピーダンスになります。 1:ALERT出力ピンを有効にします。 |
AlertFlagEnable |
0:変換結果レジスタにおける障害のアラートステータスビット[D15]。 1:変換結果レジスタ内のアラートステータスビット[D15]を有効にします。 |
AlertHold |
0:アラートは、意志、自己明確なとき、ヒステリシス・レジスタの値以上により制限内で測定された電圧が移動します。 1:アラートが自己明確ではないだろうと1がアラートステータス・レジスタ内のアラート高いフラグまたは警告低フラグに書き込まれたときにのみクリアされます。 |
機能名 |
機能説明 |
CycleTime |
0: 自動モード無効 1: Tconvert x 32 2: Tconvert x 64 3: Tconvert x 128 4: Tconvert x 256 5: Tconvert x 512 6: Tconvert x 7: Tconvert x |
ResultValue |
最新の変換結果 |
AlertFlag |
最新の変換結果のアラートフラグ |
OverRangeAlert |
VHIGHリミットレジスタに格納されたVHIGHの限界を超えた場合、ビットは1に設定されています。 |
UnderRangeAlert |
VLOWリミットレジスタに格納されVLOW限界を下回ったときにビットが1に設定されています。 |
VLOWLimit |
アラート条件を決定するために使用される下限閾値 |
VHIGHLimit |
アラート条件を決定するために使用される上限閾値 |
Hysteresis |
アラート条件を決定するために使用されるヒステリシス値 |
LowestConversion |
最低の変換結果 |
HighestConversion |
最高の変換結果 |
ReadBuff |
読込生データ |
メソッド
機能名 |
機能説明 |
Init |
I2Cバスコントローラに指定された接続設定を使って非同期的に接続します。 |
Read |
指定レジスタ読込 |
Write |
指定レジスタ書込 |
定数
機能名 |
機能説明 |
定数値 |
REG_ADDR.RESULT |
Conversion Result |
0x00 |
REG_ADDR.ALERT |
Alert Status |
0x01 |
REG_ADDR.CONFIG |
Configuration |
0x02 |
REG_ADDR.LIMITL |
Low Limit |
0x03 |
REG_ADDR.LIMITH |
High Limit |
0x04 |
REG_ADDR.HYST |
Hysteresis |
0x05 |
REG_ADDR.CONVL |
Lowest Conversion |
0x06 |
REG_ADDR.CONVH |
Highest |
0x07 |
I2Cセンサードライバーを使ったVBでのサンプルソース
Imports I2CLibrary Public NotInheritable Class ADC121C021Page Inherits Page Private Const ADC121C021_Address As Byte = &H50 Private ADC121C021 As ADC121C021 = New ADC121C021() Private WithEvents RefreshTimer As DispatcherTimer = New DispatcherTimer() Public Sub New() InitializeComponent() Call Init() End Sub Private Async Sub Init() Await ADC121C021.Init(ADC121C021_Address) ’ HighestConversion初期化 ADC121C021.HighestConversion = 0 ADC121C021.Write(ADC121C021.REG_ADDR.CONVH) ’ LowestConversion初期化 ADC121C021.LowestConversion = &HFFF ADC121C021.Write(ADC121C021.REG_ADDR.CONVL) ’ コンフィグ書込 ADC121C021.AlertFlagEnable = True ADC121C021.AlertPinEnable = True ADC121C021.Write(ADC121C021.REG_ADDR.CONFIG) ’ 上限値 ADC121C021.VHIGHLimit = 2000 ADC121C021.Write(ADC121C021.REG_ADDR.LIMITH) ’ 下限値 ADC121C021.VLOWLimit = 500 ADC121C021.Write(ADC121C021.REG_ADDR.LIMITL) 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() ADC121C021.Read(ADC121C021.REG_ADDR.RESULT) Debug.WriteLine(“{0:F} {1}”, ADC121C021.ResultValue, ADC121C021.AlertFlag) ADC121C021.Read(ADC121C021.REG_ADDR.ALERT) Debug.WriteLine(“{0} {1}”, ADC121C021.OverRangeAlert, ADC121C021.UnderRangeAlert) ADC121C021.Read(ADC121C021.REG_ADDR.CONVH) Debug.WriteLine(“{0:F}”, ADC121C021.HighestConversion) ADC121C021.Read(ADC121C021.REG_ADDR.CONVL) Debug.WriteLine(“{0:F}”, ADC121C021.LowestConversion) RefreshTimer.Start() End Sub Private Sub btnStop_Click(sender As Object, e As RoutedEventArgs) RefreshTimer.Stop() ADC121C021.HighestConversion = 0 ADC121C021.Write(ADC121C021.REG_ADDR.CONVH) ADC121C021.LowestConversion = &HFFF ADC121C021.Write(ADC121C021.REG_ADDR.CONVL) End Sub Private Sub btnBack_Click(sender As Object, e As RoutedEventArgs) RefreshTimer.Stop() ADC121C021.close() App.rootFrame.Navigate(GetType(MenuPage)) End Sub End Class |