HOME >> 鉄道模型自動運転システム > 卓上レイアウトで楽しもう 自動運転 その13-2
今回のレイアウトは、外側と内側の周回路に、リバースサークルを追加したものです。 その自動運転の仕掛けを紹介しましょう。
.
■ レイアウトの細工
自動運転を実施するためのセンサ等の細工を説明します。 まず、コントローラからの電力をそのまま給電するためのフィーダー設置場所は、右のレイアウト図の周回路中の F0 に示すポイントに設置しました。
駅構内での停車と発車を制御するために、駅構内の出入口にギャップを設け、制御された給電ポイントを F1 と F2 に設けました。 そして、駅構内の先端近くに列車の通過を検知するセンサ S1 と S2 を設けました。
今回の実験は、まず単純な周回パターンでの運行をテストするのが狙いですので、リバースのためのポイント操作は未だ、実施しません。 ステップ・バイ・ステップで実験を進めるのが王道です。
このため、制御回路の構成は、今までの構成からポイント駆動回路の配線と二つのセンサ回路を外した状態で実施いたしますので、説明を省略します。
■ プログラムの内容
先回のプログラムに手を加えて下記のように記述しました。 まず、最初は単純な毎回停車と発車を繰り返す各駅停車モードを下の左側のリストに示します。 ヘッダー部分などの宣言部は省略しています。
また、RA2 ポートは給電をON/OFF させる出力ポートで、0 で給電停止、1で給電状態を指示します。 また、RB2 ポートはセンサの信号を受ける入力ポートで、回路は負論理で構成されていますので、0でセンサON、1でセンサOFFを示します。 即ち、(RB2 == 0) の条件は列車が来た事を知れせる信号となります。 そして、駅に列車が来れば、減速させて給電を停止して停車させ、2秒間待たせておきます。 2秒経つと今度は給電をONにして発車させますようにしています。 68行目の2秒待つ命令は、発車して行く自分自身の通過センサの信号によって自分自身を停車させないようにしています。
つぎに、この運転制御に駅を一回だけ通過させるプログラムを追加して快速運行モードとしました。 駅の通過回数をカウントする変数 stp を設けて、0なら通過し、1なら停車するように設定しました。 下右のリストです。 各駅停車モードの 53 行から 61 行の間に、変数 stp をチェックする if 文を入子にしています。
こjこでも、 __delay_ms(2000); の命令を使用し、一度でも通過センサに引っかかると、列車が通過してしまうまで、制御を待たせるようにしています。
各駅停車モード ************************************* 50 CCPR3L = 255; // デューティ比100% 51 RA2 = 1; // 給電ON 52 53 while(1){ 54 if(RB2 == 0){ //停車 55 for(spe=255; spe>-1; spe--){ // 減速開始 56 CCPR3L = spe ; // デューティ比出力 57 __delay_ms(5); 58 } 59 RA2 = 0; // 給電停止 60 __delay_ms(2000); //2秒待つ 61 } 62 else if(RA2 ==0){ //発車 63 RA2 = 1; // 給電開始 64 for(spe =0; spe<256; spe++){ //加速開始 65 CCPR3L = spe ; // デューティ比出力 66 __delay_ms(5); 67 } 68 __delay_ms(2000); //2秒待つ 69 } 70 else{ 71 __delay_ms(10); 72 } 73 }
快速運行モード ******************************************** 50 CCPR3L = 255; // デューティ比100% 51 RA2 = 1; // 給電ON 52 stp = 1; 53 54 while(1){ 55 if(RB2 == 0){ //停車 56 if(stp == 1){ 57 for(spe=255; spe>-1; spe--){ // 減速開始 58 CCPR3L = spe ; // デューティ比出力 59 __delay_ms(5); 60 } 61 RA2 = 0; // 給電停止 62 __delay_ms(2000); //2秒待つ 63 stp = 0; 64 } 65 else{ 66 __delay_ms(2000); //2秒待つ 67 stp = 1; 68 } 69 } 70 else if(RA2 ==0){ //発車 71 RA2 = 1; // 給電開始 72 for(spe =0; spe<256; spe++){ //加速開始 73 CCPR3L = spe ; // デューティ比出力 74 __delay_ms(5); 75 } 76 __delay_ms(2000); //2秒待つ 77 } 78 else{ 79 __delay_ms(10); 80 } 81 }
■ 作動状態
今回は、鉄コレの小型の電車を持ち出して走らせてみました。
この時の走行動画を紹介します。
■ 使用するパワーユニットについて
なお、この実験中に思わぬトラブルに遭遇しました。 それは、以前から心配していたパワーユニットの問題です。 動画でご覧の通り、正常に走行している場合のパワーユニットは、N-400 を使用しています。 しかし、先回の制御無しレイアウトでは、N-1000-CL を使用していました。
そして、制御を追加した場合も同様に、このユニットを使って鉄コレの電車を走らせたのですが、電車は猛スピードで暴走し、カーブを曲がりけれずにレイアウトから飛び出して脱線してしまいました。 ダイヤルを絞ると走り出しません。 動かないか、暴走するのかのどちらかです。 すぐに、パワーユニットのPWM制御が問題と考えて、パワーユニットを交換しました。
.
PWM制御のパワーユニットの場合、今までは、KATOのコアレスモータを使っていたため、この問題が大きく出なかったと思われますが、鉄コレでは顕著に表れたものと推察します。 周回路の給電は直接的には制御をしていないので問題ないはずと思っていたのが間違いだったようです。 この回路は、「自動運転 その11」(2019/12/22)に示していますので参照ください。
制御を通していないのに何故か?
この疑問は、使用していたモータドライバの回路図を見て納得しました。 このユニットは秋月から購入したもので、「TB6612使用Dual DCモータドライバキット」K-11219 です。 その回路図を見ると、右のように、モータ電源の供給側とGND側にコンデンサが挿入されており、その品番より、10μFのチップコンデンサでした。
こりゃーあかんわ!
室内灯で使用していたコンデンサ問題と同じですね。 このコンデンサによって、パワーユニットから供給される12VPWM電力は、パルスが鈍ってしまって、DC12Vそのものになっていると思われ、鉄コレ電車は暴走したものと推測します。 ここにコンデンサがある事は始めから分かっていましたが、ノイズ侵入防止のためのパスコン(一般には0.1μF程度)だと勝手に解釈していましたが、こんなに大きなコンデンサとは知りませんでした。 油断していましね。
ほんとうなら、オシロで確認すべきですが、その必要な無いと判断します。
注意事項: この自動運転では、PWM制御式のパワーユニットは使用できません!
よろしく。
2020/1/9 作成