Projekt zrealizowany z użytkownikiem @Rafał

Link do symulacji:
https://wokwi.com/projects/402925149826920449
Opis projektu
Projekt ma na celu automatyczne sterowanie procesem wędzenia potraw w domowej wędzarni. Sterownik kontroluje temperaturę za pomocą czujnika DS18B20, reguluje grzanie przez przekaźnik oraz prędkość wentylatora PWM. Użytkownik może ręcznie wybierać różne etapy procesu (ustawienia temperatury, czasu i wentylatora) przyciskiem, a cały przebieg jest wizualizowany na wyświetlaczu LCD I²C.
Uwaga: Na schemacie zamiast wentylatora wykorzystano diodę LED (wentylator nie był dostępny w bibliotece elementów). W tym miejscu należy podłączyć sterownik lub tranzystor wentylatora — nie podłączaj wentylatora bezpośrednio do pinów Arduino, ponieważ grozi to ich uszkodzeniem!
Podłączenie do Arduino
| Nazwa | Pin | Opis |
|---|---|---|
| czujnik_DS18B20 | 7 | OneWire – pomiar temperatury |
| przekaźnik_grzanie | 5 | Wyjście do sterowania elementem grzewczym |
| wentylator_PWM | 3 | Wyjście PWM – regulacja prędkości wentylatora |
| przycisk_tryb | 2 | Wejście z przycisku wyboru trybu (INPUT_PULLUP, PCINT18) |
| LCD_SDA | A4 | I²C SDA – linia danych dla wyświetlacza LCD |
| LCD_SCL | A5 | I²C SCL – linia zegara dla wyświetlacza LCD |
Kod programu:
Wytłumaczenie kodu programu:
1. Nagłówki bibliotek i makra
W tej sekcji dołączamy niezbędne biblioteki oraz definiujemy makro do ustawiania bitów w rejestrach AVR.
2. Zmienne globalne i obiekty sprzętowe
Tu deklarujemy wszystkie zmienne sterujące trybem pracy, tablice z parametrami etapów oraz obiekty dla wyświetlacza i sensora.
3. Funkcja setup()
Konfiguracja początkowa: Timer1 co sekundę, LCD, sensor, przycisk z przerwaniami oraz wyjścia.
4. Główna pętla loop()
Odczyt temperatury, wyświetlanie trybu, algorytm histerezy i sterowanie wentylatorem przez PWM.
5. Przerwanie Pin-Change (PCINT2_vect)
Obsługa przycisku na pinie 2 z filtrem drgań styków (debounce).
6. Przerwanie Timer1 (TIMER1_COMPA_vect)
Wywoływane co sekundę – dekrementacja licznika i przejście do kolejnych etapów.
7. Funkcja wyświetlania wyswietlanie_trybu()
Rysuje na LCD aktualny proces lub ręczne ustawienia etapu.
Instrukcja zmiany parametrów wędzenia
Poniżej instrukcja krok po kroku wraz z przykładami, jak zmienić ustawienia etapów w oryginalnym kodzie sterownika.
- Otwórz plik z kodem w Arduino IDE (lub innym edytorze).
-
Zlokalizuj definicje tablic zawierających parametry etapów:
Nastawy pierwotne
-
Przykład 1: zmiana parametrów etapu 3
Chcemy, aby etap 3 pracował w 55 °C przez 600 s z wentylatorem 40 %:Przykładowe nastawy dla etapu 3 -
Przykład 2: zmiana parametrów etapów 1 i 2
Chcemy, aby etap 1 trwał 20 s przy 45 °C i wentylator 15 %, a etap 2 – 18 s przy 55 °C i wentylator 30 %:Przykładowe nastawy dla etapu 1 i 2 - Zapisz zmiany i wgraj program na płytkę Arduino.
-
Weryfikacja w trakcie pracy:
- Uruchom sterownik.
- Przejdź przyciskiem „Tryb” do „Ust. Etap_X” odpowiadającego zmienionemu etapowi.
- Sprawdź na LCD nowe wartości temperatury, czasu i wentylatora.
- Wciśnij „Tryb” ponownie, aby wrócić do automatycznego cyklu („Proces: Etap_X”).
W ten sposób możesz precyzyjnie dostosować dowolny etap wędzenia, zmieniając tylko odpowiednie elementy w tablicach bez ingerencji w inne fragmenty kodu.

Dalsze kroki i możliwe usprawnienia
Poniżej kilka pomysłów, jak rozbudować i udoskonalić sterownik wędzarni:
- Dodanie przycisków – umożliwi nawigację po menu i ręczne zmienianie parametrów bez potrzeby podłączania Arduino do komputera.
- Dodanie pamięci EEPROM – pozwoli zachować wprowadzone ustawienia (temperatury, czasy etapów, prędkość wentylatora) nawet po wyłączeniu zasilania.
- Regulacja PID zamiast prostej histerezy – pozwoli na płynniejsze i bardziej precyzyjne utrzymanie zadanej temperatury z mniejszymi odchyleniami.
- Logowanie danych na kartę SD lub do wewnętrznej pamięci – archiwizacja przebiegu temperatury, czasu i ustawień wentylatora do późniejszej analizy.
- Rozbudowane menu na LCD – stworzenie hierarchicznego interfejsu, w którym użytkownik może definiować i zapisywać własne profile wędzenia.
- Łączność bezprzewodowa (Bluetooth/Wi-Fi) – zdalne monitorowanie i sterowanie z poziomu smartfona lub komputera.
- Alarmy i powiadomienia – wizualne i dźwiękowe sygnały ostrzegawcze lub wysyłanie powiadomień SMS/e-mail po zakończeniu cyklu lub w razie krytycznego odchylenia temperatury.
- Kalibracja czujnika – możliwość ręcznego lub automatycznego dostrajania czujnika DS18B20 w celu zwiększenia dokładności pomiarów.
- Funkcje bezpieczeństwa – automatyczne wyłączenie grzałki w razie awarii wentylatora, zwarcia lub braku detekcji temperatury.
- Dynamiczne profile etapów – możliwość definiowania dowolnej liczby etapów oraz zapisywania ich do późniejszego użycia.
Wprowadzenie tych usprawnień pozwoli na bardziej precyzyjną i komfortową obsługę wędzarni oraz na zbieranie wartościowych danych do dalszej optymalizacji procesu.