FrontPage

2013/12/14からのアクセス回数 8291

SPIインタフェースを持つ、12-bit DAC(デジタル・アナログ変換)MCP4922を使ってみます。 *1

MCP4922の使い方

DAコンバータ MCP4922を利用しD/A変換を行う の例題を実際にArduinoで動かしながら、動作を確認していきます(ほとんど物まねですみません)。

MCP4922のSPIインタフェースでは、12-bitのデジタル信号の他に、bit12から15 に制御用のデータを追加しています。

  • bit15: A/B
    アナログを出力するチャンネルAorBを指定します。
    • 0:チャンネルA(OUTA)
    • 1:チャンネルB(OUTB)
  • bit14: BUF
    VREFの入力でバッファ制御を行うかの指示をします。
  • 0:バッファ制御をしない
  • 1:バッファ制御をする
  • bit13: GA
    出力するゲインを選択します。
    • 0:2x (VOUT = 2 * VREF * D/4096)
    • 1:1x (VOUT = VREF * D/4096)
  • bit12: SHDN
    シャットダウン制御を行うかの指示をします。
    • 0:出力端子からは出力されず、出力端子はハイインピーダンスとなります
    • 1:出力端子からアナログ値が出力されます

Arduinoとの接続

Arduinoとの接続では、VoutAにLEDを接続して動きをみてみます。 *2

Arduino_MCP4922_bread.png

動作確認

動作確認用スケッチ

動作確認用スケッチは、上記のサイトのプログラムをそのまま使わせて頂きます。

#include "pins_arduino.h"
#include <SPI.h>

#define LDAC   9              // ラッチ動作出力ピン

void setup() {
     // 制御するピンは全て出力に設定する
     pinMode(LDAC,OUTPUT) ;
     // SPIの初期化処理を行う
     SPI.begin() ;                        // SPIを行う為の初期化
     SPI.setBitOrder(MSBFIRST) ;          // ビットオーダー
     SPI.setClockDivider(SPI_CLOCK_DIV8) ;// クロック(CLK)をシステムクロックの1/8で使用(16MHz/8)
     SPI.setDataMode(SPI_MODE0) ;         // クロック極性0(LOW) クロック位相0
}
void loop() {
     int i ;

     for (i=0 ; i < 4096 ; i=i+4) {
          digitalWrite(LDAC,HIGH) ;
          digitalWrite(SS,LOW) ;
          SPI.transfer((i >> 8)|0x30) ;     // Highバイト(0x30=OUTA/BUFなし/1x/シャットダウンなし)
          SPI.transfer(i & 0xff) ;          // Lowバイトの出力
          digitalWrite(SS,HIGH) ;
          digitalWrite(LDAC,LOW) ;      // ラッチ信号を出す
     }
}

動かしてみる

スケッチを動かしてみます。LEDが点灯し、よく見ると明かりが細かく振動しているように見えます。

Arduino_MCP4922.png

期待したとおりのノコギリ波が生成されているかオシロスコープで見てみました。

きちんとノコギリの波形がでています。これで無事MCP4922の使い方を確認できました。

arduino_signal_output.png

コメント

選択肢 投票
おもしろかった 22  
そうでもない 0  
わかりずらい 1  

皆様のご意見、ご希望をお待ちしております。

  • *2の図が間違っています。MCP4922の14番ピンに5Vが結線されていますが、正しくは13番ピンに5Vです。 -- 2017-01-09 (月) 17:26:35

(Input image string)


*1 これは、LM4F120 Launchpadを使って音声合成をするための前実験です。
*2 図は、フリーのfritzingを使用しました

添付ファイル: fileArduino_MCP4922.png 560件 [詳細] filearduino_signal_output.png 530件 [詳細] fileArduino_MCP4922_bread.png 698件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-29 (土) 14:43:20 (21h)
SmartDoc