マイコンでポイントサーボなど制御、腕木式信号機も


配線図
ピン割付
マイコンは arduino pro mini を使うことにして、ピン割付け。ポイントは4個だが増設できるように1組追加して5個分にして、それぞれサーボの制御出力と、テコ入力、表示機または反応器用の出力、(4+1)x3で15ピン。ループで処理できるように連番で割付けようと考えていたが、サーボとは別のPWM出力できるピンを自由に使えるように残しておこうと、少し変則的になった。表示機または反応器だけが連番にならなくてちょっとソフトで工夫が必要だけど、初めのうちは無くても動作確認はできるのでまあ良いでしょう。信号テコはアナログ入力専用のA6,A7に割振り、残りを出発の腕木信号機のソレノイドと、場内の色灯信号機のRとYに。色灯はPWMにすればふっわーと消えて、もわーんと点く、本物みたいな点き方にできる。意外にぎりぎりだったので、少し考えてしまった。デバッグのシリアル通信用のD0,D1も使えることは使えるので、なんとかなるでしょう。と、思っていたのだが、腕木信号機のソレノイドは自己保持型で、定位パルスと反位パルスとふたつ出力が必要だったのを忘れていた、足りない。色灯を1出力でRとYをどちらかが点いている切替えにすれば融通できるけど、気が進まない。もともと、ぎりぎりだったので、増設用はやめてポイント4個で考え直すことにする。(2020.5.31)


ピン割付改 ポイント4個で考え直してみた。サーボ、テコ入力、転てつ機標識はそれぞれ連番にできて、信号関係はPWM出力が残るように割振り。良さそうですね。後は外部回路を考えてから、必要なら修正。
サーボの振れ角の調整を、パソコン接いでプログラムを修正するのは面倒なので、EEPROMに値を書込んで、必要ならテコのスイッチで再調整できるようにしたいと思うのだが、操作仕様が、良いのが思いつかない。信号テコを両方反位にしたら調整モードは、まあまあ分り易いかと思う。4個のポイントの、それぞれ定位側か反位側か、調整する8種類の選択と、調整操作をする+−のスイッチ2個。さあどうしましょう。(2020.6.4)
案:調整したいポイントの転てつ機テコだけを反位にする。信号テコを両方反位にするとそのポイントのトリム調整モードになる。調整モード中は、調整するポイントの転てつ機テコを定位にすれば定位のトリム調整、反位にすれば反位のトリム調整を、何度でもくり返せる。トリム調整は両隣の転てつ機テコを反位にすることで行う。左右で+−トリム、隣にテコが無い場合は代わりに一番離れているテコを使う。ポイントが3個以上あれば調整できることになる。調整モード中は、調整ポイントのテコで定位と反位に動かして動作位置を確認できる。調整が終了したら、信号テコを定位に戻すと、調整したポイントの定位と反位の設定値をEEPROMに書き込み調整モードを解除する。これで良いと思う。調整中は反応機などのLEDで動作状態をモニタ。(2020.6.7)

ピン割付改 今夏は、windows10のパソコンを一台買ったのをきっかけに、ほかのパソコンの高速化や修理などが面白くなってしまって、他の趣味は休止状態でした。模型の方は、休止前にサーボの振れ角の調整方法の案を考えましたが、分かりにくく、ずっとソフトのイメージが浮かばない壁の状態でした。再開したら、もう少し良さそうな案が浮かびました。調整モードにするスイッチを新設 ( D11 ) 、転てつ機テコで定位側の調整か、反位側の調整かを切り替え、調整は信号テコをふたつ使ってプラス/マイナス。これならポイントひとつでも実験できます。次にポイントがふたつ以上の時には、定位側の調整か、反位側の調整かの切り替えはそのままひとつ目の転てつ機テコにしておいて、ふたつ目以降のポイントを調整するには、そのポイントのテコを反位にするという仕様です。ふたつめ以降のテコがすべて定位の時は、ひとつ目のポイントの調整です。図の右側の大カッコが調整時の動作。
調整モードにするスイッチは予備 pin を使って新設しましたが、調整中は必ず R 現示にする信号出力 pin と兼用にして pin を節約することもできそうです。 (2020.9.15)
デバッグ用の回路を作りだしました。忘れないように注意点、入力専用 pin の A6 と A7 は内蔵プルアップ抵抗がないので、外部でプルアップ。とりあえずジャンク入れにあった 56kΩ。メモ、反応器 LED は pin 1 本で 2 色の切り替えに消灯もできるような回路を実験、High/Low = R/YG 、反転して使用する Low 側の方がドライブ Tr のベース電流を多くし易いから発光効率の低い方。(2020.9.24)

LED点滅の回路 転てつ機標識の色を、pin 1 本の High/Low で 2 色に切替えのつもりだったが、さらに消灯もできるような回路を考えてみた、その回路図。最初は、反転させてどちらかの LED が点灯するように考えていたが、切替え中や調整中に少し消灯や点滅した方が実感的かと思って、黄色の部分の回路を追加。出力ポートを入力に切り替えてハイインピーダンスにすると、ベース電圧は抵抗で分圧した 0.4V くらいになり 0.6V 未満なのでトランジスタは OFF になり二色とも消灯するようにしてみた。LEDは二色アノードコモンので、青色と橙色の組合せのは無かったので、まずは手に入った黄緑色と赤色で実験。High/Low = R/YG 、反転して使用する Low 側の方がドライブ Tr のベース電流を多くし易いから発光効率の低い方の YG 。R が、Vf = 1.85V 、Iv = 250mcd 。YG が、Vf = 2.1V 、Iv = 120mcd 。(2020.10.26)

デバッグ用の基板 デバッグ用の基板に配線してみた。このまま営業運転になりそうな気もするけど(笑)。まずは LED の点滅や、サーボモータ 1 個だけで定位と反位の切替えと、それぞれの位置の調整するソフトを作ってみて動作確認。左の LED の下あたりがドライブ回路、右下に置いてあるサーボで動作確認。動かしているうちに、サーボの振れ角の調整のやり方、今までの案より良さそうなの思いついた。転てつ機テコは調整モードでも通常のように動かせ、微調整は信号テコふたつでプラス / マイナス、どのポイントの調整かを切替える方法は、最後に反位にしたポイント。(2020.10.26)

ピン削減案 他の用事で一年くらい間が空いてしまったが再開。ピン 1 本で色替えと消灯できる回路の配線がけっこう面倒だったのを思い出したので、動作確認できたことで良しとして、本番では青と橙に 1 ピンづつ割り振って回路を簡単にするとともに、明るさも変えられるようにした方が良さそうな気がしてきた。そうするとピンが不足するので、先ず思いついたのが昔マイコンでやったようにデータセレクタで入力ポートピンを減らす方法。次に思いついたのは LED 出力はどうせバッファーを入れるからこれをラッチにして出力ピンを減らす方法。いや待てよ、そうすると明るさを制御できなくなるので、出力ピンは減らさないで、やはり入力ピン。抵抗ラダーで複数スイッチをアナログ読み込みする安価な方法もあるけれど今回は押しボタンではなくスイッチなので常時二重押しで誤動作対策が面倒。オーソドックスなパラレルインシリアルアウトのシフトレジスタを使って入力ピンを減らす方法もある。でもまあ先ずは実験しておきたいので、完成形の回路をイメージしながら、このままポイントに組み込んだサーボに接いで動作確認してみたいと思います。その前に石油線の道床をどうしようか(笑)迷っていて敷設していなかったのでそっちかな、あまり近代的にしたくないのでコンクリでなく砂利にしましょう。 (2021.12.8)

ピン割付改 石油線の砂利道床、そしてポイントのサーボの取付けも大体できて、さあソフトという段階になりました。ということで、ピン割振りを見直してみました。データセレクタや、シフトレジスタでのピン削減はあまり気が進まなかったので、再考。使おうとしている腕木式の出発信号機は、腕の上げ下げをソレノイドに一時的に電流を流して行うので、反応器の電圧波形の立ち上りと立ち下りでそれぞれのパルスを発生する回路を作れば、反応器の 1 ピンだけで足りそうなのに気づきました。もともとソレノイドをドライブする回路は必要なので大きな追加にはならないかなと。それで PWM のピンも空くので、転てつ機標識 (21) の B と OR に PWM のピンを割振って明るさを変えられるようにして、これで進めようと思います。予備が 1 ピンできましたので、精神的にも気が楽です(笑)。例えば転換中のマスク信号や、腕木式出発信号機をソレノイドからサーボに変更したくなった時のサーボ出力なども可能です。(2022.5.25)
連動盤面ではポイントのテコは黒で、表示は定位で青のみのものもある(反位は橙)。信号機テコは赤で、表示は赤以外の現示で青が点灯。ということなので、反応器用の極性は青(定位、停止以外)に合わせておくことにして、たいていトランジスタを通すから H(3.3V) 出力。 (2022.5.26)

ソレノイド回路 出発信号機の腕木の二位ソレノイドの駆動回路を考えてみました。反応器用のレベル信号を微分して駆動します。出力ピンの削減がきっかけですが、当初のソフトで個別パルスを出すのに比べると、パルス幅などの変動は多いと思いますが、ソフトがロックしたりしても長いパルスは出ないのでコイルの焼損の危険性は少なくできると思います。黄色い部分が増える部分です。定電流ドライブにしてピーク電流を把握できるようにしました。反転信号を LED ドライブの出力からもらっているので、微分回路への振幅が分圧されて下がりますが、定電流の電流が同じになるようにエミッター抵抗で調整しています。先ずは仮にソレノイド電流を少なめに 10mA として、反転しない G 側のエミッター抵抗は 5 - 0.6 / 10 = 440Ω 、反転する R 側のエミッター抵抗は ( 5 - 0.6 ) 3300 / ( 680 + 680 + 3300 ) / 10 = 312Ω という値になります。実験しながら電流値を少しづつ増やして最適値を求めようと思います。あと LED に並列の抵抗で、消灯時の順方向電圧の影響を減らしています。電流が流れている点灯時には順電圧より電圧降下が高くなるようにして LED 側に電流が流れるように考えてみました。(2022.5.30)

ソレノイド回路2 そろそろ作ろうかなと思い回路図を見てみると気になるところがあって回路修正しました。電流駆動にはなっていたのですが、微分波形が電流値になるのでピークから始まり一定ではないので、ソレノイドの瞬間電流が多くなります。実際にはコイルの電流は立上りに時間が掛かるので設定の微分波形そのもののピークとは異なりますが。また電流源のトランジスタのエミッター抵抗の電圧降下が多いので、電流源として動作する範囲を広くするには電源電圧を高くする必要があり12Vは必要そうでした。微分回路の波形をダイオードに流して、この順電圧 2 個分の電圧で定電流源を動作させます。これで微分波形のかなりの部分でほぼ一定の電流値とできると思います。微分回路の時定数は 22 μ x 3.3kΩ で、だいたい 70mS 、電流値は 0.6V / 27Ω で、だいたい 20mA です。なおダイオード 2 個と、コンデンサー放電用の逆向きのダイオードは、1.2Vくらいのツェナーダイオード 1 個で置き換えられると思いますが、手持ちに1S1588っぽいダイオードがごっちゃりあるので今回はこの回路図の構成で作ります。あとソレノイドに流れる電流の立上りの時定数は、ポイントマシンやNゲージの腕木信号機などの測定値を参考にしたり、大きさでだいたいのインダクタンスを見積もってみたりで、だいたい 10Ω と 10mH くらいの感じなので 1mS くらいで駆動波形にくらべるとかなり短いので、ほぼ駆動波形と同じ磁束が出ていると思います。(2022.8.26)

ソレノイド回路3 もう一つ気付いたので、定数変更。低電圧、大振幅でのトランジスタの動作は Hfe が低いのだった。とりあえず 10 と仮定。定電流源のコレクタ電流 20mA なので、ベース電流 2mA 。微分回路の入力電圧は、電源の 5V から負荷のダイオード 2 本分 1.2V 引いて 3.8V 、微分波形の 30% まで下がったところでもドライブできるように 1.14V で 2mA 流せるように 570Ω なので、標準抵抗値の 560Ω としましょう。時定数を合わせて 100μF ちょっと短くなるけど。LED ドライブの抵抗もこれに合わせて下げて 270Ω。トランジスタ off しても、微分回路に電流流れるからちょっとの間 LED が光る回路構成だったね、実害は無いけど。Hfe が 10 まで低くもない気もするけど、20mA ではソレノイド動かないような気もするから電流値上げたくなりそうだし、まあこんなところでやってみましょう。ダメだったらダーリントンにする手もあるか、微分回路では限界っぽいのでデュアルワンショット SN74HC123 でパルス作る方が良いかな、手持ちに LS ならあるな。(2022.8.27)

基板配線図 家の用事があったり、車中泊も面白そうだなと思ったり(笑)してあまり進んでいないが、このところ体調が良いので作業台の横にあったパイプ棚を移動してレイアウト周辺を広くして裏側の作業がやり易くした。ソレノイドドライブの確認をしようと、まずは基板配線図を書いてみた。当初は回路図通りの配置で考えていたが、微分回路の配線を優先するの方が良いだろうと考え直し、中央に入力の反転、左右にドライブの電流源とした。紙メモは後で探すのが面倒なのでここにアップ。DIP IC 用のユニバーサル基板なので、3 穴のランドが並んでいます。ドライブのトランジスタは電流が流れている時間が短いので、小信号用のトランジスタでも良いようにも思うのですが、実験しているうちに電流値を増やす予感もするので、電流流せるの手持ちにあった 2SD1266 でやってみましょう。(2022.10.29)

スローアクション切替 ポイント制御ソフトができた。レイアウトの入線試験で凹型試作キヤを動かしたりしていたら、数日前に急にソフトをやってみるかという気持ちになって。こういう時は、良い考えが浮かんできて、すらすらできてしまう。不思議なものだ。調整モードの時だけ切替位置の調整ができて、調整モードから通常モードに抜ける時に、調整したポイントの値だけ EEPROM に値を書き込む。調整するポイントは最後に反位にした場所のポイントという仕様。思い違いがあったり、電源ノイズがあったりしたが、手直しして、ボード単体で動くようになった。サーボとの配線などが4個分終っていないが翌日接続テストをして動作確認できた。それぞれのポイントが時間差でスローアクションで切り替わるの、なかなか感動的、もともとこれをやりたくて作ったレイアウトなので。動画に上げたいが、これから勉強です。(2023.2.21)

基板配線図 ポイントのサーボが良い感じに動くようになったので、腕木式信号機も動かしたくなってきた(笑)。基板の配置に合わせて配線を修正して作ってみた。まずは小信号用のトランジスタで様子を見てみる。ソレノイドはカサリとも動かない(笑)。電流やや多めになるように抵抗値を変えたのだが。ソレノイドを電源で直接動かしてみると、5V では全然反応しない。10V くらい掛けないと動かないようだ。まあ想定内ではあるので、電源を高くできるように独立させて、トランジスタも電流を流せる 2SD1266 にして、修正。動かしてみるがやはりピクリとも動かない。(2023.3.3)
手元にある抵抗で実験してみると、エミッタ抵抗 0.5 Ωだと不動作、0.1 Ωだと動作する、限流値を2Aくらいにしてやってみたいが 0.3Ω などという抵抗が手元にない。ソレノイドに数アンペア流さないと動かないようだ。ベース抵抗も 100Ω くらいに下げないとベース電流が足りないようで 50mA くらい必要かな。Arduino で直接ドライブしないでエミフォロにして、反転も PNP にしてドライブ電流を流しやすくして、回路修正してみた。Arduino の電源と、5V(power) は独立なので若干の電位差はありそうだけどこれでやってみましょう、ベース抵抗があるから壊れることはないでしょう。LED はエミフォロの負荷抵抗で点けることにしたが、微分コンデンサの放電経路なので消えるのが遅くなるけどまあ良いか。(2023.3.4)

基板配線図 数アンペアの電流を制御するので、トランジスタ2段づつになった。微分回路を前段のトランジスタで行えばインピーダンスが高いからコンデンサの容量も電流も少なくて済む。AC 結合になるので電源電圧の差も問題なくなる。エミフォロ側は LED のドライブをしているので先に微分できないのでこのままにするとして、反転側を変更してみた。こんな感じで配置の修正を考えてみましょう。 (2023.3.5)

基板配線図 反転側を前段のトランジスタで微分するようにした回路、修正が必要だった。前段の微分コンデンサーの放電はベース電流だけじゃ少なすぎたので 4.7 kΩ 抵抗追加、出力段のパルス幅が足りないようなのでコンデンサを 2000μF に変更して動いた。2000μF は外径が大きいし、もう少し時定数を大きくすることも考えて、非反転側も微分を前段でやって、LED ドライブはその前にトランジスタを追加して行う回路を考えてみた。電源電圧の差も問題なくなる。ソレノイドをドライブしようとするとやはり結構な回路になるのかな。ソフトでパルスを出すようにすると、定位パルス、反位パルス、反応器と 3 ポート使うが、減る回路は黄色の部分ぐらいだと思う。配置とパターンを考えてみましょう。 (2023.3.12)

波形 腕木式信号機が良い感じに動くようになったので、動作の具合を波形で。テコからの指令電圧を微分して、2 個直列のダイオードに順方向に流します。このダイオード端は 1.2V くらいの電圧のパルスになって、これがベースに加わります。そうするとエミッタは 1.2V - 0.6V で、約 0.6 Vになり、これがエミッタの抵抗 0.22Ωに流れるので、エミッタ電流は 0.6 / 0.22 で 約 2.7A です。コレクタ電流もほぼ同じなので、腕木式信号機のソレノイドにも約 2.7A のパルスが流れます。定電流回路なのでソレノイドの電圧には影響されず 2.7A 流れます。最大でも 2.7A という限流ができているので、大容量の電解コンデンサで直接駆動した場合のピーク電流での焼損断線の心配が減ると思います。実際に動かしたらパルス幅がもっと短くても良いような感じがするので時定数のコンデンサは 47μF より小さくして 4.7μF くらいの方が良さそうです。(2023.5.1)

| TOPページ | TOP |