HOME >> 鉄道模型自動運転システム >  卓上レイアウトで楽しもう 自動運転 その17

卓上レイアウトで楽しもう 自動運転 その17

 今回は、システムの簡素化対策の一環として、信号機用制御マイコンを独立させる工作を実施しました。 

 

  .

■ 新信号機ユニットの工作

 今回の工作はずいぶんと手抜きを実施しました。 工作材料として用いたものは、下左の写真のように、ゴミ箱予備軍であるジャンク品箱の中から探し出してきましたセンサ関係部品です。 バラバラになっている左半分の部品は、TOMIXの信号機の残骸で、線路脇から少し離れた位置に信号機を設置するためにセンサ部分と信号機部分を分離させたものです。 壊れたというよりも壊した部品ですが、レイアウト変更によってジャンク品扱いになっていました。 そこで今回はこの部品を再利用することにしました。

 右端の部品は、TCSワイドレール・スラブレール用センサ(品番:5567)で、ストレートレールS70を加工して取り付けていた物ですが、分解時にマイナスレール側の接触子を破損させてジャンク品となってしまった部品です。 破損した接触子を探しましたがありませんでした。 でも、構造からみると無くても加工できそうでしたのでこちらの部品も活用することにして、2個の新信号機ユニットが作れることを確認しました。

 信号機の回路構成は、フォトカプラ TLP785 を使用して通過信号を読み取り、8ピンのPICマイコンである PIC12F683 で制御して、TOMIX の信号機を点灯させようとするものです。 外部から 5volt の電源と、列車通過後の信号の色を指定する指令用の信号線を設け、中央のメインマイコンから、緑か赤かを指令させるように構成しました。 回路図を右上に示します。

 工作は、ユニバーサル基板を切り出して、下の写真のように部品を取付けました。 抵抗とコンデンサはチップ部品を使用してハンダ面(裏側9に取り付けています。 信号機を取付ける4本のピンは、φ0.5mm の銅線を使用して配線しています。 「システムの構成要素 信号機を作ろう」 の “TOMIX製信号機を利用しよう” を応用したものです。

 センサ部分からは、接触子を下から押さえているバネの端部と、マイナス側線路にポリウレタン線をハンダ付けして信号を取り出します。

 そして、基盤のフォトカプラの入力端子に接続してハード回路は完成です。

 

■センサの出力波形をチェックする

 通過センサの信号処理が機能しているかどうかをオシロで確認しました。 これは鉄道模型工作実験室のモットーです!

  .

  .
  .

 レールにはコントローラから給電を実施している状態でPIC マイコンへの入力端子の電圧を観察しました。

 その時の波形を左上に示します。

 4個の車輪が通過していますが、通過時に電圧がゼロまで低下していません。 この回路は負論理なので、確実にゼロまで落ちている事が必須なのです。

 原因は、出力側のプルアップ抵抗が小さ過ぎたので充分に下がり切らなかったと判断しました。 そこで、回路図に示したように、1KΩの抵抗を3.3KΩに変更しました。 その時の波形が左の下側の画面です。 車輪が通過時には完全にゼロまで落ちている事が確認出来ました。

 

 

 

■ プログラムを作成する

 ハード回路の機能が確認できたので、今度は制御ロジックを検討しました。 何時ものようにフローチャートを書いてみました。

 簡単な制御であるため、簡単!簡単!と気楽に取り組みましたが、今回もまたウロウロでした。 作動のチェックは、書き込んだマイコンを信号機に装着し、Bトレ車両を走らせて確認する作業を実施しました。 今後の参考として、今回の失敗例を列挙しておきます。

  1. アッセンブラを使うため、以前使用していた MPLAB IDE v8.92 を起動してアセンブラを記述しました。 アッセンブラは、MPLAB IDE を使用し、C言語使用は、MPLAB X IDE v5.30 を使うことにしていたからです。 そして、これも以前使用したPIC12F683に、PICkit3 を使って書き込み、作動をチェックするも全くおかしな作動でした。
  2. プログラムがおかしいと考えて、単純な赤、橙、緑の順次点灯プログラムを記述し、動作チェックしましたが、これも同様におかしな動作でした。
  3. 古い石を使用したので、昔のプログラムが残っていると考えて、新品の石に書き込みましたが、今度はダンマリの状態でした。 ここでやっと、PICkit3 が書き込んでいないことに気が付きましたが、原因はなぜだか、さっぱり分かりませんでした。
  4. この旧バージョンの MPLAB IDE v8.92 を使用するのを諦め、新しいバージョンの MPLAB X IDE v5.30 を使うことにしました。 プログラム・ファイルの扱い方が異なっており、プログラム内容をコピー and ペーストすると表示が異なっていましたので、新しく一から打ち込み直すことにしました。 この時、確実に作動すると思われるサンプルを参考にすることにしました。  参考にしたのは、 「PICで遊ぶ電子工作」 (http://mitt.la.coocan.jp/pic/index.html#683) さんの 「内部クロックで動作させる」のプログラムをそのまま記述して、書込みました。 動作チェックはブレッドボード上に構成したLEDを点灯させるものですが、問題無く作動することを確認できました。
  5. 意を強くして、上記のフローチャートをもとにプログラム記述し、信号機に装着すると、今度は正常に近い作動を示してくれました。
  6. 記述の中の緑と赤の点灯フローに、0.1sec の遅延部分を挿入すると、狙いどうりの作動を実行させる事が出来るようになりました。
 1 ;**********************************************************
 2 ;Singoki-6
 3 ;       PIC12F683    MPLAB X
 4 ;       2020/2/3
 5 ;***************************************************
 6 
 7         #INCLUDE <p12f683.inc>
 8 
 9         __CONFIG _FOSC_INTOSCIO & _WDTE_OFF & _PWRTE_ON &
_MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON &
_IESO_OFF & _FCMEN_OFF 10 11 T05mCNT equ 020h 12 T100CNT equ 021h 13 T05SCNT equ 022h 14 15 ORG 0 16 17 INIT 18 MOVLW 07h 19 MOVWF CMCON0 20 BSF STATUS,RP0 21 MOVLW B'101000' 22 MOVWF TRISIO 23 MOVLW 070h 24 MOVWF OSCCON 25 CLRF ANSEL 26 BCF STATUS,RP0 27 28 BSF GPIO,0 ;信号緑を消灯 29 BSF GPIO,1 ;信号橙を消灯 30 BCF GPIO,2 ;信号赤を点灯 31 32 MAIN 33 BTFSS GPIO,3 ;センサをチェック 34 GOTO ORENG ;赤橙点灯へ 35 36 BTFSC GPIO,5 ;指令をチェック 37 GOTO GREEN ;緑点灯へ 38 39 BSF GPIO,0 ;信号緑を消灯 40 BSF GPIO,1 ;信号橙を消灯 41 BCF GPIO,2 ;信号赤を点灯 42 CALL T100mS 43 GOTO MAIN 44 45 ORENG BSF GPIO,0 ;信号緑を消灯 46 BSF GPIO,1 ;信号橙を消灯 47 BCF GPIO,2 ;信号赤を点灯 48 CALL T05S 49 50 BSF GPIO,0 ;信号緑を消灯 51 BCF GPIO,1 ;信号橙を点灯 52 BSF GPIO,2 ;信号赤を消灯 53 CALL T05S 54 GOTO MAIN 55 56 GREEN BCF GPIO,0 ;信号緑を点灯 57 BSF GPIO,1 ;信号橙を消灯 58 BSF GPIO,2 ;信号赤を消灯 59 CALL T100mS 60 GOTO MAIN 61 62 T05mS 63 MOVLW D'249' 64 MOVWF T05mCNT 65 T05mLP NOP 66 DECFSZ T05mCNT,F 67 GOTO T05mLP 68 RETURN 69 70 T100mS 71 MOVLW D'200' 72 MOVWF T100CNT 73 T100LP CALL T05mS 74 DECFSZ T100CNT,F 75 GOTO T100LP 76 RETURN 77 78 T05S 79 MOVLW D'20' 80 MOVWF T05SCNT 81 T05LP CALL T100mS 82 DECFSZ T05SCNT,F 83 GOTO T05LP 84 RETURN 85 86 END 87

 今回の失敗より、MPLABMPLAB X で使用する PICkit3 のフォームウェアが異なるかも知れないと思いました。 そういえばPICkit3 のSTATUS ランプが点灯していなかった様な気がしました。 自分としての結論は、新旧のソフトは同じように使えないと言う結論にしたが・・・・・・・・・・。

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

 その後、この報告をまとめながら確認していると、意外な原因であったことが判明しました。 自分の使い方が間違っていたのでした!

 

 使用していたノートパソコンの画面が小さいので、画面表示を150%に拡大してして使用していたのでしたが、下に示す操作画面でチェックを入れたものの、画面から隠れていたOKボタンを押さずに先に進んでいたのである。 画面ではボタンが見えなかったので、チェックすればそれでよいと勝手に判断していたのである。 

 画面設定を100%に戻して、操作すると問題無くSTATUS ランプが点灯して書込み作業を実施していました。 単純な操作ミスであったのです。 なんとこのために2日間も無駄にしてしまったのです。 ドジですね!

 

◆ プログラムの内容

 今回作成したプログラムを右に示します。 上記の様なドジを踏んだため、プログラムのバージョンは、Singoki-6 となってしまいました。 記述方法は、参考にした「PICで遊ぶ電子工作」さんの記述方法をまねています。

 

■ 信号機の作動をチェックする

 信号機の作動をチェックしました。 使用した道具を下の写真に示します。 簡単な周回路を作り、Bトレ車両を走らせました。 コントローラはTOMIXのN-1001-CLを使用しています。 信号機への電力は5VのACアダプラ使って供給しました。 また、指令信号は、ジャンパー線を使って+5またはGNDに接続させました。

 信号機部分は、先回と同様に、0.5mm のプラ板にセンサーレールと信号機をMTテープを使って貼り付けています。 

 信号機の点灯状態を下に示します。

 それぞれの信号が綺麗に光っている事が分かります。 また、その作動も狙った通りの動作を繰り返しており、問題ないことを確認しました。

 作動状態の動画を紹介します。

 なお、速度をこれ以上遅くすると、コアレスモータの動力車は走るのですが、センサは応答してくれませんでした。 次回は、ジャンク品のスラブレール用センサを活用して工作することにします。

 

ページトップへ戻る .


 2020/2/5 作成