google-site-verification: google3bd66dd162ef54c7.html
FC2ブログ

ペン型オシロのファーム書き換え(V200)

Arduinoと0.96インチグラフィックOLEDで作るオシロの新しいバージョンのソフトが完成したので、ペン型オシロのプログラムを入れ替えました。

▼ICSP端子からプログラムを書き換え中
ICSPコネクタから書き換え
ICSPコネクタからプログラムを書き換えます(Arduino UNOとして使用)。このコネクタを省略しないで良かったです。ちなみにブレッドボードで作るオシロと、このペン型オシロは同じプログラムを使っています。(電池電圧測定機能はペン型オシロだけで動きます)

▼ファーム更新完了
ファーム更新完了
ちゃんと周波数とデューティ比が表示されるようになりました。

▼動作確認
オシロの校正出力
別のオシロ(テクトロ2465B)の校正端子の波形を確認。

◆まとめ
このペン型オシロのバージョンアップを行うことが最終目標だったので、これで作業は一段落です。

今回のバージョンアップで追加した周波数カウンタ機能は、波形メモリーの情報から周波数を割り出しています。この方法はソフトの追加だけで出来るので簡単に機能追加が出来ます。また、波形を見ながら周波数測定を行っているので測定ミスが起きにくい方式です。但し、専用の周波数カウンタと比べると性能的にはどうしても劣った物になってしまいます。

Arduinoで周波数を測定する場合、タイマーカウンターと割り込みを使えばもっと高い周波数まで高精度な測定が可能になります。この測定方法をペン型オシロに追加で入れることが出来ると面白そうなのですが、そもそも入力ピンが違っています。また、アナログ信号の測定用にアッテネーターを入れているので話がややこしくなります。適当な保護抵抗を介して接続する手もありますが、入力容量が増えてしまうのが気になります。そんなことで、ちゃんとした周波数カウンタ機能を追加するのはやめた方が良さそうですが、簡単に出来るならやっても良いかなと思案中です。

ブレッドボードで作る Arduino オシロスコープ(ソフト解説編)

◆まえがき
前の記事はハード解説編でしたが、今回はソフト解説編です。ただ、1年前に作ったソフトに周波数とデューティ比の表示機能を付けただけなので、簡単に説明するだけにしておきます。

◆外観
いきなりこの記事に飛んでくる人もいるでしょうから、外観写真を最初に出しておきます。
ブレッドボードサイズのArduinoオシロ
回路図などは前の記事を参照ください。

◆ソフト
20200427_OLEDosilloscope_V200E.txt (Shift-JISエンコード、拡張子を ino に変更してください)
(20200424_OLEDosilloscope_V200E は旧版につき差し替え)

このネタは YouTube に簡単な動画を上げて紹介しているのですが、国内より海外の人に良く読まれているようです。そんなことで、プログラムのコメントは全て英語に書き換えました。個人的には直感的に読み難くなったのでちょっと後悔していますが、それよりは多くの人に使ってもらった方が良いです。

冒頭に書いたように波形の周波数とデューティ比の測定機能を追加しただけですが、細かいバグフィックスおよび、時間軸の測定精度の改善(微調整)を行っています。なお、周波数とデューティ比の測定はvoid freqDuty() の関数内で行っています。

◆画面表示例
・開始画面
PMO
PMOはPoor Man's Osilloscopeで、RPはラジオペンチのイニシャルです。一応今回はバージョン2.0と呼ぶことにしました。

・オシロの画面
オシロの画面
グラフ領域の右上に、周波数とデューティ比を表示するようにしました。

・測定最高周波数
最高周波数
波形の特徴は見えなくなっていますが周波数の測定は出来ていて、デューティ比が50%程度の波形なら25kHzあたりまで測定可能でした。

・最低周波数
最低周波数、低ディユーティ
1.2Hzまで測定出来ます。

・電圧測定機能
電圧計
おまけ機能として、フルスケール5Vと50Vの電圧計が付いています。

◆まとめ
なかなか面白い物が出来たと思います。コロナウィルスの影響で外出がはばかられる状態なので、自宅での良い時間つぶしになりました。RAMの残りはほとんどありませんが、フラッシュメモリの空きはもう少しあるのでもうちょっと遊んでみても良いかな、と思います。

あと、このソフトはArduinoで作ったペン型オシロにもそのまま使えます。というか、ペン型オシロのプログラムを出発点に今回の機能追加を行っています。

最後に動画で動いているところを紹介しておきます

◆動作状態の動画

ブレッドボードで作る Arduino オシロスコープ(ハード解説編)

◆まえがき
以前Arduinoを使ったペン型オシロを作ったのですが、その開発過程でブレッドボードで機能確認を行いました。その様子は YouTube でも紹介しているのですが、その動画が意外と好評で、最終状態まで仕上げたペン型オシロの動画よりはるかに閲覧数が多くなっています。ペン型オシロの状態まで作り込むのは実装がかなりかなり大変なのですが、ブレッドボードならハードルがぐんと下がって、作れそうな気持になる人が多いからではないかと思います。

◆周波数測定機能
ともかくそんなことで、その動画へのコメントも多いのですが、その中で周波数測定機能が欲しいという希望が出てきました。確かに周波数が測定できると便利そうなので、プログラムを改造することにしました。

プログラムをいじるためにはデバッグ用のハードが必要になりますが、良い機会なのでもっとコンパクトに組むことにしました。

・先に完成写真
ブレッドボードオシロ全体
これを作ります。ブレッドボードサイズのオシロスコープです。

◆回路図
ブレッドボードで作るオシロの回路図
小さくしたいので今回は Arduino NANO で作ることにしました。回路図としては以前作った物とほとんど同じです。

・CPUとOLEDを抜いた状態 (クリックで別窓にもう少し大きな写真が開きます)
Arduino とOLEDを抜いた状態
Fritzing を使えば綺麗な実体配線図が作れるみたいですが、私はインストールしていないので写真で勘弁ください。ちなみに実体配線図は(私の頭では)回路の動きが判り難いので嫌いです。

・部品を実装した状態 (クリックで別窓にもう少し大きな写真が開きます)
ブレッドボード部
オシロのプローブをイメージして、左側に長めの丸ピンを出しておきました。ここはぐらつかないように2列4ピンのピンヘッダ挿して土台として使い、そのうち2ピンだけにはんだ付けしています。

◆動作確認
電池で動かすと便利です。
電池で駆動

・ちょっと強引ですが、
手で持ってこんな使い方、
手で持ってこんなことも出来ます。ちなみにこの写真は DSO-Shell のキャリブレーション端子に出ている 1kHz/3.1V の信号を観察している様子(のやらせ写真)です。小さくて見づらいですが、周波数とデューティレシオが画面に表示されています。

◆ここまでのまとめ
さほど複雑な回路では無いので、部品さえ揃っていれば組み上げるのにあまり時間はかからないと思います。このサイズのオシロが手軽に作れるのはちょっと嬉しいかもです。

周波数測定機能付きの最新版のプログラムは次回の記事で公開予定ですが、この記事の回路は下記の記事に出てくる旧版のプログラムでも動くので、それを使って動作チェックすることが出来ます。
0.96インチOLEDを使ったオシロ、機能確認版の製作 (Arduino)
Arduinoで作るペン型オシロ(ソフト解説編)
カレンダー
05 | 2020/06 | 07
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 - - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード