HOME >> 鉄道模型工作室 >  小型のターンテーブル式実験装置を作ろう エンコーダパターンでの測定

小型のターンテーブル式実験装置を作ろう エンコーダパターンでの測定

 小型のターンテーブル式実験装置を工作しています。今回は、円盤の回転速度計測用のエンコーダパターンについて機能テストを実施しました。

 

■ エンコーダパターンの出力状況

 円盤の回転速度計測用のエンコーダパターンについて、割り込む処理による方法か、あるいはゲート方式に習って処理するのか迷っているのですが、その前に、このエンコーダパターンが本当に機能しているのか、実際に確認することにしました。

 工作したハード回路はそのままの状態にし、処理回路のフォトリフレクト出力部、即ち処理回路の入力部と、回路の出力部の電圧波形を観察しました。観察はテクシオの GDS-1052-U 2CH デジタルッストレージオシロスコープを使用しました。下の写真。

 二つのプローブの接続具合を下に示す。

 計測した波形を下に示します。黄色のCH1が入力部、青色のCH2が出力部の波形です。

     

 オシロは、CH2の立ち上がりに時にトリガを掛けています。白と黒のパターンが等間隔で並んでいるので、パルスのONはどちらに反応しているのか、波形からでは判断付きませんが、パルス幅が等間隔でないのが気になります。回路から判断すると、白パターンの時に入力電圧が高くなり、パルスはLOW になるはずですが・・・・。

 ヒゲ波形を防止するためのコンデンサが効きすぎているのか、フォトリフレクタの反応がシャープでないかもしれませんが、パルス波形が少しなまっているようです。でもその反応は1msec 以下ですので、問題ないと判断しましょう。

// Measure-4-1  2023/9/25
// 機能テスト-1
// 円盤のエンコダパターンのチェック

#define PATTERN 18
#define START 5

void setup()
{
  pinMode(PATTERN,INPUT);
  pinMode(START,INPUT);
  Serial.begin(9600);
}

void loop()
{
  
  unsigned long t1;
  unsigned long t2;
  unsigned long tt;
  int start;
  int pattern;
  
  start = digitalRead(START);
  while (start == LOW) {
    start = digitalRead(START) ;
  } 

  pattern = digitalRead(PATTERN);
  while (pattern == LOW) {
     pattern = digitalRead(PATTERN) ;
  } 
  
 //スタート
  for (int i=0; i<120; i++){
    while (pattern == HIGH) {
      pattern = digitalRead(PATTERN) ;
    }
    t1 = millis();  
    while (pattern == LOW) {
      pattern = digitalRead(PATTERN) ;
    }
    
 //ゴール
    while (pattern == HIGH) {
      pattern = digitalRead(PATTERN) ;
    }
    t2 = millis();          // 出口スロットの通過時刻

 //出力処理
    tt = t2 - t1;
    String buf = String(tt);
    Serial.println(buf);
  }
}

 また、入力側の波の高さが円盤の回転に合わせて大きくうねっていました。これは円盤の振れが、フォトリフレクタとパターン間の距離に影響し、波の高さの変化として表れているものと推察しましたが、幸いにもパル化の処理は波の底部で実施しているので、その影響が少ないものと思っています。

   ************************************************

 信号処理が出来ていると判断しましたので、Arduino に入力してパルスを計測することにしました。 このため、テスト用のスケッチを右に様に記述しました。

 計測開始のスタートボタンが押されると、最初にやって来たHIGH 信号によって計測を開始し、パターン間の時間を計測します。そしてその時間をシリアル出力しますが、このループを120回繰り返します。

 処理時間が一つのパルス間に処理できるか心配しましたが、データは問題なく出力されていました。各パターン毎なのか、一つ飛びなのかは確認していません・・・・・・・・・。

   ************************************************

 この120個のデータを Excel に取り込み、処理時間のバラツキなどを計算しました。測定は同じ状態で、2回測定し、それぞれのパルス間隔の平均は、103.9msec と100.4msec でした。この平均値との差をデータのバラツキとして下のグラフに示しました。

 上の二つのグラフを見ると、大きなうねりが確認されます。スタート位置は行き当たりばったりなので合致しないのですが、二つのうねりは同じ傾向です。このうねりは、エンコーダパターンの芯ずれによるものと想定するのですが、二ツ山は理解できません。

  ************************************************

 このレポートをまとめている時に、ハタと気がtきました。パルスの処理が追い付かないので一つ飛びに測定しているのではないか? このため、このグラフは2回転分のデータお恐れがあります。そこで、100msec と言うパルス時間より、線路上でのスケールスピードを計算してみました。

 線路の半径は R = 150mm 、 t = 0.1sec ですので、スケールスピード V = 2πR×.54÷t より V = 42Km/h と計算されます。これは遅い! 測定中に時間などをチェックしていなかったので何とも言えませんが、やはり、パターン飛びで計測していたと判断し、グラフの様子とも合致します。

  ************************************************ 

 このテストは、パルス計測が出来るかどうかのチェックだったので、その目的は確認できました。そして、パターンの精度もそれなりの出来のようです。

  .

 

■ 計測方法の方針を決める

 いろいろ悩んだのですが、ダメ元でもよいのでゲート方式で実施することにしました。一つのセンサによって数を減らしたパルスパターンの通過時間を計測する方法としました。工作済みのパターンを黒く塗りつぶして、右の写真のように、1周で12個のパターンとしました。10分の1に減らしたのです。

 塗りつぶしは、黒のアクリル絵の具を使いました。

   **************************************

 まず、信号の波形を上記と同様に観察しました。オシロ画像を下にしめします。上記の同じように黄色のCH1が入力部、青色のCH2が出力部を示しています。

 何だか前回より綺麗なパルス波形です。表示はパルスの立下りをトリガとしています。そして、黒パターンの時はHIGH で白パターンの時にLOWとなっているのも判別できます。

 スイープ時間を長くしていくと、前回と同様に、入力側の波の高さはうねっていることが分かりますが、見た感じでは出力パルスに影響ないようです。

     

     

 次に、パルス間隔の精度を確認すべく、Arduino で計測してみました。計測用のスケッチは前回と同じものを使用しましたので、120個分、即ち10回転分のデータを収集したことになります。計測は、動力車を使って円盤を回転させて測定しました。パルスの間隔時間の平均は、504mseでした。パルス間隔を10倍にしたのに時間は5倍ですね!やはり先回はパルス飛びでの計測だったようです。

 この平均時間を分母として、データのバラツキをグラフにしてみました。下左のグラフです。データは連続して120個収集していますので、10個の折れ線は同じパターンの場所の測定データとなるはずですが、まさにバラバラです。と言うことは、パルス間隔はまずは均等であるものと推察でき、測定上のバラツキと言えそうです。でも±2〜3%以下にほとんど収まっています。

   

 動力車の駆動力を使って円盤を回転させたので、バラツキが大きのではないかと思い、せっかく仕込んである円盤駆動用のモータを使って回転させ、計測したのが上右のグラフです。動力車は載せていませんので、空の円盤を回しているだけです。

   *******************************************************

 結果を見るとガッカリですね。かえってバラツキが大きくなっており、大きな波となっています。これはパターンの精度では無くて、円盤の回転ムラと思われます。一定回転で回転させているつもりが、駆動系や円盤軸のこじれなどによって、ムラが生じているとし判断します。±2〜3%程度のパターンのバラツキの上に、回転ムラによる大きな波が合成されていると考えるの妥当と思います。

 なお、実験時のスケールスピードは、動力車駆動の場合で84km/h、モータ駆動時では82km/h 相当の速さで円盤を回転させていました。

   *******************************************************

● まとめ

 実験結果より、測定データのバラツキは数%程度なので、ホビーとしての実験では充分な精度と判断し、円盤の回転速度計測はゲート方式で実施することにする。即ち、エンコーダパターンは円周上12個のパターンとし、固定側の一つのセンサでパルスの間隔時間を計測するが、割込み処理は使用しない方法とする。

 

 心配した測定方法の方針を決め、そのための対応も実施出来たので、次は、牽引力、電圧、電流の計測と測定値の較正を実施することにしよう。

 

ページトップへ戻る  .


2023/9/27