自動ボトル充填機は、飲料および清涼飲料業界で最も一般的に使用されています。これらの機械は、ボトルを充填するための経済的で迅速な方法であるコンベヤーベルトを使用しています。ほとんどのPLCは自動ボトル充填機に使用されますが、Arduinoを使用して非常に基本的で用途の広いボトルフィラーを作成できます。Arduinoをプログラムして、IRまたは超音波センサーを使用してボトルを自動的に検出し、コンベヤーベルトをしばらく停止することでボトラーが満たされるようにすることができます。次に、再びベルトを動かし、次のボトルが検出されたら停止します。
ここでは、Arduino Uno、コンベヤーベルト、電磁弁、IRセンサー、ステッピングモーターを使用した自動ボトル充填機のプロトタイプを設計します。ベルトコンベヤーは、一定のプリセット速度でステッピングモーターによって駆動されます。ステッピングモーターは、IRセンサーがベルト上のボトルの存在を検出するまでベルトを駆動し続けます。 IRセンサーを外部トリガーとして使用しました。そのため、IRセンサーがハイになると、Arduinoにトリガーを送信してモーターを停止し、ソレノイドバルブをオンにします。事前に設定された必要な遅延は、ボトル充填のコードにすでに入力されています。 Arduinoは、指定された時間までソレノイドバルブをオンにし、ステッピングモーターをオフにします。その後、電磁弁が充填をオフにし、コンベアが動き始め、次のボトルを充填できるようになります。
以前は、ソレノイドバルブ、IRセンサー、ステッピングモーターを備えたArduinoを使用していたため、Arduinoとこれらのコンポーネントの基本的なインターフェイスについて詳しくは、リンクにアクセスしてください。
必要なコンポーネント
- Arduino Uno
- ステッピングモーター(Nema17)
- リレー
- 電磁弁
- IRセンサー
- A4988モータードライバー
- 電池
回路図
Arduinoを使用した自動ボトル充填システムの回路図を以下に示します。
フリッツを使って回路図を描きました。この回路では、ソレノイドバルブがリレーモジュールを介してArduinoに接続され、A4988ドライバーモジュールがステッピングモーターを制御するために使用されます。Nema17およびA4988ドライバーモジュールの詳細については、ArduinoおよびA4988でNema17を制御する方法のチュートリアルに従うことができます。
リレーモジュールの入力ピンは、Arduinoのピン7に接続されています。A4988モジュールの方向ピンとステップピンは、Arduinoの2ピンと4ピンに接続されています。このプロジェクトでは、IRセンサーがArduinoへの外部割り込みとして使用されます。Arduino Unoでは、デジタルピン2と3が割り込みピンであるため、IRセンサーのOutピンをArduinoの3番目のピンに接続します。ソレノイドバルブは24V電源から電力を供給され、ステッピングモーターは12V電源から電力を供給されます。
自動ボトル充填のためのArduinoプログラム
Arduinoを使用したこの自動ボトル充填システムの完全なプログラムは最後に記載されています。ここで私はいくつかの重要な行を説明しています。
ステッピングモーターライブラリを含めてプログラムを開始します。ステッピングモーターライブラリはこちらからダウンロードできます。
その後、ステッピングモーターの1回転あたりのステップ数を定義します。NEMAの場合、1回転あたり17ステップは200です。
#include
モータードライバモジュールのステップピンと方向ピンを接続するピンを指定します。モーターはドライバーモジュールを介して接続されているため、モーターインターフェイスタイプを Type1 として定義します。
ステッパーステッパー(STEPS、2、4); #define motorInterfaceType 1
ステッピングモーターの速度を設定します。
stepper.setSpeed(500);
リレー、ステップ、および方向ピンを出力として定義します
pinMode(relay、OUTPUT); pinMode(4、OUTPUT); pinMode(2、OUTPUT);
Arduinoの外部割り込みの構文を以下に示します。
attachInterrupt(digitalPinToInterrupt(pin)、ISR、モード);
どこ:
digitalPinToInterrupt(pin):外部割り込みが接続されるピンを定義するために使用されます。Arduino Unoのピン2と3は、外部割り込みピンです。
ISR:外部割り込みが呼び出されたときに呼び出される関数です。
モード:トリガーする遷移のタイプ(下降、上昇など)。
リンクをたどって、Arduino割り込みの詳細をご覧ください。
attachInterrupt() 関数には、ピン3は、外部割り込みピンであることが指定され、 IR_detectedの IRセンサがHIGHにLOW(立ち上がり)であるから、その状態を変更するたびに関数が呼び出されます。
attachInterrupt(digitalPinToInterrupt(3)、IR_detected、HIGH);
void IR_detected() は、IRセンサーがハイになったときに実行されるISR関数です。そのため、IRセンサーがハイになると、この機能はステッピングモーターを数ステップ実行してから、ステッピングモーターを停止し、電磁弁をオンにします。
void IR_detected(){stepper.step(150); digitalWrite(relay、HIGH); stepper.step(0);
最後に、ラップトップに接続して、コードをArduinoにアップロードします。以下の画像は、Arduinoを使用した自動ボトル充填システムのプロトタイプを示しています。
完全なコードとデモンストレーションビデオを以下に示します。