Skip to content

qppd/oven-controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oven Controller — Arduino‑Uno Embedded System

A compact, menu‑driven oven controller for small drying chambers, laboratory ovens, and thermal curing enclosures. Runs on an Arduino Uno (ATmega328P) with real‑time temperature & humidity sensing, PID‑regulated heating, and a 20×4 LCD interface.

flowchart LR
    DS18B20[DS18B20 Temp] --> UNO[Arduino Uno]
    DHT22[DHT22 Humidity] --> UNO
    RTC[DS3231 RTC] --> UNO
    UNO --> RELAY1[Heater Relay]
    UNO --> RELAY2[Exhaust Relay]
    UNO --> LCD[20x4 I²C LCD]
    BTN1[UP] --> UNO
    BTN2[DOWN] --> UNO
    BTN3[SELECT] --> UNO
Loading

Quick Start

# 1. Install Arduino IDE (or arduino-cli)

# 2. Install required libraries via Library Manager:
#    LiquidCrystal_I2C, OneWire, DallasTemperature,
#    DHT sensor library, RTClib, TimeLib, TimeAlarms, PID_v1

# 3. Wire the hardware (see pin map below)

# 4. Open and upload:
arduino-cli compile --fqbn arduino:avr:uno src/uno/OvenController/
arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:uno src/uno/OvenController/

Pin Map

Pin Function
2 Heater relay
3 Exhaust relay
4 UP button
5 DOWN button
6 SELECT button
7 DS18B20 temperature sensor
8 DHT22 humidity sensor
A4 I²C SDA (LCD)
A5 I²C SCL (LCD)

Basic Operation

  1. Power on — LCD shows "Oven Ready" with current temp & set-point
  2. Press SELECT — enter temperature setup (60–125 °C)
  3. UP/DOWN — adjust set-point; SELECT — confirm and go to timer
  4. Set timer (1–180 min); SELECT — confirm
  5. Review & START — oven runs, PID regulates temperature, exhaust runs continuously
  6. STOP any time or waits for timer expiry — oven shuts down safely

Architecture

The firmware is fully modular — each hardware block lives in its own .h/.cpp pair under src/uno/OvenController/:

Module Files Responsibility
Main OvenController.ino State machine (IDLE→SET_TEMP→SET_TIMER→READY→RUNNING→FINISHED→ERROR), setup(), loop(), button handling, LCD rendering
LCD LCD_CONF.h/.cpp 20×4 I²C LCD wrapper — initLCD(), clearLCD(), setLCDText() overloads
Relays RELAY_CONF.h/.cpp Heater & exhaust relay control via digitalWrite
Buttons TACTILE_CONF.h/.cpp Debounced 3-button input with flag system
DHT22 DHT_CONF.h/.cpp DHT22Sensor class — readHumidity()
DS18B20 DS18B20_CONF.h/.cpp DS18B20Sensor class — readTemperature()
DS3231 DS3231_CONF.h/.cpp RTC init, periodic time sync, alarm scheduling
PID PID_CONF.h/.cpp PID_v1 controller (P=4, I=0, D=22) with time‑proportional windowing

Documentation

Full documentation is available in /docs:

File What it covers
docs/overview.md Project purpose, stakeholders, use cases
docs/architecture.md System design, state machine diagram, module breakdown
docs/api-reference.md All functions, classes, globals, and behaviour
docs/functions.md Per-module function reference with input/output specs
docs/data-flow.md Lifecycle flow, sequence diagrams, timing charts
docs/setup-guide.md Hardware wiring, library install, upload steps
docs/usage-guide.md Menu walkthrough, cooking workflow, calibration
docs/troubleshooting.md Common issues, sensor errors, relay problems

Dependencies (Arduino Libraries)

  • LiquidCrystal_I2C — I²C LCD driver
  • OneWire + DallasTemperature — DS18B20 communication
  • DHT sensor library — DHT22 humidity sensor
  • RTClib — DS3231 RTC
  • TimeLib — time utilities
  • TimeAlarms — alarm & timer scheduling
  • PID_v1 — PID control algorithm

Safety Features

  • Over‑temperature cutoff — immediate shutdown at >130 °C
  • Exhaust always on during RUNNING state
  • Relays start OFF in initRelays() — failsafe on power-up
  • Over‑temperature error state — requires manual reset via SELECT

Author

Sajed Lopez Mendoza
github.com/qppd | facebook.com/qppd.dev | sajed-lopez-mendoza.vercel.app

License

MIT — free to use, modify, and distribute.

About

Compact, menu‑driven oven controller with temperature & humidity sensing, scheduling, and PID‑based heating.

Topics

Resources

License

Stars

Watchers

Forks

Contributors