人気ブログランキング | 話題のタグを見る

Arduinoで鉄道模型PWMコントローラーを自作

【2018/02/22: 基板実装の表裏両面の写真を載せました。記事末尾をご参照。】
【2017/04/25: 私流のソースコードを公開。別記事にて。】

タイトルのとおりですが、ワンボードマイコンのひとつ、ArduinoのUNOというタイプを用いて、鉄道模型用PWM制御のコントローラーを作成してみました。こちらもインターネット上で素敵な情報を提供してくださっている方がいらっしゃり、大いに参考にさせていただきました。
感謝を込めて、私も製作記を公開したいと思います。

 参考にさせていただいた、しろくまさんのページ: ArduinoでPWMパワーパックを作ってみた

▼できあがり写真
Arduinoで鉄道模型PWMコントローラーを自作_a0133822_9195045.jpg


では、以下に詳細を。

●使用部品

基本的には、しろくまさんがリストアップされているものと同じです。
ただし、7セグLEDについては、表示情報量を格段に増やすことができるキャラクター液晶ディスプレイ(C-LCD) TC1602を使うことにし、マルツで入手しました。秋月電子で買えるSC1602でも同じです。

●製作順序

1. 電気のINPUT側から、H/Wを組み立て始めました。構成はしろくまさんと同一。きちんとACアダプターからの12V入力が5Vに落とせていることを確認します。

2. Arduinoのマイコンチップ ATMEGA328P の周辺に接続される周りの部品を接続していきます。まずは、加速率や常点灯調整のダイヤルとマスコンのロータリースイッチ、クリスタルの辺りを作り込みます。
レールへの出力部分の実装は後からにしました。
この部分の部品構成とマイコンへの接続先も、しろくまさんの回路図とほぼ同一。

3. ロータリースイッチ部分はちょっとオリジナル。梅澤無線で入手したものなんだけど、ストッパーが無く何周も回転してしまう物しかなかったので、ロータリースイッチを分解し、回転する部品が周回する、円周上のとある位置にピンバイスで穴を空け、針金を埋め込んでストッパーとしました。力業(笑)
▼こんな部品。
Arduinoで鉄道模型PWMコントローラーを自作_a0133822_1823811.jpg

そしてロータリースイッチへの抵抗の接続について。
フルノッチは目一杯時計回りに回し切ったところとしているのですが、そこを便宜上ロータリースイッチの位置12番としています。反時計回りに回し切ったところは位置1番としました。1kΩ抵抗をロータリースイッチの円周上にグルリと並べて接続し、位置1番の時に11kΩ、位置2番の時に10kΩ・・・位置12番の時に0kΩとなるようにしました。

4. 次にソフトウェア。Arduino unoにて、ロータリースイッチからの入力値調整を実施。ArduinoではanalogRead値は0~1023の値として読み取られるのですが、ロータリースイッチが12段階切替なので、0~1023の入力値を、1~12の12段階に分けます。
つまり、0(=analogRead値Min)の時に値「1」としたく、1023(=analogRead値Max)の時に値「12」にしたい訳です。これをロータリースイッチ位置1番~12番と紐付けたいのです。
0~1023を85.333(=1024/12)で割ると0.000~11.988になります。analogRead値0、1、2・・・と増えるにしたがって0.000、0.011、0.023・・・と少しずつ値が増えていき、最終的にanalogRead値1023では11.988になる訳です。これらの値を四捨五入すれば1~12の値に集約できそうです。
ロータリースイッチを接続した3番ピンからのanalogRead実測値は、私の環境では以下のとおりでした。
 ・ロータリースイッチの位置が 1の時:11kΩ ⇒ 83
 ・ロータリースイッチの位置が 2の時:10kΩ ⇒ 169
 ・ロータリースイッチの位置が 3の時: 9kΩ ⇒ 254
 ・ロータリースイッチの位置が 4の時: 8kΩ ⇒ 340
 ・ロータリースイッチの位置が 5の時: 7kΩ ⇒ 425
 ・ロータリースイッチの位置が 6の時: 6kΩ ⇒ 511
 ・ロータリースイッチの位置が 7の時: 5kΩ ⇒ 596
 ・ロータリースイッチの位置が 8の時: 4kΩ ⇒ 682
 ・ロータリースイッチの位置が 9の時: 3kΩ ⇒ 767
 ・ロータリースイッチの位置が10の時: 2kΩ ⇒ 853
 ・ロータリースイッチの位置が11の時: 1kΩ ⇒ 938
 ・ロータリースイッチの位置が12の時: 0kΩ ⇒ 1023
でした。
読み取れた値はだいたい85.3の倍数になっていますね。
四捨五入相当の簡単な代替計算として『+0.5した上で小数点以下を切り捨て』という処理にしました。
こんな感じ。
int getMasconVol(int vol) {
int ans = 0;
ans = (int)(((double) analogRead(3)) / (1024 / 12) + 0.5); // 3はRotarySW接続ピン番号
return ans;
}
この辺りは、実際に使用するロータリースイッチや抵抗などの部品によって変わってきそうですね。

5. C-LCDの接続と表示内容について。
しろくまさんオリジナルの7セグメントLEDの代わりに、Arduinoデジタルピン5番~9番と12番(=ATMEGA328での11番~15番と18番)へC-LCDを接続しています。
しろくまさんプログラムでは、電源ON→走行パターン選択(初期設定)→走行可能という流れで進みますが、基本はその流れのままです。12種類の走行パターンの名称を表示させたり、マスコンノッチ位置や速度値を表示させるようにしています。最初の写真のC-LCDの1行目は走行パターン名、2行目左側はスピード(しろくまさんのソースコードでいう"spd"変数の値)、2行目右側はノッチ位置(1番から12番を順に、EB:Emergency Brake、B5~B1、N、P1~5)となっています。
動画にしてみるとこんな感じ。
 ▼ホワイトベア・コントローラ Rev.1.0 (の製作途中)
http://youtu.be/22ebGRu_r8o

 ▼ホワイトベア・コントローラ Rev.1.0 (ひとまず完成)
http://youtu.be/KvWr6iz8qlM

 ▼ホワイトベア・コントローラ Rev.2.1 (速度値表示化)
http://youtu.be/gVxdVUtNusE

6. 私の環境に合わせてパラメーター変更も幾つか実施。しろくまさんソースでいう KASOKU や GENSOKU は 3 ですが、なっかなか加速しなかったので試行錯誤した結果、それぞれ 50、20 という値にしています。

7. VVVF音のパターンを2種類、独自に用意してみました。具体的にはEF210,EF510と、EH200,EH500。JRFのカマなんて金太郎しか持ってないんですが、動画で聴く桃太郎やレッドサンダーはVVVF音の変調があって気に入りました。ただし北の大地では実物を体感できません(苦笑)
値は以下のようにしています。
  //パターン5  EF210,EF510
784, 784, 11,// 1 開始周波数 終了周波数 切替スピード
784, 784, 21,// 2 開始周波数 終了周波数 切替スピード
784, 1480, 56,// 3 開始周波数 終了周波数 切替スピード
1480, 1480, 101,// 4 開始周波数 終了周波数 切替スピード
-1,// 5 終了コード
//パターン6 EH200,EH500
1000, 1000, 11,// 1 開始周波数 終了周波数 切替スピード
1000, 1000, 101,// 2 開始周波数 終了周波数 切替スピード
-1,// 3 終了コード
結構リアルに再現できてるんじゃないかと自画自賛(爆)
しろくまさんが、ソースの商用利用は不可とされていますので、私の上記VVVF音の値も私的利用目的に限ってご自由にお使いください。当記事にコメントいただけると嬉しいです。

8. レールへの出力部分も組み立て、TOMIXの単品ケースへ組み付けて形にしました。
Arduinoで鉄道模型PWMコントローラーを自作_a0133822_10274284.jpg
Arduinoで鉄道模型PWMコントローラーを自作_a0133822_10275240.jpg
Arduinoで鉄道模型PWMコントローラーを自作_a0133822_12102547.jpg
ケースは、幼き頃の憧れのカマ、EF66ひさし付のケースを流用しちゃいました。裏に滑り止めのラバーを貼っているので、軽量ですが安定します。

9. 最後に、フィーダーについて。同じく梅澤無線さんで買った細いステレオプラグを使っちゃっています。2極だからちょうど良いでしょ。
Arduinoで鉄道模型PWMコントローラーを自作_a0133822_10275864.jpg
写真のように、TOMIX純正のコントローラーでも使えるように両方のコネクタが使える形に加工しました。


【2018/02/22追記】
とある方から基板の両面はどのような実装なのか見たいと打診いただきました。
恥を承知で晒します(〃ω〃)

▼オモテ面
Arduinoで鉄道模型PWMコントローラーを自作_a0133822_21302290.jpeg
▼ウラ面
Arduinoで鉄道模型PWMコントローラーを自作_a0133822_21311288.jpeg
オモテの右上にある電解コンデンサが、ウラでは右下にある向きです。

・・・本当は基板実装の基本があるのでしょうが、「とりあえず並べて結んでみるかー」ぐらいの軽い気持ちで配置しちゃいました。。

ご親切な方がいらっしゃるならご意見賜りたいところです。
無知ですみません。


Commented at 2015-09-21 22:39 x
ブログの持ち主だけに見える非公開コメントです。
Commented by angel-express at 2015-10-28 13:06
>KAZさん 
コメントいただいていたのに気付かず、お返事遅くなりました。すみません。
きちんとテスターを使って、電力がどこまで供給されているのかを、電源に近い側から順番にチェックしていくのは如何ですか?
Commented at 2016-06-17 19:33 x
ブログの持ち主だけに見える非公開コメントです。
Commented by angel-express at 2017-04-25 20:48
>Hokutosei様 
諸事情によりお返事が遅くなりましたが、メールにてお返事させていただきました。
ご確認願います。
無事にLCD部分が動作させられることを願っています。
Commented at 2018-01-28 03:46 x
ブログの持ち主だけに見える非公開コメントです。
Commented by angel-express at 2018-01-28 16:06
> y-sukeさん
暖かいコメントありがとうございます。途中経過や完成のご連絡をお待ちしています(^。^)
Commented at 2018-01-28 20:27 x
ブログの持ち主だけに見える非公開コメントです。
Commented at 2018-02-20 19:48 x
ブログの持ち主だけに見える非公開コメントです。
Commented by angel-express at 2018-02-22 22:22
> y-sukeさん
当記事を参照されている他の方にも有益な情報となり得るので、記事に追記する形で公開しました。如何でしょうか。
12V→5V降圧や、マイコンの各足との接続など、部分部分ごとにしろくまさんの回路図と照らし合わせてご確認されるのが良いかと思います。
頑張って〜!
by angel-express | 2015-01-19 09:47 | N | Comments(9)

ハマカゼ80の(北海道→首都圏)鉄活動議事録 ~1/1と1/150~


by ハマカゼ80
カレンダー
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31