26.サーボモータを使用したポイント駆動(ソフト・ハード編)


   当電鉄の路線は12mmの角材に2mmのベニヤ板を貼った構造のボードです。
   中には、旧レイアウトの廃材(ポイント)を使用したものもあります。
   写真は、KATOの固定式ポイントを使用したヤードの一部分です。
   実は、この旧式のマシンに苦しめられています。
   何かというと、「電源が12VのDCCでは思ったように上手く駆動できない」のです。

   KATOの固定式を使用したボード

   とはいってもDS52を使用すれば、確実に駆動するのですが、このボード内に基板が収まら
   ないので、ポイントデコーダやマシンへの電源を変えてみたりと試行錯誤をしたのですが、
   上手くいかず、だったらレマコのモータ駆動のマシンでも と考えたのですが、
   私がPICマイコンの勉強用に購入した書籍「PICマイコンプログラム入門」の中に、
   サーボモータを駆動する内容がありました。
   このサーボモータでマシンを切り替えてみたらと考え、この本を参考に開発を始めました。

   開発中の駆動回路
    
   どのようにしようか悩みながら以下の仕様にしました。

    ・PICマイコン(PIC12F629)を使用し、サーボモータを駆動する
    ・モータを一気に回転するのでなく、少しずつ回転させ、実感的な動きにする
    ・プログラムの中の値によってサーボモータのホーン振れ幅を変更できる
    ・LEDを使用し、ホーンが最小・最大位置に来た時にLEDを切り替え点灯させる(切り替え表示用)
     切り替え中は、双方のLEDが点灯して切り替わった時点で切り替わった方向のみ点灯
    ・電源断によって方向がリセットされないようにPICに内蔵のEEPROMを使用して切り替え位置を
     保持しする。(起動時にEEPROMから方向を読み込み、方向切り替えで方向位置をEEPROMに書き込む)
    ・基板は、そのままPICKit2が接続でき調整できるよう端子を設ける。
    ・サーボモータ駆動(切り替え)のためのスイッチと外部回路からのインターフェース部分を設け
     外部機器との汎用性を高める。
    ・極力部品は最小限にとどめる。


   ということで作成した回路はここ

     サーボモータを使用したポイント駆動回路(PDF)
 
   サーボモータは、RB50を使用します。
   RB50の詳細はミニスタジオ有限会社(http://www.ministudio.co.jp/Japanese/default.htm)参照
   電源が4.8Vでサイズ的に小さいのでボード内に収めるのに適しています。
   

   必要な部品は以下の通り 

名称 部品名 個数
サーボモータ(miniStudio) RB-50 1
PIC PIC12F629 1
ソケット 8PINDIP 1
ダイオードブリッジ S1NB60B70 1
3端子レギュレター 78L05 1
トランジスタ 2SC1815 2
電解コンデンサ 100μF 25v 1
100μF 10v 1
積層セラミックコンデンサー 0.1μF 2
抵抗 1kΩ 2
10kΩ 4
4.7kΩ 2
LED 適宜 2
ピンL型 6連、3連、4連 1
ピン縦型 2連 1
ショートピン 2連用 1

   プログラムの開発
 
   ソースを添付します。

     ソースプログラム servo1_00.asm  ←右クリックでファイルのダウンロードを選択

     ソースプログラム servo1_03.asm  ←右クリックでファイルのダウンロードを選択
       ショートなどによって電源が瞬断した場合にCPUが暴走状態に
       なることがあり、ウオッチドックタイマーとブラウンアウトONに
       修正しました。(2011/12/27)

     ソースプログラム servo2_00.asm  ←右クリックでファイルのダウンロードを選択
       入力信号(6番,7番ピン)が "L"にし続けて動作するのに対し、
       単発ワンショットで(このページ最後の図のようにPushSWで構成して)
       動作するように修正(2012/05/04)

     プログラムは、MPLAB IDE v8.50 で作成しています。

   サーボモータの振れ幅(回転量)の調整

     プログラムソース中の下記の記述部分の数値を変更することによって調整します
      #define  SERVO   GPIO,2
      #define  MCNT   d'180'    ←この' 'で括られた数値(青色部分)を1〜255の範囲で変更します   

      #define ADDR1 00h ;EEPROM への書き込みアドレス

     RB50は振れ幅(仕様では70°)ですので、70°を255で分割し、振れ幅(回転量)を指定します。
     35°であれば半分の128ぐらいです。


   基板の作成

     回路自身は比較的簡単なのでユニバーサル基板でも可能ですが、
     プリントパターンをフリーソフトPCBEで作成し、基板を作成しました。
     もう少し小型にしても良かったかもと思いますが、まずはこれぐらいで。。。。

     回路のパターン(PCBEファイル)  ←右クリックでファイルのダウンロードを選択

    基板は、サンハヤトの感光基板です。
     これぐらいのものであれば4時間ぐらいでできてしまいます。
     試作した基板

   実装 

     実装は、下にある図のようにします。
      ※大きめのサーボモータや並列にサーボモータを取り付けた場合、電源投入時に
       サーボモータのホーンが想定外の位置に動作したり、挙動が不安定になる場合があります。
       この場合は、78L05の出力側にある電解コンデンサー(100μF10V)の容量を増やしてみて
       ください。(下図では右上の電解コンデンサーです) (2012/05/05追記)

     
       基板実装面                           基板パターン面


   プログラムの書き込み
   
   PICKit2を接続してプログラムを書き込み。
   Pickit接続中は、PICKitの横にある2本のピンはショートピンで接続しないでください。
   

   
   プログラムの書き込みが終わったら右下の2本のピンをショートピンで接続します。
   (電源がPICに供給されます)

   
   これで基板は完成です。
   写真で基板手前の3本のピンで 中央-右 中央-左 とショート
   させてみてください。 サーボモータが動くはずです。
   

  次回はサーボモータを実装し、ポイントを駆動するための駆動編です。

ご注意:掲載内容に基づき、作成または改造を行い、万一損害が生じても当方では責任を持ちませんのでご自身の責任の範囲でお願いします。


Copyright (c) 名古屋電鉄 http://nagoden.la.coocan.jp/