イノッチの鉄道模型ブログ

日常生活の中のトピックスを気ままに書きます。鉄道模型製作や畑作業が中心です。
これまで製作した鉄道模型作品は、ホームページ「イノッチの鉄道模型」inoyoshio.jimdo.comに載せていますので、こちらもよかったらみてください。

Arduinoの遮断機動作でSOS!

12月4日の「シルバー人材センター作品展」搬入日に向け、遮断機の遮断カン動作の製作に取り組んでいますが、雲行きが怪しくなってきました。
①遮断カン動作の構造的、機構的な問題と
②Arduinoスケッチのサーボモータ検討不十分の問題です。


①について。機構的には対となる遮断カンそれぞれにサーボモータを取り付けて上下運動だけで動かすのがシンプル イズ ベスト でいいのですが、あいにく空きピンが1つしかなく、サーボモータも1つしか使えない、ということがまず発覚。1つのサーボで2本の遮断カンを動かすことにしました。


幸い、踏切の下は30mm厚のスタイロフォームなので、サーボを線路の真下にセットできるので、サーボ軸を垂直にしてホーンを水平に回転させ 滑車で上下の動きにする機構にします。スタイロフォームを適当な大きさにくり抜きました。


サーボ、遮断桿、滑車の位置関係を固定するための受け台を 試しに厚紙で作りました。部品を載せ、線路の下に挿入セットできることを確認し、アルミ板で改めて作りました。


アルミの受け台にこれらを固定していきます。


遮断桿の回転軸を通す両穴をつくり、滑車を固定しました。水平方向から垂直方向に変えるのに、家にあった滑車を使い ヒモで伝達する方法は非常に不安ですが、今はやるしかないです。


遮断桿が下がるときは、自重で下がらせないとダメなので、SUSパイプを通しました。ちょっと太いけれど、ゼブラ模様を塗れば違和感はないと思います。とりあえず機構的にはここまでとし、② Arduinoでサーボモータを動かす検討に入りました。


Arduinoでサーボモータ駆動は初めてです。多少 本やネットから ”にわか勉強”して動作することは確認してましたが、いざ本番で
●定義の部分に #include
        Servo myservo;
        int pos = 始点角度;
●void setup(){ のところに
        myservo.attach(ピンNo);
 ●void loop(){ のところに
        for(pos =始点角度; pos >=終点角度 ; pos -= 1){
        myservo.write(pos);
        delay(時間);}
を入れてサーボの単独テストするも、電源ON時にサーボが激しく動いたあと所定の角度で動き始めましたが、カクカク動作でした。つぎに、前回作った2列車自動運転のスケッチに上記の内容を織り込んでみたところ、今度は全く動きませんでした。前途多難の予感です。


Arduinoでマイクロサーボを安定的に動かすには かなりノウハウが必要のようです。まして今回、ヒモで動きを伝える構造なので、急峻な動きは厳禁です。まちがいなくタイムオーバーになるので、遮断機動作は作品展終了後の課題とし、車両の自動運転のジオラマ組み込みを優先することにします。

Arduinoで2列車往復運転

2つの車両を交互に往復運転させます。Arduinoを使うのは約1年ぶりです。物忘れが気になる年になり、スケッチづくりは大丈夫か不安でしたが、ボチボチやっているうちに思い出してきました。

(既掲載)このような走行計画を立て、これに従った回路とスケッチを作っていきます。停止時間や加減速時間などは仮設定です。
Arduinoスケッチをつくるにあたり、
 ①外部信号(スタートボタンPBや リードスイッチRS)をif関数で検出していく方法で進めました。昨年と同様。
 ②なめらかな速度増減にfor関数を使用。これは読者の方々から教えてもらった定番の方法みたいです。昨年はステップ制御してました。
 ③if関数条件下の時間帯にRS信号を読み込まないようにdelay関数を駆使する。
以上、試行錯誤して作ったスケッチを最後に載せています。


つぎに回路図です。

モータドライバTA7291Pを2車両それぞれに使っています。
さて いよいよ実装回路の製作ですが、


去年使ったArduinoと新調したブレッドボードをスチレンボード上に並べ、この上にジャンパー線などで回路を組み込みます。


これが実験用の配置です。大きな平板に2本の線路を並べ、4つのリードスイッチを線路の両側に置き、組み込んだ回路を手前に置いています。実際は ジオラマの裏側に配線群を置くので、ここでは線路の右側が「箕面駅」左側が「滝下駅」にあたります。左側にスタートボタンが見えます。まず右上の3両編成の車両が動き出し、駅に着いたら左下の阪急電車がスタートし、交互に1往復して終了します。


しかしなかなか思うように動いてくれません。リードスイッチRSの位置と加速減速時間やif関数の拘束時間などパラメータが多く、しかも再現、不再現を繰り返しました。頭がパニックになりかけたとき、その主原因が判明しました。写真のジャンパー線です。 20本セットで購入した1本ですが、接触不良でした。カシメ不良か素線断線か?


ジャンパー線を入れ替え、速度/時間をこの実験配置に合わせた結果、予定通りの走行ができました。その様子を動画にしています。



P1110029
実験配置はジオラマよりかなり狭いので、ここでは加速/減速時間を各約2秒、車両停止後次の別車両発車まで時間を1秒としています。


さて最後の製作作業は踏切の遮断カンの動作機構です。私には未知の分野でして、サーボモータの回転と遮断カンの開閉をシンプルな伝達機構でできないか、次週検討します。


付記)今回のスケッチを参考に掲載します。
int i;
void setup(){
pinMode(2,INPUT);//RSa
pinMode(3,INPUT);//RSb
pinMode(4,INPUT);//RSc
pinMode(5,INPUT);//RSd
pinMode(6,INPUT);//M2速度
pinMode(7,OUTPUT);//PB
pinMode(9,OUTPUT);//M1速度
pinMode(10,OUTPUT);//M1
pinMode(11,OUTPUT);//M1
pinMode(12,OUTPUT);//M2
pinMode(13,OUTPUT);//M2
digitalWrite(6,LOW);//M2速度
digitalWrite(7,LOW);//PB/ON用
digitalWrite(9,LOW);//M1速度
digitalWrite(10,LOW);//M1
digitalWrite(11,LOW);//M1
digitalWrite(12,LOW);//M2
digitalWrite(13,LOW);//M2
}
void loop(){
int val;
val=analogRead(0);//速度

if(digitalRead(7)==HIGH){//PBでスタート
delay(3000);//3秒後に発車
//----------------------------------
digitalWrite(10,HIGH);//①M1正走
for(i=val/12;i analogWrite(9,i);
delay(30);//約2秒後に定速
}
delay(7000);//SRaによる誤動作防止用
}
if(digitalRead(3)==HIGH){//RSb検出
for(i=val/4;i>0;i--){//減速
analogWrite(9,i);
delay(30);//約2秒後に停止
}
digitalWrite(10,LOW);
delay(1000);//1秒後M2発車
//-----------------------------------
digitalWrite(13,HIGH);//②M2逆走
for(i=val/12;i analogWrite(6,i);
delay(30);//約2秒後に定速
}
delay(7000);//SRdによる誤動作防止用
}
if(digitalRead(4)==HIGH){//RSc検出
for(i=val/6;i>0;i--){//減速
analogWrite(6,i);
delay(30);//約2秒後に停止
}
digitalWrite(13,LOW);
delay(1000);//1秒後M1発車
//------------------------------------
digitalWrite(11,HIGH);//③M1逆走
for(i=val/12;i analogWrite(9,i);
delay(30);//約2秒後に定速
}
delay(7000);//SRbによる誤動作防止用
}
if(digitalRead(2)==HIGH){//RSa検出
for(i=val/4;i>0;i--){//減速
analogWrite(9,i);
delay(30);//約2秒後に停止
}
digitalWrite(11,LOW);
delay(1000);//1秒後M2発車
//-------------------------------------
digitalWrite(12,HIGH);//④M2正走
for(i=val/12;i analogWrite(6,i);
delay(30);//約2秒後に定速
}
delay(7000);//SRcによる誤動作防止用
}
if(digitalRead(5)==HIGH){//RSd検出
for(i=val/6;i>0;i--){//減速
analogWrite(6,i);
delay(30);//約2秒後に停止
}
digitalWrite(12,LOW);
}
}

別の作業が入ってきた

動力系をツメないといけないのに、この1週間全く別のことをしていました。会社の同期の仲間でつくるOB会の記念誌「46会のあしあと」の製作です。次回の会合(11/22)に配る予定で、今やらないと間に合わないところまできてしまい、泣く泣くジオラマ製作は中断です。


パソコンで「しまうまプリント」のサイトから、「フォトブック」を製作します。もともと長女からすすめられて過去2回製作してますので、時間だけが気になります。


2006年から今年まで45回の会合を重ね、掲載する写真は130枚ほどになり、72ページの正方形タイプを使うことにしました。1冊598円です。表紙、背表紙から始まり、レイアウトパターンも豊富でコメントも付けられます。正味1週間かかってしまいました。


最後のページに各回の一覧表を載せて終わりました。10冊注文し、送料は100円です。ポストに入ってくる日が待ち遠しいです。


ということで動力系の検討を再開します。こちらも「シルバー人材センター会員作品展」の搬入まで3週間ちょっとです。

2つの線路にそれぞれ検出用リードスイッチが2個づつ必要で、適当な個体に計4つリードスイッチを固定しました。これで微妙な位置関係を検討します。車両の側面にはマグネットを付けました。