« 英国2024(7)最終日はDidcotへ | Main | トミックスの5001ワンハンドルパワーパックを改造する(続) »

トミックスの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 配線図修正

|

« 英国2024(7)最終日はDidcotへ | Main | トミックスの5001ワンハンドルパワーパックを改造する(続) »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



« 英国2024(7)最終日はDidcotへ | Main | トミックスの5001ワンハンドルパワーパックを改造する(続) »