PR

ミニ早押しボタンをラズパイ・ラダー使って自作してみた

こんにちは!メカ旦那です!

最近シーケンス制御を勉強中で、何か作りながら学びたい!という想いで、早押しボタンを自作してみました。

タクトスイッチを使った簡易的なものなので、クイズ番組に出てくるような実用的なものではないですが、シーケンス・ラダーを学びたい方にはオススメです!ぜひ作ってみて下さい!

シーケンス制御とは?

メカ坊や
メカ坊や

そもそもシーケンス制御ってなんですか?

メカ旦那
メカ旦那

シーケンス制御とは家電から生産設備まで様々な機械に使われている制御方法なんだ!機械に行わせる動作を、予め順序立てて覚えさせておく事により、始動ボタンを押すだけで、後は自動的に仕事を行うと言った事が可能となるんだよ。

  • 洗濯機のスタートボタンを押したら給水→洗浄→脱水→乾燥まで自動的に行う
  • ある階でエレベーターの上昇ボタンを押すと、別階のボタン状況も踏まえて自動的に運行方法を計算し、動く
メカ坊や
メカ坊や

まだイメージがつきませんね・・・具体的にはどんなものを使って、機械に動作を覚えさせるんですか?

メカ旦那
メカ旦那

よく使われるのはPLC(プログラマブルロジックコントローラ)と呼ばれる機械にラダーと呼ばれる専用のプログラミング言語で書き込む事が多いんだ。PLCは何十万円と高くて買えないから、今回は代わりにラズパイに書き込むことにしました。また、ラダーはC言語のような英数字を記述するのではなく、ブロックを組み合わせて論理を作るので、少し変わったプログラミング言語になります。CODESYSというフリーソフトを使って作成します!

フローチャート

メカ坊や
メカ坊や

早押しボタンの仕組みってどんな感じですか?

メカ旦那
メカ旦那

最初にボタンを押した人のLEDが付いて、他の人は何回押してもLEDが付かない。リセットボタンを押したらLEDが消灯して元通りになる、と言う仕組みにします。いきなりラダーを作る前にまずは全体の流れがわかりやすいよう、フローチャートを作ってみたよ。

使用するもの

ハード

こちらはラズパイの最新モデル「Raspberry pi 4 Model B」です!非常に人気が高く、半導体不足も相まって中々手に入らなかったので、実際は「Raspberry pi 3 A+」を使いました。ですが、4は処理速度がより速いのでオススメです!

ラズパイは基板むき出しで、外的要因に弱いので、ケースと一緒に使うと長持ちします!

ブレッドボード、タクトスイッチ×4、LED×3 (赤、青、黄)、抵抗(10kΩ)×7、ジャンパ線(多量)はこちらでまとめて購入可能です!

短いジャンプワイヤがあると、配線がスッキリして便利です!

ソフト

ラズパイは様々な言語(python、C等) に対応していますが、今回はラダーを使用します。ラダーを使うにはCODESYS(フリーソフト)が必要なので、予めPCにインストールしておきましょう。ラズパイのLAN設定も必要です。設定方法は外部サイトに載っていますのでご参照ください。

リンク① CODESYS PCインストール

PLC(シーケンサ)・ラダーがフリーで使える!おすすめ入門ソフト
ラズベリーパイをPLC(シーケンサ)として使う準備編の記事です。「PLC(シーケンサ)・ラダーがフリーで使える!おすすめ入門ソフト」を紹介します。フリー(無料)でラダーのプログラムを実際に動かす手順を解説しています。「無料でPLC(シーケン

リンク② ラズパイのLAN設定

ラズベリーパイでPLC(シーケンサ)・ラダーの使い方を学んでみた
ラズベリーパイをPLC(シーケンサ)として使う実践編です。無料かつラズベリーパイでラダーのプログラムを実際に動かす手順を紹介しています。「自分でPLC(シーケンサ)・ラダーを触ってみたい!」という方におすすめな記事です。ラズベリーパイでPL

回路

回路図はコチラです。

回路図はfritzingを用いて作成しています

まず、早押しスイッチ3つをラズパイのGPIO17,27,22ピンに繋ぎました。リセットスイッチはGPIO4に繋いでいます。また抵抗(10kΩ)も各スイッチ・GND間に繋いで、プルダウンにしてみました。

続いてLEDは、赤、青、黄をそれぞれGPIO18,23,24ピンに繋ぎました。

メカ坊や
メカ坊や

ラズパイ現物見てますけど、どれがどのGPIOピンなんですかね?・・・

メカ旦那
メカ旦那

こちらがラズパイのピン配置です!GPIOは左上から順番に並んでおらず、バラバラでわかりにくいので、慎重に繋ぎましょう!

ラダー作成

ラダー図

作り方は外部サイトをご参照ください。

ラダー図はこちらになります!X002003004スイッチM002003004内部リレーY002003004LEDになります。スイッチを押すと、内部リレーがONし、自己保持とインターロックをかけます。そして、各LEDが点灯します。X001はリセットスイッチで、押すと回路がリセットされます。

これだけだとイメージが付きにくいので、実際に押した様子を後ほどご説明します!

GPIO設定

実際に動作させるにはGPIOの設定が必要です。

まず、どのGPIOをどう使うのか(入力?出力?)設定します。
スイッチを「Input」に、LEDを「Output」にしました。

詳しい設定方法は、先ほど共有した外部サイトをご参照ください。

次に、GPIOとラダー図の各デバイスを紐づけます。
「変数」がラダー図の番号、「チャネル」がGPIOの番号になります。

説明を記載しておくとわかりやすいですね

動かしてみよう!

さあ、準備は完了しました!早速動かしてみましょう!

ログイン

オンラインからログインを選択します。

運転をクリックします。

この時のLEDと、ラダー図の状態はこちらです。

もちろん、LEDは点灯していません。

赤スイッチ押下

試しに、赤スイッチを押してみましょう!

スイッチを押すことで、X002がONし、内部リレーM002もONします。
その後、Y002もONし、赤LEDが点灯しました!

指を離してみます。

M002で自己保持がかかっているため、Y002はONしたままです。

次に、青スイッチを押してみましょう。

M002は他回路ではインターロックとして機能しているため、青スイッチを押してもLEDは点灯しません。黄スイッチを押しても同様です。つまり、一番最初にスイッチを押した人がLEDが点灯する仕組みになっています!これぞ早押しボタンですね。

リセットスイッチ押下

次の問題に進むために、回路をリセットします。リセットスイッチを押してみましょう。

 

ラダー図でもインターロックが解除されて、また早押しができるようになりました。

まとめ

いかがでしたでしょうか。
シーケンス制御を使うことで早押しボタンを作ることができました!

本当は、b接点やインターロック等、シーケンスの専門用語や、CODESYSとラズパイ連携等も解説したかったのですが、ブログが長くなるので今回は割愛しました。今後また記事を作ろうと思います。

メカ旦那

旧帝大工学部を卒業後、FA業界で会社員をしています。
電子工作の面白さを伝えるべく、ザックリ解説します!

メカ旦那をフォローする
Raspberry Pi
ザックリ解説Web

コメント

スポンサーリンク