最近YouTubeでNゲージのスローアクションのポイントマシンを見ていると、ポイントを転換する部分の機構が極シンプルなものが見られるようになった。どれくらいシンプルかというと、ステッピングモーターの軸に簡単なパーツでピアノ線を付けたり、サーボモーターのホーンにピアノ線を取り付けたり。そのピアノ線をポイントマシンのスロウバーの穴に入れて直接動かすというもの。私が作っているものと違い、ゴチャゴチャとしたスイッチ類の部品やら機械的な構造部品はない。私がスローアクションのポイントマシンを作ろうと準備を始めたのが2015年の4月ごろ。今やっとレイアウトに組み込もうとしているのだが、YouTubeで見かけるような簡単な機構の物が保守の面でも良いに決まっている。今なら引き返せるぞ・・・ウン?引き返すのか?じゃ、なんで今の仕組みにしたのかもう一度整理してみよう。ステッピングモーターに停止スイッチをつけた理由どうせマイコンで制御するのだから、物理的なスイッチで停止位置を決めるのではなく、モーターを回転させる角度を判定して停止させれば良いと思ったのだが。ステッピングモーターで困るのが、現在の位置(すなわち角度)がわからないこと。わかるモーターもあるみたいだけど、安価なものじゃなかったハズ。定位の位置から反位の位置に転換しようとしてモーターが回転している途中に電源が落ちたりすると、次に電源を入れた時に今のモーターの位置、つまりポイントが定位/反位にあるのか、転換の途中の位置で止まっているのかがわからない。定位/反位に転換が終わってても、次に電源を入れた時は今定位にあるのか反位にあるのかわからない。皆さん、どうしてます?回答はいりませんが・・(^^;結局は電源投入時にポイントの位置が定位or反位になるようにステッピングモーターをチョコ、チョコ、チョコと動かすスイッチをつけて、ちゃんとポイントが定位or反位になっていることを確認する作業が必要になる。他にも良い案があるのかもしれないが・・思いつかん。レイアウトには17個のポイントを設置する予定。1個ずつ確認してすべてを定位にする。この作業を怠ると、ポイントは既に切り替わっているのに、モーターはさらに回転しようとして・・ポイントを壊すか、スロウバーを動かすピアノ線が外れるでしょうなぁ。ピアノ線が外れた時の復旧用に容易にレイアウト下にアクセスするためのスペースも考慮しておかなくちゃ。それに、レイアウトの電源を入れるたびに17個のポイントの位置を確認するなんて・・面倒だし、非現実的。これに対して、サーボモーターの場合(360°回転タイプでなければ)、通電時に右に回しきる/左に回しきるといったことが可能なので、レイアウトに通電したときに定位になる方向にすべてのサーボを回しきれば良いことになる。16チャンネルのように1つのPWMドライバで16個もサーボモーターが制御できるものを知らなかった。1個のポイントに制御用のPICマイコンが1つ必要と思っていた。サーボモーターも現在の300~400円で買えるものがあまり見当たらなかった。要はコスト的に高価なものになるなぁ、という感じだった。ステッピングモーターに停止スイッチをつけた電源投入時に定位/反位の停止スイッチが押されていれば、ポイントはそこにある。どちらのスイッチも押されていなければ、ひとまず定位側に移動する動作を行い、定位の停止のスイッチが押されるのを待つ。今なら引き返せるぞ・・・ウン!引き返えそう!で、ゴチャゴチャと前置き?が長くなったが・・サーボモーターの価格が安くなった以上、やっぱサーボモーターを使った簡単なものに作り変えじゃ~。ドライバー」を使うことにした。ポイントの転換などこのレイアウトを制御する頭脳はRaspberryPi。現在はメイン台枠の側面に移設してある。これがI2Cのマスターとなって関連するマイコンを制御する。ポイントの制御は線路配置図の上に設置したテコ。これは現在バラして、レイアウト側面に移設しつつある。周回駅部分のコントローラhttps://www.over-rabbit.com/pc/mycom-diary/18414/固定式レイアウトと制御盤を接続するフィーダー、I2C用の配線等々の接続はワンタッチで脱着できるものとしているが、その数は10本以上。固定式レイアウトとはいえ、多少の移動はできるようにしてあるが、実際に移動するときにこの配線が邪魔になりそう。web化したので、実質的には制御盤上のテコは不要といえば不要になった。Web版コントロールパネルhttps://www.over-rabbit.com/railway/ngauge/handcraft/controlpanel/18353/線路のどこにフィーダーをつないで、どこにギャップを切らなきゃならないのかが未だに決まらない。ゆえに、いつまでも線路が引けない。頑張って作ろうと思っているのだが、次から次にやりたいことが増えて・・Web版コントロールパネルを作ってみた。周辺の制御周りの物を作り替え、作り替えしていて、なかなか線路が敷けない。思い立ってから7年も経てば色々勉強してあっちのが良さそう、こっちのが良さそうと気も変わりますわな。簡単に運転したいというときに制御用のRaspberryPiを起動したり、終了時にシャットダウンさせたりするのも不便。いうときに備えて、電源ONで簡単に運転できるように3つのレイアウト台枠にそれぞれ補助の制御盤もを作ってきた。この写真はメイン台枠用の補助の制御盤。制御盤の下部には制御盤上の信号、レイアウト上の信号の点灯制御を行うマイコンなどを収納している。基盤は二階建てで、二階部分はポイントの制御を行うマイコン「PIC16F887」とRaspberryPiからの制御の中継を行う「PIC32MX120F032B」がある。ここの「PIC16F887」は補助の制御盤上部の押しボタンが押されたことを判断し、ポイントマシンの制御マイコンにポイントの転換を指示したり、ポイントマシンの制御マイコンから各ポイントが定位/反位のどちらに開通しているのかの状態を取得し、「PIC32MX120F032B」に通知するもの。「PIC32MX120F032B」はRaspberryPi(主コントローラ)からの制御の中継を行うが、RaspberryPiが接続されていない場合とか、この補助制御盤のスイッチでポイントを転換したときはローカルで制御するものとしてメイン台枠上の各マイコンをこのPIC32(副コントローラ)で制御するようにしてある。RaspberryPiがI2CのマスターとなってPIC32を制御するPIC32は実際には3分割された台枠それぞれに設置してあり、それぞれの台枠が単体でも運転できるようにしてある。PIC32はI2Cを2ch持っており、1chはRaspberryPiのスレーブ側として使用している。残りの1chを使ってこのPIC32がマスターとなってこの配下のマイコンを制御する仕組み。要は、RaspberryPiがあるときはそのコマンドやレスポンスを中継し、RaspberryPiがないときは、このPIC32が制御する。Nano互換ボード」を導入したこと。PCA9685はI2Cのスレーブとして動作するので、これを制御するI2Cのマスターが必要となる。改修前はPIC32がI2Cのマスターの機能をもっていた。ここにPCA9685の制御の機能を持たせると、ポイント転換中にRaspberryPiからの新たなポイント転換コマンドの割り込みが入るともうプログラムはひっちゃかめっちゃか。Nano用のものはネット上にあったが、PICマイコン用のものは見つけられなかった。Nanoを導入するのが簡単。Nanoを導入して、これがI2CのマスターとなってPCA9685を制御することにした。Nanoを制御するか。できれば、すでに作ってある基盤の作り替えはなるべく簡単にしたい。Nanoに送ることにした。配線はPCA9685に送るI2Cと電源の配線。手前の「青」「白」の配線はPIC16F887とのシリアル通信用の配線。Nano互換ボードを設置するレイアウトの台枠は1m程度の配線で結ぶことにした。プログラムを作って手元でテストしていた時には問題なく動いたが、実際の環境に取り付けてみると・・ウ~ム、動かない。配線の見直し、プログラムのチェックを行ったが、原因が全然わからない。Nanoからのシリアルの出力はPCのターミナルに表示し、PIC16F887からのデータをソフトウェアシリアルで受信してみることにした。それが、このピンヘッダの名残り。pin3(INT1)等のピンに割り振られた割り込みをすべて使用している。割り込み処理を書くとコンパイル時点でエラーとなるみたい。このことから運用時のシリアル通信はハードウェアシリアルを使うこととし、PIC16F887との通信のデバッグ時のみソフトウェアシリアルを使用することにした。デバッグしたところ、実環境では文字化けが発生していた。Nano互換ボードのシリアル通信を1m程度のケーブルで結んだことが原因のようだ。そこで、シリアル通信のケーブルをプルアップすることにした。これで、問題なく動作するようになった。補助制御盤は今後ももう少し機能を追加する必要があるので、何かの拍子で文字化けが起こるようになるかもしれない。予防措置を取っておきたい。現在、ポイント転換のコマンドは1バイトで、ポイントの番号と定位/反位を指定して送信している。現在のステータスを戻すレスポンスも1バイト。ソフトウェアでの予防措置として同じコマンド/レスポンスを続けて2バイト受信した時は正常なコマンド/レスポンスとして処理し、そうでないときは電文を破棄することにした。ちなみに、ポイント転換のコマンドがない場合、PIC16F887側は現在のポイントの状態の通知を要求するコマンドを数十ミリ秒毎に送り続けている。Nano互換ボード側はそのコマンドのレスポンスとして現在のポイントの状態をその都度送り返している。これでPIC16F887側は指定したポイントが指定した方向に転換されたことを把握することになる。1個で16個のサーボモーターを制御できる。メインのレイアウトでは駅の左側に8個、駅の右側に4個のポイントが集中している。ポイント群の間隔は150cmくらい。サーボモーターの配線を延長しても良いのだが、シリアル通信の時の文字化けもあるので、左右のポイントマシン群を別々のドライバーで制御することにした。左側用は8個のサーボモーターを制御。右側用は4個のサーボモーターを制御。サーボモーターは安価で小型のSG-90。2つのPCA9685間を結ぶのはLANケーブル。細い心線ではなく、おそらく一番太いであろうもの。何度かに分けて買ったのだが、いろいろと問題も。最初、6個買ってみた。プログラム作成当初、何度やってもうまく動かなかった。サーボを交換しても動かない。この時は、サーボモーター一つで試していた。こりゃ、ダメかも、と思ったのだが念のため、6個すべてを接続してみたところ・・2個は動かなかったが、他の4個は動いた。ウ~ム、不良率33%。テストの時に6個のうちから不良品2個を引き当てたのもすごいが。動かなかったやつ、試しに手でひねってみたら・・なんと動いた・・ただし、2~3回動いたら、また動かなくなった。次に2個入りのを買ってみた。届いたのはサーボモーターの側面に貼ってあるはずの型名を示すシールがなかった。剥がした後の粘着物が多量に残っていた。きれいに剥がせよ(--メなんとか動きはしたが。追加で全ポイントの数分揃うように買ってみた。グリス?がべったりついていた。明らかにギギギ~という音を立てて回るものもあった。言って、品質チェックではじかれたりしたようなもののラベルをはがしたり、とりあえず動きさえずばそのままラベルさえ剥がさずに出荷しているのではなかろうか。全てアマゾンで買ったのだが、高ければ安心、安ければいわくつきということでもなさそう。いや、バクチと思って買わないと腹が立ちます。レイアウト左側のポイントマシンを制御するPCA9685ボード。このPCA9685ボードのI2Cアドレスはデフォルトでは0x40。赤い円内のジャンパーがオープンのままだとデフォルト。レイアウト右側のポイントマシンを制御するPCA9685ボード。こちらはA0のジャンパーを半田でショートさせてI2Cアドレスは0x41。(その9)https://www.over-rabbit.com/pc/mycom-diary/18683/機構が複雑になったステッピングモーターを使ったスローアクションのポイントマシン。簡素なサーボモーター版に作り変えていたのだが、サーボモーターの制御ができただけで満足して作業を中断していた。やる気になってなんとか完成までこぎつけた。(その7)https://www.over-rabbit.com/pc/mycom-diary/18561/ステッピングモーターを使ったスローアクションのポイントマシン。ポイントが3つある延長用の台枠に取り付けてみることにした。PICマイコンで制御するNゲージレイアウト用のポイントマシンの製作メモ。切り替わるのではなく、実物のポイントマシンのようにゆっくりと切り替わるスローアクションのポイントマシンの製作記。bosoPICマイコンを使ってポイントマシンを動作させたり信号の点灯制御を行うNゲージレイアウトを製作中。Pi3で制御するつもり。電圧レベル変換モジュールでドツボにハマってしまった。bosoワールド工芸のディスプレー用転車台(ターンテーブル)をあわよくば可動式に、と目論んでいる。回転/停止させることもできた。続いて、正しい停止位置を決めていくには、機関庫の位置が決まっていないと・・ということで、今回は機関庫の線路の敷設。boso公園や施設で静態保存されて公開されているD52形蒸気機関車の保存場所と写真。回転することが確認できたので、次は指定位置に停止させること。機関庫の線路の敷設を始めたので、続いては機関庫のベース。boso模型の飾り棚に使おうと思って分解してしまっておいたCDラック。引っ張り出して飾り棚として整備することにした。LEDテープで照明を。PCサイト最近の投稿プラモ鉄道パソコンガレージ。