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

Arduinoで作るペン型オシロ(振り返り編)

 この記事の内容は前の記事の末尾に追記しようと思っていたのですが、ちょっとボリュームが大きくなったので、こちらにまとめることにしました。

◆性能上の問題点
 実用上はあまり支障は無いのですが、以下のような問題点というか課題があります。もし同じ物を作られる方がいて、悩まれたりすると申し訳ないので、ここに開示しておきます。

1.残留ノイズが大きい
 感度を上げて行くとノイズが目立ってきて、入力をGNDに落としても20mVくらいの残留ノイズがあります。特にオートレンジ (A 5V, A50V) では自動的に縦軸を拡大するのでノイズが目立ちます。
▼残留ノイズ
残留ノイズ
 デカップリングの強化やCPUのAVcc にインダクタを入れるなどの対策を行ったのですが、効果はあまりありませんでした。

2.200usレンジの波形歪
 最高速レンジの200μsで波形の歪(ギザギザ)が目立ちます。歪が発生する電圧は同じなので、ADCの出力で桁上がりが発生する時に滑らかに値が変化していないような気がします。なお、500μsレンジではこの問題はありません。また、CPUを交換しても状況は同じでした。
▼200usレンジでの波形歪
200us時の波形歪
 三角波の観察結果です。波形のあちこちに引っ掛かりがあります。

◆使い方のTips
1.負電圧はプローブを入れ替えて測定
 このオシロはGNDに対してプラスの電圧波形しか観察出来ません。もし負の電圧を観察したい場合は、測定端子を入れ替えて接続すればOKです。電池式なのでこんな芸当が出来ます。
 こんなことをすると、相手の回路の信号側にオシロのアース側が接続されて、ノイズ増加などの影響が出ることがあります。そんなことで、万能ではありませんが、ともかくこういう手があることを知っておくと良いでしょう。
 ちなみにアナログテスターの時代は、逆接すると針が反対向きに振れるので、おっといけない、ということで本能的にテスター棒を逆に接続してましたが、あれと同じです。

2.交流電圧測定
 このオシロにはACカップルモードが無いので、GNDをまたいだ波形の負側を見ることが出来ません。これでは特にオーディオ信号を観察したい場合に不便だと思います。

 そういう時に作っておくと便利な物を紹介します。

▼電池式DCオフセットアダプタ
電池式オフセットアダプタ

電池式オフセットアダプタ
 アルカリのボタン電池にピンヘッダとピンソケットをはんだ付けした物です(電池へのはんだ付けはいろいろ問題があるので、推奨しません)。2ピンのピンソケットを使っているのは、形状的に安定するからで、他意はありません。なお、端子間に0.1μFくらいのコンデンサを入れておきたい感じですが、面倒なので省略しています。

 ともかくこれを使うと約1.5Vのオフセットを発生させることが出来るので、

▼使い方
1.5VオフセットでAC波形測定
 オシロのGND端子に取り付けることで、約1.5VがGNDレベルになり、AC波形の観察が出来るようになります。電圧が足らなければ電池を増やすか、リチウム電池を使うと良いでしょう。

▼残留ノイズ
1.5Vの残留ノイズ
 電池の先端を入力端子に接続した状態です。正負が見えるので、シングルエンドの時よりノイズが増えてます。これが本当のノイズの波形なんでしょう。

◆まとめ
 0.96インチのOLEDグラフィックディスプレイを買ったのがきっかけで、オシロ作りまで発展してしまいました。実際にやってみないと判らなかったことが沢山あって、楽しくかつ良い経験になりました。

 さて、表示デバイスはこのままで、もっと高性能なCPUを使えば性能を上げることが出来そうです。ただ、ATmega328のようなDipのチップは無さそうなのが辛いところです。何かうまい手があれば挑戦してみたいです。
関連記事

コメントの投稿

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

No title

https://twitter.com/Hacksterio/status/1101206621357830144

Hackster.ioのtwitterで紹介されてますね。

nekosan情報ありがとうございます

英語でyoutubeに投稿したので、ライターさんの目に留まったんでしょうね。

リンクされているブログの記事読むと、箸とスプーンのケースがオシロに化けたのが受けているみたいですが、あれが100円ショップの商品だったとまでは伝わらなかったようです。

200usレンジの波形歪について

いつも楽しく拝見しております。

1.200usレンジの波形歪について

ATmega328の仕様書を見てみると

28. ADC - A/D変換器 (Analog to Digital Converter)
 最大分解能で15kSPSまでとあります。
 (A/D変換クロック周波数:200kHz)

32.8. A/D変換器特性
 をみると、MAX:1MHz のようなので
200usレンジの
クロック分周比:4 = A/D変換クロック周波 4MHz では精度が出ないのでしょうね。


2.残留ノイズについて

「AREFピンとGND間にコンデンサを接続
することにより、基準電圧は雑音耐性をより高められます。」
とあります。
(内部1.1V基準電圧がAREFピンに接続される。)
簡単なのでコンデンサを追加してみる価値があるかもしれません。


3.波形データー記録メモリ (RAMがギリギリ)

計算部分をちゃんと見てないので、全然精度が足りないかもしれませんが
ADLAR=1:左揃え選択にして
ADCH(A/D変換データ レジスタ上位)だけ使用すれば
int ではなく byte ですみます。
メモリを開けたいときに、使えないですかね?


ここのところ、電子工作から手が離れていたのですが、こちらの記事を読んで、再開してみようかなという気になりました。
なにか、お役に立てれば幸いです。

re:200usレンジの波形歪について

nochioさん、コメントありがとうございます。一人でやっているもので、こういうアドバイスは助かります。

変換速度と精度はデーターシートに記載されているので、それを超えた領域で使っておいて、波形歪がある、などと記事に書くのはメーカーさんンに失礼でした。というか、こちらの見識の無さが露呈してます。

Arefピンにコンデンサを入れる件、私もそう思ったのですが、
図28-9.A/D変換部電源接続の図で、AREFピンにコンデンサが入っていないので、よけいなことやっちゃいけないものだと思い込んでいました。
データーシートを読み返してみると、AREFにコンデンサを接続すると良い、と書いてありました。

10ビットの波形データを2バイトのメモリーに保存するのはもったいないのですが、そのダイナミックレンジを使ってソフト的にゲイン調整することで、ゲイン調整アンプを省略しているので、痛しかゆしです。
あと、データーを8ビット化するにしても、ビット操作などをやっている間に時間がどんどん過ぎてしまうし、、などと思っていたのですが、ハードの設定でその手がありましたか、いや目から鱗です。

No title

ADCの入力周波数ですが、MEGA328のADC入力回路は、データシートpdfのFigure24-8を見ると、サンプル&ホールド用の14pFコンデンサと、入力端子(ADCn)の間に、1~100kΩの抵抗が入っていると書かれています。

このCとRでLPFが構成されてしまっていて、入力周波数が絞られるんだと思います。(→最大サンプリング周波数が絞られる)
一方、最大周波数かつ最大振幅(0~5Vフルスイング)でも、15kspsなら規定どおりの精度でADCできるということだと思います。

(この入力抵抗のレンジが2桁もあって、かなり個体差大きそうに見えますが、多分、実際は10k以下のものが大半じゃないかと思います)

このオシロのレンジ切り替え方法から考えると、大振幅の場合は下の方のビットを読み捨てしつつ、小振幅の場合は下の方を利用しているという感じなので、15kspsより多少速くサンプリングしても、実質的には大きな影響は無さそうに思います。

あと、ノイズについては、Figure24-9をみると、AVccには100uFと10uHのLCフィルタを使うといいと書かれているので、10uHのインダクタを足すと改善される可能性はあるかもしれません。

Arduinoのデフォルトのまま(参照電圧にAVccを指定している)の場合は、このLCフィルタだけで、(Aref側はオープンでも)大丈夫かと思います。

AVcc、Aref周りの内部ブロックの構成を眺めると、ArduinoはデフォルトでAVccの5V参照となっており、その場合、VrefとAVccは内部で直結なので、Vrefに0.1uFのパスコンをつける必要は無いようです。
(現時点の回路図を眺めると、AVcc側にすでに0.1uFが付いてるいるようなので、Vrefに足しても効果は変わらないかなと思います)

re:nekosanさん、

アドバイスありがとうございます。

サンプルホールド回路がローパスフィルタの役目をするので、極端に高い周波数成分は通らなかったですね。このオシロではLPFを省略しているのが気になっていたのですが、これでちょっと安心できます。

AVccへLCフィルタを入れる話ですが、実はLの値を10から260uHくらいまでいろいろ試してみたのですが、この基板では効果はありませんでした。
ちなみに、現在の基板には最後に試した260uHが入ったままになっているのですが、効果がほとんど無かったので回路図では省略しています。

Vrefは内部の1.1Vを使っている(ADCのフルスケールは1.1Vで使って、入力のアッテネーターで5V/50V入力に切り替え)ので、Vrefのピンに0.1uFを入れるのは効果があるかも知れません。

このあたりはさったと試せばいいのですが、ちょっと時間が取れなくて延び延びにになっています。あと、同時にGNDのリターン電流のパスも見直そうかと思ってます。

ちなみに、OLEDはかなり電源ラインにノイズを撒き散らしていたので、電源端子に47uFのタンタルコンを直結で追加しました。
見づらいですが、下記の写真で青く見える部品です。
https://blog-imgs-124-origin.fc2.com/r/a/d/radiopench/20190227IMG_8434.jpg
これで気持ち(20%くらい?)、ノイズが減りました。

ADCの早いCPU

つつじが丘の大泉です。

「もっと高性能なCPUを使えば性能を上げることが出来そうです」とのご希望に叶うマイコンがあります。

PIC32MX110F016B-I/SP
http://akizukidenshi.com/catalog/g/gI-05849/
PIC32MXはDIPが多くあってアマチュアにはフレンドリーですね。
10ビットで「Up to 1 Msps conversion speed」です。
値段も180円(秋月)ですから、ATMEGA328P-PUとあまり変わりません。

re:ADCの早いCPU

大泉さん、今晩は。

高性能なCPUとなると、AVR系の物をイメージしていたのですが、PICですか。仕様を見てみると確かにおっしゃる通りですね。Flashメモリーも大きな物があるし、、

いやこれ、悪魔のささやきです。

Arduinoで作るペン型オシロ

掲載記事に興味を持って製作着手しましたが以下について教えて戴きたく連絡した次第です。
1.DC/DCコンは101を使用それていますが秋月で廃版から103を入手しました。CEピンはマイコン24ピンに接続されていますが24ピンはDC/DCコンに未接続でVinに接続でよいと思われますが、okでしょうか
2.ソフトがラズパイをいじっていたためか掲載されているソフトの他にssd1206のドラィバーソフトのインストールは必要はないのでしょうか

re:Arduinoで作るペン型オシロ

この記事を読んでいただいてありがとうございます。
1項:
おっしゃる通りです。但し24ピンを使って電池電圧の測定をやっているのでその機能が使えなくなります。

2項:
ご質問の意味が判らないのですが、#includeで宣言しているライブラリが必要です。無ければコンパイルエラーになります。

この作品は難易度が高いので、まずはArduino UNOかNANOを使い、ブレッドボードで動く物から作ってみた方が良いです。いっぱい作例を公開しています。
カレンダー
11 | 2023/12 | 01
- - - - - 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
31 - - - - - -
プロフィール

ラジオペンチ

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

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