Arduino Due 任意波形発生器:高性能・多周波・Linux/Windows対応
必要な部品と材料
| 部品 | 数量 |
|---|---|
| Arduino Due | 1 |
プロジェクト概要
一般的な説明
LinuxでもWindowsでも動作
アナログ波最大周波数:100kHz。矩形波最大周波数:42MHz。
デューティサイクル:ほぼ0%〜100%まで調整可能
構築が非常に簡単 - インストール手順を参照。
このプロジェクトは2部構成です:Arduino Dueボード本体と、PCで使用するコントローラーGUI。ただし、Arduinoボード単体でもポテンショメータ、スイッチ、LEDで使用可能です。
特別な回路は不要ですが、オプションの出力保護回路を追加すると、出力を誤って±30V程度(おそらくそれ以上)の電圧に接続してもArduinoボードを保護できます。
PCのコントローラーGUIを使うと、任意波形の描画、編集、保存、読み込み、Arduino Dueへのアップロードが可能で、USBポート経由で自動接続されます。包括的なヘルプファイルも付属。
「ステップ波形」機能により、任意の数のシャープな(1サンプル幅の)ステップを波形に簡単に生成できます。また、出力を正弦波や三角波/鋸歯波に切り替えることも可能です。
同時に矩形波も出力され、アナログ波形と同期させたり、完全に独立させたりできます。周波数または周期で制御可能。デューティサイクルはほぼ0%〜100%まで設定可能、またはパルス幅を一定に保つこともできます(周期の範囲内で)。
新しい設定はPCキーボードやプログラムのキーパッドから直接入力可能。または「MODE」を押すとスライダー調整モードになります。
アナログ波形用の「Exact Mode(高精度モード)」があり、直接デジタル合成(DDS)波形発生器に通常伴う「周波数ステップ」を回避できます。Exact Modeオン時は出力がArduinoクロック周波数の分周ではないため、それら「周波数ステップ」の間の周波数にもアクセスでき、より精密な周波数設定が可能です。
(対数)周波数スイープ機能がいずれかまたは両方の波形に搭載され、正または負のArduino出力を持つタイマー機能もあります。
仕様
アナログ波形
- 分解能:12ビット、最大4096ウェイポイント
- 周波数範囲:0.05mHz(20,000秒)〜100kHz
- サンプルレート(1kHz以上、DMA使用時):最大1.6MHz
- サンプルレート(1kHz以下):400kHz
- Exact Mode時のサンプルレート(任意周波数):400kHz
- 最小パルス幅(半波サイクル)
- 0%デューティ時:約350ナノ秒(任意周波数で)
- 0.01%デューティ時:約2.5〜25マイクロ秒
- ※1kHz超かつExact ModeまたはSyncオン時、それ以外は350ナノ秒
矩形波
- 周波数範囲:0.05mHz(20,000秒)〜42MHz
- 最小パルス幅
- 同期時:[周波数:0.05mHz〜100kHz] 0%デューティで48ナノ秒、0.01%デューティで約2.5〜25マイクロ秒
- 非同期時:[0.093mHz(10,737秒)〜42MHz]
- 1.3kHz〜42MHz:12ns(PWM使用)
- 650Hz〜1.29999kHz:24ns(PWM使用)
- 325Hz〜649.99999Hz:48ns(PWM使用)
- 163Hz〜324.99999Hz:96ns(PWM使用)
- 163Hz未満:割り込み使用。0%デューティで96ナノ秒、0.01%デューティで5マイクロ秒
インストール
PC用GUIプログラム
「ポータブル」なのでインストール不要。
- Windows:.zipファイルを任意のフォルダに展開し、.exeファイルへのショートカットを作成。注:「DueAWGController-Win64.zip」は64ビットシステム用だが、Javaが組み込まれている32ビット版の方がより確実に動作することが多い。
- Linux:DueAWGController-LinuxXX.zipをフォルダに展開し、DueAWGControllerLinuxファイルをダブルクリックするか、システムメニューに追加。
- Debian/Ubuntu等ではOpenJDK 8(Java 8)のインストールが必要な場合あり:
sudo apt-get install openjdk-8-jre(新しいバージョンは動作しない可能性あり) - USBアクセス権限が必要な場合:
sudo usermod -a -G dialout $USER
- Debian/Ubuntu等ではOpenJDK 8(Java 8)のインストールが必要な場合あり:
- Raspberry Pi等向けの「arm」ファイルも2つ同梱だが未テスト。動作報告歓迎。
Arduinoスケッチ
特別なライブラリは不要。通常のArduino IDEがPCにインストールされていれば、スケッチをDueにアップロード可能。PCがArduino Dueを認識していれば(スケッチがアップロードできていれば認識済み)、GUIプログラム起動時に自動的にArduinoを検出・接続するため、COMポート設定は不要。ただし、自動検出に失敗した場合に備え、手動COMポート選択も可能。
「Arbitrary Waves」フォルダにいくつかの波形サンプルファイルが同梱されているので、まずはそれらで動作確認を。GUIプログラムのほか、Arduinoシリアルモニタ(115200ボーレート)でも制御可能。「?」と入力でヘルプ表示。または、ポテンショメータ・スイッチ・LEDでの制御を好む場合、Arduinoスケッチ冒頭にピン接続が記載されている。
波形出力ピン接続もスケッチ冒頭に記載、または単純にArduinoピン3と7をリンクで接続(超慎重派なら47〜100Ωの低抵抗を挟む)。矩形波出力はピン7から、アナログ出力はDAC0から取り出す。
コード
重要:「Download as zip」ボタンはクリックしないでください。
ファイルをダウンロードするには「Read More」をクリックしてください。
注:「Download as zip」をクリックするとREADMEファイルしかダウンロードされません。
GitHubリポジトリ
回路図
この回路は完全に省略可能ですが、使用すると出力を誤って±25V以上の電圧に接続しても、立ち上がり/立ち下がり時間をほとんど増やさずにArduinoを保護できます。D2とD3は大電流・高速リカバリーダイオードが必要 - ショットキーダイオードは遅すぎました。ヒューズ(F1、F2)はポリヒューズで可。
製造プロセス
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- Arduino Dueで作るタッチスクリーン三目並べゲーム
- JX Wave Generator – Arduino互換DDS発振器(OLEDディスプレイ搭載)
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduinoプロジェクトのための最適化電源ソリューション
- Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
- スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
- ゲーム用カスタムArduinoジョイスティックハンドルの製作