I2Cセンサーの種類 |
12bit D/Aコンバーター |
|
主な機能 |
1ch 12bitのD/Aコンバーター EEPROMが内臓され、初期値を設定しておくと電源投入時に、この値が出力されます |
|
I2Cデバイス名 |
MCP4725 |
|
写真
|
||
開発したデバイスの入手先 製品名 品番・型番 |
スイッチサイエンス MCP4725搭載D/Aコンバータモジュール(SFE-BOB-12918) |
|
デバイスのData-Sheet |
||
デバイスの主な仕様
|
電源電圧 I2Cアドレス
I2C通信速度 分解能
|
2.7V~5.5V 0X60~0X67(最下位ビット(bit:0)はPin6で選択可能) bit:1とbit:2は、プログラマブル 100K/400K/3.4Mbps 12Bit |
説明 |
12bitのD/Aコンバーターです。 内部にEEPROMが内臓されており、電源投入時の出力の初期値を設定できまので、パワーオン時の出力電圧が不定等を防止できます。 I2Cアドレスの0bit目がデバイスの6番ピンで指定、1bit目と2bit目がプログラマブル です。I2Cデバイスとしてはプログラマブルのアドレスはうれしいのですが、反面、設定を変更した場合、外部からは解りませんので注意が必要です。
出力電圧の設定、EEPROMへの書き込みは12bitで、下位8bitと上位4bitとパワーダウンセレクト等の組み合わせを8bitに分割して通信しなければ成りませんが、I2Cセンサードライバーでは各レジスタの設定項目の長さに関係なく、16bitへの合算/分割はドライバー内部で処理しますので、該当するプロパティへ値をセットするだけでbit分割を意識する必要はありません。
パワーダウンセレクト機能でD/Aコンバーターの出力側の負荷抵抗を1K、100K、500KΩの選択が可能です。D/Aコンバーターの内部出力が切り離された時に、D/Aコンバーターの先に接続される機器の入力がオープンに成る事を防止する事ができるハード設計者には嬉しい機能も有ります。
通常のレジスタの読み書きは、register addressを指定した後に処理を行いますが、I2Cセンサー・ドライバーを使用する場合は使用するプロパティにregister
この基板は、GROVEコネクタは実装されていません。ケーブルを直接半田付けする。ピンヘッダを取付る等を行い、接続する必要が有ります。
|
|
|
|
|
開発・テスト風景
GROVEの4pinコネクタが実装できない為、ユニバーサル基板にGROVEコネクタを取付し、 D/Aコンバータにピンヘッダを取付け、ユニバーサル基板と接続しています。 |
I2Cデバイス内部のレジスタ構成(レジスタに対する設定値、レジスタの内容等のご質問はお答えできません)
Fast |
|
Write |
|
Write |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
I2Cセンサー・ドライバーで準備済みのプロパティ・メソッド
プロパティ
機能名 |
機能説明 |
RDYBSY |
RDY/ BSY |
POR |
power-on-reset |
PowerDownSelect |
0:Normal Mode 1:1 kΩ resistor to 2:100 kΩ resistor 3:500 kΩ resistor |
register_Data |
DAC Input Data (12 bits) |
EEPROM_PowerDownSelect |
0:Normal Mode 1:1 kΩ resistor to 2:100 kΩ resistor 3:500 kΩ resistor |
EEPROM_Data |
DAC Input Data (12 bits) |
ReadBuff |
読込生データ |
メソッド
機能名 |
機能説明 |
Init |
I2Cバスコントローラに指定された接続設定を使って非同期的に接続します。 |
Read |
指定レジスタ読込 |
Write |
指定レジスタ書込 |
定数
機能名 |
機能説明 |
定数値 |
power_down_mode |
Normal |
0x00 |
|
ground1k |
0x01 |
|
ground100k |
0x02 |
|
ground500k |
0x03 |
CommandType |
FastMode |
0x00 |
|
DACRegister |
0x02 |
|
DACRegisterAndEEPROM |
0x03 |
I2Cセンサードライバーを使ったVBでのサンプルソース
Imports I2CLibrary Public NotInheritable Class MCP4725Page Inherits Page
Private Const MCP4725_Address As Byte = &H60 Private MCP4725 As MCP4725 = New MCP4725()
Public Sub New() InitializeComponent() Call Init() End Sub
Private Async Sub Init() Await MCP4725.Init(MCP4725_Address) End Sub
Private Sub btnFirst_Click(sender As Object, e As RoutedEventArgs) MCP4725.PowerDownSelect = MCP4725.power_down_mode.Normal MCP4725.register_Data = 1000 MCP4725.Write(MCP4725.CommandType.FastMode) End Sub
Private Sub btnDACREG_Click(sender As Object, e As RoutedEventArgs) MCP4725.PowerDownSelect = MCP4725.power_down_mode.Normal MCP4725.register_Data = 2000 MCP4725.Write(MCP4725.CommandType.DACRegister) End Sub
Private Sub btnEEPROM_Click(sender As Object, e As RoutedEventArgs) MCP4725.PowerDownSelect = MCP4725.power_down_mode.Normal MCP4725.register_Data = 3000 MCP4725.Write(MCP4725.CommandType.DACRegisterAndEEPROM) End Sub
Private Sub btnRead_Click(sender As Object, e As RoutedEventArgs) MCP4725.Read() Debug.WriteLine(“RDYBSY = “ & MCP4725.RDYBSY.ToString) Debug.WriteLine(“POR = “ & MCP4725.POR.ToString) Debug.WriteLine(“PowerDownSelect = “ & MCP4725.PowerDownSelect.ToString) Debug.WriteLine(“register_Data = “ & MCP4725.register_Data.ToString) Debug.WriteLine(“EEPROM_PowerDownSelect = “ & MCP4725.EEPROM_PowerDownSelect.ToString) Debug.WriteLine(“EEPROM_Data = “ & MCP4725.EEPROM_Data.ToString) End Sub
Private Sub btnBack_Click(sender As Object, e As RoutedEventArgs) MCP4725.close() App.rootFrame.Navigate(GetType(MenuPage)) End Sub
End Class
|