Lesson 04
【DAC機能確認】
こにんちは、管理人のomoroyaです。
「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」で遊ぶ入門編2。
入門編1と同じく、電子部品と組み合わせて遊ぶ前に・・・
「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」に搭載された新機能を確認していきます。
本Lessonで確認するのは「DAC機能について」。
「Arduino UNO R4」に追加された機能になります。
「Arduino UNO R3」には「DAC機能」はなかったためPWL(パルス変調)を使って模擬的にアナログ出力。
■PWL(パルス変調)については下記記事にて紹介
「Arduino UNO R4」では「DAC機能」を使うことにより、所望のアナログ電圧を直接出力することが可能となっています。
Arduino入門編2では主に「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」を使った解説をしていきます。
R3と異なり、まだ安価な互換品が出ていません(2024年7月現在)ので正規品で遊んでいきます。
センサーは各種センサーがそろったキットがおすすめ。
はじめに
本Lessonで機能確認のため、使用するものは「Arduino UNO R4 Minima」のみ。
簡単に遊べます。
Lesson 04 目標
本Lessonの目標は以下です。
2.DAC機能を動かすスケッチを描く
3.DAC出力をシリアルプロッタに表示して遊ぶ
いつものように、遊ぶことが重要です。
準備
ではLessonの準備に取り掛かりましょう。
使用するものは「Arduino UNO R4 Minima」のみ。
必要なもの
- USB接続用のPC(IDE統合環境がインストールされたPC)
→管理人が勝手に比較したBTOメーカーを紹介しています。 - Arduino UNO R4(Minima)
- PCとUNOを接続するUSBケーブル
- M-M Jumper wire(UNOと部品をつなぐための配線)
- M-F Jumper wire(UNOと部品をつなぐための配線)
- M-F M-M F-F セット Jumper wire(UNOと部品をつなぐための配線)
※ジャンパワイヤーは「M-M」「M-F」を必要に応じて使い分けてください。
本Lessonでは、UNO本体のみですが電子工作に必要なものはそろえておきましょう!!
Jumper wire、抵抗は今後も頻繁に利用します。
Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。
短めが使いやすい場合も。
抵抗も単品で揃えるよりはセットをおすすめします。
抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!
という方は、「電子工作基本部品セット」が使い勝手が良い。
使用部品説明
使用するものは「Arduino UNO R4 Minima」のみのため割愛。
DAC機能について
「DAC」は「Arduino UNO R4」に追加された新機能となります。
アナログピンの0番が「DAC」に割り当てられています。
・デフォルト:8bit
・最大 :12bit
■設定方法
例:10bitに設定
analogWriteResolution(10);
実践 回路作成とコード作成
最初に回路図を確認してください。
次に、回路図に合わせて部品を接続します。
最後にコードを書いて、「DAC機能」を確認していきましょう。
Arduino Minimaのピン配置を確認したい方は入門編2のLesson01を参照してください。
回路図
Arduinoの使用ピンは以下。
A0(DAC)からアナログ電圧を出し、A5(ADC)でアナログ電圧をデジタルに変換して出力します。
ちなみに、A0でアナログ電圧を出し、A0でアナログ電圧をデジタルに変換するのもOK!
その場合は、Jumper wireが不要でArduino Minimaだけで成立します。
- DAC:A0
- ADC:A5
- 5V、GND
回路図がこちら。
こちらがブレッドボード図。
回路図は「fritzing」を利用しています。
「fritzing」の使い方は下記を参照してください。
接続
下図に示すように、用意した部品を使用して接続しましょう。
使用するものは「Arduino UNO R4 Minima」のみ。
使用するポートは
- DAC:A0
- ADC:A5
- 5V、GND
穴に挿入しづらいときは、ラジオペンチなどを使用してください。
コードの書き込み
接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。
コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。
コマンド説明
特筆するコマンドはありませんが、列挙しておきます。
コマンド | 内容 |
---|---|
analogWriteResolution(bits) | analogWrite()の分解能を指定。 bits:8 ~ 12ビット 指定しない場合は、デフォルト8bit(0~255) |
analogReadResolution(bits) | analogRead()が返すサイズ(ビット数)を指定。 bits:8 ~ 14ビット(Arduino UNO R3:12bit) 指定しない場合は、デフォルト10bit(0~255) |
サンプルコード1
まずは、DACから出力される最大電圧を確認します。
仕様は5.0Vですが、まあ5.0Vピッタリということはありませんので・・・。
//入門編2 Lesson 04 サンプルスケッチ1 //DAC機能確認 //https://omoroya.com/ void setup(){ analogWriteResolution(10); //DAC分解能を10bit(0~1023)に設定 } void loop(){ int value; analogWrite(A0,1023); //DACの1023の値をA0に出力 delayMicroseconds(30); //変換時間待機 }
動作確認1
では、さっそく動作を確認していきます。
テスタでArduinoの電圧を確認。
管理人の環境では、DACから出力されるmax電圧は4.73Vであることがわかりました。
ここで測定した「4.73V」をスケッチに設定することで精度をあげることが可能。
サンプルコード2
サンプルコード2では10bitに設定したDACの電圧値をA5ピンのアナログピンで読み取ります。
読み取った値は、電圧に変換してシリアルモニタ、シリアルプロッタで確認。
//入門編2 Lesson 04 サンプルスケッチ2 //DAC機能確認 //https://omoroya.com/ const int VOL_PIN = A5; //VOL_PINにA5ピンを設定 void setup(){ Serial.begin( 9600 ); //シリアル通信のデータ転送レートを9600bpsで指定 analogWriteResolution(10); //DAC分解能を10bit(0~1023)に設定 analogReadResolution(10); //ADC出力を10bit(0~1023)に数設定 } void loop(){ int value; float volt; float cal = 4.73f; //DACの最大電圧設定(テスタなどで読み取った値) //DACの出力(0 ~ 1023) for文内の64を変えてシリアルプロッタに表示してみよう!! for(int i=0;i<1024;i+=64 ){ analogWrite(A0,i); //DACの値をA0に出力 delayMicroseconds(300); //変換時間待機 value = analogRead( VOL_PIN ); //A5ピンにDACで読み取った値を出力 volt = cal * value / 1024.0f; //読み取った値を電圧に変換 //シリアルモニタにデジタル値と電圧値を出力 Serial.print( "Value:" ); Serial.println( value ); Serial.print( "Volt:" ); Serial.println( volt ); } }
動作確認2
シリアルプロッタは500カウントまで表示させることが可能です。
サンプルコードのfor文のインクリメントを64程度に設定してあげればシリアルプロッタでも三角波を確認可能。
インクリメントの値を適当に変えて、シリアルプロッタに表示させて遊んでみてください。
オシロスコープがなくても、波形を表示させて遊ぶことが可能です!!
■シリアルプロッタに表示
for(int i=0;i<1024;i+=64 )の場合
下記の時間をmsオーダに変えて表示させても面白いかと思います。
delayMicroseconds(300); //変換時間待機
例えばdelay(100);へ変更。
まとめ
本Lessonは、以下を目標としました。
2.DAC機能を動かすスケッチを描く
3.DAC出力をシリアルプロッタに表示して遊ぶ
DAC機能があれば、Arduinno Uno R3でPWL制御で疑似的にアナログ電圧を出力していたものを直接アナログ電圧そのものを出力することが可能です。
色々と試して遊べる機能!
入門編1で使用したスケッチをDAC機能で書き換えてみて遊ぶのも1つです。
入門編2 Lesson 04 【DAC機能確認】 はここまで。
疑問点、質問などありましたら気軽にコメントください。
次回、Lesson 05は【LED Matrix機能確認2】です。
最後に
疑問点、質問などありましたら気軽にコメントください。
この電子部品の解説をしてほしい!などなどなんでもOKです。
リンク切れ、間違いなどあればコメントいただけると助かります。
Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。
Arduino入門編、Arduino入門編2で使用しているUNOはAmazonにて購入可能です。
Arduino入門編では互換品を使用。
Arduinoはオープンソース。
複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
学習用、遊び用、お試し用には安価な互換品がおすすめです。
ELEGOO UNO キット レベルアップ チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用
上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
Amazonでお得に買う方法
Amazonでお得に購入するならAmazon Mastercard、Amazonギフト券がおすすめです。
時期により異なりますが、様々なキャンペーンを実施しています。
\Amazonギフト券/
Amazonギフトカード キャンペーン
\Amazon Mastercard お申込み/
Amazon Mastercard 申し込み
いずれの場合もプライム会員である方がお得!!
\Amazon Prime 30日間の無料会員を試す/
無料会員登録
コメント