- ベストアンサー
オシロスコープの自作
プローブからの電圧をA/Dコンバータで読み込み、それをパソコンに出力するタイプのオシロスコープの自作を試みています。 マイコンには、現在、開発環境の整っている3694FかSH7144を使用したいと思うのですが、これらのマイコンに搭載されているA/Dコンバータはスキャン速度が遅く、最大でも分解能3kHz程度のオシロしかできないと考えています。 理想的には10MHz程度までの信号を計測したいのですが、何か安価な方法は無いでしょうか。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.3 tanceです。 なかなか良いADを見つけましたね。これは、名前はクロックでは ありませんが、ENCODEという端子にクロックを与える必要が あります。 また、データシートを良く読むと解りますが、「最小変換レート」 という仕様があり、20Mspsとなっています。つまり、20Mspsより 遅くは動作しないのです。 とにかくADは一定レート(例えば40Msps)でデータを変換し 続けなければなりません。PCは欲しいときにデータを取り込む という動作になります。(いらない時はデータを捨てる) (クロックを止めると再開に時間がかかる) さて、25nsecの間に入力変化が微小だと仮定すると、これは 信号帯域が10MHzよりはるかに狭いことを意味してしまいます。 25nsecとは10MHzにとっては周期の1/4ですから、まさに0~ピーク に相当します。 1発だけ波形を取るので良いならこの出だし問題は無視して良い かもしれませんが、リアルタイムに波形を出そうとすると 避けて通れません。これはデジタルオシロの宿命です。つまり 通常、波形の横軸はサンプリング間隔よりずっと細かく計測 してやらないと波形がふらふらしてしまうのです。 トリガはソフトで処理できますが、もう少し詳しくお話ししましょう。 取ったデータを常に監視していて、特定の電圧(トリガレベル)を 超えるとか下回るときの瞬間の波形が画面左になるように表示 すれば良いのですが、真のトリガ点の前後のデータを使って 真のトリガ点の本当の時刻を内挿します。とりあえず、直線で 内挿すれば、25nsecの誤差は相当小さくなります。このようにして 求めた真のトリガ点に相当する位置に波形を表示するのです。 決して、クロック周期を単位として考えてはなりません。 ソフト的には多少面倒ですが、これは必須の処理です。本物の デジタルオシロでは精度を上げるために、タイムインターバル 計測を行って、真のトリガ点を測定しています。(高いオシロは) 最近のデジタルオシロの流れは、とにかく大量のデータを長い メモリーに取り込んで、あとでゆっくりソフトで処理して 波形を出す、という方式になってきています。それでも波形を 更新する周期はソフトに依存するので、あまり遅いと波形の 見逃しが増えてデバッグなどには使えないオシロになってしまいます。 難しいと言ってネガティブは回答になってはいけませんが、ただ やってみるという領域を越えて、使えるオシロを作るとなると やはりある程度は面倒なことを覚悟しなくてはなりません。 頑張ってください。
その他の回答 (5)
- takepon256
- ベストアンサー率41% (391/936)
No2です。 >A/D変換専用のICを、マイコンのI/Oポートに接続するのでは処理が追いつかない、ということですよね? >マイコンの処理が追いつかない、というのを具体的に知るにはどうすればいいのでしょうか? RISCチップでは1命令1クロックで実行できるとしても、ADコンバータを制御、I/O入力値読み出し、メモリへの格納を同時に1命令で・・・と言うわけには行かないですよね。 SH7144は最大動作周波数50MHz、3694Fは20MHzですので、仕様決めが難しそうです。。。 これ以上のクロックになると個人での制作は厳しいですし・・・。 反射の影響やデバイス毎の誤差が気になりますが、ボルテージフォロワかましてAD変換2つに同じアナログ値入力して半クロックずらしてサンプリングですかね。 で、ホールド回路実装して2回路分同時に読み出しとか。 >処理は一定間隔で入れ、割り込みは入れませんからタイミングはずれないと存じます。 もちろんタイミングに余裕があるときは目に見えるずれはほとんどありません。 でも複数の作業をさせたりすると、クロック単位でずれる状況は結構あるんですよね。 >ただ、メモリから読み出す、という動作は、A/D変換ICの出力を読み取る、という操作と等価な気がします。 それは制作するものの仕様もよると思います。 (1)AD変換値を常にメモリにループ格納。 (2)FPGA(or CPLD)にトリガ点を設定しておいて、トリガが発生したら指定回数の取り込みでメモリ格納をとめる。 (3)メモリ格納をとめたらCPUからメモリ読み出し、パソコンに転送。 (4)転送し終わったら(1)に戻る。 この仕様であれば読み出しと書き込みはまったく干渉しません。 一般的に販売されているディジタルオシロスコープも同様で、一気に貯めて一気に読み出す手法をとってきていますし。
お礼
なるほど・・・ とても勉強になります。 ありがとうございました。
- maccha_neko
- ベストアンサー率33% (465/1379)
取り込めるのは繰り返し波形のみになりますけど,安価に済ませるなら等価サンプリングする手でしょうか。サンプル&ホールド回路を外付けして,毎回トリガタイミングから少しずつずらしてサンプリングして,取り込んだデータをPC側でまとめてやる手ですね. マイコン側で20ksps程度まで頑張れれば500回の等価サンプリングで10Msps相当の波形が取れるという感ですね. 10MHzを取り込むとなると50Msps程度は必要でしょうから,更にこの5倍・・ちょっと実用性と言う面では”?”ですけど,マイコンの内蔵A/Dフル活用という意味では面白い工作かもしれませんね.
補足
ご回答ありがとうございます。 そんな方法があるとは気づきませんでした。 もし妥協するときはその方法を取ることとします。
- tance
- ベストアンサー率57% (402/704)
オシロスコープって意外と難しいものです。たった10MHzでも 自作するのは相当大変です。ADコンバータはどうしても40Msps くらいのものが必要になるし、DMAが使えても、何らかのADとの インターフェースに高速のハードが必要になります。 これらは自作可能ですが、市販のADコンバータボードを買うのと どちらが安価になるかは良く比較しないと何ともいえません。 たとえ、市販のADボードをPCのスロットに差し込んでも、それだけ ではオシロスコープとは言えません。トリガをどうするかが 大きな問題で、そのほかにもプローブに合うアナログ入力を 作る必要があります。(おそらくADボードに直にプローブを つないでも周波数特性が出ないと思います。) さらに問題があります。サンプリングが40MHzだとして、時間 分解能は25nsecです。これに10MHzの信号を入れると、その周期は 100nsecですから、信号の1周期の1/4の不確定時間が存在します。 信号はADのクロックと非同期だということに注意してください。 トリガは何らかの方法で作ったとして、トリガが発生した後の 最初のクロックはトリガから最低0nsec、最高25nsec後に来ます。 この25nsecの間に信号は相当変化するので、もし、最初のクロック で取ったAD値を画面の一番左に表示するとすると、波形が相当 ばらついてしまいます。つまり、トリガ点の1点から始まる 波形にならない訳です。 この説明でお解りでしょうか。図を描いてトリガ点とクロックの 関係を非同期でいくつも重ね書きしてみると解りやすいと 思います。 これらを全て解決する根気と時間がないとなかなか難しいというのが 現実です。
補足
ご回答ありがとうございます。 A/Dコンバータについては以下のものを検討しています。 http://akizukidenshi.com/catalog/g/gI-01530/ >トリガが発生した後の最初のクロックはトリガから最低0nsec、最高25nsec後に来ます。 一定周期ごとにPCにA/D変換した値を送信するという仕組みを考えています。そこではクロックと言う概念はもはや存在しないのではないでしょうか。 また、25nsec間の信号の変化は十分に微少だと割り切って考えた方が良いかもしれません。 トリガなどの後処理はPCで何とかなる気がします。もちろん遅延は起こるでしょうが。
- takepon256
- ベストアンサー率41% (391/936)
10MHzの波形と言うことはサンプリング定理より最低でも20MHz、 ある程度波形が見えるようにするには40MHzサンプリングくらい 必要ですね。 40MHzサンプリングだとAD変換の性能があったとしてもマイコンの 処理が追いつきません。 また、マイコンは何か処理が入るたびにA/D変換の読み取りタイミング がずれますので、毎回同じタイミングで読み取るのに向いてません。 (特に速度が速いと誤差が顕著に出る) サンプリングした波形をメモリに保存するまではハードウェア (CPLDやFPGAなどの外部ロジック)で勝手にやらせて、マイコンは メモリから読み出してパソコンに転送する外部インターフェースに 徹するのが一般的です。 どうしてもAD変換の性能が出ない場合はAD変換2つ使用して、 時分割で交互に読み取って見かけ上のサンプリングを上げる方法も あります。 いずれにせよ「安価な方法」ではないのですが。。。
補足
ご回答ありがとうございます。 A/D変換専用のICを、マイコンのI/Oポートに接続するのでは処理が追いつかない、ということですよね? マイコンの処理が追いつかない、というのを具体的に知るにはどうすればいいのでしょうか? データシートを見てもよく分かりません。 >また、マイコンは何か処理が入るたびにA/D変換の読み取りタイミン グがずれますので、毎回同じタイミングで読み取るのに向いてません。 処理は一定間隔で入れ、割り込みは入れませんからタイミングはずれないと存じます。 >サンプリングした波形をメモリに保存するまではハードウェア (CPLDやFPGAなどの外部ロジック)で勝手にやらせて、マイコンは メモリから読み出してパソコンに転送する外部インターフェースに 徹するのが一般的です。 どうしても仕方ない場合はFPGAを頼ることにします。ただ、メモリから読み出す、という動作は、A/D変換ICの出力を読み取る、という操作と等価な気がします。
- fujiyama32
- ベストアンサー率43% (2298/5278)
[秋月電子]にて次のURLにあるような「プローブ」他を取り扱っています。 クリックして参考にして下さい。 [ペン型USBオシロスコープ] http://akizukidenshi.com/catalog/g/gM-01621/ [デジタルオシロスコープ] http://akizukidenshi.com/catalog/g/gM-01966/ デジタルオシロスコープ http://akizukidenshi.com/catalog/c/coscillo/ [秋月電子通商] http://akizukidenshi.com/catalog/default.aspx
補足
ご回答ありがとうございます。 私は既に100MHz迄計測可能なシンクロスコープを所持しております。 したがって、自作することが前提条件となります。
お礼
わかりやすい解説、どうもありがとうございます。 頑張ってみます。