「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



ようやくプログラムが組みあがってきたのと、動かす
ためのボードもとりあえず出来たことだし、ブレッド
ボードで動かしてみようかな…という目論見。


例の秋月arduinoボードにプログラムを流し込み、
MCP4922とブレッドボード上で繋いで、オシロで波形
を眺めてみる。こんな感じ。


とりあえずポストフィルターは無し。MCP4922の出力
をそのままオシロで読み取ってみる。


…いくつかバグがあり、しばらく変な波形ばかり出て
きたり、波形の変更コマンドが効かなかったりと散々。
チョイチョイプログラムを直してみて、ようやくsin波
はまともに出てきた。100Hzでこんな具合。



スペクトルを眺めてみると…


100Hzのところにピンと立った信号。うん。good。
ノイズは、ほぼ-50db以下のモノばかり。ただ、
200Hzのところとかに定常的なノイズが載ってる感。
これはLPFでは消えないかも知れん…。

全域にわたって-60db以下のノイズ(定常的でない)が
載っているんだけど、これは消せなさそう。-60dbって
いうと1000倍くらいの違いってことだから、D/A変換IC
の12ビット出力の精度にはちょっと足りてないか…。

まぁ、この程度の波形が得られれば、FFTライブラリの
機能確認用の道具として当面の必要は確保できた。
sin波、ノコギリ波、逆ノコギリ波は期待通りに出て
いるんだけど、矩形波と三角波はまだバグっているので
そこだけはちゃんと直しておかないと。


sin波の周波数をさらに1KHz、10KHz…と上げていくと
ノイズがだんだん大きくなるんだけど、サンプリング
周波数が80KHz程度だから仕方ないね…。
ためしに最大周波数20000Hzを出力させてみると
カクカクの波形になっちゃう。なにしろ、1周期で
約4サンプルしか無い計算だから…
LPFでどのくらいカクカクが削れるか…


ちなみにUIはPC上のシリアル端末からこんな感じで。


19200bpsの通信。PCからの一方的な送信のみで、
マイコン側からは何の音沙汰も無いので、ターミナル
ソフト側でローカルエコー掛けておかないとコマンド
が見えない状態。

数値+コマンドという形で指示するんだけど、例えば
100Hzに変更する場合は「1」「0」「0」「f」と
入力すると、この最後の「f」がコマンド兼デリミタと
して解釈されるって寸法。
波形を変える場合も波形番号+「w」で選択可能。
「0」「w」ならsin波、「1」「w」なら矩形波…
という具合。「r」でシステムリセット。大文字小文字
はどちらでもok。単純な機能ばかりが実装されてる状態。

一応、桁数以上の入力が有ったり、数値入力が未済だったり、
存在しないコマンドが入っても最低限の補正処理は掛けて
あるので、キーボードの文字をすこしくらい打ち間違え
ても処理内容が破綻することはないはず。
まぁ、アセンブラでこれ以上やると手間ばかり掛かって
得るものが少ないのでここまで。

この後の機能追加要件としては、出力振幅を制御する
アッテネーターやLPF、それを搭載した専用ボード、
あとは使い勝手の良いPC側専用ソフトってあたりかな。
すんさんが以前作られたソフトは便利そう。色んな機能
が入ってて。

アッテネーターもできればPC側のソフトで制御できる
といいんだけど、ちょっとむずかしいな…。簡単なのは
可変抵抗で分圧して、それをオペアンプでフォロって
やること。
このアッテネータ用オペアンプやLPF用オペアンプの
電源をどうするか…


arduino互換ボードでも動くように出来てるので、
D/A回路などなどをシールドの形にしてしまえば
使うときに便利かも。丸ごとシールドに載せる方向
で考えたいな。



コメント ( 0 )