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

Arduinoで作るオシロ、ACモードを追加(回路、ソフト解説)

◆まえがき
前回の記事で回路の検討が終わったので、今回はいよいよソフトを修正して完成形に持っていきます。

まずは全体写真から、

▼ArduinoとOLEDを使ったオシロ
全体写真と各部説明
ブレッドボードで動かすスタイルは変わりません。表示は1.3インチのモノクロOLED(SH1106)です。 
▼回路図 (図をクリックで別窓に拡大表示)
2022/07/06版



ACモード付Arduinoオシロの回路図V04

 
old virsion below 

 
OLEDオシロの回路図(ACレンジ追加)


ブレッドボードの実装状態に合わせて書き直しましたが、中身は以前の記事とほとんど同じです。

◆プログラム (program code can be downloaded from following link)
20200728_OLEDoscilloScopeSh1106_V300E(JIS).txt
20200728_OLEDoscilloScopeSh1106_V300E(utf8)

海外の読者用にutf8 エンコードのファイルも置いておきます。どちらか使い易い方をお使いください。なお、ファイルの拡張子は.ino に要変更。(both the same except character code)

コンパイルするとArduino IDE から赤字で、
スケッチが使用できるメモリが少なくなっています。動作が不安定になる可能性があります。」というワーニングが出ますが、とりあえず大丈夫です。

プログラムはOLEDのSH1106用に書かれていますが、コメントアウトを変更することで、SD1306でも動きます(動作確認済)。SH1306の状態ではコンパイラからのワーニングは出ませんが、メモリーがギリギリである状況は変わりません。

◆機能説明
1) DCモード
DCモード
これは従来からあったDCモードの画面で、写真のようにマイナス側の波形を表示することが出来ませんでした。なお、画面からモードが判るようにするために、左上に「DC」という表示を追加しています。

DCモードでゼロボルトの位置は波形表示エリアの下端になります。(緑色矢印)

ACモード
ACモード
これが今回追加した画面で、スライドスイッチをACモードに切り替えるとこの画面に切り替わります。垂直軸の中心がゼロになり正負の波形が見えるようになります。

左上の表示が「AC」に変わっています。ACモードでは電圧の実効値を表示しているため、画面右上の電圧表示の前に rm と表示しています (rmsの略)。

2) Auto50V、5Vを廃止
これまでは、50Vレンジの外側に自動スケール機能がある Auto50Vと Auto5Vレンジがありました。しかし、AC測定でこの機能を実装するのは面倒だったこと。あと、レンジを切り替えていくと突然波形が大きくなって直感的な操作の妨げになっていたこと。これらの問題を回避するため、Autoスケール機能は廃止しました。まあ、ちゃんと直すのが面倒になったということです。

3) ワンタッチゼロ調整機能を追加
ACレンジでは画面の中央がゼロボルトになりますが、いろいろな理由(特に電源電圧の違い)で波形の中心がゼロから外れている場合があります。これを簡単に補正する機能を用意しました。つまりワンタッチのゼロ調機能です。

・波形のオフセットがある状態
オフセット
入力をGNDにショートさせているのにも関わらず波形がぴったりゼロになっていません。
こういう時は、「HOLD」を押して波形の表示を中断し、その状態から「SELECT」ボタンを押すと自動でゼロ調が行われます。

オフセット補正
zero(SELECTボタン)を押すとゼロ調が行われ波形がぴったりゼロの位置に合うようになります。ゼロ調実行後は波形表示モードに戻るので、オセット調整の結果をすぐに確認することが出来ます。なお、内部処理の都合でゼロ調は5V以下と5V以上の二つに別れています。つまりどのレンジでもオフセットが合っている状態にするには感度を変えて2回ゼロ調を行う必要があります。

なお、ゼロ調の結果はEEPROMに保存されるのので、次回電源を入れた時は最後に行った調整が反映されます。

4) 水平レンジの拡大
50usレンジ
これまでは水平軸の最高速度は200μsでしたが、今回のアップデートで100μs と50μs レンジを追加しました。これにより、従来は高い周波数の波形が見づらかったのを改善しています。写真は20khzの波形を表示しています。なお、追加した100と50μsレンジは表示する時にi横軸を拡大しているだけなので、情報量としては200μsのままです。また表示のジッタが多くなります。アナログオシロには横軸を拡大するMAG10Xボタンがありましたが、あれと同じ感じです。

5) DVMにAC測定機能を追加
ACレンジを追加したので、デジタル電圧計機能にもAC測定モードを追加しました。

・DC レンジ
デジボルモード(DC)
これは従来通り。

・AC レンジ
デジボルモード(AC)
入力の切り替えスイッチをAC にするとこの画面になります。内容は写真のように、交流電圧の実効値(rms) とP-P電圧を表示します。

なお、DVMモードに入るには下記の操作を行います。DC/ACは入力モードスイッチで切り替え
リセット時にUPボタンを押しっぱなし  : 5Vレンジ
リセット時にDOWNボタンを押しっぱなし:50Vレンジ

リセット時にSELECTボタンを押しっぱなしにするとバッテリー電圧測定モードが起動します。これはペン型オシロ用の機能で、ソフトの互換性維持のために残しているものなので気にしないでください。

◆仕様
入力モード:DC+, AC (DCの負電圧は観察不能)
垂直感度:0.2 - 50V (1-2-5 step)
水平感度:50us - 200ms (1-2-5 step)
サンプリング周期:8us max (125kHz)
トリガ  :50% p-p 自動、スロープ指定可能
その他:波形周波数表示、波形デューティ比表示、ゼロオフセットキャンセル機能、設定状態リジューム機能

◆動画


◆まとめ
Arduino UNO や NANOで出来るオシロとしては限界に近い物が出来たと思います。今回のバージョンではAC測定が可能になったので、トランスの出力波形やオーディオアンプの波形など観察可能範囲が広がりました。

DC電圧のマイナス側の測定が出来れば万全なのですが、そうするためには回路が複雑になり過ぎます。3000円くらい出してDSO-SHELLあたりを買った方が良いと思います。

この回路は写真のように小さなブレッドボード(400穴)に実装しています。これを作るに当たっては多少ノウハウ的な話があります。ということで、そのあたりの話は実装編でもう一度解説したいと思います。

一連のオシロ作りの話は、以下のカテゴリにまとめています。興味のある方はご覧ください。
 ペン型オシロスコープのカテゴリ

関連記事

コメントの投稿

管理者にだけ表示を許可する

V300

Добрый день!
Спасибо за Вашу разработку, это превосходно!
К сожалению, v300 работает как-то не так.
Если взять версию 1106 то через минуту экран "замерзает" и программа "висит". В версии 1306 вообще не работает. Подскажите пожалуйста, что я делаю не так?

Good afternoon!
Thanks for your development, it's great!
Unfortunately, v300 doesn't work that way.
If you take version 1106, then after a minute the screen "freezes" and the program "hangs". Doesn't work at all in version 1306. Please tell me what am I doing wrong?

こんにちは!
あなたの開発に感謝します、それは素晴らしいです!
残念ながら、v300はそのようには機能しません。
バージョン1106を使用すると、1分後に画面が「フリーズ」し、プログラムが「ハング」します。バージョン1306ではまったく機能しません。何が悪いのか教えてください。

re:V300

Karlさん、試して頂いてありがとうございます。

この記事からプログラムをダウンロードして先ほど動かしてみました。SSD1306とSH1106のどちらも問題無く動きました。30分以上動かしていますが問題ありません。

ソフトのバージョンの問題があるのかも知れません。私が使っているバージョンは以下の通りです。
Arduino IDE 1.8.13
Adafruit_GFX library 1.3.6
Adafruit_SSD1306.h:Version 1.2 (November 2018)

SSD1306が動かないのは、もしかしたらI2Cアドレスが違っているのかも知れません。

1分くらいでフリーズするのはメモリーが足らなくなっている可能性がありますが、すみません、これ以上はこちらでは判らないです。

V300

Большое спасибо за Ваш ответ. Буду пробовать. Надеюсь всё получится :)
Thank you very much for your response. I will try. I hope everything works out :)
ご回答ありがとうございます。試してみます。私はすべてがうまくいくことを願っています:)

thanks for the project!

Everything works great! Sorry, I can not upload a photo. The case was taken from the power bank for one 18650.

re:thanks for the project!

It's my pleasure. thank you for the information.

No title

今さらながらですが、本ページ中の回路図において、
R10に接続しているダイオードの向きが逆に思われます。
訂正よろしくお願いします。

コメンテーターさん、ご指摘ありがとうございます

確かに間違ってました。

あとで修正しておきます。

回路図のR4/R5が逆?

今更ですが、回路図のR4とR5の値が逆のようです。私のサイトへの指摘で判明しました。
A2に820k、A3に82kが正しいですね。
他のサイトでもACモードで中点がおかしいという質問が出てます。
多くの人に試してもらっている証拠ですね。

re:回路図のR4/R5が逆?

連絡ありがとうございます、確かにご指摘の通りです。

プログラムでピンアサインしているところで、番号を間違えちゃってました。

#define R_820k 16  // (16=A2ピン) 820k ohm for AC low range
#define R_82k 17 // (17=A3ピン) 82k omm for AC Hi range

上記の16と17を入れ替えれば良いのですが、いまさらコードを改版するのも面倒だし、この状態のファームを焼いたCPUを販売している人もいるかも?なので、回路図を修正するかコメント入れとこうかと思います。
カレンダー
03 | 2024/04 | 05
- 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コード