Enable Javascript


Last Arduino/ESP8266 project (click to open)

User Rating: 5 / 5

Star ActiveStar ActiveStar ActiveStar ActiveStar Active
 

Article Index


"Luxe" and cheap, a ~$/€ 40.= Sous-vide pan with a Wi-Fi WebSocker Server,
circulation pump and an PID controlled accuracy of 0.06°C.
(There is also a "Simple" ~$/€ 12.= Sous-vide Sonoff
Wi-Fi WebSocker Server with an PID controlled accuracy of 0.06°C)

  Sous-vide cooking, hmmm: enjoy your meal - bon appétit - eet smakelijk  

(click thumbnail)

"Luxe" Sous-vide cooking:
That's a WeMos ESP8266 module with a waterproof DS18B20 Digital temperature sensor and circulation pump.
Programmable over Wi-Fi with a ESP8266 WebSoket 1) Server and a HTML5-Client.
- Connecting to mains.
- Hang the sensor and pump in the water.
- Open SousVide.html in a modern browser (PC, Tablet, Smartphone).
- Connect it to the Sous-vide Server.
- Send command(s) to the Server (see Sous-vide cooking, last page)
- See the temperature chart in your Browser and wait for MP3 signal.
- Enjoy your meal - Bon appétit - Eet smakelijk.

1) WebSocket?: Real-time bidirectional event-based communication.

Hardware:
Very affordable on Banggood/AliExpress. For configuration examples see images and/or Fritzing (in the download).
Total cost: ~$/€ 40.=.

  • Cheap 3L fries pan, max. 2000W ($/€ ~20,=)
  • 28YBJ-48 DC 5V 4 Phase 5 Wire Stepper Motor With ULN2003 Driver Board
    (Buy a 4096 steps type, or change my degrees and stepper code)
  • 220V, 2000W AC SCR (Volt and Watt depending on the used fries pan)
  • Mini USB water pump, 5V, 100°C
  • Micro switch
  • 5V DC power, min. 700mA
  • Waterproof DS18B20 Digital 1-wire temperature sensor
  • 4.7K resistor
  • 470uF elco
  • 100nF ceramic
  • 220V, 10A relay (.../WeMos/Solid state)
    (Volt and Amperes depending on the used fries pan)
  • WeMos D1 mini
  • PCB 7x9 cm
  • Various mounting materials and wires (see images)

The PCB is mounted in the modified housing of the fries pan.


Software:
Download my SousVideSonoff project here.
Use the latest Arduino IDE and Arduino/ESP8266 libraries or, if you are an advanced programmer, PlatformIO.
Addresses of te used third-party libraries in de ino and header files.
The HTML is a simple test and demonstration of SousVidePan. Develop your own (graphical) user interface in HTML/JavaScript and use these files as a guide.
The SousVide pan webSocket Server must have a static IP.

Edit this:
In SousVide .html: edit the edit this section.
In SousVide .ino/h: edit the edit this sections.

Degrees Stepper and AC SCR:
Temperature over/undershoot in sous-vide is a very bad thing, so we have to avoid that.
With a power of 2000 W, the water bath is quickly on temperature but hard to keep under control.
We control the heating current with a stepper motor and a SCR (AC power dimmer with a potentiometer) in four steps from high to low. On step four the temperature is controlled by PID control.
Before starting cooking or Auto-Tune PID you must find out the best values in rotation degrees for your own sous-vide pan.
In my own configuration: 1:endPos (fixed 264°), 2:190°, 3:120°, 4:40° (power stepper motor turn the potentiometer to [n] degrees)
Edit these values in SousVidePan.h:

const uint8_t ...
  LowB = 40, // heating AC SCR power turn degrees ... (higher value is more AC power)
  MidB = 120, // ...
  HighB = 190, // ...

PID control - Auto Tune PID:
The Arduino PID library a very good choice. I use this PID library in my Sous-vide projects, with an accuracy of 0.06°C.
The ideal Kp, Ki and Kd (PID) values are depending on the power and water content.
In my own configuration: Kp:1018.59, Ki:9.32, Kd:0.0.
If the four above degree values are ok then run the Auto Tune command once.
Start from browser the auto tuning mode (±1-3 Hours). The calculated PID parameters are displayed and saved in the WeMos module.
Now the sous-vide pan is ready for cooking.


Sous-vide cooking:
First time use? Set the temperature scale to Celsius, Fahrenheit or Kelvin. Decimal mark: use "period/full point" (.) or "decimal comma" (,)(the program converts "," to "."). Do not use "Digit grouping". All times in minutes or use the hh:mm format (the program converts it to seconds).


command, arg1, arg2, arg3 | explanation and description
------------------------------------------------------------------------------------------------------
start,   temp, time, wait | start (delayed) cooking
                          |   temp: *C/*F/*K, setpoint
                          |     (min. 35.00/95.00/308.15, max 90.00/194.00/363.15)
                          |   time: mmm or hh:mm, cooking time
                          |     (mmm: time in minutes, max 4320 or 72:00)
                          |     Timer start after wait and reaching the setpoint
                          |   wait: mmm or hh:mm, delayed cooking start
                          |     (mmm: time in minutes, max 240 or 4:00)
                          |   The cooking time start after "wait time" and
                          |     the bath has reached the setpoint 
                          |   If the cooking time is finished, the cooking does not
                          |     automatically stopped.
                          |   Use the command "stop" to stop cooking.
stop,                     | stop cooking
modify,  temp, time       | changes during cooking
                          |   temp: +/- temperature correction offset  (format: n.n or -n.n)
                          |   time: +/- minutes correction offset
setPID,    Kp,   Ki,   Kd | manually fine tuning of the PID-controll Kp, Ki and Kd values
                          |   first, use the command "info" to obtain the current values
                          |   default values - Kp: 850.0, Ki: 0.5, Kd: 0.1 
auto,    temp             | AutoTune to get Kp, Ki and Kd PID-control values
                          |   temp: *C/*F/*K, setpoint as command start
info,                     | list all the values in browser
offset,   val             | sensor correction offset (calibrate)
                          |   val: +/- *C/*F/*K, max. or min, 5.0 per command
scale,    val             | temperature scale
                          |   val: 0/1/2 (*C/*F/*K)
------------------------------------------------------------------------------------------------------

Displayed time, graph and signal
  On delayed start: remaining time to start heating 
  On cooking:       remaining cooking time, graph (heating + temperature), mp3 annunciate on ready
  On ready:         elapsed cooking time, graph (heating + temperature), mp3 beep