HOME >> 鉄道模型実験室 > SLの動輪の動きを捕えよう その1
■ いきさつ
先日報告した「計測装置の脈動状態を観察」では、SLのロッド類について、その動きの滑らかさを電流波形から推定できることを知った。 しかし、自分の興味はあらぬ方向に向いてしまった。 それは、今まで諦めていた動輪の回転数計測に首を突っ込んでしまったのである。 当初は、電流波形に注目していたが、この波形からは無理であることが分かったものの、動輪の回転状態、あるいはロッドの動きをパルス化出来ないだろうかと検討していた。
.
そして、モータの回転数検知に使用したフォトセンサーの小型版を見つけたのである。 これを使ってロッド類の動きをパルス化する実験を行った。
■ フォトセンサーの小型版
右の写真について、上側のセンサーが、「反射式回転センサーを使う」で使用した反射型フォトマイクロセンサ EE-SY110 (オムロン製)である。 そして、下側のセンサーが、今回使用するフォトリフレクター(反射タイプ)である。 部品名は異なっているが、赤外線を発光させて、その反射光に反応するセンサーである。
この種のセンサーは、
販売店 | 品名 | 品番 | 単価 |
秋月 | フォトリフレクタ(反射タイプ) | TPR-105F | \ 40 |
マルツ | フォトインタラプタ | BPR-105F | \ 90 |
aitendo | フォトインタラプタ | ITR8307-TR8 | \ 50 |
.
などを見つけた。 今回は TPR-105F を選択したが、うかつにもCランク(光電流:0.41〜0.9mA)の仕様を発注してしまった。 消費電流は少ない方が良いと単純に考えたからである。
また、後から気が付いたが、スイッチサイエンス社から発売されているフォトリフレクタ・モジュール QTR-1RC などのモジュール部品を使用すると、周辺回路が実装されているので、Arduinoなどから5Vを供給するだけでON/OFFの出力が得られようである。 以下に記述するような苦労はなかったのでは無いかと後悔している。
■ この小型のセンサの使い方
この小型センサを使って、SLのロッドの動きをパルス化する方法は、左の写真に示すように、クロスヘッドのストロークを感知して、パルス化する構成とした。 クロスヘッドには赤外線を反射する銀紙を貼りつけ、ストロークの中央付近に反射タイプのフォトリフレクタを設置する。 すると、銀紙の端が通過する時点や通り過ぎた時点で、パルスは立ち上がったり、立ち下がったするはずである。 ちなみに車両はKATOのC55-62号機である。
また、通過スピードが一番早くなるストロークの中央部にセンサを設置すると、時間計測の精度が最も高くなるのである。
センサの配線は、「反射式回転センサーを使う」や「測定ユニットの作り直し」などで紹介した方法と同じ様に設定して、測定車の測定ユニットに接続して使用することを想定している。
.
■ センサ情報の処理手順
次に、検出したパルスをどの様に処理するかを検討しておく。 まず、今までの処理手順を復習しておこう。 右のタイムチャートをもとに説明する。
最初に工作した速度特性や牽引力特性の自動測定方法では、光センサーで構成したゲート1とゲート2の間を通過するタイミングAとBの時刻より、108mm 離れたゲート間を通過する時間より、動力車の速度を計算した。 そして、この間にArduino のA/D変換機能により電圧と電流を測定しているが、値のバラツキを減らすために、多くの測定値を取込み平均化している。
牽引力を計算する傾斜台の角度は固定値であるため、ゲート2通過後に計測し、最後にこれらのデータのセットをパソコンに送信する手順である。
次に、取り組んだ走行中の動力車のモータ端子電圧とモータ回転数の計測は、測定物が移動中であるため、無線通信と赤外線通信を活用した。 この工作の様子は、以前のレポートを参照下さい。
モータの端子電圧測定は、アナログ値を処理する必要があったために、A/D変換と送信機能を持ったXBeeによる無線通信を使った。 しかし、アナログ値を処理するための処理時間の関係で、送信は 50msec 毎の送信を余儀なくされたので、ゲート1の通過前の最新10個のデータを平均化する手法を採用した。 ゲート通過中のメインの仕事を乱さない配慮である。
次に、モータの回転数計測は、反射式回転センサーを使ってパルスをカウントする方式を取っているが、一定時間内のパルス数を計測するのか、一定のパルス数の経過時間を計測するのか悩み、結局、ゲート1通過時点からパルスカウントを始めて、一定のパルスが経過した時刻 C を測定して、A - C 間の時間よりモータ回転数を計算する方式を採用した。 モータの回転情報を赤外線通信により、測定台の上部に設けたサテライトユニットで受信し、そこでパルスカウントを実施する。
◆ クロスヘッドのパルスカウント方法
さて、今回もこのモータ回転パルスと同様な方法でクロスヘッドのストローク情報をArduino に送信することにしたが、ひとつ大きな問題があった。 モータ回転の場合は、フライホイールに白黒のマークを付けたが、1回転当たり2サイクルのパルスが出るように細工した。 しかし、クロスヘッドの場合にはそのような細工も出来ず、また、ギヤ比が関係するので、今までとは極端に遅いパルスとなるのである。 ギヤ比×2倍も遅くなるのである。 その様子は上のイラストからも想定出来るでしょう。
ゲート1と2のゲート間を走行する間に、動輪が回転する回転回数を計算してみよう。 ゲート間隔 L mm 、動輪直径 D mm とすると、回数 m は、
動輪回転回数 m = L / πD = 108/ πD
KATOの96ではD = 8.4mm だから、 m = 4.1 回、C62ではD = 11.4mm だから、 m = 3.0 回 となる。 当然、ゲート通過のタイミングを合わないことも考慮する必要がある。 ゲート通過時間内では、数回のパルスしか測定出来ないので、一定時間内のパルス数を計測する事は不可能である。 そこで、モータ回転パルスの様に、一定のパルス数の経過時間を計測するしかないのである。 この時、何回のパルスを計測するか悩んだが、6個のパルスの時刻を計測し、その間の経過時間を計算することにした。
そして、クロスヘッドのパルス時刻の計測は、Arduino に割り込み処理を設定し、この処理を優先的に実施するプログラムとした。
.
■ 失敗 その1
まず、最初の工作を説明する。 「反射式回転センサーを使う」で紹介したセンサーユニットと同様なモジュールを、小型のセンサに合わせて新しく工作した。
基板の大きさは、14.5×23.0 mm の大きさで、基板は厚さ 0.8mm の薄手の物を使用する。 この時の現物は撮影を忘れてしまったので、次の工作後に撮影したものを代理として下に示す。 左下の四角い物体がセンサであり、 この基板の上に抵抗が2個取り付けられていたのである。 絶縁保護のためにと、ご丁寧にもパテで表面を塗ってしまっている・・・・・・・・・・・。
このセンサユニットをC55に取り付け、測定車両の測定ユニットに接続して、測定台の上で走らせて見たが、センサユニットが測定ゲートに激突してしまった・・・・・・!
単純な隙間目測のミスであり、止むなく基板に取り付けていた二つの抵抗を取り去り、配線途中に挿入する事にした。 上の写真はその後の状態である。
--------- New_Keninryoku_test6 --------------- **************** 省略 ****************
// 割り込みループで使用する関数 volatile unsigned long cros_data[6]; volatile int cros_n = 0; volatile unsigned long Tn; **************** 省略 **************** // 割り込み処理 void cros_count() { Tn = millis(); cros_n = cros_n + 1; if (cros_n > 5) { cros_n = 0; } cros_data[cros_n] = Tn; } **************** 省略 **************** //出力処理 tt = t2 - t1; if (cros_n == 5){ ts = ( cros_data[cros_n]- cros_data[0])/5; } else { ts = ( cros_data[cros_n]- cros_data[cros_n + 1])/5; } String buf = String(vol)+","+String(cur)+","+String(n)
+","+String(tt)+","+String(angle)+",D,"+String(data[0])
+","+String(data[1])+","+ ……… +","+String(data[9])
+","+String(ts)+ ",E"; Serial.println(buf);
**************** 省略 ****************
■ スケッチの修正
実際に走らせて確認するには、Arduino の処理プラグラムであるスケッチを修正する必要がある。 このため、上記のタイムチャートを実施するように書き直した。
大まかには上記の様なロジックで記述し、その内容を右に示す。
■ サテライト・ユニットの修正
.
赤外線通信を受信するサテライトユニットの回路も修正する。 送信されてくるパルスをカウントする必要が無く、そのままArduino に送信すれば良いので、受信パルスをスルーする回路を設けた。 ジャンパーピンの回路を追加して、必要な時にジャンパーピンを使用するようにした。
その回路を左に示す。 また、実際のユニットの写真を下に示す。 今回は、裏側の配線状態も追加してみた。
ジャンパーピンを使用する場合には、DIPスイッチは全てOFFにしておく。 なお図中に示した追加したパスコンは、後から工作したものである。
■ 失敗 その2
ハードとソフトの準備が出来たので、試しに測定台にてテストを実施してみた。 Arduino からの送信状態をシリアルモニタで観察していたが、サテライト・ユニットからのタイム情報 ts がゼロのままである。 そして、 サテライト・ユニットのLEDもダンマリのままであった。 原因が良く分からないので、各部の波形を観察することにしたが、このための道具としてオシロ観察用のシールドを作成した。 その詳細は「オシロ用のシールドを作る」を参照下さい。
そして、フォトリフレクタからの信号が出ていない事を突き止めた。 ひとつずつ潰していくことにする。 最初に新しいセンサの動作確認を実施しておれば良かったものを少し自信過剰であったのだろうと反省している。
.
まず、ブレッドボードにセンサ周りの回路を構成して、出力信号をチェックした。 回路構成は右の回路図のトランジスタ回路を追加する前の状態である。 センサからの出力電圧をチェックすると、0.02 - 0.10 ボルトであった。 ONとOFFは変化するものの、その出力電圧は小さ過ぎたのである。 そこで、回路図の抵抗A を色々変えてみたが、電圧アップは僅かであった。 ここで始めた気が付いたのである。 説明資料にあったランクと光電流の値の意味を理解したのである。 光電流とは出力能力を表し、後段に接続された要素を駆動出来る能力があるかどうかを判断すべきであった。
今更、部品の再手配は躊躇されるので、トランジスタを使って増幅する手段を採用した。 しかし、右上の回路図の構成でも改善出来なかった。 3.3KΩの抵抗はエイヤーと決めたが、回路をしげしげと眺めていて、ダーリントンとか呼ばれている組合せになっていることに気が付いた。 そして、試しに抵抗A を取り去ってみると、見事に作動したのである。 この組み合わせでは抵抗A は要らないのである。 逆に邪魔しているといえるのである。 ひとつ勉強となった。
■ センサユニットの改良
やっと光が見えてきたので、落ち着いて実験状態を撮影し、記録する事が出来た。 その時の写真を下に示す。
供給電圧 Volt | 2.01 | 2.50 | 3.00 |
OFF時の出力電圧 Volt | 1.79 | 2.23 | 2.73 |
ON時の出力電圧 Volt | 0.12 | 0.12 | 0.10 |
消費電流 mA | 15 | 24 | 32 |
そして、作動状態を測定して置く事にした。 金属片をフォトリフレクタの前にかざしてその作動状態をチェックする。 充電式単4乾電池の呼称電圧 1.2×2 の近辺の値で確認したデータを左に示す。
出力は充分であり、消費電流も許容範囲と判断して、この回路に変更する事にした。 フォトリフレクタを取り付けた基板には、この回路を構成する余裕が無いので、配線途中にもう一つ基板を挿入することにし、そこで回路を構成することにした。 その中間部のユニットを下に示す。
そして、フォトリフレクタを取り付けた基板との接続状態を下に示す。
全体の配線状態を下に示す。 モータ端子電圧測定用のリン青銅板と、測定車両に搭載する測定ユニットに接続するピンヘッダを工作して完成である。
もし、スイッチサイエンス社から発売されているフォトリフレクタ・モジュール QTR-1RC などのモジュール部品を使用すると、周辺回路が実装されているのでこの様な苦労は無かったのではと反省するが、この様な技術や知識は、失敗し、苦労しなければ身に付かないと、自分に言い聞かせている。 ただし、QTR-1RC などのモジュール部品は5ボルト仕様なので、2.4ボルトで作動するかどうかは不明である。 無理だったかも知れない。
■ 車両でのセンサユニットの確認
作動確認済みの出来あがったセンサユニットを使って、実際の模型車用に取り付けてその作動状態をベンチにて見てみる事にしよう。 実験の全体の状態を下左の写真に示す。 KATOのC55-62号機にセンサユニットを取り付けた状態を下右に示す。
まず最初に、センサからの出力状態を確認するために、センサからの出力端子をオシロのCH2 に接続して出力波形を見ることにした。 センサの電源は測定車両からの電源を接続している。 機関車は安定化電源を使用してテンダーの車輪を通して電力を供給しているので、電圧を変化させることによって動輪の回転数を変える事が出来る。
オシロの波形を紹介する。 左が機関車への供給電圧が4.53ボルトの時で、右が5.48ボルトの状態である。
矩形波の電圧は 0.02 - 0.48 ボルトの矩形波であるが、オシロシールド回路の倍率を考慮すると 0.06 - 1.44 ボルトとなる。 単品での測定値は多少異なるが、正常に作動していると判断出来る。 矩形波の幅をみると、センサの取り付け位置がクロスヘッドのストロークの中央よりずれている事がわかる。 また、途中でも凸の信号も気になるが、まずは成功としておこう。
■ 車両での測定ユニットの確認
次に、測定車両の測定ユニットをチェックしておこう。 センサユニットと測定ユニットを接続し、モータ端子電圧のXBeeアナログ入力端子から信号を取ってCH1に接続し、トランジスタのコレクタの足から信号を取ってCH2に接続する。 モータ端子電圧はXBeeによって無線通信で発信し、クロスヘッドの動きは赤外線LEDによって赤外線を発信する。
オシロ波形を下に示す。 下左のオシロ画面は、 5.31ボルトの供給電圧で駆動している状態である。 CH1に示されたモータ端子電圧は、ノイズが殆ど無い綺麗な状態である。 画面の表示電圧は0.14voltであるが、測定ユニットでの分圧回路で0.109倍、オシロシールド回路で0.33になっているので、実際の電圧は3.89volt と換算される。 即ち、1.42volt の電圧降下を生じている事になるが、納得のいく数値である。
また、CH2は、0 - 0.5volt の矩形波(実際の電圧は 0 - 1.5volt )で、細かいキャリア波あり。 矩形波は、7div×20ms = 140ms のサイクルで発信しているが、1秒間では7.1回のパルスとなり、動輪の回転数を表示している。 426rpm と換算される。
キャリア波を含む綺麗なパルスを発信している事が確認出来たので、ひと安心であるが、気がかりな点があった。
それは上右の写真に示すオシロ画面で確認出来る。 この状態は、CH1がゼロ電圧、即ち我がC55 は動いていない のである。 それなのに、CH2 にはパルスが表れている。 スイープ軸は、500ms/divで表示させているので、その1サイクルは 4.8div×500ms /div = 2.4sec である。 頭にノイズらしき信号もあり、何の信号なのか不明なのである。 測定ユニットのゆっくりとした自己発振のようであり、なんだか不安が脳裏をよぎったのである。
■ さいごに
ともかくも、測定車両からはクロスヘッドの動きを示すパルスを発信させることが出来たのので、次は測定台の上で走行させる事にしよう。
上の写真は、周囲をべたべたとセロテープで巻かれている 哀れな姿のC55-62号機 である。