[表紙頁]へ  関連記事の目次へ

[二〇一六年十一月二日]
電圧ロガーを、USB経由可にした

先般から、「自家製電圧(データ)ロガー」を使っているのだが、これの親機として、RS232C端子を備えたVersaPro系を使わざるを得ない。
でも、それを広げると机上がやたら狭くなるので困っていた。(泣笑)

「電圧ロガー」は、伝送系を、RS232C経由からUSB経由に替えれば、親機として小型PCや卓上データ保存機(ASUS EB1007)などでも利用出来るはずだし、それも「USB-RS232C変換ケーブル」にするだけで済むはずなのだが、これが一筋縄では行かなかった。(図1)

単に、「USB-RS232C変換ケーブル」(ELECOM UC-SGT)を付加するだけでは上手く動作せず、「Data-Loggerプログラム」の改修が必要だった。(改修⇒Ver4.2)
ついでに、データの採録方法も少し変えて、「ログ間隔」を途中で“任意変更”が出来るように改良した。

「変換用ドライバ」はネットからダウンロードさせて貰い、USB経由で(机上を然程占有しない)ASUS EB1007が使えるようになり、当面の目的は達成出来た!(図2<クリック>

−−−−−−−−−−−−−−−−−−−−−−−−−
プログラムの修正

「変換ケーブル」を付加しデータ伝送系を「USB系」に変えたら、始めは正常に動作するように見えたのだが、ログ採取の途中で“エラー”が発生し、プログラムが毎回ダウンしてしまう。

VBVisual BASIC)は、エラー発生箇所を明示してくれるので助かるのだが、実は、(恥ずかしながら)通信関係のルーチンは未だ良くわかっていないので、解析と対策に少し時間が掛かった。

プログラムのダウンの原因を追究するのに、あちこち「値」を替えてみて、状況・様子をみる方法を採った。(謂わば、“叩き大工”ってこと。苦笑)
buffer(1)だとエラーになるが、buffer(0)にするとエラーは発生しない。
(この現象は、通信速度を、例えば9,600bpsにしても、19,200bpsにしても変わらず)
ということは、bufferに入って来るパケット数は、実は、毎回2個以上を想定/期待していたら拙いってことかな?
だけど、必ず2個以上あるはずなんだけどなぁ。

...ん?プログラムの上方の(パケット・カウントの)If 行を見たら、「>=1」って書いてあるぞ!?
つまり、“1個でも(その後、必ず2個以上来るはずだから?)許す”って意味だが、“そりゃ困る!”
で、“2個以上無いと許さぬ!”と書き直してみた。

そしたら見事に、問題の"エラー発生&ダウン”が無くなった!バンザイ!
それにしても、RS232C直結からUSB変換経由に替えたら、こんなことが起きるのか!?

それと、ハードウェアの「中継コネクタ」が、手持ちの物では不適合だった。(図4<クリック>
USB-RS232C変換ケーブル」を受けるのに、「中継コネクタ」はオス25ピン、メス9ピンでないといけないんだが、手持ちのは両側オス−オスばかり。(くそっ!)
仕方が無いので、今使っているケーブルをそのまま使い、それに継ぎ足す方法にした。(上の図1)
(でも、これは、もっとコンパクトにしたいなぁ)

試験

「電圧ロガー」の電圧データを、“USB経由”で親機の方に取り込めるようになったので、「プログラム」の動作が“望み通り”に働くかどうか、(小バグを除去しながら)試験をした。

その“望み”は、ロギング途中で「サンプリング間隔」を任意に変更したいということ。
通常、「サンプリング間隔」は十分に考えた上で決め、やたら途中で変更すべきものではないだろうが、最初から予測が付かない/付けられないものの変化を調べる場合、“途中変更”も止むを得ないと思う。

この試験では、8段階に設定した「サンプリング間隔」(1、5、10、30、60、180、300、600)を、途中で適当に変化・増減させてみた。
「間隔」が長くなるとグラフが目詰まりして来るから、あまり見栄えの良い(綺麗な)カーブは描けず。(図5)
一方、「数値データ表」の方は、指示通りの間隔で切り替わっていて、その「サンプリング間隔」で、ちゃんと採録していることは確認した。(図6<クリック>
尚、EXCELなどに読み込ませた場合、グラフ化する際に具合が良いようにと、「数値データ表数値データの例.txt)」に「積算秒」を加えてある。(単に、分:秒だと、“グラフ化”が厄介だもんで。苦笑)


[表紙頁]へ  関連記事の目次へ