AVRオシロスコープ
AVRでオシロスコープの自作,その1
グラフィックLCDに何か書かせるなら,やっぱり真似してオシロスコープかな.ということで,仕事が終わってから,ATmega328Pでオシロスコープを製作中. 某所より販売されている物とは違って2チャンネルにする予定.しかし・・・
AVRのA/Dで信号入力するつもりなので,頑張っても帯域は数10kHzで しょうか.あと2-3日でハードはできそうです.ソフトは1ヶ月くらいかかり そうですけど.
普通に買うなら↓
【 エスコ:ESCO便利カタログ掲載商品 】::エスコ:ESCO:オシロスコープ
AVRでオシロスコープの自作,その2
オシロスコープのハードは完成しました.LCDに秋月電子通商様のサンプルプログラムを表示できました.
左下の2個の入力のインピーダンスは1MΩ,1/10に分圧した後,
オペアンプでゲインを1,10,100倍に可変できます.この信号は2.5V のオフセットを加えて,AVRのアナログ入力端子に接続されています.
モードやレンジ切り替え用に4個スイッチをつけました.
あとはソフト,教材用に公開できるようにオリジナルで作ってみます.
自分しか分からない回路図はこちら↓
入力部分の回路図↓
AVRでオシロスコープの自作,その3
ネットで公開されていたフォントをお借りして,グラフィック画面の出力方法を確認.文字がでました.
--追記--
画面片側だけを使って,以前作ったキャラクタLCDのライブラリを改変して文字列 表示と数値->文字列変換表示までできました.
左右画面を別々のチップで担当してるので,両者をまたがった文字列の表示をさ せるには一工夫必要です.オシロの場合は左右どちらかに文字列を表示させて しまえばいいので,別に問題はないですが,境目なく表示できるようにしておくと 後々便利かも.
あと,pset,presetなど,ドット表示ができれば,チカチカと画面更新し ながらの表示なら割と簡単にできそうです.
AVRでオシロスコープの自作,その4
GLCDのデータ読み出しが上手くいかず,画面用のデータ領域を作って, そこに画面を作ってしまった後,書き出すようにしました.目盛をうって,正弦波を書き出そうとしても,なぜかゴミがでる.
何かバグがあって想定外のところに読み書きしてゴミを出したり暴走させたりして いるもよう...
AVRでオシロスコープの自作,その5
電圧軸も時間軸もレベルも固定で2チャンネルの波形表示だけなんとなくできた.点じゃなく線で書かないと,スケールが合ってない時に波形に見えない.しかも, スイッチ入力と文字列出力を同時にやろうとするとなぜか画面がぐちゃぐちゃに なる.まだまだ先は長い感じ.
(デジカメが手元にないので写真なし)
AVRでオシロスコープの自作,その6
昨日の問題は画面の書き出し命令の信号の手順にバグがあったのとメモリ不足の 問題.メモリオーバーに関してはコンパイラがエラーを出してくれないみたいです.
取りあえず,波形出力はできました.(レンジや時間軸固定で画面表示は適当なイ メージ)新たな問題発覚,波形がドットの連続では,信号の変化が大きい時にドット 間が大きく,液晶のレスポンスも遅いので波形に見えません.線で結ぶ必要があり ます.
でたらめな信号の与え方ですが,入力部分を手で触れてみたところ↓
--追記--
今日は午前中にちょっと時間がとれたので,ドット間の直線補間を追加しました.
前はこのくらい大きな信号を入れるとドットが散らばってしまっていたのですが, ちゃんと波形に見えます.割と簡単にかけたのでタイムロスも少ないといいですが.
AVRでオシロスコープの自作,その7
オシロスコープにX-Yモードは必須!ということで, 作りました↓ただしまだ時間軸や電圧軸の絶対値はテキトウ.
A/Dの最適化やオペアンプの選定,0調整を作ってからの作業です.
AVRでオシロスコープの自作,その8
ケーブル作りました.机の奥に眠ってたケーブルや拾ったケーブル3種類を半分に切ってつなぎ合わせ, 先日細工したドライヤーで処理↓
2本のケーブルができました↓
AVRでオシロスコープの自作,その9
先日作った発振回路の波形を表示させてみました.正弦波はこんな感じ↓
パルス波形も↓
RC直列回路に正弦波を加えて位相差を作りリサージュ波形を出力↓
自作の発振器とオシロスコープで,歪んでますが丸が描けて自己満足してます.
AVRでオシロスコープの自作,その10
試作完成あれこれやってたらきりがないので,いちおう完成とします.
帯域約10KHz,2チャンネルで位相差を見ることができるので, 学校の低周波回路の学習教材用としては十分な性能です.
時間軸は,100us/div(1チャンネル時のみ),200us,500us,
1ms,5ms,10ms,X-Y電圧軸は,0.1V, 0.5V, 1V
の3通り+約1/10と10倍のプリアンプ.
ボタンは4つ,操作割り当ては,CH1とCH2の電圧レンジ調整,時間軸調整,
ホールド.チャンネルボタンを長押しすると1<>2チャンネルモードの切り替え.
の簡単操作としました.
AVRの入力が2.5V±2.5V,速度重視でA/Dを8ビットに丸めているので その結果,電圧レンジの幅を狭めることになりました.
操作している動画はこちら.AVR oscilloscope
ESP32 Wifi Bluetooth開発ボード |
Arduino Nano Every |
Raspberry Pi pico |
FPGA XILINX Artix-7 |