マルチメーターP-10にUSBシリアルをつけたデータロガー完成
P-10とは、秋月で¥1000で買える激安のマルチメーター(テスター)のことである。3つほど前の当ブログ記事(「グラフィック気圧計ソフト開発の合間に道草」5/3/2012)で、このP-10のシリアル測定データをフォトカプラーを経由して取り出したことをご紹介した。
シリアルデータは取り出せただけで、その解析はまだである。グラフィック気圧計やマイクロステッピング制御の腕時計自動巻き機が完成して少し手が空いたので、これを片付けることにした。
気圧計の天気予報ロジックも、気になってはいるのだが、グラフが出たことで、ちょっと意欲が下がっている。気圧の2日間の推移を見ているだけで、だいたい当たる。人間の予報力もなかなかのものである。
もっとも、この2日間の予報は完全に外れた。気圧が低いところからどんどん上がってきている。天気が回復しそうだ。しかし、テレビやラジオでは、梅雨前線の北上で雨になるという予報をしていた。前日、「がた老AVR天気測候所」は、「高曇りで雨降らず」を宣言して就寝したが、次の日、予報どおり早朝から雨が降っていた。完敗である(6/12記)。
やっぱりWENS20-T互換だった。シリアル出力がおかしい(6/12/2012)
それはともかくP-10である。ウェブに詳しく情報が出ていて、すんさんからも、P-10と同じフォーマットで、PCのフリーのデータロガーソフト(Ts Digital MultiMeter Viewer)が動くという別のテスター、WENS20-Tを解析したページのURLも教えてもらった。
しかしP-10を少しテストした限りでは、このPCのデータロガーソフトは動かなかった。双方のデータシートをざっと見ていただけだが、データフォーマットが微妙に違うような気がする。
データロガーなら、パソコンでなくSDカードをつけたマイコンで開発しても良いのだが、せっかくPCに充実したフリーのデータロガーソフトがあるのにこれを使わない手はない。暫くは、このPCロガーソフトを動かすことを前提に色々な方法を考えることにした。
そういうことなら、Tiny2313あたりにUARTを2チャンネル設定して、データの翻訳をやらせる方法が一番簡単だ。2313はハードでUARTを持っているし、ここでのソフトUARTは何度も動かしている。
データストリームも、P-10の速度は2400bpsと遅いので出力側を38.4Kにでもしてしまえば、フロー制御は考える必要がない。プロトコルも非常に簡単で、14バイトが定期的に送られてくるだけである。このなかにテスターのLCD表示面のデータが全て入っている。
事務所での空き時間を利用して設計をはじめ、擬似コーディングで大体の流れは簡単に出来た。あとは、細かい変換仕様である。P10のデータシートを印刷し、さらに、フリーのデータロガーがサポートしているWENS20-Tのフォーマットも印刷してひとつづつ詳細に調べ始めた。
ところが、調べれば調べるほど、このフォーマットは同じなのである。確かに、細かいところ、WENS20-Tには、RS232Cの表示ビットがないことや、MやKがない(これは記載していないだけかもしれない。WENS20-Tのスペックは個人の解析による)などが違うが、最初、合っていないと思っていた測定レンジの部分は、ビット単位に整理してみれば全く同じだった。
今まで、フォーマット違いだと思っていたが、どうも、動かない原因は別のところにありそうだ。ということで、まず、現在出ているデータを検証することにする。シリアルの入出力をバイナリーで見ることができるフリーの端末ソフトAcknowrich(アクノリッチ)で、P10のシリアル出力を調べてみた。
ありゃりゃあ、全然規定のフォーマットのデータではない。このテスターのデータの特徴である上位4ビットが1から順番にふられるデータの形をしていない。それとは似ても似つかないデータなのだ。そうか、普通の端末では、規定のデータでも字化けしてしまうので、正しいデータかそうでないかの判別が出来なかったのだ(注意:掲載したAcknowrichの画面は正しいデータが出たときのものです。不正の時の写真行方不明)
うーむ、どこが悪いのだろう。やはりマイナスに振らないRS232Cデータは読まないのだろうか。しかも、データは化けているが、規則性があり、いかにも正しいように見える。こうなると、とことん調べないと気がすまなくなってきた。ロジックアナライザーを持ち出した。DTRのプラス電位を電源にしたフォトカプラーの出力でデータを調べる。
TTLの出力は正しいデータが出ている(6/13/2012)
なんとなんと、ここは、以前調べた規定データフォーマットのとおりだ。ここまでは大丈夫なのだ。とすると問題はこの先である。もしかすると、このTTLデータを正式なシリアルデータにすれば、WENS20-Tで動く、フリーのロガーは動くのではないか。まず、これを試してみよう。
残っていた手段、TTL-UARTをUSB仮想端末にする秋月のアダプターで、この出力をつないでみた。なんと見事にフリーのロガーソフトTsDigital Multimeter Viewerが動いた。レンジを電圧から、抵抗にしても大丈夫だ。問題なく表示が変わる。MやKもちゃんと出る。
データ不正は、やはりTTLからRS232Cに正しく変換されていないことが原因であることがはっきりした。負電圧までやはり振らないと駄目なのか。でも、無理せずに、このUSBアダプターを使えば問題は解決する。フォトカプラーの電源もVbusからとれるし。
ただ、この秋月のUSB-TTL(UART)アダプターは¥950と少々お高い。しかも少し大きくてP-10の中に入らない。それに手元には、BeagleBoardのRS232Cアダプター用のソケットをつけた基板が出来上がっている。もうちょっとUSBを使わず今のままで何とかならないか考えてみた。
TTLからシリアルに変換することでは、以前、負電圧にしなくても、簡易なRS232Cインターフェースをインバーターを使って動かしたことがある。これは負電圧を作っていない。単に正論理のUARTをインバーターで逆にしているだけである。
このインターフェースは、ChaNさんのいう邪悪な規格なのだが(HとLは、+5Vと0V。規格では±15V。ADM3202などのシリアルアダプターは±9V)、問題なく動いた。ただ、STマイクロのシリアルライター(Flash Loader)は動かなかった。
TTLからシリアルフォーマットにするときにおかしくなる(6/13/2012)
今度の回路はフォトカプラーでシリアルデータは負論理に既になっている。まずRS232C規格に少しでも準拠するため、電池を入れて、HighとLowが正負の電圧になるようにする。フォトカプラーのエミッタと信号線の間に単3の電池を入れ、片側を-1.5Vにする。しかし効果は全くなかった。これによるデータの変化が全く見られないというのも気に入らない。何か他に原因があるのか。
DTRからの電源が悪さをしているのかと、ここを独立した電源で供給する。しかしこれも変化なし。TTLからシリアルへの変換がうまく行っていない。オシロや、ロジアナで測ると、TTLのシリアルデータは正しく出ているのに、これをRS232Cに載せると、だめだめなデータになってしまう。
ノイズやハードの原因でおかしくなるなら、データは暴れるものだが、出てくるデータはいかにも、もっともらしい一定のデータで、P-10のレンジを変えると、ちゃんとそれに見合う別の一定のデータが出る(これもでたらめだが)。
USBではなく、本来のRS232Cにもしてみた。以前作ったTTLからRS232Cに換えるアダプター(ADM3202使用)で出力をRS232Cにする。予想したとおり、ちゃんと正しいデータが出て、PCのフリーソフトのロガーが問題なく動いた。
結局、問題は、今、使っているパソコンのシリアルインターフェースがこのフォトカプラーからの出力データ(オシロで4.8V と0.2V)をRS232Cシリアルとして認めていないということである。電子工作の世界からどうも違う世界に足を踏み込んだような気がする。それにいまどきシリアルにこだわるのもいただけない。USBにしてしまった方が汎用性が高い。
シリアルは諦めてAitendoのUSB-TTLアダプターを使う(6/14/2012)
そんなことでウェブで情報を探すうち、液晶安売りで有名なAitendoで恰好のパーツを発見した。ここは、最近、販売商品のレパートリーが大幅に増え、凄いことになっている。
Aitendoで見つけたものとは、USBの仮想シリアル用のアダプターで入出力がTTLのものである。秋月の変換ケーブルに使われているProlificの石を使ったもの(¥500)と、定番のCP2102のもの(¥600)の2種類がある。小さくてP-10に入りそうだ。
どちらもUSBコネクターがUSB-Aのオスプラグというのが気に入らないが(PCに直接付けろということか)、秋月や他のお店のUSB-TTLアダプターと較べると破格の安さだ。
家族と日本橋のデパートに行く用事を作って、ついでに久しぶりにAitendoの直営店を覗いた。ここは7月から木曜も休みにするようで、ウィークデイだったので客は私だけ。中国人の女性店員も一人。目的のアダプターはなかなか見つからず、思い切って店員に聞いて見たらすぐ案内してくれた。ただの素人の店員ではなさそうだ。
良くわからないのでTTLアダプターは2つとも買った。ついでにUSBの各種ソケットが山盛りになっていたのでミニBタイプの表面実装のものも買った。ちょっとしたアイデアがある。帰って来てまずアダプターを早速テストする。ブレッドボードのジャンパー接続だが問題なく動いた。
USB-TTLアダプターを加工する(6/15/2012)
Aitendoの基板の改造にとりかかる。まず、USBのAプラグを取り外す。PCインターフェースのソケットに挿せば良いということだろうけれど、ケーブルがTTLシリアル線になってしまう。ここはUSBケーブルの方を使って、Bソケットで受けるというのが筋だろう。
どうせなら、ミニBにしてしまおうと考えている。これなら小さくてP-10にも楽に入る。普通のUSBケーブルをP-10に差せばログがとれるなんてスマートだ。嬉々として工作に入る。
Aコネクター(プラグ)の取り外しは、例の低温ハンダを使う。それでもDIP部品なのではずすのに結構手間がかかった。ミニBソケットはこの外した跡地にはハンダ付けしない。別の両面基板の切片を用意し、そこへミニBソケットをハンダ付けする。基板同士はスルーホールのハンダ付けで固定する。
わざわざ別の基板を用意したのは、ソケットの抜き差しには大きな力がかかるのでしっかり固定したいからである。USBミニBソケットの固定ピンの位置はMIL規格で、4つとも汎用基板のパタンにぴったり合致する。がっちり固定したあと基板同士を接続すれば強度は十分だ。
表面実装のミニBソケットの端子ピンは0.5ミリピッチでハンダ付けには少し苦労する。しかも、少し奥まったところにある。0.2ミリUEW線であらかじめ、4本分をハンダ付けして引き出しておく。念のためカプトンテープをピンの下に敷く。このあたりが芸の細かいところ(自賛)。
UEW線は、基板のスルーホールを利用して裏に回し、所定のピンにハンダ付けする。ソケットとコネクターはちょうどピンアサインが逆になるので、気をつけないといけない。 フォトカプラーの部分は、思い切って全部作り直した。USB-TTLアダプターの出力ピンを逆U字型に折り曲げて、同じようにそこへフォトカプラーをつけた切片に半田付けする。
3つのサブ基板で出来たP-10のシリアルUSBアダプターが完成した。出来栄えに満足する。こういうガジェット(小品)の工作は、何故かうきうきする。簡単な回路である。動作はブレッドボードで確認済みだ。いそいそとテストに入った。
だがしかし、世間はそう甘くはなかった。こいつが動かないのである。USBの電源の赤いLEDが点くので電源部分は合っているが、PCでUSB仮想COMが開かない。結局、いくつもの以下の思い違いミスが見つかって、やっとミニBソケットにつけかえたロガーアダプターが動き始めた。
・USBミニBのピンアサインをしっかり間違えていた。何か、前も同じ間違いをしたような。
・USBケーブルに不良品があった。こいつ、前もトラブルを起こしたような。捨てよう。
・フォトカプラーの極性を間違えていた。3、4のエミッター、コレクターが逆。やれやれ。
P-10の中にUSB-TTL一式を実装するのは結構大変(6/16/2012)
単品では完成したが、P-10本体に組み込む工作が残っている。これが意外に手間がかかる。プラグの抜き差しを伴うので、このアダプターはしっかりケースに固定する必要がある。
ケースへの固定は、Aコネクターの固定用穴を広げ、2ミリネジでケースに直接固定する予定である。組み込む前に、裸のまま動かしたくなり、以前HT7750Aを使って作ったDC-DCコンバーター(乾電池ひとつでLEDを点ける)の電圧の動きをログする。うん、これは楽だ。
固定は、とりあえず加工の楽な板(あ、ベニア板です)の切れ端を使って、ハンダ付けの盛り上がったところをナイフで削り、板が裏側に密着するようにし、2ミリセルフタッピングネジで固定した。木片はケースに接着するが、ネジでとりはずしが出来るようにしておく。
思ったように楽に出来たが、木がやわらかすぎる。あと1~2回でネジがバカになるだろう。そのときは、やわらかいABS樹脂か何かで作り直そう。
ケースに入れてみる。あちこちが干渉する。ナイフで片っ端から削りだしてぴったりはいるようにした。ここまで来ると、試してみたくなる。思い切って、木の切片を接着してしまった。出来た穴からUSBプラグを差し込む。おお、かっこよく入った。写真を撮る。
PCのドライバーを替えて完動(6/17/2012)
いよいよテスト。また、こいつが動かない。何でだ。どこかがはずれたか。おやあ、いつのまにかUSB-COMポートが画面に出てきた。このあいだはUSBケーブルが不良だったのだが、どうもおかしい。接触不良でもない。
動いたり、動かなかったり、機嫌が悪い。ProlificのPCのドライバーを秋月の変換ケーブルを買って以来、更新していないのに気付いた。もしかすると、このドライバーが古いのかもしれない。秋月のケーブルはちゃんと認識する。デバドラの日付をみると2007年だ。このAitendoのUSB-TTLは2011年製で、これは替えてみる価値はある。
結果は、やはりドライバーが古かったせいだった。ドライバーを取り替えると、前の動かなかったUSBケーブルでもちゃんと認識した(捨てないでよかった)。
さあ、これでP10のシリアル接続によるデータログができるようになった。ブレッドボードのまわりは見違えるようにすっきりし、データログが気楽にできるようになった。これまでにかかった費用は、
USB-TTLアダプター Aitendo ¥500
USB ミニBソケット Aitendo ¥50
フォトカプラーPC817 秋月 ¥20
抵抗2ヶ 基板切れはし (手持ち)
今度は安くついて満足である。配線図はフォトカプラーの部分だけであるが、念のため掲載しておく。もしかすると、フォトカプラーの出力をバッファー(インバーター2つとか)に通せば、シリアルは通るかもしれないが、いまさらテストする気はない。
| 固定リンク
| コメント (8)
| トラックバック (0)
最近のコメント