
はじめに
いまから十数年前、高専の情報工学科に入学したlrks少年はデジタルマルチメーター、いわゆるテスターを組み立てていた……。
え、情報工学科なのに? 当時の1年生は(ミスマッチを防ぐために)入学した学科を問わず全学科のさわりを体験して、2年生の進級時に改めて学科を選び直せる仕組みがありました1。 電子工学科だったか……電気工学科だったか……の演習でsanwa(三和電気計器)のPC20TKというキットを使ってテスターを組み立てていたわけです。
PC20TK(本体に名前が入っていることがあるので、メルカリで売るときは気をつけよう!)
このテスターは情報工学科で使うことは(たぶん)なかったものの、趣味ではずっと使い続けています。 電池も何度か替えた、1回ヒューズを飛ばして替えた、校正は製作時に1度実施して以来やっていない2。
そんなテスターですが、気になることがあり分解してみました。 すると、“FS9711_LP3”というICが見えます。
PC20TK内部の基板
これは電圧や電流の測定などテスターとして成立させるための各種機能を実現でき、セグメントLCDのドライブまで行ってくれるICのようです。 このICはsanwaに限らず、いろんなテスターで使われている模様。 特にPCとの接続用にデータ出力ピンが存在し、このICが使われているテスターを改造したりしてPCと接続した事例3もありました。
そういえば、PC20TKにも「PC Link」というPCと接続できる機能があります。 これには専用アダプタ(KB-USB20)と専用ソフト(PC Link 7)が必要なので試していませんでしたが……これって前述のデータ出力ピンの機能を使っているのでは?
FS9711_LP3自体のデータシートは見つけられませんでしたが、後継?の”FS9721_LP3”のデータシートは見えた。 それによると、ENTX (Pin 84)をGNDに落とせばTXD (Pin 64)からシリアル信号4が出力されるとのこと。
PC20TKでは説明書で回路図も記載されているので確認してみると……
PC20TKの回路図(取扱説明書より抜粋および一部加工)
ENTXがGNDに落ちており、TXDには赤外線LED(TLN223)が接続されていますね。 TXDがHighのときはLEDが点灯、TXDがLowのときはLEDが消灯するのでしょう。 特に変調とかはされていなさそうですね。
これを受光して、データをこねこねしたくなってきました。 しましょう。
受光
TXDから出ている信号を受光しましょう。 これにはフォトトランジスタを使います。
いま手元にあるのはL-51ROPT1D1。 感度のピーク波長は940nmです。 一方、TLN223の発光ピーク波長は870nmとのこと……。
これでも受光できるか、データシートを確認しましょう。 TLN223の発光特性と、L-51ROPT1D1の受光感度特性を(人間が頑張って)縮尺を合わせて重ねてみたものがこちら。
TLN223の発光特性とL-51ROPT1D1の受光感度特性
黒色(背景)がTLN223の発光波長を、赤色がL-51ROPT1D1の受光感度波長を表しています。 たいだい、60~70%くらいの感度で受光できそうですね。
PC20TKの発光部は本体裏にあります。 付近にM3のネジが入るネジ穴もあり、これを利用してフォトトランジスタのホルダー5を3Dプリンタで作ったりして固定するとこんな感じに。
フォトトランジスタを固定する様子
そして、フォトカプラ(の右側)のようにエミッタ接地として、Vcc (3.3V) と抵抗器 (10kΩ) を繋いでみる。 出力をオシロスコープで観測した結果はこちら。
フォトトランジスタによる受光結果
うまく受光できていそうですね。 (データフォーマットについては後述しますが)UARTとしてのデコードも問題なし。
信号の一部を拡大すると、多少なまっている様子は見えますがこの程度なら問題ないでしょう。
フォトトランジスタによる受光結果(拡大)
抵抗値の調整などは不要。 このままUSBシリアル変換モジュールのRXDに突っ込めそう6です。
脱線: LEDによる受光を試す
870nmを受光できるようなフォトトランジスタ持っていないんですけど……という場合もあるでしょう。 その場合はフォトダイオードを使えばOK?いやいやこれも無いんですけどと。 でも赤外線LEDくらいは持っているでしょう。 これを使って受光できるか試してみます。 (ただ、今回は波長が合っておらずうまく受光できませんでした)
LEDはLightをEmittingするDiodeですが、逆に光を当てると光起電力により電流が発生します。 この電流は微小なため増幅させる必要はありますが、もしかしたらこれを使って受光できるのでは?
いま手元にある赤外線LEDはGL538、ピーク波長は950nmです。 もちろんLEDなので受光感度についてはデータシートに記載されていませんが、発光特性をTLN223と重ねてみるとこうなります。
TLN223の発光特性とGL538の発光特性
黒色(背景)がTLN223の発光波長を、青色がGL538の発光波長を表しています。 ほとんど重なっていない!
これはあくまで発光波長についてです。 それに「ほとんど重なっていない」を逆にいえば「ちょっとなら重なっている」ですよ。 一応、これで受光してみましょう。 これが結果です。
LEDによる受光結果
何らかの信号があることは分かりますが、デコードは無理そうですね。 なお、増幅はトランジスタをダーリントン接続して行っています。 そのトランジスタをうまく選定すれば?オペアンプで増幅したら?シュミットトリガを使えば?LEDの固定方法を変えたら?などで少しは改善できるかも知れませんが……。
ということで、今回はうまく受光できませんでした。 870nmのLEDを使えばうまく受光できたかも知れませんが……素直にフォトトランジスタを使ったほうが簡単でしょう。
読み取り
さて、フォトトランジスタを使えば受光できましたね。 受光した信号をUSBシリアル変換モジュールなどを介してPCに接続します。
FS9721_LP3のデータシートによれば、データのフォーマットは「2400 baud, 8bit, no parity」です。 ここに14Bytesのデータが送られてきます。 これは観測値ではなく、LCDの各セグメントがON/OFFしているかを示すとのこと。 各バイトの上位4bitがセグメントの番号 (1~14)、下位4bitはビットが順にCOM4,COM3,COM2,COM1に対応しておりON/OFFを表現しています。 チェックサムなどはありません。 セグメントとCOM、またLCD上の位置は下記のとおり。
セグメントのマッピング(データシートより)
なお、sanwaのページにも同様の情報が(現行製品ではなく過去に販売されていたアダプタに関する情報として)開示されていました。
パソコン接続型デジタルマルチメータの、転送データの形式について教えてください。 | 三和電気計器株式会社
https://www.sanwa-meter.co.jp/japan/support/faq/faq73.html
これらをもとにデータをWebSerial APIから読み取り、fudafudaを流用して表示させてみた結果がこちら。
lrks/pc20tk-link
https://github.com/lrks/pc20tk-link
動作の様子
なかなかうまくいっているんじゃないでしょうか。 表示部分はビットマップをSVGにトレースしたもので、注意深く見るとぼやぼやしているところはあります。
ほか処理が甘いところとしては、来たデータを14Bytes単位で処理しているわけではなく、何かデータが来たら信用してそのまま表示している点。 もし何らかの理由で、14Bytesのうち一部が欠損したとしても他はそのまま表示されてしまいます。 また、WebSerial APIのエラーハンドリングも甘め。 何かエラーが起きたらリロードしてもらう前提です。
さらに、データを数値化したりグラフにしたりといった、いわゆるロガーの機能はありません。 この辺はsanwaの専用ソフト(PC Link 7)では対応しているところです。 有志によるTs Digital Multi Meter Viewerでも対応しているようで、実際に使ってみると確かにロガーにできることを確認しました。 ほか、試していませんがsigrokやQtDMMもFS9711_LP3系のICを使ったテスターに対応しているようなので、(そのテスターの機種を選べば)ロガーとして機能させられそうです。
おわりに
PC20TKの赤外線LEDを受光し、LCD表示用のデータを読み取りました。 ロガーまでは作っていませんが満足です。
今回はフォトトランジスタをテスターの背面に固定しただけで、そこから先はその辺のワニ口クリップを使ってUSBシリアル変換モジュールに繋いだりしましたが、恒久的に使うならもっとちゃんとしたほうが良いでしょう。
本当はこれはただの検証で、ゆくゆくはESP32を使ってWi-Fi経由で接続しようとしましたが……保留しています。 主な理由は電源部分。 PC20TKの裏面に収めようと思うと単3乾電池2本程度のスペースしかありません。 これでもネジ穴と干渉するので素直に固定はできない。 なんとか固定できたとしてもESP32を動かそうとすると昇圧回路が必要となり、さらにそこそこの電流を流せる昇圧モジュールとなると値段が高い。 ならいっそのこと裏面に固定するのは諦める?USB給電とかにして、というのはあまり見栄えしない……。 Li-Poバッテリーはこのためだけに充電しておくのが嫌。 コイン電池は間欠動作ならまだしも、常にデータを送るような構成だとすぐ電池切れになってしまう。 ということで保留にしています。
PC20(PC20TKの完成市販品)を用いてオフラインでSDカードに記録するロガーを作っている方7もいらっしゃるので、こういったアプローチのほうが良いのかも知れません。
または、PC20TKなどと同様にデータ出力機能のあるテスターを使って読み上げ機能を付けた方8もいらっしゃるようで、こういった方向も良さそうです。 直流の測定値は結月ゆかりさんに、交流は紲星あかりさんに読み上げてもらいたい。
Footnotes
いまは無い?のか名前が変わっても継続しているのかはよく分からない。ちなみに「情報工学科」という学科名は無くなった。 ↩
まずいかも。産業技術センターとかで機器を借りて校正したいですね。 ↩
事例1:takmiz’s bootstrap: METEX P-10(通称:秋月テスター)を PC へ繋げるように改造した、事例2:悠々趣味の日々: 廉価なDMMをデータロガーに改造する ↩
データシートでは”RS-232C”と書かれていますが、電圧レベル的にはRS-232Cではありません。おそらくUARTと言ったほうが正しい。ただ、後述のとおりこの信号は赤外線LEDによって絶縁されており、受信側ではLEDを駆動する電圧レベルまで意識することは無いのでふわっと「シリアル通信」という表現にしておきます。 ↩
https://github.com/lrks/pc20tk-link/blob/main/workspace/holder.stl ↩
厳密にはRXD側でプルアップされていれば波形も多少変化すると思いますが……あまり問題にはならないでしょう。 ↩