親父鉄道、好日線

赤字路線です

Arduinoで鉄道模型

取り敢えず、バラックで組み立ててみました。

f:id:kagebase:20181114083006j:plain

老眼で、見づらくなっています。w

東芝のTA7291P、PWMモードで480khz、音はジーとかなりうるさい。

なので、電解コンデンサを出力につけて平滑化します。

TA7291Pの出力に電解コンデンサをつけた例はあまり見ません。

マイオリジナルです。

極性が変わっても、出力とグランドの間は正電位なので問題ありません。

モーターの誘導起電力と打ち消し合ってかなり効果があります。

手持ちの容量で100uFと1000uFを試したのですが、1000だと大きすぎるようです。静止時モーターが起動しないー電荷がたまるー一気に流れるーラビットスタート、といった感じです。

これで、ボリューム中点から、左右回すだけで前進後進を加減速します。

鉄道模型は、12Vモーターと言いながら、ごく低い電圧領域で運転することが多く、発進あたりの電圧の微調整にはシビアです。

f:id:kagebase:20181114084529j:plain

 

スケッチは、とてもシンプル

-----

void setup() {

pinMode(9,OUTPUT); //信号用ピン
pinMode(10,OUTPUT); //信号用ピン
pinMode(8,OUTPUT); //停止LEDピン
}

void loop(){
//アナログ入力:0番ピンの値を2で割る
int val=analogRead(0)/2; //0~511の値にする

//静止/正転/逆転の状態に分けてプログラムする
if(val>=255 && val<=256){ //静止:255~256
//LOW,LOWでデジタル出力
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(8,HIGH);
}else if(val>256){ //正転:257~511
//HIGH,LOWでデジタル出力
analogWrite(9,val-256); //出力値:1~255
digitalWrite(10,LOW);
//valが大きいほど出力値も大きくなる
digitalWrite(8,LOW);

}else{ //逆転:0~254
//LOW,HIGHでデジタル出力
analogWrite(10,255-val); //出力値:1~255
digitalWrite(9,LOW);
//valが小さいほど出力値は大きくなる
digitalWrite(8,LOW);
}
}

-----

イジョです。