===== AD5380からアナログ電圧をマルチチャンネルで出力する方法 ===== AD5380からアナログ電圧をマルチチャンネルを出力する方法は下記の2つある。 * 専用ソフトを用いる方法 * マイコンからI2C通信で制御する方法 === 専用ソフトを用いる方法 === == 準備するもの == * D/Aコンバータ([[https://www.analog.com/jp/products/ad5380.html|AD5380]])の評価用ボード:[[https://www.analog.com/jp/design-center/evaluation-hardware-and-software/evaluation-boards-kits/eval-ad5380.html|EVAL-AD5380]] * SDPボード:[[https://www.analog.com/jp/design-center/evaluation-hardware-and-software/evaluation-boards-kits/sdp-b.html|SDP-B]] * 専用ソフトウェア:[[https://www.analog.com/media/en/evaluation-boards-kits/evaluation-software/AD538x_evalSoftware.zip|AD538x]] * 直流電源(6V出力) ## 接続図 直流電源(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/)