youtube始めました

Arduinoで自己保持的な使い方をするには…

_
sele-hold_eyecatchArduino(マイコンボード)
sele-hold_eyecatch
この記事は約5分で読めます。

こんにちはArduinoでいろいろ最近電気工作しているホビーハッピーです。

よくPLCのラダー制御なんかである自己保持回路ってありますよね。

1回ONされたら、何か他のトリガーが入るまでずっとON

しっぱなし。みたいな回路です。

Arduinoでももちろん自己保持的な使い方をすることは可能なので、

試しにスイッチ2つ用意して自己保持っぽいことをしてみます。

今回は自作っぽい要素はほとんどなく、プログラミング重視で行きます。

自己紹介

東証一部上場企業でサラリーマンしてます。

主に工場(生産現場)で使用する検査装置のアプリケーション開発してます。

ヒトの作業を自動化して簡略化するアプリケーションを日々開発中。

実際に自己保持回路っぽく扱ってみた例

こんな感じでLED1個、抵抗200Ω、タクトスイッチ2個を用意してArduinoと接続します。

タクトスイッチの配線方法や、使い方については、

以前記事にした内容を参考にしてくださいね。↓↓↓

動作内容としては、

スイッチ1を押したらLEDを点灯。

スイッチ1は何度押しても変化なし。

スイッチ2を押すとLED消灯。

スイッチ1を押してLEDが点灯するようにする。

通常、タクトスイッチで通電中はLEDが点灯して、

通電が切れるとLEDが消灯しますよね。(単純な電気回路の場合)

今回の自己保持回路っぽいものは、1回LEDを押すと保持してくれます。

ただ、注意点として普通にLEDをONするようにスケッチ(プログラム)に

記述するだけでは、毎回ループしてLEDをONする命令が飛びます。

LEDくらいならいいですが、モーターでこれをやると

暴走する原因になってしまいます。

ですから必要な時だけONするイメージをつけましょう。

自己保持回路に使用した回路

具体的に使用した回路をこちらに載せておきます。

ピンの番号はてきとうに変えてください。以下で紹介するスケッチ(プログラム)と

一致させておけば問題なく動きます。

13番ピンと11番ピンです。

見やすいように離していますが、もちろん隣同士で2,3番ピンを使っても大丈夫です。

ワークとしてわかりやすくするためにLEDをつけています。

このLEDは5番ピンにつながっています。

Arduinoで自己保持っぽくする回路

どんなスケッチ(プログラム)で自己保持回路っぽくしているか

今回使用したスケッチ(プログラム)をこちらに載せておきます。

ポイントは、Counterを使用して何度もLEDのON命令を出さないようにしているところです。

int L_switch=13;
int R_switch=11;
int LED_pin=5;
bool counter=true;

void setup() {  
 pinMode(L_switch,INPUT);
 pinMode(R_switch,INPUT);
 pinMode(LED_pin,OUTPUT);
 Serial.begin(9600);
}

void loop() {  
  if(digitalRead(L_switch)==HIGH)
  {
    if(counter)
    {
      digitalWrite(LED_pin,HIGH);
      delay(50);
      if(digitalRead(R_switch)==LOW)
      {
        counter=true;
      }
    }
  }         
  else if(!counter)
  {
    digitalWrite(LED_pin,LOW);
  }
  delay(100);
  if(digitalRead(R_switch)==HIGH)
  {
      counter=false;
    }
  delay(100);
}

L_switchはその名の通り、左のタクトスイッチ。

R_switchは右のタクトスイッチ。

LED_pinはLEDとつながっているピンを指定しています。

重要なのは、counterというboolを置いて、それで判別させているところです。

一回目左のタクトスイッチを押す=(L_switch)がHIGHになる

すると、定義の時からcounterはTrueなのでLEDは点灯します。

その後、左のタクトスイッチを押しても、LEDは点灯したままです。

しかし、右のタクトスイッチを押すことにより、

counter=Falseになり、自動的にLEDのLOWの操作に入る。

という感じの流れです。

簡単な電気回路では、スイッチは保持しておく必要がありますが、

このようにcounterなど、小細工をしてあげると、

スイッチを保持しておく必要がなくなります。

今回の自己保持回路っぽいものの使い道

今回紹介した内容で流用できそうなアイデアを少し出しておきます。

ボタンを1回押されたら、動作完了まで押せなくしたいとき

よくあるのが、ボタンを連打して誤動作してしまうことです。

そんな時はボタン連打されても、counterを見て、「あ、もうすでに1回押されているな」

と判定できれば、連打も怖くないはずです。

そのうえで行いたい動作を完了したら、また押せるようにすればいいのです。

次の動作まで(センサーなどの入力があるまで)動作を保持しておきたいとき

あとは、モーター関係であったり、物を動かす時に便利なところです。

モーターを機械的な端(いけるところの限界)まで行ったら止める。

なんてのも可能です。

ここまで来たら限界だ。というところにセンサーをつけておいて、

実際にステージやモーターの軸がそこまで来たら今回の右のタクトスイッチのような

働きをさせてあげればいいです。

コメント

タイトルとURLをコピーしました