電子工作

グラフィックLCD(GLCD)を使ってオシロスコープ(oscilloscope)を作成しました[ATmega328P:電子工作、動作編]

ノリユキ
ノリユキ
いらっしゃーい。電気電子のノリユキです。いつもこのブログをみていただきありがとうございます。

前回まではGLCDへのBMP画像を出力させたり、円,直線を出力させる記事(どちらかというと動画)を書いてきました。

グラフィックLCD(GLCD)に直線,円を描画してみました[ATmega328P:電子工作、動作編] 前回はGLCDにビットマップ画像を出力しました。 https://noriyukiblog.com/2020/03/14/...
グラフィックLCD(GLCD)にbmp画像を表示してみました[ATmega328P:電子工作、動作編] 皆様、お久ぶりです。投稿に時間がかかってしまい申し訳ございません。 グラフィックLCD(GLCD)のプログラムにてこずって...

今回はオシロスコープを作成しました!

お母ちゃん
お母ちゃん
オシロスコープって何?
ノリユキ
ノリユキ
まずはそこから説明しますか!

それでは、いってみましょう。

オシロスコープとは?

オシロスコープは電気信号を波形という形でみるための装置のことです。

中学,高校時代に下図のような装置をみたことがありませんか?これがオシロスコープです。

オシロスコープを使うことで波形を確認することができます。

その結果、振幅の大きさだけでなく、波形のon,off時間などを確認することができるようになります。

ノリユキオシロスコープのスペック

こんな感じのスペックになりました。

①0~5Vまでの電圧を測定可能

②サンプリング周期は10ms,25ms,50msの3通り

③サンプリング周期の切り替えはロータリーDIPスイッチ

④1チャネル動作

お母ちゃん
お母ちゃん
なんかわからない単語がいくつかあるんだけど。。
ノリユキ
ノリユキ
それも含めて詳細を説明するよ

①0~5Vまでの電圧を測定可能

マイコンの電圧が0~5.5Vであるため、測定電圧の範囲を0~5Vにしました。

②サンプリング周期は10ms,25ms,50msの3通り

サンプリング周期について下図を用いて説明します。

図はGLCDの拡大図です。

横軸の赤枠部分について、左側のドットが表示されてから右側のドットが表示されるまでの速度のことをサンプリング周期といいます。

本当はこのサンプリング周期をより短くしたかったのですが、私の能力では無理でした。

お母ちゃん
お母ちゃん
なんかあったの?
ノリユキ
ノリユキ
ちょっと話が長くなるけど、、

このオシロスコープの測定プログラムは、

①タイマーでサンプリング周期を作る

②サンプル周期になったら割り込み関数の発生

③AD変換

④データ取得

こんな感じでやりました。この測定プログラムより、

“サンプリング周期”=”①+②+③+④にかかる時間の合計”ということになります。

②、③、④は0sであることが理想です、しかし現実には0sではありません。。

それではどこに大きな問題があったかというとAD変換です。②、③、④の中でAD変換が一番時間を要します。

サンプリング周期(①)をさらに少なくすると、AD変換にかかる時間を無視できなくなりました。

具体的にはサンプリング周期=1msにしたら、ad変換にかかる時間を無視できなくなり、その結果、正確なグラフが描けなくなりました。

マイコンの周波数1MHzではこれくらいが限界のようです。

このような理由からサンプリング周期を10ms,25ms,50msにしました。

ノリユキオシロスコープではサンプルリング周期(①)を大きくすることで、AD変換③にかかる時間を無視してもGLCDへの表示に影響がないようにしました。

③サンプリング周期の切り替えはロータリーDIPスイッチ

ロータリDIPスイッチは下図のようなものです。

ダイヤル部分をまわすことでサンプリング周期を切り替えられるようにプログラムを組みました。

④1チャネル動作

測定は1つだけということです。

2チャネルとなると、2つ測定できるようになります。

ノリユキ
ノリユキ
2チャネルにするとAD変換にさらに時間を要するんです。。

そうなるとただでさえ遅いサンプリング周期をさらに遅くする必要があります。

今回は波形が見えれば十分なので、1チャネルにしています。

最後にオシロスコープの表示について説明させてください。下図に示します。

y軸の補助線間(破線)の間隔は1.25V/divになります。

x軸の補助線間(破線)の間隔は,サンプリング周波数が

10msときは0.5s/div。25msのときは1.25s/div。50msのときは2.5s/divとなります。

ノリユキオシロスコープのスペックの説明は以上です。

オシロスコープの回路

回路図を下図に示します。左図がマイコン-GLCD間、右図がマイコン-ロータリDIPスイッチ間の接続になります。

GLCD-マイコン間の接続は前回、前々回の記事と同じです。

波形を測定するための端子はPC0(マイコン側)、もう一方はGNDにしました。

ロータリDIPスイッチとマイコン間の接続は、PIN1をPB5(マイコン側)、PIN2をPB6(マイコン側)、PINCをGNDに接続します。

それ以外のロータリDIPスイッチのPIN(4,8)は使用しません。

以上です。

実験

オシロスコープで検出するための信号は別のマイコンで作りました。その信号はこのような波形です。

highが700ms、lowが500msの波形です。これをオシロスコープで検出します。

それでは動画をみてください。動画時間は4分30秒くらいです。

いかがでしたか!?ノリユキオシロスコープで上記波形を検出できていることが確認できました!

サンプリング周期を変えることでグラフも追従して変化していることがわかります。

次回は、、、

GLCD関係の記事はいったんおわりになります。

お母ちゃん
お母ちゃん
ここまでやったんだからゲームは作らないの?
ノリユキ
ノリユキ
乱数という分野の勉強が発生するので、あとにします。。

次回はI2Cになります。

本日はここまでです。毎度ありがとうございます。