トミックスの5001ワンハンドルパワーパックを改造する スケッチ

20240623-22-02-25

トミックスの5001ワンハンドルパワーパックを改造して、パルス制御(PWM)と平滑直流出力制御の両用のマイコン制御パワーパックにしたプログラムファイル(Arduinoのスケッチ)です。アップロードするの失念していました。

ダウンロード - onehandlepwm.ino

製作記事は下記を参考にしてください

トミックスの5001ワンハンドルパワーパックを改造する(6/23)

トミックスの5001ワンハンドルパワーパックを改造する(続)(6/28)

| | Comments (0)

トミックスの5001ワンハンドルパワーパックを改造する(続)

PWM出力に、このアナログ(ローパス)フィルター接続して電流を流すと、パルス電流が不思議なことに平滑な直流に変換されます。アナログフィルターは、DesktopStation社のピュアアナログアダプターの回路を使わせていただきました。なおDesktopStation社ではピュアアナログアダプターの製造とサポートは終了しているようですので、このアダプターやその回路について同社には問い合わせないでください。

Tomixonehandle3

☆6/30 配線図差しかえ 下の紫色バックの部分が、アナログ(ローパス)フィルターです。

PWM出力を緑色の端子、平滑直流(電圧)出力を茶色の端子に接続しました。

回路図のスロットルのボリュームは10KΩでもよいと思いますが、ボリュームの値を大きくする場合は、あおのさんのコメントにあるようにコンデンサーを入れた方が安定します。私は1KΩのボリュームを使っているので、特に問題はないです。アナログフィルターの抵抗は47KΩでもよいです。

鉄道模型のパワーパックでよく使われるトランジスタなどを使った直流電圧制御だと、電圧を下げた分のエネルギーは熱で捨てることになりますが、パルス制御とフィルターを組み合わせた方式だと降圧分のエネルギーも有効利用できて捨てるエネルギーが少ないので、電力変換効率がよいと思います。

コンセントから電源アダプターをつないで使う場合は問題になりませんが、バッテリー駆動だとかなりバッテリーの保ちが違ってくると思います。モータードライバーにも大きな放熱器をつける必要もないようです。

PWM出力で運転するときアナログフィルターを切り離すスイッチをつけるつもりでしたが、オシロで出力電流波形をみても多少ノイズ(リップル)はのっているようですが 波形に大きな変化はなく実用上影響ないようなので、省略しました。

ムービーのノイズはモーターの回転音です。

また最初は電源VCCから12Vを直接Nanoにつないでいましたが、ロームのDC/DC降圧レギュレーターBP5293-50を入れました。これで12V以上の電圧のアダプターも使えます。Nano内蔵の三端子レギュレーターは電圧の上限が12Vですので、このような降圧レギュレーターを使わないときは、12V以上の電源アダプターは使えません。12Vのアダプター以外使わない方は、電圧レギュレーターは省略できます。

モータードライバーTB6643KQは最低作動電圧が9Vなので、電源電圧は9V以上で使用してください。乾電池などのバッテリーを使って電源電圧が9V以下になると停止します。

20240628-22-28-42

プリント基板の右端に見える円柱状のパーツが、100µHのチョークコイルです。

☆6/30追記

デスクトップステーションさんのブログにあるように、モーターの種類によってはキャリア周波数を下げた方が、低速性能が安定するようです。PWM出力だけの場合でコアレスモーターを使わない時はキャリア周波数を下げた方がよいかもしれません。

☆7/6追記

今回はArduino Nano 使いましたが、開発しやすいですが、こんな大層なものつかわなくてもATtiny85使えばもっとローコストに基板も小ぶりにできることに気がつきました。また機会があればやってみようと思います。あやのさんがATtiny85使ったDCCデコーダーについて詳しくブログに書かれているので参考にさせていただこうと思います。

☆8/6追記

今回はワンハンドルコントローラーなのでマイコン制御が有用ですが、普通の前後進スイッチで切り替えるタイプのパワーパックならマイコン使わなくてもタイマーIC555使えば十分だと気づきました。これなら秋月で安いキットがあります。以前作ったコントローラーについてはここをクリック

 

 

| | Comments (1)

トミックスの5001ワンハンドルパワーパックを改造する

トミックスの5001パワーパックはデザインや操作性は秀逸で、現在も使っておられる方も多いようです。とはいってもレオスタット制御ですので、走行電流の小さいモーターでは、ラビットスタートになってしまいうまく制御できないようです。

そこでこれをパルスPWM制御と電圧制御兼用パックに改造することにしました。改造といっても使うのはケースぐらいで、中身は総入れ替えになります。まあ模型店の中古やネットオークションで、500−1000円ぐらいで売られているので、ケース代と思えば高くはないと思います。

20240623-22-02-25

外見はほとんど変化がありません。左前下の100Vコードが入っていた部分にACアダプターのコネクターをつけました。

なおケース全体が経年変化でくすんでいたので、タミヤのコンパウンドで磨いたら、新品の輝き?を取り戻しました。

20240623-12-39-19

改造前のパックの内部です。トランスが鎮座しています。
レオスタットはトミックスの特注品らしいです。

20240623-21-59-14

改造後の内部です。
マイコンとモータードライバーのみなのでスッキリしました。
レオスタットはボリュームに置き換えました。
赤色のLEDはそのまま使いました。
メインパワースイッチはそのまま使って、12V入力がオンオフできるようにしました。
ブレーカースイッチは機能しませんがそのまま残してあります。

 

トランスがなくなったので軽くなってしまい、安定感はなくなりました。底部にウェイトいれようか・・というのは冗談です 

下に配線図を示します

Tomixonehandle

今回は手もとにあった、Arduino Nano(中国製互換機)を使いました。モータードライバーは東芝のTB6643KQです。

現在の出力はPWM(パルス制御)出力です。

プログラム(スケッチ)はArduinoIDEで作成しています。

プログラムはDesktopStationさんのDSシールドスケッチPC接続用アナログ車両rev.1bから改変作成させていただきました。

プログラムの要点を解説します。

// include the library code: インクルードするライブラリーファイルの指定
#include <EEPROM.h>不要
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>

#define PIN_FORLED 2 //前進時点灯させるLEDのピンを定義
#define PIN_BAKLED 3 //前進時点灯させるLEDのピンを定義

/* Analog */ //変数を定義しています
word control_V = 0;
word ZeroOffset = 32;
word inPower = 0;
byte inDir = 0 ;

void setup()
{
//Pin mode 入出力のピンを定義しています
pinMode(9, OUTPUT);// PWM出力
pinMode(10, OUTPUT);//PWM出力
pinMode(A2, INPUT);//Control_Volumeの入力
pinMode(PIN_FORLED, OUTPUT);//LED_FOR 前進時LED点灯出力
pinMode(PIN_BAKLED, OUTPUT);//LED_BAK 更新時LED点灯出力
//Timer1 PWM Freq
TCCR1B = TCCR1B & B11111000 | B00000001; // set timer 1 divisor to 1 for PWM frequency of 31372.55 Hz
タイマー1の周波数を変更して PWMの周波数を31kHにする

/* Debug message for PC */ //起動時のメッセージをシリアルモニターに送ります
Serial.begin(57600);
Serial.println("--------------------------------------");
Serial.println("Tomix One Handle Controller 2024/6/11 ");
Serial.println("--------------------------------------");
Serial.println("100 Ready");
ShutoffPower(); //出力を停止します

void loop()
{
  VolumeRead(); //コントローラーのボリュームの値を読み込みます
}

void VolumeRead(void)
{
  /* control volume check */
  control_V = analogRead(A2);
  if ( control_V >= 512 + ZeroOffset ) //前進時
  { //go forward
    inPower = (control_V - 512 - ZeroOffset) * 11 / 10 ;
    inDir = 1;
    SetPWMoutput(inDir, inPower);
    digitalWrite(PIN_FORLED, HIGH); //LED Forward On
    digitalWrite(PIN_BAKLED, LOW); //LED Back Off
  }
  else if(control_V <= 512 - ZeroOffset) //後進時
{ //go back
    inPower = (512 - control_V + ZeroOffset) * 11 / 10 ;
    inDir = 0;
    SetPWMoutput(inDir, inPower);
    digitalWrite(PIN_FORLED, LOW); //LED Forward Off
    digitalWrite(PIN_BAKLED, HIGH); //LED Back On
  }
  else // stop 停止時
 {
   inPower = 0;
    ShutoffPower();
    digitalWrite(PIN_FORLED, LOW); //LED Forward Off
    digitalWrite(PIN_BAKLED, LOW); //LED Back Off
  }
//ボリュームを0−1023の値で読み込みますが、中間値512の前後±32 480-544では出力ゼロとなるようにしています。そのためフルスピードになるように値を1.1倍して補正しています。
}

void ShutoffPower(void) //PowerOff 出力停止
{
analogWrite(9, 255);
analogWrite(10, 255);
}

void SetPWMoutput(byte inDir, word inPower) //Power on 方向と速度をPWM出力する
{
  word aPower = inPower >> 1;
  if( aPower >= 255)
  {
    aPower = 255;
  }
  Serial.print(aPower); //速度と方向をシリアルモニターに送ります
  Serial.print(",");
  Serial.println(inDir);
  switch( inDir )
  {
    case 1://BAK 後進時
    analogWrite(10, 255 - aPower);
    analogWrite(9, 255);
    break;
    case 0://FOR 前進時
    default:
    analogWrite(9, 255 - aPower);
    analogWrite(10, 255);
    break;
  }
}
パーツが届いて平滑直流化がうまく作動した時点で、プログラムをアップロードします。
☆6/24 配線図修正
☆7/18 スケッチ修正 ダウンロードはこちら

| | Comments (0)

TMS6月(989)号の 室内灯常時点灯化 の記事について

TMS6月号に 常時点灯化の記事が掲載されています。これは記事中で著者も書かれているように、トミックスのNゲージで採用されているLEDと小容量コンデンサーを並列につないだライトユニットとPWM電源を組み合わせた 室内灯常時点灯システムとは違うので、このタイトルはちょっと紛らわしかったと思います。

スーパーキャパシター(電気二重層コンデンサー)が、極性の表示はあるが実質無極性なのはともかく、コンデンサーを2個組合せてあるという記述はよくわかりません。この素子の製造メーカーのひとつであるトーキンのユーザーガイドはここをクリック

記事には回路図が載っていませんが、ちょっと頭を整理するために描いてみました。

20240523

※記事の回路には上図のツェナーダイオードはありません

電気二重層コンデンサーの5V規格品は内部抵抗が大きいので、等価回路としてコンデンサーと抵抗を直列に描いています。なお3V規格品は内部抵抗が小さいので外付けの電流制限抵抗が必要です。

本来の定電圧回路設計なら上図の緑色の4.7Vぐらいのツェナーダイオードを入れてLEDテープと電気二重層コンデンサーにかかる電圧を一定にすべきだと思いますが、それを省略してLEDテープ上の直列に接続されたLEDと抵抗の電圧降下で分圧して機能的に代用しているように思えます。実用的にはこれで大丈夫であれば巧妙な回路設計だと思います。

線路から供給される電圧が低下すると電気二重層コンデンサーに蓄電した電気がLEDに流れる仕掛けのようです。おそらく線路の電気を切っても数分以上室内灯のLEDは光っていると思いますが、これを常時点灯というのは少し誇大広告のような気がします。とはいっても定電圧三端子レギュレーターなどが回路に含まれていないので、ブリッジダイオードに電圧降下の少ないショットキー・バリアダイオードを使えば、かなり低電圧から点灯するのではないかと思います。

自分も実際に作ってみたくなりました。

☆5/27追記

この回路は普通の直流流して制御するための回路だと思いますが、これにパルス制御(PWM)方式の電流流すとどうなるのでしょうか?電気二重層コンデンサーがフル充電?されるまでは、充放電を繰り返すのではないかと思います。電気二重層コンデンサーは内部抵抗が大きいので、発熱しないかと心配になってしまいます。実用上は問題ないにしても素子の劣化が早くなるかもしれません。おそらく杞憂(心配過剰)だとは思いますが、集電不良対策で車両に電気二重層コンデンサーをモーターに並列につないで走らせておられる方でパルス制御で不具合おきたよという方おられなのでしょうか?

解決するに、ブリッジダイオードの出力側に普通の電解コンデンサーつなげば、出力が平滑化されて問題は無くなると思います。

まあこうやってグズグズ言わずに実験回路をくんで、電圧計やオシロで計測すればいいんですけど・・・

 

 

 

 

| | Comments (4)

8450 補追(4)コネクタについて

DCCやPFMサウンドなどで機炭間電線接続するときやライトなどでの上下電線切り離しには、私はICピンヘッダーソケットをよく使います。端子はメッキしてあるので接点が酸化しにくく使いやすいし、ソケットにはそのままφ0.7ぐらいの真鍮線などをピン代わりにそのまま突っ込んでも使えます。

今回は8450の機関車本体は、上回りと足回り分解するときやはり切り離せないと不便なので、このピンヘッダー・コネクターを使ってヘッドライトの配線をしました。もっと小さいコネクターもあるのですが、きっちりロックされてしまいかえって取り外しが面倒なので、滅多に使いません。この小型コネクタ使うとしたら、外れるとまずいリチウムバッテリーの配線ぐらいです。

ただこのピンヘッダーとソケット利用のコネクタターは方向性がないので、無極性の電球ならよいのですが、LEDなどでは逆接続して、下手するとLEDやデコーダーを損傷してしまうことがあります。それを回避するためにスペースに余裕があれば、下図のようにコネクターを3極にしています。これなら誤接続して±逆の電流が流れることはありません。

Ktconector

実際模型に装着した画像ではわかりにくいので図示します。

 

| | Comments (1)

Wifi RGB コントローラーをつくる(1)

MicroPythonというプログラミング言語を学びはじめることにしました。

英国シェフィールドのPIMORINI社からボタンにLEDが内蔵された4X4キーパッドが発売されています。これでDCCコントローラーをつくるとおもしろいだろうと思っていたのですが、メーカーが提供するライブラリーがC++とMicroPythonのみでArduinoがないので、ちょっと引いていました。

9600の梯子で躓いて手が止まっているところに、MicroPythonは易しいという悪魔のささやきに心奪われてしまい、このキーパッドを使ったDCCコントローラーを作り始めることにしました。この製品日本でも数社が取り扱っていますが今のところ秋月電子が一番安いようです。

Pimoroni

PIMORINI社のホームページから引用

なおMicroPythonでDCC信号電流を発生させるのは難しいようなので、DSair2に接続するWifiコントローラーをつくることにしました。このキーパッドに無線通信機能が内蔵されたRaspberry Pi Pico Wを組み合わせました。

Dsa2_py_wifi

上の画像をクリックすると拡大します。

ネット上に公開されているコードを参考にwifi接続部分は容易にプログラム書くことができました。

wifi経由で、DSair2の電源をオンにして、内部情報を取得するプログラムです。

キーパッド部分は、メーカー提供のライブラリーとサンプルプログラムが提供されているので、これを参考にコードを書いていけそうです。

これなら比較的容易にまとまりそうです。

またAdafruit社からも、RP2040とOLEDモニター、ロータリーエンコーダーを内蔵した4X3キーパッドが発売されているようです。この利用も考えたのですが、12キーであることや無線通信機能がないこと、ボリュームではなくロータリーエンコーダーが載っているという理由で、PIMORINI社のキーパッドにRaspberry Pi Pico Wの組合せを採用しました。

☆1/21追記

ある方に、このRGBキーボード用のArduinoスケッチ送っていただきました。これを使えば、ArduinoならDesktop stationさんところのRaspberry Pi Pico用のDCC信号生成のライブラリーあるので、DCCコントローラーもできそうです。

 

| | Comments (0)

牽引力測定車で測定しました

先日製作した牽引力測定車を使って千曲鉄道の山線で牽引力走行抵抗測定をおこないました。

この写真はH御大の9750にクラーケンさんの160を補機としてつないでいます。その次に牽引力測定車をつないでいます。速度と牽引力走行抵抗のデータは手元のタブレットにwifiで飛ばして目視で観測しています。

20230416-13-41-01

いろいろ機関車を取り替えて測定したところ、結果補機やユウレイなしで、中型蒸機が牽くことができるのは、0.3-0.4N程度の牽引力が必要な走行抵抗のある列車であり、補機やユウレイをつけることにより0.6-0.7N程度の牽引力が必要な走行抵抗のある列車も牽引可能であることがわかりました。

コンさんが持ちこまれたリオグランデ改造のコンソリは、牽引力が0.7Nあるらしいので、なんとか0.6N程度の牽引力山線での引張力が必要な列車を単機で引っ張りあげましたし、客車に仕込んだユウレイは0.77Nの最大牽引力があるそうですので、頭に蒸機を連結しないユウレイ単機で0.6N程度の牽引力以上の引張り力が必要な列車を牽いて快走していました。

なお1Nは約102gの物体にはたらく重力の大きさです。1Nがだいたい100gfです。

私の牽引力測定車は、サンプリング速度が5Hz程度と低く、そんなに高精度のものではありませんが、まあだいたいの傾向がわかりました。

☆4/20追記

この牽引力測定車で測った値を機関車の「牽引力」と定義するのはおかしいのではないかとある方からご指摘をいただきました。

確かにこの値は機関車固有の(最大)牽引力ではなく、走行時の列車牽引時の走行抵抗というのが適当だと思えます。従って線路の勾配や曲線などで変化していく値だと思います。

また別の方からこのデータを使って、詳細な解析ができないかと質問を受けましたが、このデータは走行時の実物換算速度と牽引している列車の走行抵抗をラフに取得して、手元のタブレットにリモート表示して遊ぶものであって、そういう解析を目的としたものではないしそういう解析に必要な精度もない、そのため採取したデータの保存もしていないとおこたえしました。

子供が電車の先頭で運転席の速度計などのデータを覗き見して、楽しんでいるのと同じとお考えいただきたいです。

 

| | Comments (2)

牽引力測定車をつくる

以前製作した速度測定車に、牽引力測定機能を追加しました。

車端に木の角材を取り付けて、そこに100gフルスケールの小型のロードセルを取り付けました。ロードセルの片側にカプラーをアダプターを介して直付けしました。これは森井さんの作例を参考にさせていただきました。

20230408-22-28-06

それに電子秤測定の定番IC のHX-711の載った秋月電子のモジュール基板をつないで、そこからデータをマイコン(ESP-WROOM-02) に取り込んで、車載のOLEDに表示するだけではなく、wifiでタブレットにデータ飛ばして表示しています。これだとレイアウトで車両がトンネルに入ってもデータがわかります。

20230408-22-21-25

できれば更に9軸センサーを載せて、線路勾配も測定して表示できるようにしたいと思います。

なおこれはラフな簡易測定なので、データをサンプリング収集してもあまり役立ちそうになく、測定数値をみて調整したり、眺めて楽しむだけのものにしておきたいと思います。

較正も写真に見えるニュートンメーターを使って簡単に済ませてしまいました。

現時点での問題は、マイコン起動時にロードセルからの値をとって、自動ゼロ較正するようにしているのでが、なぜかゼロになってくれないことです。

☆4/18追記

メールなどでご質問いただきましたが、この測定車はデータ収集してそのデータを解析する目的で製作したのではありません。そのためサンプリング速度も遅く、測定データを保存する機能も持っていません。

測定車にWEBサーバー機能を持たせているので、専用の測定ソフトがインストールされたパソコンがなくても、スマホやタブレットのネットブラウザでスケール換算速度と牽引力を表示できるようにしたものです。

精密な測定と収集したデータの解析を目的としたものではありませんので、誤解なきようにお願いします。

| | Comments (2)

高機能パワーパック(2)

20221230-0-29-23

高機能パワーパックが完成しました。内部の配線はお見せできるようなものではないです。

ちょっと欲張り過ぎて機能が中途半端で使い勝手はイマイチ感があります。

費用面でも時間面でもコスパ考えると、定電流機能付きの中華安定電源買った方が良かったかもしれないと思いますが、作る過程でいろいろ調べるのが楽しかったです。鉄道模型製作と同じですね。

仕掛かり品がひとつ減りました。

※12/31 追記

20221231-10-56-33

ちょっと恥ずかしいですが、リクエストありましたので中身の写真を載せます。配線がグチャグチャしていて見苦しいです。昔のパワーパックとは違ってデジタル家電みたいです。

今回マイコンはSpeediunoXIAOを使ったのですが、Arduino Nanoあたりに比べると小型なのはよいですが、ピンソケットを使ったのでピン数が少ないためか、USB抜き差しするときに接続が弛んで不具合がでることがあるようです。頻回にUSB抜き差しする用途のときは、基板に半田付けしてしまった方がよいように思いました。

あとプログラム(スケッチ)を書き換えて、電流が0.1A以下の時は小数点一桁のmA表示、それ以上の時は小数点2桁のA表示に切り替わるようにしました。OLEDディスプレーの方が、白黒液晶に比べて見やすいと感じます。

※2023/3/26追記

手前の2つのボリュームが電流調整用で左が粗調整 右が微調整用です。

電圧調整用ボリュームは上面のボリューム

背面のピンジャックは、鉄道模型運転用ですスイッチで極性逆転できます。

陸軍式ターミナルは極性固定です。

 

 

| | Comments (0)

高機能パワーパック(1)

仕掛かりの高機能パワーパックに手を手をつけました。

KKC総会が終わり、続いてあった表の仕事の業界団体の年一度のイベントも終わったので一段落しました。そこでちょっと電子工作をすることにしました。

20221123-17-20-44

以前からLT3081モジュールを使ったパワーパックを使用していましたが、それに定電流電源機能を付加したパワーパックを作ることにしました。

定電圧・電流電源装置は市販品があり、中華製なら一万円以下で買えますが、電圧・電流調節ツマミが微調整用で鉄道模型向きではないし、もちろん逆転スイッチもついていないので自作することにしました。

ちなみにJAMの低速コンテストは、市販の電源装置で運転するので、その電圧調整操作に難儀されたかたが多かったらしいですね。

Lt3801

LT3081モジュールINA226モジュールともストロベリーリナックス製を使っています。

上面に操作つまみと極性逆転スイッチをつけました。左上に液晶モニターをつけます。手前の面に電源スイッチ、定電圧・定電流切替スイッチ、電流調整つまみ(粗調整+微調整用)をつけて、背面には出力の鉄道模型運転用の極性転換可能な端子(RCAジャック)と極性固定の端子(陸軍式端子)をつけました。

一日では完成せず今日できたのは、左半分の赤枠で囲った電源部分です。デジタル電圧電流計部分はこれから組込みます。

20221123-17-34-08


ブレッドボード上では完成動作確認済です。今回はマイコンはSeeeduinoXIAOを使用し、ArduinoIDEでプログラムしました。

USB端子から、電圧・電流変化のログをとれるようにしています。

定電流機能は、LEDの抵抗値の決定や電解めっきなどの電源などに使おうと思っています。

| | Comments (0)

より以前の記事一覧