google-site-verification: google3bd66dd162ef54c7.html

DSO Shell 用に作った光インターフェイス回路の解説

 前回の記事ではDSO Shell (DSO 150)を改造して、光で波形データーを出力する方法について紹介しました。今回はその続きで、もう少し詳しい回路の説明などを波形写真を交えて解説したいと思います。

 やりたいことをおさらいしておくと、DSO Shell から出る電気信号(シリアルデーター)を光に変換し、その後で再度電気信号に戻すのが目標です。こういうことをやりたい場合、最初に考えるのは次のような回路だと思います。

▼基本的な光インターフェイス回路
基本回路
 信号は負論理なのでPNPトランジスタで受けてLEDをドライブし、その光をフォトトランジスタで受けて電気信号に戻す回路です。まずは、これでうまくいくか確かめてみます。

▼テスト用の回路を組む
基本回路の実験中
 LEDとフォトトラは、セロテープで丸めてくっつけて、簡易的な芯合わせ状態にしています。いきなりDSO Shell の信号を使うのは実験がやり難いので、パルスジェネレーターから信号を入れて動かしてみます。VR1で波形が電源とGNDの間で均等に振り分けられるように調整します。

▼出力波形
基本回路の波形
 上が入力、下が出力の波形です。一見うまくいっているように見えますが問題はそのスピードです。横軸は50μs/DIVなので、パルス幅は100μsあり、10kbpsの速度しか出ていません。
 DSO Shell のデーター出力レートは115.2kbps なので、あと10倍高速にしないといけません。つまりこの回路は使えません。

 こういう場合の対策をネットで調べてみると、前の記事に書いたように、JO-MIDI-FMさんの書かれた、汎用 4 ピンフォトカプラを使った MIDI 入力という記事の方法が使えそうです。いろいろ試した結果、少しアレンジを加えて以下の回路で行くことにしました。

▼回路図(前の記事と同じ回路図です)
Dso Shell 光インターフェイス回路
 回路図内のLEDとフォトトランジスタは秋月で購入可能な物です。以下、ポイントを説明していきます。

・C1はスピードアップコンデンサで、Q1をすばやくOFFにするために入れています。C1を入れないと、LEDがONの時間が1.5μsくらい長くなってしまい、デューティ比が悪化します。

・R2でLEDの明るさが決まりますが、この値が小さすぎると、フォトトランジスタ (PT1) が飽和してスピードが遅くなります。ちなみに、最初はR2を220Ωにしていたのですが、これでは光が強すぎでした。

・Q2で電流を検出し、同じ電流をQ3にミラーすることで出力電圧を出す回路になっています。
 参考にさせて頂いたサイトでは、フォトトランジスタのコレクタと電源の+5Vの間にLEDを入れて、フォトトランジスタの発熱抑制と光入力の表示機能を兼ねさせていました。表示があると便利なのですが、LEDを入れるとパルスの応答特性が悪化したので外しました。原因としては、LEDのVfは電流によってかなり変わるので、ミラー効果の抑制効果が低下した。あと、LEDはバイアス履歴によっては変な挙動を示すことがあるので、そのあたりの悪影響があったのではないかと想像しています。それと、参考にさせて頂いたサイトは 31.25kbps の MIDI のデーターが対象なので、もう少しマージンがあったのかも知れません。

・VR1は出力波形(Q3のコレクタ波形)を見ながら調整します。VR1の値を小さくすると波形は上に引っ張られ、VR1の値を大きくすると波形は下に引っ張られます。ということで、ほど良い波形になるように調整が必要です。

 以下、波形の調整の様子を見て行きますが、説明の都合で先に調整完了後の波形から始めます。

▼入出力波形
入出力波形
 上が入力(CN1のピン4)、下が出力(CN2のピン4)です。なお、トリガは入力のプラスエッジで掛けています(流れているデーターの影響で、マイナスよりプラスエッジの方が見易かったためです)
 入力に対して出力が1μsくらい遅れているようですが、全体がシフトしているだけなので、シリアルデーターの受信には全く影響無いと思います。

▼測定の様子
波形観察中

▼アイパターン (トリガディレイを掛けた画面です)
アイパターン
 USBシリアルアダプタの入力は3.3V(5Vトレラント)なので、その中間の1.7V付近でクロスするようにVR1を調整しました。まあ波形の平坦部のレベルがしっかりと出ているので、ここまで追い込まなくても大丈夫だと思います。

 さて、話をVR1の調整に戻します。

 ここまでの説明では、別のオシロを使って波形を見ました(テクトロの400MHzアナログオシロ、2465Bです)。こういう波形をDSO Shell 自身で見ることが出来ればいいのですが、シリアルに波形データーを吐き出している最中なので、CPUは忙しくてそんな暇は無いだろうと思っていました。

 ところが、驚いたことにトリガモードをNORM(ノーマル)にしておくと、シリアルに波形データーを約3秒かけて送信した後で、シリアルポートに流れたデーターの波形が液晶に表示されました。もちろんプローブは測定したい場所(CN2 の4ピン)に繋いでおきます。つまり、ちゃんとトリガがかかるように設定しておけば、シリアルにデーターを送っている最中でも、波形はメモリーに記録されているようです。ちなみに、遅い速度で記録すると波形は約3秒間記録されていたので、先頭からメモリーの許す範囲で記録されるようです。

 実際の波形で説明します。以下の写真は出力ピン(CN2の4ピン)の波形で、左がアナログオシロ、右がDSO Shell の画面です。なお、アナログオシロの波形はカメラのシャッター速度1秒で撮影しています。つまり1秒間重ね合わせた波形です。

▼VR1の値が小さい場合
抵抗低すぎ 上すぎ
 上側に引っ張られすぎています。Lowレベルが2V以上あるので、これではシリアルの信号として認識されません。

▼VR1の値が高い場合
抵抗高すぎ 下過ぎ
 上向きに引っ張る能力が不足しているため、振幅が5Vまで達していません。またデューティー比も50%になっていません。これでは文字化けやフレーミングエラーが多発して、正しい通信は出来ません。

▼VR1適正
適正 適正
 正常なシリアルインターフェイスの波形です。右側のDSO Shellの波形でもデューティー比がほぼ50%付近であることが確認出来ます。

 VR1の調整は、シリアルモニタで受信しながら、エラー無しで受信出来る範囲の中心に合わせるだけでもたぶん大丈夫だと思います。でも、このように波形を見ればより正確な調整が出来るはずです。

◆まとめ
・比較的高速なシリアルデーターを光で取り出すための回路の話でした。秋月で普通に手に入る部品でも、使い方を工夫すれば115200bps の速度を出すことが出来ました。
 ここで使った、スピードアップコンデンサ、ミラー効果抑制のためのカレントミラー回路、トランジスタの飽和対策などは、古典的と言って差し支えないほど昔からある方法です。こういうテクニックはICの中に埋まっていて、普段は使うことが無いかも知れませんが、覚えておけば何かの時に役立つと思います。

・この回路の動作確認に私は別のオシロを使いました。でもDSO Shell は自分が出しているシリアルデーターの波形を自分の画面に表示出来ることが判りました。こうなると、別のオシロを準備する必要が無くなった訳で、この回路を実際に作って調整するためのハードルが大幅に下がったと思います。
 ただ観察対象の波形はボタンを押した瞬間しか現れないので一発勝負です。つまり、波形を確実にトリガで引っ掛けるように設定することが必要で、信号のレベルとイベントの極性がどうなっているか正しく予想してオシロに設定しないといけません。これって結構難しいですが、このオシロの使い方をマスターするのに格好の素材だと思います。

ミニオシロ DSO Shell に光インターフェースのデーター出力機能を付けた

 JYE tech のミニオシロのDSO Shell のファームを110にアップデートすることで、波形データーをシリアルポートから出せるようになりました。USBシリアル変換アダプタを接続すればデーターを取り込むことが出来ますが、このやり方ではグラウンドの電位がPCと共通になってしまうのが難点です。これではDSO Shell の良さが一つ消えてしまいます。そこで、電気的に絶縁するために、光インターフェイスで接続できるように改造してみました。

 別に光で出さなくても、フォトカプラで絶縁する、あるいは絶縁型USBアダプタを使うなどの手があります。でもここは判り易く光で出すことにしました。と言うとかっこいいですが、手持ちの部品だけで何とかしたかった、という貧乏根性が背景にあります。

 データーのレートが115200bps とかなり早いので、少し工夫が必要でしたがともかく完成しました。

▼光インターフェイスを接続した状態
光インターフェイスの使い方
 ケースの右下に開けた穴から光信号を取り出し、インターフェイス回路経由でUSBシリアルアダプタを使ってPCへ接続しています。
 
▼光の出口
光出口
 赤色LEDを使ったので、データー送信中は穴の奥が赤く光ります。

▼内部
DSO Shellに組み込み
 下側ケースにスペースがあったので、そこに送信用の基板を取り付けました。なお、基板はホットボンドで接着固定しています。

▼光送信部
送信回路
 写真左上のピンソケットを、本体のコネクタ(J5)に取り付けたピンヘッダに接続して使います。ピンソケットの端子はこの写真のように折り曲げないとケースに収まりません。なお、線の保護のため熱収縮チューブを使っています。

 右側の銅パイプは薄い(0.1mm)銅板を丸めてはんだ付けして作った物です。ここは内径3mmのパイプなら何でもいいです。ここにLEDとフォトトランジスタを対向して突っ込むことで光軸を合わせます。

▼受信回路
受信回路
 上が受光用のフォトトランジスタ(NJL7502L)で、これをDSO Shellの光の出口の穴に差し込みます。左が受信用の回路で、右はUSBシリアル変換アダプタ(AE-FT234X)です。なお、このUSBシリアルアダプタの信号レベルは3.3Vですが、入力は5Vトレラントです。

▼回路図
回路図
 受信側はカレントミラーを使ったフォトトランジスタの電流検出回路になっています。ここはJO-MIDI-FMさんの書かれた、汎用 4 ピンフォトカプラを使った MIDI 入力と言う記事を参考にさせて頂きました。ありがとうございます。
 なお、このフォトトランジスタは照度測定用なのでこういう用途に向いている物ではありません。またトランジスタも本来ならスイッチング用を使うべきです。ともかく、入手性第一(手持ち部品優先)で作ったのでこんな回路になっています。

▼出力波形(Q3のコレクタ波形)
受信波形
 立ち上がりがやや遅いですが、デューティーは50%を維持出来ているのでこの波形なら大丈夫だと思います。波形の上側のノイズ(ニジミ)は、電源電圧のリップルが原因です。

▼ターミナルソフト(TeraTerm)で受信している様子
teraterm
 スイッチ操作(ADJ + V/DIVボタン押し)をする度に、こういうデーターが流れてきます。波形データーだけでなく、測定条件や波形の周波数や振幅などのパラメーター情報も送信されています。なお、波形データーは行番号、時間、電圧が1行になっていて、1024行あります。

▼エクセルで波形をグラフ表示
エクセルで波形表示
 ここまでくれば、FFTでも何でも出来ます。このオシロに使われているADCのINLやDNLを見るのも簡単に出来そうです。

◆まとめ
 こう書くとあっさり出来てしまったみたいですが、115200bps のデーターをフォトトランジスタで受信するにはそれなりの工夫が必要でした。答えはほぼ回路図に書いてありますが、マージン確保のためには調整などが必要です。ということで、そのあたりの話は次回の記事で紹介したいと思います。

ミニオシロ DSO-Shell のファームアップデート(firmware 110)

 USBシリアル変換アダプタの動作確認が終わったので、いよいよ、ミニオシロ DSO Shell のファームを 110 にバージョンアップします。なお、JYETechのファームの情報はこちら。また、DSO Shell(DSO150)の製品情報ページはこちら

▼DSO-Shell
DSO Shell

 ファームのアップデート作業は以前やったのと同じ手順ですが、ファーム110ではアップデート後にアクティベーションが必要になるのでそのコードを事前にJYE tech から入手しておく必要があります。アクティベーションコードは、オシロのプロダクトIDをメールでJYEに送れば教えてくれます。海賊版を買った人にはファーム110を使わせないということだと思います。

 とにかく、ファーム110にアップデートするためには、ファーム書き込みソフト、USBシリアルアダプタ、新しいファームのファイル、アクティベーションコードが必要になります。

 アップデート作業方法についてはJYEのサイトに詳しい手順を説明したPDFの資料があるので、それを見ながら進めれば大丈夫です

▼アップデート前のブート完了画面
V055
 修正前のファームは 055で、今回これを 110 に上げます。

▼ファームアップデート中
ファームアップデート中
 この基板にプロダクトIDが書かれています(左のシルクの白ベタの中)が、1 か I (いち か あい)、0 か O (ぜろ か おー) が判り難いです。ブート画面に出る表示と見比べることをお勧めします。

▼ファーム書き込み完了画面
アップデート完了
 これはFlash Loade Demonstrator の画面で、ここまで進めばファームの書き換えは完了です。

▼アップデート後のブート完了画面
V110にアップデート後
 ファームウエア(FW)が 110 に変わっています。
 右上にはアクティベーションコードを暗号化したものが表示されるようです。最下段は従来通り、この個体のプロダクトIDなどの情報が表示されています。

 なお、ファームを 110 に上げてしばらくは、アクティベーションコードを入力しないままで使えていました。どうしたんだろう?ひょっとしたら古いロットはアクティベーションフリーになっていて特権待遇か!などと勝手なことを考えていたら、突然次のような画面が降ってきました。

▼アクティベーションコードの入力を促す画面
アクティベーションを促す画面
 「画面の左上に書いてあるプロダクトIDをJYEにメールで送ってアクティベーションコードを入手して下さい。さもなくば、あと 3 回電源を入れたらこのファームはロックされます。ADJを押せばアクティベーションコード入力、OKを押せばこの画面を終了」とのことです。はいはい、特権待遇などにはなっていませんでした。

 この画面が出てからJYEにメールしていたのでは、危ないので、事前にJYEからアクティベーションコードを入手しておいて良かったです。とは言ってもメールを送ったら2時間もしないで返事が届きました。アクティベーションコードの入力画面は見れば判るように作られていたので説明は省略します。

 なお、アクティベーションコードの入力画面を強制的に出すには、SEC/DIV, TRIGGER, ADJ を同時押しします。但し、入力済のアクティベーションIDは表示されません。ID盗難防止のための当然の仕様です。

 以下、ファーム110 で変わった所を紹介します。

▼画面 (115200bps で ASCIIコードの a を出力)
V110の画面
 上の写真の矢印で示した >> はロータリーエンコーダーが早送りモードに入っていることを示します。通常モードでは >> 表示は無しになります。なお、早送りと通常の切り替えはADJボタンを押すことで行います。

 右下の数字はトリガレベルを示します。最初のバージョンにはこういう表示があったのですが、途中のバージョンで無くなっていました。その表示機能が復活したことになります。

▼キャリブレーション結果表示
キャリブレーション結果
 すみません、この表示の見方が判りません。なお、キャリブレーションはV/DIVとOKの同時押しで開始されます。

 これ以外に今回のバージョンの目玉である波形データーの送信機能があるのですが、これは実際にデーターを見るところまでやっていません。V/DIVとADJの同時押しでこの機能が起動されます。

 これ以外に嬉しいのが20μsと10μs/Divでトリガが掛かるようになったことです。

▼20μs/div (115200bps で ASCIIコードの a を出力)
20usの画面
▼10μs/div (115200bps で ASCIIコードの a を出力)
10us
 緑矢印がトリガポイントのはずですが、どちらのレンジも右に1目盛りずれています。これより遅いレンジではトリガポイントは全て一致しています。正確なトリガはオシロの重要な性能なので、直せるバグなら直して欲しいです。

◆まとめ
・懸案だった項目がかなり改善されていて、なかなか良いオシロになってきました。画面に周期的に表示されていたスパイク状のノイズも目立たなくなっていました。

・本文中に書き落としましたが、ADJダイヤル(ロータリーエンコーダー)のレスポンスが大幅に良くなっています(たぶんもっと前のバージョンから改善されていたのだと思います)。これだけでもバージョンアップする価値がありました。

・波形データーを外に出すためにはコネクタを追加しないといけませんが、せっかくだからフォトカプラなどで光アイソレートすると、使い易くなると思います。

・ファーム110の追加機能がまだ全部把握できていないのですが、機会があれば操作解説編の記事をアップデートしたいと思います。
カレンダー
03 | 2018/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コード