こんにちは!メカ旦那です!
最近シーケンス制御を勉強中で、何か作りながら学びたい!という想いで、早押しボタンを自作してみました。
タクトスイッチを使った簡易的なものなので、クイズ番組に出てくるような実用的なものではないですが、シーケンス・ラダーを学びたい方にはオススメです!ぜひ作ってみて下さい!
シーケンス制御とは?
そもそもシーケンス制御ってなんですか?
シーケンス制御とは家電から生産設備まで様々な機械に使われている制御方法なんだ!機械に行わせる動作を、予め順序立てて覚えさせておく事により、始動ボタンを押すだけで、後は自動的に仕事を行うと言った事が可能となるんだよ。
まだイメージがつきませんね・・・具体的にはどんなものを使って、機械に動作を覚えさせるんですか?
よく使われるのは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インストール
リンク② ラズパイのLAN設定
回路
回路図はコチラです。
まず、早押しスイッチ3つをラズパイのGPIO17,27,22ピンに繋ぎました。リセットスイッチはGPIO4に繋いでいます。また抵抗(10kΩ)も各スイッチ・GND間に繋いで、プルダウンにしてみました。
続いてLEDは、赤、青、黄をそれぞれGPIO18,23,24ピンに繋ぎました。
ラズパイ現物見てますけど、どれがどのGPIOピンなんですかね?・・・
こちらがラズパイのピン配置です!GPIOは左上から順番に並んでおらず、バラバラでわかりにくいので、慎重に繋ぎましょう!
ラダー作成
ラダー図
ラダー図はこちらになります!X002、003、004が赤、青、黄スイッチ、M002、003、004が内部リレー、Y002、003、004が赤、青、黄LEDになります。スイッチを押すと、内部リレーが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とラズパイ連携等も解説したかったのですが、ブログが長くなるので今回は割愛しました。今後また記事を作ろうと思います。
コメント