テキスト ボックス:  MCP4725 

 

I2Cセンサーの種類

12bit D/Aコンバーター

主な機能

ch 12bitD/Aコンバーター

EEPROMが内臓され、初期値を設定しておくと電源投入時に、この値が出力されます

I2Cデバイス名

MCP4725

写真

 



MCP4725搭載D/Aコンバータモジュール(I2C通信)

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

製品名 品番・型番

スイッチサイエンス

MCP4725搭載D/Aコンバータモジュール(SFE-BOB-12918

デバイスのData-Sheet

http://ww1.microchip.com/downloads/en/DeviceDoc/22039d.pdf

デバイスの主な仕様

 

電源電圧

I2Cアドレス

 

I2C通信速度

分解能

 

2.7~5.5V 

060~067(最下位ビット(bit:0)Pin6で選択可能)

bit:1bit2は、プログラマブル

100K/400K/3.4bps

12Bit

説明

12bitD/Aコンバーターです。

内部にEEPROMが内臓されており、電源投入時の出力の初期値を設定できまので、パワーオン時の出力電圧が不定等を防止できます。

I2Cアドレスの0bit目がデバイスの6番ピンで指定、1bit目と2bit目がプログラマブル

です。I2Cデバイスとしてはプログラマブルのアドレスはうれしいのですが、反面、設定を変更した場合、外部からは解りませんので注意が必要です。

 

出力電圧の設定、EEPROMへの書き込みは12bitで、下位8bitと上位4bitとパワーダウンセレクト等の組み合わせを8bitに分割して通信しなければ成りませんが、I2Cセンサードライバーでは各レジスタの設定項目の長さに関係なく、16bitへの合算/分割はドライバー内部で処理しますので、該当するプロパティへ値をセットするだけでbit分割を意識する必要はありません。

 

パワーダウンセレクト機能でD/Aコンバーターの出力側の負荷抵抗を1K100K500KΩの選択が可能です。D/Aコンバーターの内部出力が切り離された時に、D/Aコンバーターの先に接続される機器の入力がオープンに成る事を防止する事ができるハード設計者には嬉しい機能も有ります。

 

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

 

この基板は、GROVEコネクタは実装されていません。ケーブルを直接半田付けする。ピンヘッダを取付る等を行い、接続する必要が有ります。

 

 

 

 

 

開発・テスト風景


IMG_2433

GROVEの4pinコネクタが実装できない為、ユニバーサル基板にGROVEコネクタを取付し、

D/Aコンバータにピンヘッダを取付け、ユニバーサル基板と接続しています。

 

I2Cデバイス内部のレジスタ構成(レジスタに対する設定値、レジスタの内容等のご質問はお答えできません)

Fast
Mode

 

Write
DAC
 Register

 

Write
DAC
 Register
and EEPROM

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I2Cセンサー・ドライバーで準備済みのプロパティ・メソッド

プロパティ

機能名

機能説明

RDYBSY

RDY/ BSY

POR

power-on-reset

PowerDownSelect

0Normal Mode

11 kΩ resistor to
ground

2100 kΩ resistor
to ground

3500 kΩ resistor
to ground

register_Data

DAC Input Data (12 bits)

EEPROM_PowerDownSelect

0Normal Mode

11 kΩ resistor to
ground

2100 kΩ resistor
to ground

3500 kΩ resistor
to ground

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