ProjectSRのアイコン画像
ProjectSR 2025年04月27日作成 (2025年04月27日更新) © MIT
製作品 製作品 閲覧数 293
ProjectSR 2025年04月27日作成 (2025年04月27日更新) © MIT 製作品 製作品 閲覧数 293

【機械工学?】火加減まで自動!?ガスコンロでご飯を炊くロボット装置を作ってみた

【機械工学?】火加減まで自動!?ガスコンロでご飯を炊くロボット装置を作ってみた

🔳概要・基本構成

①ホームセンターにあるフライパンとカセットコンロを使用
 アルミフレームはNICオートテックより購入
 電子工作でおなじみArduinoを使用

②上記①を組み合わせて、加熱調理ロボット的な装置を構成

③今回は試しにお米を炊いてみる

🔳解説

Youtube解説動画

ここに動画が表示されます

ニコニコ動画解説
https://www.nicovideo.jp/watch/sm44920465

ポイント

●Arduinoでカセットコンロの火力制御
●フライパンも使って、半自動加熱調理 今回はお米
 火力調整は、点火、中火、弱火、消火を時間計測で切り分け
●カセットコンロは改造せず、ハンドルに外付けの回転・点火機構を搭載
●ハンドルの回転位置を、可変抵抗で読み取り
●9V乾電池を使用 リチウムイオンバッテリーは不使用(火を使うのでなるべく使用避けたい)

特殊な機材は不要で、ホームセンターで売られているものでも使用できます。

1⃣本体ハード

本体の外観はこのようになっています
アルミフレームはNIOCオートテックから購入
ジョイントアングル材もNICで購入可能ですが、3Dプリンターで造形してコストを抑えています
キャプションを入力できます

ギアボックス構成 モータ~可変抵抗
キャプションを入力できます

ギアボックス 可変抵抗~カセットコンロハンドル
可変抵抗とハンドルは同軸上に配置されています。 可変抵抗は秋月電子にて販売されています
これで、回転位置を読み取り、火力調整が可能になります
キャプションを入力できます

2⃣電気電子回路

外観はこのようになっています
キャプションを入力できます
ただこれだとどうつながっているか全くわからないと思うので、簡易的な回路図がこちらになります
(クリック推奨です)
キャプションを入力できます
モータドライバーはMDD3Aという、タクトスイッチが搭載されたものを使用しています。
これで、Arduinoを接続しなくても、電力を供給していれば、タクトスイッチを押して
モータを回転させ、火力調整の事前確認であったり、
コンロでトラブルがあった際に、Arduinoの電源を切って、モータドライバーのスイッチを押して
コンロのハンドルを消火位置まで回転できます(配線が生きていればですが・・・)

3⃣プログラム

const int INPUT_PIN = A1; int pin3 = 3; int pin5 = 5; int VOLUME; int timec; enum State { IDLE, IGNITION, ADJUST_FIRE, COOKINGS, COOKINGF, FINISHED }; State currentState = IDLE; unsigned long stateStartTime = 0; void setup() { Serial.begin(9600); pinMode(pin3,OUTPUT); pinMode(pin5,OUTPUT); } void loop() { unsigned long currentMillis = millis(); VOLUME = analogRead(INPUT_PIN); // アナログ値の読み取り int angle = map(VOLUME,0,1023,0,180); Serial.print("angle: "); // シリアルモニタに出力 Serial.println(angle); Serial.print("モード: "); // シリアルモニタに出力 Serial.println(currentState); switch (currentState) { case IDLE: Serial.println("待機中..."); if (digitalRead(12) == LOW) { // スイッチが押されたら開始 analogWrite(pin3,0); analogWrite(pin5,0); currentState = IGNITION; } break; case IGNITION: if(angle>135){ Serial.print("ハンドル回転"); Serial.println(angle); analogWrite(pin3,0); analogWrite(pin5,100); stateStartTime = currentMillis; } else{ Serial.println("点火中..."); Serial.println(angle); analogWrite(pin3,0); analogWrite(pin5,0); if ((currentMillis - stateStartTime)/1000 >= 3) { // 3秒経過 Serial.println("点火完了"); currentState = ADJUST_FIRE; } } break; case ADJUST_FIRE: if(angle<163){ Serial.println("火力中火調整モード"); Serial.println(angle); analogWrite(pin3,100); analogWrite(pin5,0); stateStartTime = currentMillis; } else{ Serial.println("中火維持 調理中"); Serial.println(angle); analogWrite(pin3,0); analogWrite(pin5,0); if ((currentMillis - stateStartTime)/1000 >= 240) { Serial.println("中火終了"); currentState = COOKINGS; } } break; case COOKINGS: if(angle<166){ Serial.println("火力弱火調整モード"); Serial.println(angle); analogWrite(pin3,100); analogWrite(pin5,0); stateStartTime = currentMillis; } else{ Serial.println("弱火維持 調理中"); Serial.println(angle); analogWrite(pin3,0); analogWrite(pin5,0); if ((currentMillis - stateStartTime)/1000 >= 300) { Serial.println("弱火終了"); currentState = COOKINGF; } } break; case COOKINGF: if(angle<174){ Serial.println("消火開始"); analogWrite(pin3,100); analogWrite(pin5,0); } else{ analogWrite(pin3,0); analogWrite(pin5,0); Serial.println("消火完了"); currentState = FINISHED; } break; case FINISHED: analogWrite(pin3,0); analogWrite(pin5,0); Serial.println("炊飯完了!"); while (true); // 停止 break; } delay(100); }

各火力調整の概念ですが、
よくある料理はハンドルやレバーを調整してから、中火で~分というように
調整し終えた時を0秒としてカウントしていると思います
キャプションを入力できます

今回のコードでは、ArduinoのスイッチをONにした瞬間を0secとして
ハンドルを特定の位置に達した瞬間を記憶しつつ、引き続き時間計計測を実施
そして、計測時間と、ハンドル位置に達した時間の差分をとって、中火、弱火の時間が今どれくらいなのかを
判断して、制御を行っています。
キャプションを入力できます

もし何かご質問がありましたら、コメントをください

部品名 購入先
Arduino uno 秋月電子通商orマルツパーツor千石電商
可変抵抗 秋月電子通商orマルツパーツor千石電商
マイクロスライドスイッチ アマゾン
Arduinoシールド アマゾン
配線 ホームセンタ
9V乾電池 ホームセンター
カセットコンロ ホームセンタ
フライパン ホームセンター
アルミフレーム NICオートテック
1
ログインしてコメントを投稿する