HOME >> 鉄道模型工作室 > 小型のターンテーブル式実験装置を作ろう 動力特性測定のトライ
小型のターンテーブル式実験装置を工作しています。いよいよこのプロジェクトの最終段階まできました。装置のハードとソフトの準備が出来たので、目的とする動力特性の測定について、トライを実施しました。
//**************************** // TurnTable-Measure-1 // 2023/10/1 //**************************** // HX711.DOUT-PIN D17 // HX711.PD_SCK-PIN D16 #include <HX711.h> #define PATTERN 18 #define START 5 #define VOL_PIN 1 #define CUR_PIN 0 const int LOADCELL_DOUT_PIN = 17; const int LOADCELL_SCK_PIN = 16; HX711 scale; void setup(){ pinMode(PATTERN,INPUT); pinMode(START,INPUT); scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN); Serial.begin(9600); } void loop(){ int start; int voltage; int current; int pattern; unsigned long t1; unsigned long t2; unsigned long tt; unsigned long vol; unsigned long cur; long force1; long force2; long force3; long force4; long force5; int n; vol = 0; cur = 0; n = 0; // 測定開始ボタンを待つ start = digitalRead(START); while (start == LOW) { start = digitalRead(START); } // 測定開始 pattern = digitalRead(PATTERN); while (pattern == HIGH) { pattern = digitalRead(PATTERN); } t1 = millis(); while (pattern == LOW) { pattern = digitalRead(PATTERN); } // 測定中 while (pattern == HIGH) { voltage = analogRead(VOL_PIN); delay(1); current = analogRead(CUR_PIN); delay(1); vol = vol + voltage; cur = cur + current; n = n + 1; pattern = digitalRead(PATTERN); } t2 = millis(); //ロードセルを読む force1 = scale.read(); delay(20); force2 = scale.read(); delay(20); force3 = scale.read(); delay(20); force4 = scale.read(); delay(20); force5 = scale.read(); delay(20); //出力処理 tt = t2 - t1; String buf = String(vol) + "," + String(cur) + "," + String(n) + "," + String(tt)+ ","+String(force1)+","+String(force2)+"," +String(force3)+","+String(force4)+","+String(force5); Serial.println(buf); delay(500); }
■ スケッチの記述
まず最初に、制御マイコンである Arduino のスケッチを記述しました。過去の実施例をもとにして記述しています。その内容を下記にまとめました。
この内容をスケッチに記述したプログラムを右に示します。なお、モータの回転数計測はまだ組み込んでいません。
■ リアルタイム処理のためのPythonプログラム
測定実施は、1回毎のデータをグラフ上で確認しながら次の条件設定をセットして行きますのでの送信されたデータを目で確認出来るようにしています。このため、リアルタイムでグラフ表示する必要があります。この処理のために、今まではExcel のマクロ処理をしてきましたが、何故だかその処理が機能しなくなりました。「EXCELのマクロが機能しない」(2022/6/13)参照。
その後、四苦八苦しながら Python による処理方法にたどり着き、以前と同様に、リアルタイム処理が実施できるようになりました。今回もそれに習って、次のように記述しました。
******* turntable-1.py ***************************
#-*- coding:utf-8 -*- import win32com.client import time import serial ser = serial.Serial('COM8',9600) # ser.readline() xl_app = win32com.client.GetObject(Class='Excel.Application') while True: val_arduino = ser.readline() buf = val_arduino.strip().decode('UTF-8') a = buf.split(',') rn = xl_app.Cells(4,2).value xl_app.Cells(rn,2).value = a[0] xl_app.Cells(rn,3).value = a[1] xl_app.Cells(rn,4).value = a[2] xl_app.Cells(rn,5).value = a[3] xl_app.Cells(rn,6).value = a[4] xl_app.Cells(rn,7).value = a[5] xl_app.Cells(rn,8).value = a[6] xl_app.Cells(rn,9).value = a[7] xl_app.Cells(rn,10).value = a[8] xl_app.Cells(4,2).value = rn + 1 time.sleep(1) ser.close exit()
***************************************************
使用したライブラリーは、Excelのセルにデータを書込むためのpywin32 ライブラリー、シリアル通信のための PySerial ライブラリーです。このライブラリーをインストールしておく必要があります。
測定終了後、このプログラムを中止させる方法が、未だに見つかりません。そjこで、USBケーブルを強制的に抜き取ると、通信が切れましたと言って自動的にPython を完了してくれますので、この方法を使っています。
■ データ整理用のExcelファイル
従来のシートに習って、新しく整理しました。測定途中のデータですが、このようにデータが入力されていきます。
セル(4,2)が書込むべき新しい行番号を示しています。真ん中から右が計算用の蘭となっています。速度計測と牽引力計測では、同じようなシートですが、表示するグラフが異なっていますので別シートになっています。また、このExcelファイルの保管場所は、Python の作業用フォルダに保管します。即ち、上記の例では turntable-1.pyと同じフォルダ内に保管しておくことが必要です。
■ 速度特性の第1回目の計測トライ
準備が整ったので、いよいよ計測を始めました。測定手順は、
プログラムミスが何ヶ所がありましたが、やっとデータを取り込むことが出来ました。円盤はフリーの状態にして動力車の駆動力だけで回転させました。
そして、得られたデータを下に示します。
速度−電圧グラフと電流−電圧グラフは綺麗に取れています。牽引力−電圧のグラフはバラツキはあるものの、円盤を空回りさせるために、6〜7グラムの力が必要である事を示しており、意外でした。事前の調査では、1グラムの力で回転できるものと思っていたのに、少しがっかりです。
なお、古い年代の人間ですので、力の単位はニュートンではなくて、いまだにグラムを使用していますので、悪しからず・・・・・・。ニュートンがピンとこない人間ですのでよろしく。
でも、一応この状態で、N増し測定を実施しておきました。
円盤の回転が少しスムースになって、負荷抵抗が少なくなったようですが、単機走行、即ち、無負荷走行とは言えませんな。
■ 速度特性の第2回目の計測トライ
でも、諦めることは無いのだ。このような事態も想定の範囲内なのである。ターンテーブルを動力車の牽引力だけで回転させるのでは無くて、駆動用のモータを使って強制的に回転させる手段もあるのだ。試しに円盤駆動用のモータを動かして測定してみました。
確かに牽引力はゼロやマイナス側に振れるようになりました。でも、どうやってこのような条件に設定できるのかが問題となってきました。そこで、いろいろ試した結果、カプラーで連結している拡大レバーを見ていると判断できることが分かりました。
牽引力がゼロの状態を挟んで、プラス側とマイナス側はピン部のガタによって、動くことが観察できます。そこで、このガタを積極的に大きくして、その動きを観察しておれば判断できるのです。多少のバラツキはOKとすればよいのです。
ちなみに、ゼロ近辺にデータだけを抜き出し、第1回目の計測結果を比較してみました。
やはり、その差は明確であり、この第2の方法で測定することとしましょう。
■ 牽引力特性の測定トライ
次に、牽引力特性についても測定を実施しました。ターンテーブルを駆動装置で回転させることは勿論ですが、負荷の調整としてブレーキ装置に掛かる荷重も変えていく必要があります。測定状態を下に示します。
ブレーキ装置に重りを乗せた状態を下に示します。
.
テーブルが回転している状態で、いろいろな重りを乗せたり、乗せる位置をずらしたりして負荷を変えていきます。
重りとして使用したのは右の写真のように手で持って重いと感じる物を集めましたが、乗せるスペースが狭いために10gf の負荷までが限界でした。何か工夫改良が必要です。
制動領域では、テーブルの回転速度を上げて、動力車の走行速度よりも早くするようにてし、坂道を転げ落ちている状態にします。
************************************
試しに測定したデータを下に示します。綺麗な測定データに見慣れているので、少しがっかりですが、意図するデータは得られると判断できます。制動側もスリップ領域まで測定できていますし、遷移点もバッチリと判断できます。
駆動側と制動側のスリップ領域の測定は、動力車の力なのかブレーキ装置の限界値なのかの疑問が残っていますので、改善の余地があります。
************************************************************
今回の測定トライによって、目的とするデータが取得できることが分かりました。まだ、工夫改良の余地があるので、詰めていきたいと考えています。
2023/10/4