So-net無料ブログ作成
前の1件 | -

サーボ駆動型踏切遮断機を作る その21 [Arduino]

ホールIC「DN6851-A」のトラブルで道草を食ってしまいましたが、中間踏切のスケッチを考えて行きます。

初めに、問題点3の「特急・普通で鳴り出しセンサーの位置はどうする?」ですが、実際の踏切では特急通過待ち時間(短い)と普通待ち時間(長い)では違うとlofthonsenさんよりコメントがあり、鳴り出しセンサー位置は特急(速度の速い)に合わせて1か所に設けるだけでいいことになりました。

次に、問題点1の「踏切を単行と長編成の最後尾が通過後、同じ時間で遮断機を上げる」の解決法ですが、手っ取り早いのが、車両に付けるマグネットを先頭車には付けないで、最後尾の車両のみに1個付けることです。(単行も1個)

この方法は、中間踏切では問題無いのですが、駅直近踏切では問題が出てくるでしょうね。(-_-;)

ホームの線路上に設置する鳴り出しセンサーの位置がホームの後方に下がってしまって、単行の停車位置が後ろに下がり過ぎてしまいます。

やはりマグネットは先頭車と最後尾車2ヶ所にあるべきですね。

下のスケッチをご覧ください。

#define LED 22
#define SENOFF_1 41
int val = 0;
int SENState = 1;
void setup()
{
pinMode(LED, OUTPUT);
pinMode(SENOFF_1, INPUT);
}
void loop()
{
val = digitalRead(SENOFF_1);
//
if (val == HIGH) {
SENState = 1 - SENState;
}
if (SENState == 1) {
digitalWrite(LED, LOW);
delay(200);
}
else {
digitalWrite(LED, HIGH);
delay(200);
}
}

このスケッチは、41番ピンに繋いだタクトスイッチを押すたびに、22番ピンに繋いだLEDがONとOFFを繰り返すスケッチです。

これを応用して、鳴り止めセンサーが先頭車のマグネット(1個目のマグネット)を検知したら遮断機は下げたまま、警報灯は点滅のまま、次に最後尾車のマグネット(2個目のマグネット)を検知したら、遮断機を上げて警報灯を消灯するようにすればいいと思いますが、鉄コレ動力の単行ではマグネットの間隔が狭いせいかうまくいきません。

最終案として、片極検知ホールICを2個使う手もあります。

digi-keyで入手した「EW-750B」は磁石のS極に反応しますが、N極に反応するホールICも使うのです。

鳴り出しセンサーにEW-750Bを使うなら、鳴り止めセンサーにN極に反応するホールICを使い、先頭車両にS極面を下にしたイリジウム磁石を最後尾車にN極を下にしたイリジウム磁石を貼ればいいですね。

digi-keyで調べたのですが、EW-750Bのような3-SIPタイプのN極検知は見つからず、DN9799のようなSOT23-3タイプがありました。




shinnyu.png

最後に問題点2の「上り(下り)の車両が踏切制御区間に居る時に、下り(上り)の車両も踏切制御区間に入って来た時の解決法です。

在線2.jpg

お互いの車両が踏切制御区間に居る時を相手に教えればいいと思います。

#define ZAISEN_1 35
#define ZAISEN_2 36
pinMode(ZAISEN_1, OUTPUT);
pinMode(ZAISEN_2, OUTPUT);

新たに2ピン追加して、ピンには何も繋ぎません。

<上り列車が鳴り出しセンサーをONにしたとき>
if (SENON_1 == HIGH) {
踏切ONの処理
digitalWrite(ZAISEN_1,HIGH);//ここを追加

上り列車がSENON_1をHIGHにした時にZAISEN_1をHIGHにします。

ここは下り列車に上り列車が踏切制御区間に居ることを知らせる処理です。

<下り列車が鳴り出しセンサーをONにしたとき>
if (SENON_2 == HIGH) {
踏切ONの処理
digitalWrite(ZAISEN_2,HIGH);//ここを追加

下り列車がSENON_2をHIGHにした時にZAISEN_2をHIGHにします。

ここは上り列車に下り列車が踏切制御区間に居ることを知らせる処理です。


<上り列車が鳴り止めセンサーをONにしたとき>
if ((SENOFF_1 == HIGH) &&(ZAISEN_2==LOW)) {
踏切OFFの処理
digitalWrite(ZAISEN_1,LOW);//ここを追加

こう書くと、下り列車が踏切制御区間に居るとZAISEN_2はHIGHなので踏切OFFの処理はできないことになります。

最後にZAISEN_1をLOWにすれば、下り列車から見れば踏切制御区間に上り列車が居ないので踏切をOFF処理が出来るということです。

<下り列車が鳴り止めセンサーをONにしたとき>
if ((SENOFF_2== HIGH) &&(ZAISEN_1==LOW)) {
踏切OFFの処理
digitalWrite(ZAISEN_2,LOW);//ここを追加

下りも同様にSENON_2がHIGHになった時にZAISEN_2をHIGHにし、踏切を抜けるSENOFF_2がHIGHになった時にZAISEN_2をLOWにするようにスケッチを書きます。

このようにスケッチを書けば、どちらかの車両に先に踏切制御区間を抜けられても踏切はONのままになります。

と、まぁ~理屈では解っているのですが、実際に実験線で動かしてみると予想通りには事は運ばないのです。(-_-;)

にほんブログ村 鉄道ブログ 鉄道模型 レイアウト製作へ
にほんブログ村
にほんブログ村 鉄道ブログ 鉄道模型へ
にほんブログ村
コメント(0) 
共通テーマ:趣味・カルチャー
前の1件 | -