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!


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


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



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!