MAX5142をArduinoで使う

 

MAX5142(姉妹品MAX5141,MAX5143,MAX5144) のArduinoからのSPI経由での制御のテスト

【MAX5142とは】

https://datasheets.maximintegrated.com/jp/ds/MAX5141-MAX5144_jp.pdf

14bitのDAC。MAX5141はユニポーラー専用、MAX5142は.ユニポーラーでの利用または外付けのオペアンプを使ってバイポーラー(正負の電圧)するための端子が用意される。41,42は入力電圧が5Vの製品で、43,44は3.3Vの製品

SPI接続にてマイコンとは通信をする。

設定コードと電圧の関係は、データシートにみることができ、

ここではユニポーラの動作を確認する。
10進数で8192(2進数で1000 0000 0000 00)が基準電圧の半分の出力で、16383(2進数で1111 1111 1111 11)が最大となる。この点を理解して、コードを送り込めばよいことになる。

データシートのピン配を見ながら接続をする。
CS        D10 (CS:Chip-Select Inputのこと。LOWの時有効)
SCLK    D13 (クロック)
MISO    D12 (MISO)今回は使わない
DIN    D11 (MOSI) 

Master out Slave in でArduinoはマスタなので、D11をMAX5142のDINに接続。D12は今回データを受け取らないので未接続とした。
CLRは、非同期にLOWの時、出力をゼロにする。デジタルピンに配線してプログラムからゼロにできるようにしたいのであれば接続するが、今回は使っていない。10kΩの抵抗で5Vに接続。
DIP化には、MSOP(10ピン 0.5mmピッチ)https://akizukidenshi.com/catalog/g/gP-06863/を使った。
5142の電源供給には、電源バイパス及びグランド管理 としてピン10(GND)と9(VDD)の間にパスコン0.1uFを挿入。

基準電圧(REF)の端子には、このMAX5142のテストのために別途ISL21080CIH315Z-TK
図37の回路どおりのコンデンサを周辺につけてノイズ低減を実施(写真のひだり3つ)。

出力電圧をarudinoで読んでもよいが、マイナス側を入力できないので今回はテスタでモニタ。

単純なスケッチで、スケッチの赤字変数にて出力電圧を変更するもの。

//MAX5142 Vcc 5V (max5144 vcc3.3V) 14bit DAC
//https://datasheets.maximintegrated.com/jp/ds/MAX5141-MAX5144_jp.pdf
//SPI
//SCK frequency can be selected from 1/2,1/4,1/8,1/16,1/32,1/64 and 1/128.
//MPU clock is 16MHz then SCK 8MHz is max speed.

#include <SPI.h>

SPISettings MAX5142Setting (8000000, MSBFIRST, SPI_MODE0);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200); 
  SPI.begin();//SPI start
  delay(300);
}

void loop() {
  // put your main code here, to run repeatedly:

  //set SS(D10) pin LOW to select MAX5142
  digitalWrite(SS,LOW);

  int DataInt=10;//16383; //
  Serial.println(DataInt,BIN);
  DataInt= DataInt <<2;
  Serial.println(DataInt,BIN);
  SPI.transfer (highByte (DataInt));  
  SPI.transfer (lowByte (DataInt));
  delay(1000);
  
  //set SS(D10) pin HIGH to close MAX5142
  digitalWrite(SS,HIGH);
delay(1000);
}

SPI_MODE0:データシートにクロックと読み込みのタイミングが記載されていて、
ゼロレベルからクロックがハイになる最初のタイミングでデータを読むのがモードゼロ。
他はSPI、MODEなんかで調べると出てくる。




コメント

このブログの人気の投稿

Attiny85とAQM0802A(LCD)のI2C接続

ILI9341 240X320 Arduino

Attiny85 FuseRest