Nゲージレイアウト用制御盤 (その7) ポイントマシン制御盤部

ポイント制御盤部

外見が出来上がってきてすっかり満足し、その先に一向に進めなかったが、ぼちぼちと。

レイアウト製作に着手できる時期がちょっと不明。
なもので、実際にレイアウトの台枠を作るときに今の構想とは多少異なるかも・・ということでレイアウト用制御盤はレイアウト本体と分離して作り始めている。
 
分離して作ることによって問題となるのは制御盤とレイアウト上のポイントマシンなどの配線。
制御盤とレイアウトの配線が相当多く、複雑になりそう。
また、この制御盤は本物のように発点と着点を指定するとその経路上のポイントを必要な方向に転換するという感じで作り始めている。
PICマイコンで制御するのであるが、バグがあれば当然ポイントは切り替わらない。
すると、列車も走らすことかできない。
 
Nゲージの走行を楽しむためのレイアウトなのか、PICマイコンでポイントが切り替わるのを楽しむためのレイアウトなのか分からなくなる・・・
まぁ、どっちでもいいかな?
 
発着点から経路上のポイントに転換の指示する制御盤部とレイアウトの台枠部分に組み込んでポイントマシンを実際に制御する部分に分けた構成。
 
制御盤部のPICマイコンとポイントマシンを制御するPICマイコンはI2C通信。
制御盤部のPICマイコンをマスタとし、レイアウトのポイントマシン制御部の複数のPICマイコンはそれぞれスレーブとすることで制御盤部とポイントマシン制御部の配線はかなり減らせるはず。

 

ポイント制御盤部
制御盤部の内側。
ひとまず、ターンテーブル操作用の配線を。
制御盤のベース部分に配線を集約していくつもりなのだが・・

このあと、テコ用のロータリースイッチの配線やら、LED用の配線やら・・
ウ~ム、故障時にわけ分からなくなりそう。
それ以前に作成途中でもわけ分からなくなりそう。
 
全部の配線を制御盤のベース部分に集約する前に、一旦この上の部分だけで完結させてLEDの点灯試験やテスターでスイッチがどうなっているかを判定できるように中継用の端子台を作ったほうが良さそう。

ポイント制御盤部
こちらは、レイアウトの台枠部分に組み込むポイントマシンの制御部。
 

18個のポイントマシンはレイアウトの左右に分かれて配置される予定なので、制御部も2つ作ることにした。

ひとまず、これまで作ってきたMP3やらWAVファイルを再生するPICマイコンを組み込んだ。
機関区を作る予定の側のPICマイコンではドンキーポンプやら汽笛の音を再生、反対側は駅のアナウンスやら雑踏の音やらを再生。
 
音源も準備ができて、組み込み完了。
・・スイッチの切り替えたり押すボタンによっていろいろな音の再生ができるのであるが、実際に操作するとどのボタンがどの音かすぐに忘れる。
一覧表でも作って近くに置いとかなくちゃ・・
 
 

ポイントの制御もPICマイコン。
PICマイコンは1つのポイントに対して1つ。

ポイント制御盤部
パーツのレイアウトを検討中。
安い基盤を使ったら、ソリのひどいこと、ひどいこと。
このままハンダ付けして、台にネジ止めするときに真っ直ぐ伸ばすだけで断線は必至。

細い木の棒などをネジ止めして矯正じゃ。
 
本来は進路を構成する制御盤部のPICマイコンの指示によってポイントマシンを制御するのであるが、バグやトラブルなどで進路が指定できなくなると列車が走行できないレイアウトとなる。
 
そこで、レイアウトの台枠部分に配置するこの基盤上にポイント切り替え用のタクトスイッチを置くことにした。
それぞれのPICマイコンに対して定位に切り替えるタクトスイッチ1個、反位に切り替えるタクトスイッチ1個。また、今どちらに開通しているのかはポイントマシンに付けたマイクロスイッチによって調べるのだが、ちゃんと検知できてるかがすぐ分かるようにLEDを点灯させることにした。

Nゲージレイアウト用制御盤 (その6) 進路の制御盤パネル

今回作成しているNケージレイアウトの制御盤の目玉のひとつ、進路の制御盤。
要は、レイアウトのポイントを転換するテコを本物みたいな感じで作ろうというもの。
で、いよいよそのパネルの製作。

まずはテコ。
信号テコ
こちらは、本物のテコ。
枠は頑丈で奥行きがある。そしてネジの緩み止めなどもちゃんと施されている。

さすが、重要部品。

実物のテコの頭をシリコン&レジンでコピーすることも考えたが、それじゃぁ本物の制御盤と同じ大きさが必要になる!?
ということで、ちょっと小さめのサイズのものをモデラで削りだしてレジンで量産。

実物の信号テコと模型用自作信号テコ
左:削りだしてレジンで量産したテコ
右:本物のテコ

多くのテコは中立の位置と左右に倒した位置の3点に切り替えられる。
切り替えるときはカチッ、カチッと節度がある動作なのでこれは実現したい。
ただ、なるべく小さく作りたいのでいろんな仕組みは考えず、市販のDIPロータリースイッチを使用することにした。

DIPロータリースイッチとテコ
このスイッチはエンドレスでクルクル回すことができる。
最初はストッパを作って3点しか動かないようにしようかと思ったが、私しか使わないスイッチ。
仕組みを考えて作りこんでも結局は自己満足で終わるのが目に見えているので無駄な努力はしないことにした。

肝心のテコは裏側にDIPロータリースイッチの頭が入る穴をあけ、瞬間接着剤で固定することにした。
この頭を埋め込んだテコの部分はスイッチ本体から外すことができる。

続いて制御盤のパネル。

進路表示用青色LED
開通している進路を表示するのに青色の表面実装型のLEDを使用することにした。
光らすとこんな感じ。

進路表示用青色LED
進路を表示しようとすると複数個のLEDが点灯することになり、照度を落として光らせても目が痛いかも。
ということで、1mm厚の白色のプラ版の裏側から光らせることにした。

進路表示とは別に信号機の表示もLEDで点灯させることにした。
こちらは砲弾型のLEDで光を和らげるため拡散用のキャップをかぶせることにした。

パネルベースのアクリル板
プラ板だけだとヨレヨレになってしまうので、3mm厚のアクリル板をベースにしてその表面にプラ板を貼り付ける。

アクリル板にはテコ用のロータリースイッチの穴、LED用の穴などを明けていく。
ロータリースイッチの穴は本体が入るように四角。

ウ~ム、結構穴だらけ。

裏側に基盤を取り付けるためのM3のネジ穴もあける。

パネルベースのアクリル板と表面のブラ板
表面に貼り付けるプラ板にはロータリースイッチとLED用の穴を明ける。
ロータリースイッチの穴は軸が通るだけの丸穴。

ネジ穴はアクリル板だけにして表面からは基盤取り付け用のネジの頭が見えないようにした。

当然ながら、プラ板とアクリル板の穴の位置が合わないと、穴ぼこだらけで再利用できないプラ板とアクリル板になってしまう。orz

線路表示用パーツ
制御盤上に線路の部分を表すラインは別のプラ板から切り出したパーツを貼ることにした。

塗装した進路表示盤と線路表示パーツ
プラ板とアクリル板を貼り合わせたところで塗装。

進路表示盤に線路表示パーツを貼付
線路の部分は塗装のかわりに区間ごとに色の違うテプラのテープを貼って、LEDを透過させる部分は塗装を剥がし、テープも隙間をもたせた。

が、・・結果、どうもテプラのテープだとテカテカしすぎる。

ウ~ム、線路部分はもともとパネルのマスキングが大変そうなので別パーツにしてテプラのテープを貼ろうと考えたのだが、やっぱ線路の部分も塗装で表現したほうが良さそう。

進路表示盤に線路表示を塗装で再現
と、いうことでマスキングを繰り返しながら塗装。

まぁ、こんなもんでしょうか。

パネルのサイズは450mm×200mm。

塗装が終了した進路表示盤
結局信号機の部分も塗装で表現。

進路を示すLEDの部分は切り抜いてあり、その上に貼るパーツを透過させる予定だったが、上に貼るパーツがなくなった今・・・
結局LEDがそのまま見えるようになってしまったとさ。

・・世の中、思い通りに行かないことは多々ある。ウム、しょうがない。orz

進路表示盤用基盤
テコ用のDIPロータリースイッチ、着点を選択するためのタクトスイッチ、LEDなどを取り付ける基盤。
3分割してあり、アクリル板にねじ止めする。

進路表示盤用基盤にパーツを配置
基盤の表面はこんな感じ。

進路表示盤に基盤を取り付け
基盤の裏面はこんな感じ。
この基盤はスイッチとLEDを配置したもので、実際に制御するPICマイコンは別の基盤に作りこんでケーブルでつなぐ予定。

基盤の右上にあるのは「Nゲージターンテーブル (その1) ロータリースイッチを作る」で作ったターンテーブル操作用のロータリースイッチ。

完成した進路表示盤のパネル
線路の番線番号、信号の番号などをテプラで作成して貼り付け。

左上部にはターンテーブルのコントロール用スイッチがある。
この部分の線路の色塗りは別パーツに塗ってして貼り付けることにした。

完成した進路制御盤パネル
進路制御盤の心臓部・PICマイコンによるポイント転換の制御はまだまだ未完成なれど、結構形が出来上がると、さぁ、もうひと踏ん張り

・・という具合にはなかなか進まないのであるが。

ちなみに、この写真ではまだテコはついていません。
テコをつけるのは基盤のロータリースイッチなどのパーツの配線が終わってからの予定。

完成した進路表示盤のパネル裏側
裏面はこんな感じ。

Nゲージレイアウト用制御盤 (その5) 音の部分2

レイアウトの音としては、市販のMP3プレーヤーボードMK-144を使ってBGMのほか、列車の接近、発車時のアナウンス、自作のWAVプレーヤーを使ってディーゼルエンジンのアイドリングの音やら汽笛の音などを再生。

今作っている制御盤にはMP3プレーヤーボードMK-144は4台を組み込んでいて、MK-144が持っている機能でボタンを押すとBGMが流れるところまでは作ってあるので、今度は駅のアナウンス類の再生のスイッチをPICマイコンで作って取り付けるのと、WAVプレーヤーの組み込み。

ちなみに、レイアウトは4番線まで作る予定で4台のMK-144はそれぞれの番線のアナウンスを行う。
スピーカー部はステレオで2組を用意してあり、切り替えスイッチで全ての音をミキシングして1組のスピーカーに出力したり、2組に分けて出力したりすることができるようにしてある。

試しに手動で1~4番線の音を全て出したりして試したところ・・・一応聞き取れることはできるが・・やかましい(^^;
2組のスピーカーを使って分けて出力してみると・・聞き取り易さは増すが・・やかましさもさらに増す。

まぁ、実際にレイアウトに組み込んだときは全ての番線の音は一斉に出すことはしないと思うが、それでもスピーカーは1組だけで良いかもしれない。

WAVプレーヤーは鉄道模型レイアウト・プラモデル展示台用の音(PICでWAV再生) 2で作ったものをカスタマイズ。

押しボタンを押されることによって、対応するWAVファイルをSDカードから読み込んで再生する。
ただ、性能上サンプリングレート8kのものが限度で、それ以上のレートのものの再生は難しい。
なもんで、音質は求められないのでもっぱらエンジン音やら汽笛などの音の再生専門。
ただし、1つのPIC24FJ64GA002でモノラル2ch分の処理は可能。従ってスピーカーは2つで、同時に2種類の音を再生することができる。

PIC16F886が1個で20個のスイッチのON/OFFを判定し、PIC24FJ64GA002に再生するコマンドを送信する仕様。

MK-144の方は同じようにPIC16F1823で4個のスイッチのON/OFFを判定し、再生するコマンドを送信する。
こちらは1つのMK-144に対してPIC16F1823は1個が受け持つ。

WAVプレーヤー
で、基板が完成。
左がWAVプレーヤーとアンプ部。
青色のパーツは端子台で、12V、5V、3.3Vの電圧を他の基板に供給するためのもの。

右下はPIC16F1823が4個。
MK-144はすでに制御盤の箱の中に組み込んである。

空き地にはポイント制御用の回路を作りこむ予定。

 

WAVプレーヤー組み込み
出来上がった基板を制御盤に組み込む。
この基板の上部の蓋となる部分に押しボタンが並ぶ。

白く見えているのが蓋。

その右側の黒いロータリースイッチは、PWMコントローラの出力をどの線路に出力するかを設定するスイッチ。



アラ!?


アラ、アラ!?


蓋となる部分にある押しボタンスイッチの配線やらPWMコントローラの出力切り替え用の配線が突っかえて蓋が閉まらん・・


ウ~ム、行き当たりバッタリ方式は最近行き当たりバッカシ・・


さて、天井のスイッチの配線を直すか、基板を直すか。
WAVプレーヤー 基板
ウォーリャっと、PIC16F1823が4個ある部分の基板をギーコ、ギーコと鋸で欠き取り、後方に後退。

ここの空き地は、ポイント制御用の回路を作りこむ予定地。
行き当たりバッタリで、エイ、ヤーと基板を欠き取ってしまったが、本当に良かったのだろうか!?

ポイント制御用の回路を作りこむ時に後悔するのかも知れない・・

 

WAVプレーヤー 基板
・・基板を欠き取るとき、じっくり考えもせず、天井から見て基板の部品が見える位置まで後退させりゃいいやとギーコ、ギーコと鋸を入れたが、その後で気がついた。
・・ホントにここの部分だけが干渉していたのだろうか・・・

 

WAVプレーヤー 基板
・・ひとまず綺麗に収まった。
一安心。

 

WAVプレーヤー 制御スイッチ
天井部分には再生用の押しボタンスイッチ34個。

押しボタンスイッチもこれだけあると結構なお値段がするので、コストを抑えるため1個あたり10円と一番安価なタクトスイッチにした。

基板上にハンダ付けし、天井部分の板に穴あけしてスイッチの頭がのぞくようにしてある。

 

基板の上部にはポイントの制御盤がつくので、基板上のWAVプレーヤー部のボリュームには直接アクセスできなくなるであった・・
・・ウ~ム、忘れてた(^^;

制御盤 内部
制御盤の箱の前方左側に穴をあけてボリュームとスピーカーの切り替え用のロータリースイッチを配置した。

WAVプレーヤーの再生音は、制御盤の箱の後方につけたスピーカーから出すことができるほか、レイアウトに組み込むときはレイアウト付近に配置したスピーカーからも音を流すことができる。

レイアウトが大きくなればなるほど離れたホーム付近からアナウンスが実感的に聞こえる。
が、現実にはちっこいレイアウトしか作れないのでどこで音がしても同じかもしれない。
カナシー・・

 

MP3 制御部
箱の中の右側には市販のMP3ボードとBGMをダイレクトに再生するための押しボタン(タクトスイッチ)。

 

制御盤 背面
背面のスピーカーにはネットを貼った。

外部スピーカーを接続するコードもMP3音源、WAV音源用それぞれに配置。

 

これで制御盤の下半分は完成・・したのか!?

Nゲージレイアウト用制御盤 (その4) PWMコントローラ

電気機関車の運転台を模した、PWMコントローラを製作中であるが、これはハンドル類が複数になる予定。
動いている列車を眺めるなら、スイッチ1つで運転ができるパワーパックが欲しい。ということでロータリースイッチ1つで運転できるPWMコントローラを作って制御盤に組み込んだ。

「ArduinoでPWMパワーパックを作ってみた」というページを参考にさせていただいて、それをベースにごちょごちょとカスタマイズ。
アリガトウゴザイマシタ・・。

PWMコントローラ部
プログラムやハード部分がちょっこっと違ったバージョンを3つほど作成した。
4つ目のパワーパックはトミックスのパワーパック。
ここまでを制御盤上に置くことにした。

現在作成中の電気機関車の運転台を模したコントローラはPICマイコンを使ったものになるが、電車用も作るつもりなので、パワーパックは合計6台。

一方、レイアウトの方は固定式として線路配置の案もできた。
運転線区は上り線、下り線、機関区など8個のブロックになる。
運転線区とパワーパックをくくりつけてしまうと、PWMコントローラで動かない列車はその線区で運転できなかったり、運転パターンがマンネリになるので、ロータリースイッチでパワーパックと運転線区が切り換えられるようにした。

コントローラ切換えスイッチ
8個ならんでいるロータリースイッチで切り換える。

フィーダー用プッシュターミナル
8連のプッシュターミナルを背面に取り付け、ここから線路に配線する。
となりの2連のプッシュターミナルは、制御盤の外に作る電機用と電車用のコントローラからの入力。

 

スイッチを配置するパネルの部品
スイッチを配置するパネルは合板を使って、表面には文字を印刷したシール。
MP3再生ボードの再生スイッチは基板上にタクトスイッチを配置して、合板にはスイッチ本体分が収まる穴をあけ、表面にはタクトスイッチの丸い頭の部分のみがでるようにした。

ロータリースイッチは軸の部分が樹脂製で長さを自由にカットできるタイプ。
つまみが表面にでるようにしてカットして合板に止めた。

裏から見たところ
裏から見たところ。

スイッチを配置するパネル
スイッチを配置するパネル、完成。

 

サウンド再生用ボタン
ロータリースイッチの左側は、Nゲージレイアウト用制御盤 (その1)で作ったMP3再生ボードの再生スイッチ。
こちらもPICマイコンで制御するつもりだが、駅の発車の合図、発車の際の汽笛類などのサウンドが再生される・・予定。

まだまだ、作りこむ部分がいっぱいあるのだが、なんとか形になってきた。

 

Nゲージレイアウト用制御盤

緑のパネルはポイント切り換え用のスイッチを配置するためのもの。
今はすっきりして見えるけど、そのうち切り換え用のテコがつくとゴチャゴチャします・・

 

で、冒頭にあるようにここで作成したコントローラは、「ArduinoでPWMパワーパックを作ってみた」を参考にさせてもらって作り始めました。
最初からカスタマイズすると何が悪いのかわからなくなるので、まずはHPに掲載されている回路図とソースプログラムをそのまま使用させてもらいました。

 

電源を投入すると7セグメントLEDに値が表示されたが、ロータリースイッチを回していくと多くのポジションで0などと表示され・・どうも、出力先には電圧が印加される気配がない。

ソースを拝見すると、ロータリースイッチの入力を判定する部分は、次の部分のようです。

——–
#define MASCON masconvol( analogRead( 3 ) + 42) // ロータリースイッチ 1~12

int masconvol(int vol){ // マスコン位置検出
// 0~1023の入力を12段階に分ける さらに3段階に分けて真ん中の時だけ採用
// 中途半端な位置の時にでたらめな入力になるので
int a;
if ( (vol * 10 / 284) % 3 == 1 ){
a = 13 – vol / 85;
} else {
a = 0;
}
return a;
}
——–

推測するに、私が作成したロータリースイッチの部分の回路では、analogReadで返される値は、3で割ったときに余りが1にならない?

ひとまず、何が返ってきているのか確認。

ロータリースイッチの部分のみをArduino unoのボードの5V端子とGND端子、A0端子にとりつけ、シリアルモニターに出力。

————-
void setup() {
Serial.begin(115200UL);
}
void loop() {
int value = analogRead(A0);
Serial.println(value);
delay(1000);
}
————-

返ってきた値は、
1023
931
838
745
651
558
464
371
277
184
90
0

ちなみに、ロータリースイッチはノンショーティー。上記のように1000ms毎にanalogReadすると、切り換えた瞬間に、たまに戻ってくる値が1くらいふらつくことがありますが、すぐに安定して同じ値を返してきます。
と、いうことは、余りが1以外で安定されるとマスコンの位置は常に0と判断されます。

 

抵抗の誤差もあるし、電源も基準電圧回路ではないので、もし、動かないのであれば、このあたりのソースを変更されたらいいんじゃないかなぁと思います。
ちがったら、ゴメン m(__)m

 

私の回路の場合、ロータリースイッチを回しきったところ(スイッチ 12)では0が返っていますので、
————-
#define MASCON masconvol( analogRead( 3 ) ) // ロータリースイッチ 1~12
————-
として、

————-

int masconvol(int vol){ // マスコン位置検出
return 12 – (int)(((float)vol / 90.0) + 0.5);
}
として試してみました。

実回路上に組み込むとデバッグが面倒なんで、(float)など、間違いがないようにこれでもかとキャストしてますが・・余分なところは・・当然・・いりません(^^;
+ 0.5 を入れているのは、スイッチ 11の時、89などと90以下の値が返った場合に0となるのを防止するための切り上げです。

1 2