A Robot Device That Even Controls the Heat? I Tried Making a Gas Stove Rice Cooker!

by PROJECT SR in Circuits > Gadgets

12 Views, 0 Favorites, 0 Comments

A Robot Device That Even Controls the Heat? I Tried Making a Gas Stove Rice Cooker!

insructables.jpg
【料理】火加減まで自動!?ガスコンロでご飯を炊くロボット的な装置を作ってみた

I made Cooking Robot Device.

①Use a frying pan and cassette stove at the home center

Aluminum frame purchased from NIC Autotech

Uses the familiar Arduino for electronic work

② Combine ① above to configure a cooking robot-like device.

③This time, I will try cooking rice.


I made Explanation Movie.

More detail is explained in the movie.

Baselanguage is japanese , but English translated.

Supplies

Arduino uno

variable resistance

micro slide switch

Arduino shield

wiring

9V dry battery

cassette stove

frying pan

aluminum frame

●Firepower control of cassette stove with Arduino

●Using a frying pan, semi-automatic heating cooking This time, rice

Adjust the firepower by separating ignition, medium heat, low heat, and extinguishing by measuring the time.

●The cassette stove does not have to be modified; it has an external rotation and ignition mechanism attached to the handle.

●Read the rotational position of the handle using a variable resistor

●Uses 9V dry battery. Lithium-ion battery is not used (I would like to avoid using it as much as possible as it uses fire)


No special equipment is required, and you can use items sold at home centers.

Main Body Hardware

ENG メカハード説明1.jpg
ENG メカハード説明2.jpg

The appearance of the main body is like this

Aluminum frame purchased from NIOC Autotech

Joint angle materials can also be purchased at NIC, but they are printed using a 3D printer to keep costs down.

You can enter a caption


Gearbox configuration Motor ~ variable resistance

You can enter a caption


Gearbox variable resistance ~ cassette stove handle

The variable resistor and handle are coaxially arranged. Variable resistors are sold at Akizuki Denshi.

Now you can read the rotational position and adjust the firepower

You can enter a caption

Electrical and Electronic Circuits

回路図.jpg
IMG00810_HDR.jpg
IMG00812_HDR.jpg

It looks like this

You can enter a caption

However, I don't think I have any idea how they are connected, so here is a simple circuit diagram.

(Click recommended)

You can enter a caption

The motor driver used is MDD3A, which is equipped with a tact switch.

Now, even if the Arduino is not connected, if power is supplied, you can press the tact switch.

Rotate the motor and check the firepower adjustment in advance,

When there is a problem with the stove, turn off the Arduino and press the motor driver switch.

You can turn the stove handle to the extinguishing position (if the wiring is still intact...)

Program Code

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);

}

Program Code Concept

The concept of adjusting each firepower is

For common dishes, adjust the handle or lever, then cook over medium heat for ~ minutes.

I think the time when the adjustment is finished is counted as 0 seconds.

In this code, the moment when the Arduino switch is turned on is assumed to be 0sec.

The timer continues to measure time while remembering the moment when the handle reaches a specific position.

Then, take the difference between the measured time and the time it takes to reach the handle position, and find out how long the heat is on medium and low heat.

Judgment and control.

How to Use

①Set frying pan

②Set a half of cup rice

③Input water 130cc to Frying pan

④Turn on power suply switch

⑤Turn on Arduino switch

⑥Turn on cooking switch


If you have a qestion , please tell me and write your comments!