鉄道模型工作実験室

Nゲージ鉄道模型に関する工作や実験を行っています。

無謀にも、ラズパイのGUIに挑戦する

今まで実施してきた卓上レイアウトの制御について、Arduino を使った自動運転装置や、マスコン方式の運転操作台を工作して来た。
  

    

上左の写真の左の制御ボックスがマスコン方式の運転操作台で、右の制御ボックスが自動運転制御台である。そして、右の写真はその中の状態である。制御はArduinoマイコンを使用している。
制御対象としている卓上レイアウトは、思いついたアイディアに従って簡単に組替えているので、そのたびにプログラムを変更する必要があった。
その対策として、変更したレイアウトに対応すべく、パソコンを使ってコントロール出来ないだろうかと、またまた欲が出てきた。
  ************************************************************
鉄道模型をパソコンから制御する方法は、商品としても販売されているし、多くの事例がネットでも紹介されている。しかし、その多くはパソコンとの親和性がよいDCC使用が前提だったり、その道のプロが制作した専用部品を使用しているのが現在の主流です。
でもホビーで楽しんでいる懐の寂しい輩としては、今まで工作して来た機器を使って工夫出来ないか、と考えた。
そうだ! パソコンと連動しているし、制御機器を制御できるGPIOを使用しているマイコン、即ち、ラズベリーパイが使えないだろうかと考えた。そのシステム構成をスケッチで描いてみる。

  

ラズパイを使った事例は、「LED電子工作集 RaspberryPi に挑戦」(2017/3/6)などで経験ずみである(・・・・でも、もう忘れてしまっているかも?)ので、GPIOの制御は何とかなるとしても、問題なのはモニタの制御画面の作成方法なのである。
このためには、ラズパイでのGUIを使う必要があるので、ネットでそのレクチャサイトを探した。そして、「とある科学の忘備録」さんのサイトを参考に、挑戦してみることにした。

    

昔のラズパイ・セットを持ち出して来て挑戦を始めました。

危ない! モータドライバが過熱する

コアレスモータ搭載車にも対応したマイコン式運転操作台を作って楽しんでいました。ミニレイアウトでも走行可能と言うことで、KATO製の「アルプスの氷河特急」を入手して走らせていました。すると、走行途中に電車が突然停止し、暫くするとまた走りだすのです。

 

不思議に思いないがらも走らせていましたが、待てよ!安全装置が働いている? と思って操作台の蓋を開けて、回路をチェックしました。見た目にはどこも異常はありませんでしたが、試しにモータドライバに指をふれると・・・・・アッチチーーー!
非接触式の温度計で測定してみると50℃以上もありました。過電流が流れてドライバの安全回路が作動したものと推測しましたが、何故なの?


アルプスの氷河特急の説明書をみると、パワーパック ハイパーDを使用する場合はライトユニットのコンデンサを撤去せよとのこと。そうだったのです。KATOは未だにPWM制御方式には未対応だったのです。否、TOMIXと違って、KATOは後方前照灯のチラツキ対策を優先させるのが設計方針と解釈しましょう。

 

上左がコンデンサの撤去前の状態で、上右が撤去後です。コンデンサ撤去後にテスターで容量を測定したら 1.0μFでした。セラミックコンデンサの特性を考えると、実質は0.2μF程度でしょうかね。


しかし、すんなりと工作した訳ではありません。コンデンサの撤去前後の様子を観察し、コンデンサの影響はどのくらいあるのか実験しました。

ドライバの発熱を抑えるために、なるべく電流が少ないと思われる条件を設定してその時のオシロ波形を観察しました。電流は、給電の戻り回路側に0.22Ωのシャント抵抗を挿入してその電圧降下量をオシロのCH2にて観察します。給電側はCH1に設定しています。

 

最初は、色々な条件で観察するつもりでしたが、最初に観察した上左のオシロ画面を見てビックリです。CH2の電圧降下量が 1000mVもある! 即ち、1000mV / 0.22Ω = 4.5A です。
ピークと言えども、こんな電流を流していると過熱するのも当然ですね。ドライバの表面温度はあっという間に60℃以上になっていました。
パラメータスタディをあきらめて、すぐにコンデンサを撤去した次第です。測定条件は全く同じ状態のコンデンサ撤去後のオシロ画面を上右に示します。全く綺麗な矩形波です。ドライバの温度は26℃前後(室温)のままでした。


なお、コンデンサを取り外す前に、パワーユニットを使って走行させて見た。

 

やはり、上右に示すパルス制御するユニットでは低速走行が出来ない事を確認した。
  ************************************************************************************
たった0.2μFのコンデンサでこれだけの影響があるなんて、今更ながら思い知らされたのです。そして、説明書には、”本製品は海外製品の安全仕様に合わせるため”との記述にあるが、本当だろうか? 海外ではパルス式ユニットを使っていないのだろうか? 日本だけなの?などの疑問が沸き上がります。
 それなら日本仕様海外仕様と分けて発売して欲しいよね。ユーザーにハンダ工作を強要させる会社としての姿勢が許せない。
また、KATOではPWM方式のパワーパックを発売しているようですが、この製品には対応しているのかな? どんな工夫をしているのか知りたいものです。 


それにしても早く気が付いて、大事に至らなくてよかった。今後も要注意だ。

コアレスモータ搭載車にも対応したマイコン式運転操作台2

Arduino マイコンとモータドライバを使って、コアレスモータ搭載車でも充分に低速制御が出来る運転操作台を自作しました。先回に引き続き、スケッチの内容と運転状態を紹介します。


■ 制御ロジックの内容
制御方法は、操作盤の操作内容に従って現在の車速を演算し、走行させる動力の特性に応じたPWM制御のデューティ比をマイコンから出力させる。モータドライバはこのデューティ比信号によりDC12ボルトのPWM電圧として出力して、Nゲージ動力を走らせる給電として供給させる。進行方向や停止の操作は、3ポジション式のトグルスイッチ使ったハード回路で実行させる。


1)使用するマイコンは使い馴れた Arduino UNO を使う。操作盤から、マスコン、ブレーキ、レンジ選択、微調整量の操作信号を入力として受け取り、PWM制御用のデューティ値を出力させる。PWM制御のキャリヤ周波数は、キーンと言う音を嫌って可聴域外の20KHzを使用する。その設定方法は、「Arduino Uno のPWMキャリア周波数を20kHzにする」を参照されたい。出力ポートは、10番ポートを使用するが、20KHz化の細工のために、9番ポートは使用出来なくなっています。さらに、デューティ値の指定範囲は 0~99までとなります。このため、デューティ比とデューティ値は同じ値となります。


2)デューティ比と車速の関係。今までの色々な実験より、Nゲージにおける車速は、コアレスモータと言えども給電電圧と直線的な比例関係にある事が分かっています。ただし、パルス制御(ここではPWM制御を使用します)のDC12ボルトの電圧をON/OFFさせた時の回生電流の処理のしかによって、この関係が非線形になったり線形になるものと推測しています。今回は、モータドライバと制御方法に選択することによって、線形かを実現させました。


3)車速の演算方法。運転状態を加速状態と制動状態、および惰行運転状態の三つのケースに分けて、そのぞれの状態に応じて車速を演算させます。Arduino のプログラムを記述するスケッチでは、メインのループ内で繰り返し演算しているので、このループをほぼ0.5秒で繰り返す様に設定し、操作盤の各スイッチの状態を読み込んでそれに応じた演算を実施するようにしています。


4)加速状態の演算。ブレーキが0ノッチで、マスコンが0以外のノッチの場合、目標車速をノッチ数に応じて決めている車速とします。そして車速ゼロからループ毎に加算して現在の車速とします。加算する値は、目標車速の差にある係数をかけた値とします。このため、加速途中でノッチを変えても目標車速が変更されるので、それの応じて車速を演算して行きます。また、車速は整数で取り扱っているので、小数点以下は切り捨て処理されます。このため、下から近づく場合と上から近づく場合を分けて演算しています。


5)惰行運転状態の演算。ブレーキもマスコンもゼロノッチの場合、ループ毎に車速をひとつづつ減算させていきます。


6)ブレーキ状態の演算。ブレーキが0ノッチ以外の時は、ノッチ数に応じてループ毎の減算を実行して行きます。従ってノッチ数が大きいと急速の速度を落とすことができますが、電車は急には止まりません!


7)デューティ値の演算。Nゲージのモデルによって、モータの仕様、ギヤ比および動輪直径の違いによって、デューティ値と車速の関係は異なってきます。このため、レンジ選択スイッチによって、その関係式の勾配を変化させました。のろのろ運転の河合の小型機関車からすっ飛び屋の鉄コレや昔のモデルなど様々です。そこで、ロータリスイッチの8個の選択に従って勾配値をほぼ等間隔に設定しています。


8)微調整値の演算。当初は常灯レベルの調整のためでしたが、最終的には上記で計算したデューティ値に単純に換算するようにしました。調整幅は 0~15 程度までです。


各制御の係数は、テスト走行を実施しながらチューニングを実施しました。スケッチで記述した数値を変更するだけで対応できますので、チューニングは容易でした。
   記述したスケッチの内容


モータドライバの選定
デューティ値と車速の関係が線形に制御出来るドライバは、自分が確認した物では、東芝製のTB6612(デュアルチャンネル)とROHM製のBD6231(シングルチャンネル)です。さらに、BD6231は制御B方式を使用し、PWM信号と出力が負論理となっているので、デューティ値を0なら100に、100なら0と逆にして制御する必要があります。今回はシングルチャンネルのBD6231を使用しました。


■ 運転状況
コアレスモータ搭載車を走らせた状態を動画で紹介致します。


低速運転でもスムースに走っている事が分かります。しかし、狭いレイアウトでポイントあり、厳しS字カーブありで、多くの車両が脱線するトラブルに見舞われています。もう少し余裕のあるレイアウトで楽しむことにしましょう。