AD5380からアナログ電圧をマルチチャンネルで出力する方法

AD5380からアナログ電圧をマルチチャンネルを出力する方法は下記の2つある。

専用ソフトを用いる方法

準備するもの

## 接続図

直流電源(6V)をEVAL-AD5380のJ9に接続する。

(接続図)を掲載

## EVAL-5380のピン配置

ピン配置は[マニュアル](https://www.analog.com/media/en/technical-documentation/user-guides/EVAL-AD5380SDZ_5382SDZ_UG-757.pdf)の6ページのデフォルト配置のままでよい。

Terminal No. Position Terminal No. Position
LK1 A LK7 B
LK2 A LK8 B
LK3 Removed LK9 A
LK4 Removed LK10 B
LK5 Removed LK11 Removed
LK6 B LK12 B

## ソフトウェアの使い方

EVAL-5380の[マニュアル](https://www.analog.com/media/en/technical-documentation/user-guides/EVAL-AD5380SDZ_5382SDZ_UG-757.pdf)に詳細があるので、これに従うことで各チャンネルに電圧を出力することができる。

## 問題点

Pythonなどで制御する方法がわからない。

# マイコンからI2C通信で制御する方法

上述のようにSDP-BをPythonなどで制御する方法がわからない。そこでAD5380をマイコン(Arduino UNO)でI2C通信し、Arduino UNOとPCはUART通信でシリアル通信することでPythonなどで制御可能であると考えた。以下に簡単に方法を示す。

## 準備するもの

- D/Aコンバータ([AD5380](https://www.analog.com/jp/products/ad5380.html))の評価用ボード:[EVAL-AD5380](https://www.analog.com/jp/design-center/evaluation-hardware-and-software/evaluation-boards-kits/eval-ad5380.html) - マイコン:[Arduino UNO R3](https://store-usa.arduino.cc/products/arduino-uno-rev3?selectedStore=us) - 直流電源(6V出力) - ブレッドボード - ジャンパー線:複数 - 抵抗(1kΩ):2本 - (可能ならば)オシロスコープ

## I2C通信

Philips社が提唱した通信インターフェースで、Inter-Integrated Circuitの略である。後で具体的なタイムチャートを示すが、クロックに同期させてデータを伝送するシリアル通信である。具体的には、クロック(SLC)とデータ(SDA)の2本の信号線を用いる。そして通信はマスターとスレーブの役割があり、マスターからスレーブに送受信の指示をする。

接続図

プルアップ回路も

## 出力電圧と14ビット信号の関係

今回用いるD/Aコンバータは14ビットのダイナミックレンジがあるので出力電圧$V_{OUT}$は以下の式で与えられる。

$$ V_{OUT}=5 \times \frac{x}{16384} $$

出力電圧の式の詳細はAD5380の[マニュアル](https://www.analog.com/media/jp/technical-documentation/data-sheets/AD5380_JP.pdf)に譲るが、上式ではゲイン係数$m$ やオフセット係数$c$ をデフォルトのまま($m=1, c=0$)にしている(デフォルトになっているかどうかを、AD538xで設定にし、電圧が制御できるかは試した方がよい)。$x$ は14ビットの設定値で0から16383の値をとる。また、レジスタに書き込む14ビットの2進数$a_n$との関係は

$$ x=\sum_{n=0}^{13} a_n \cdot 2^n $$

である。代表例を下記に示す。

2進数(14ビット) 10進数
11 1111 1111 1111 16383
10 0000 0000 0001 8193
10 0000 0000 0000 8192
01 1111 1111 1111 8191
00 0000 0000 0000 0

## EVAL-5380のピン配置

マイコンを用いてI2C通信してレジスタに書き込むためには、評価ボードの各ピン配置をデフォルトから下記に変更する必要がある。各ピンの意味は[マニュアル](https://www.analog.com/media/en/technical-documentation/user-guides/EVAL-AD5380SDZ_5382SDZ_UG-757.pdf)の6ページを参考にすること。

(下記表はアドレスビットが00のとき)

Terminal No. Position Terminal No. Position
LK1 A LK7 B
LK2 A LK8 B
LK3 A LK9 A
LK4 Removed LK10 A
LK5 Removed LK11 B
LK6 B LK12 B

## Arduino IDEによる書き込み

[Arduino IDEのインストールと設定 (Windows, Mac, Linux対応)](https://www.indoorcorgielec.com/resources/arduinoide%E8%A8%AD%E5%AE%9A/arduino-ide%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A8%E8%A8%AD%E5%AE%9A/)