Sterownik akwariowy v2

Sterownik akwariowy v2.0

Cele

Celem projektu jest budowa sterownika akwariowego, którego zadaniem będzie:

  • sterowanie oświetleniem – włączenie i wyłączenie o ustalonej porze,
  • kontrola temperatury wody w zbiorniku i jej prezentacja na wyświetlaczu LCD,
  • sterowanie grzałką celem utrzymania zadanej temperatury w zbiorniku,
  • niezależne włączanie i wyłączanie dwóch urządzeń co określony interwał czasu w cyklu dobowym.

Zmiany w wersji 2.0

Sterownik jest nową wersją układu opianego w artykule “Sterownik akwariowy v1”.
Naniesione zmiany:

  • transformator na płycie układu,
  • zmiana ścieżek na PCB – zwiększenie separacji między obwodami wysokiego i niskiego napięcia,
  • zmiana mikrokontrolera z PIC18F4550 na PIC16F877A,
  • klawiatura sterująca podłączona do przetwornika analogowo cyfrowego (zastąpienie czterech kabli – dwoma),
  • wyprowadzenie na płycie głównej trzech przetworników analogowo cyfrowych (jeden zarezerwowany do obsługi klawiatury),
  • rezygnacja z portu USB, zastąpienie portem UART,
  • możliwość użycia sprzętowego PWM do sterowania oświetleniem (płynne rozjaśnianie/ściemnianie) i grzałką,
  • rezygnacja z odczytu temperatury pomieszczenia,
  • złącze programatora zgodne z ICSP PicProg3.

1.  Projekt PCB

Urządzenie zostało zaprojektowane z zastosowaniem podzespołów montowanych metodą przewlekaną (THT). Płyta PCB jest z jedną warstwą ścieżek, jej rozmiar wynosi 135mm na 95mm.

Rys. Projekt PCB urządzenia wraz z rozmieszczeniem podzespołów.

Rys. Płyta główna sterownika akwariowego.

2. Podzespoły urządzenia

Głównym podzespołem jest mikrokontroler PIC16F877A, sterujący przekaźnikami i triakami uruchamiającymi zewnętrzne urządzenia. Jego zadaniem jest również odczyt bieżącej temperatury z czujnika DS18B20, odczyt czasu rzeczywistego z zegara DS1307 i prezentacja danych na wyświetlaczu LCD.

Tab. Wykaz podzespołów

Oznaczenie Wartość
 R2,R3 10k
 R1, (R4), R5, R6, (R7), (R9) 4,3k
 R8 4,7k
 R14, R16, R15 470
 R10, R11, R12, R13 360
 C1, C2 22pF
 C3 100nF
 C4 100uF
 C5, C6 470uF
 U1 PIC16F877A (mikrokontroler)
 U2 DS1307 (zegar czasu rzeczywistego)
 BAT CR2032 (bateria 3,3V)
 BUZZ HCM1005 (brzęczyk 5V)
 (montowany poza płytą) DS18B20 (czujnik temperatury)
U5, U6 BTA16-6008 (triak)
U3, U4 MOC3061
 U7 LM7805 (stabilizator napięcia 5V)
 Q1, Q2, Q3 2N3904 (tranzystor)
 D4 mostek prostowniczy
 D1, D2, D3 1N4004 (dioda prostownicza)
HFKW 005-1ZW (przekaźnik 5V)
 X1 20MHz (kwarc)
 X2 32,768 kHz (kwarc)
 J1, J2, J3, J4, J5, J6, J7, J8, J9, J10 listwa kołkowa
(montowany poza płytą) WC1602A0

2.1. Złącza

Rys. Płyta główna z podłączonymi urządzeniami zewnętrznymi

Tab. Oznaczenia złącz

Oznaczenie Funkcja
I2C Szeregowa magistrala danych I2C
1W Magistrala 1Wire do podłączenia czujnika temperatury
ICSP Łącze programatora mikrokontrolera ICSP
LCD Gniazdo wyświetlacza LCD
Key Gniazdo klawiatury
R1 Wyjście pierwszego przekaźnika, włącz/wyłącz urządzenie zewnętrzne
R2 Wyjście drugiego przekaźnika, włącz/wyłącz urządzenie zewnętrzne
La Gniazdo oświetlenia (230 VAC)
Gr Gniazdo grzałki (230 VAC)
Zas Gniazdo zasilania  230 VAC

2.2. Mikrokontroler

Czterdziestopinowy mikrokontroler PIC16F877A o mocy obliczeniowej 5 MIPS. Został wyposażony przez producenta między innymi w PWM, magistralę I2C oraz w dziesięcio bitowy ośmiokanałowy przetwornik analogowo cyfrowy. Pracuje w przedziale napięć od 2V do 5,5V. Oddaje do dyspozycji 14KB pamięci programu typu Flash i 368 B pamięci RAM. Posiada dwa timery 8 bitowe i jeden timer 16 bitowy.

Rys. Wyprowadzenia PIC16F877A (źródło: Nota Katalogowa).

2.3. Zegar czasu rzeczywistego

Układ scalony DS1307 jest zegarem czasu rzeczywistego. Mikrokontroler odczytuje aktualny czas z zegara za pośrednictwem magistrali I2C. W przypadku zaniku zewnętrznego zasilania, zegar automatycznie przełącza się na zasilanie awaryjne z baterii 3,2V.

Rys. Zegar czasu rzeczywistego DS1307.

2.4. Czujnik temperatury

Odczyt temperatury realizowany jest za pomocą czujnika DS18B20. Komunikacja między mikrokontrolerem a czujnikiem odbywa się po magistrali 1Wire, która umożliwia jednoczesne podłączenie wielu czujników. Jeden układ zainstalowany jest na płycie modułu, czujnik temperatury wody w zbiorniku należy podłączyć do złącza 1Wire (rozdział 2.1).

Rys. Wyprowadzenia układu DS18B20

2.5. Przekaźniki

Dwa przekaźniki typu HFKW 005-1ZW sterowane napięciem 5V przez tranzystory 2N3904 włączają zewnętrzne urządzenia sterowane napięciem stałym bądź zmiennym.

2.6. Triaki

Dwa triaki typu BTA16-6008 w obudowie TO-220 o maksymalnym obciążeniu prądem 16A i maksymalnym napięciu 600V (według noty katalogowej) są sterowane przez mikrokontroler za pośrednictwem optoizolatora MOC3063. Pełnią funkcję sterowania oświetleniem i uruchamiania grzałki.

Rys. Sterowanie triakiem przez optoizolator MOC3063 (źródło: Nota Katalogowa).

Triaki zostały wyposażone w chłodzenie radiatorami typu FK237 o rezystancji termalnej 21°C/W.

Rys. Radiator FK237 (źródło: Nota Katalogowa).

2.7. Wyświetlacz LCD

W urządzeniu zastosowano dwuliniowy wyświetlacz znakowy z wbudowanym podświetlaniem ekranu o oznaczeniu WC1602A0. Jest on podłączany do gniazda wyświetlacza na płycie PCB (rozdział 2.1).

Rys. Schemat podłączenia wyświetlacza LCD do portów mikrokontrolera

Tab. Wykaz połączeń wyświetlacza LCD

Wyprowadzenie wyświetlacza DB4 DB5 DB6 DB7 E RS RW GND Ucc Uo A K
Pin wyświetlacza 11 12 13 14 6 4 5 1 2 3 15 16
Pin gniazda wyświetlacza 6 7 8 9 5 3 4 2 1 2 10 2
Wyprowadzenie mikrokontrolera D4 C5 C4 D3 D5 D7 D6 GND 5V GND D2 GND

2.8. Klawiatura

Urządzenie zostało wyposażone w klawiaturę.

Tab. Funkcje przycisków

Lewy Środkowy Prawy
Funkcja w głównym menu Przesuń w dół Zatwierdź Przesuń w górę
Funkcja w wybranej funkcjonalności Minus Zatwierdź Plus

3. Obsługa urządzenia

3.1. Uruchomienie urządzenia

Podczas uruchomienia urządzenie wykrywa podłączony czujniki temperatury, podsumowując operację stosownym komunikatem na wyświetlaczu.

Pierwsze uruchomienie wymaga konfiguracji urządzenia:

  • Należy ustawić żądaną temperaturę utrzymywaną poprzez automatyczne włączenie i wyłączenie grzałki. By zdefiniować temperaturę należy wejść do “Menu” a następnie wybrać opcję “Temperatura”.
  • Należy podać aktualną godzinę i minuty, gdyż na podstawie zegara czasu rzeczywistego uruchamiane jest; oświetlenie, przekaźnik 1, przekaźnik 2.
  • Po dokonaniu powyższych ustawień możliwe jest definiowanie czasu włączenia oświetlenia i uruchomienia przekaźników.

3.2. Menu

Wejście do “Menu” urządzenia dokonywane jest po kliknięciu “lewego” lub “prawego” przycisku klawiatury (rozdział 2.8). Przejście do kolejnych funkcji menu

3.2.1. Opuść Menu

Wybranie opcji “Opuść Menu” powoduje wyświetlenie “Panela stanu urządzenia” (rozdział 3.3).

3.2.2. Temperatura

By ustawić temperaturę, która ma być utrzymywana przez urządzenie należy wejść do “Menu” (rozdział 3.2) i wybrać opcję “Temperatura”. Następnie kliknąć przycisk “Zatwierdź”. Ustawić temperaturę poprzez inkrementację lub dekrementację aktualnej wartości przyciskami “lewy”, “prawy”. Potwierdzenie aktualnej nastawy dokonywane jest kliknięciem przycisku “środkowy”.

3.2.3. Włączenie oświetlenia

Automatyczne włączenie oświetlenia odbywa się o ustalonej godzinie i minucie. Po wejściu do “Menu” (rozdział 3.2) i wybraniu opcji “Wl.oswietlenie”, kliknięciu przycisku “Zatwierdź” należy ustawić godzinę i minutę poprzez inkrementację lub dekrementację aktualnej wartości przyciskami “lewy”, “prawy”. Potwierdzenie nastaw godzin i minut dokonywane jest kliknięciem przycisku “środkowy”.

3.2.4. Wyłączenie oświetlenia

Automatyczne wyłączenie oświetlenia odbywa się o ustalonej godzinie i minucie. Po wejściu do “Menu” (rozdział 3.2) i wybraniu opcji “Wyl.oswietlenie”, kliknięciu przycisku “Zatwierdź” należy ustawić godzinę i minutę poprzez inkrementację lub dekrementację aktualnej wartości przyciskami “lewy”, “prawy”. Potwierdzenie nastawy godzin a następnie minut dokonywane jest kliknięciem przycisku “środkowy”.

3.2.5. Przekaźnik 1

Automatyczne włączenie przekaźnika1 następuje z określonym interwałem czasowym podawanym w godzinach od chwili zapisania ustawienia. Po wejściu do “Menu” (rozdział 3.2) i wybraniu opcji “Przekaznik 1” poprzez kliknięcie przycisku “Zatwierdź” należy ustawić wartość interwału  poprzez inkrementację lub dekrementację aktualnej wartości przyciskami “lewy”, “prawy”. Potwierdzenie nastawy dokonywane jest kliknięciem przycisku “środkowy”.

3.2.6. Przekaźnik 2

Automatyczne włączenie przekaźnika2 następuje z określonym interwałem czasowym podawanym w godzinach od chwili zapisania ustawienia. Po wejściu do “Menu” (rozdział 3.2) i wybraniu opcji “Przekaznik 2” poprzez kliknięcie przycisku “Zatwierdź” należy ustawić wartość interwału  poprzez inkrementację lub dekrementację aktualnej wartości przyciskami “lewy”, “prawy”. Potwierdzenie nastawy dokonywane jest kliknięciem przycisku “środkowy”.

3.2.7. Zegar

Ustawienie zegara czasu rzeczywistego następuje poprzez wejście do “Menu” (rozdział 3.2), wybranie opcji “Zegar” i kliknięcie przycisku “Zatwierdź”. Należy ustawić godzinę i minutę poprzez inkrementację lub dekrementację aktualnej wartości przyciskami “lewy”, “prawy”. Potwierdzenie nastawy godzin a następnie minut dokonywane jest kliknięciem przycisku “środkowy”.

3.2.8. Reset ustawień

Reset ustawień zeruje nastawy:

  • utrzymywanej temperatury,
  • czasu włączenia i wyłączenia oświetlenia,
  • interwał czasu włączenia przekaźników.

3.3  Panel stanu urządzenia

Panel stanu urządzenia zawiera podstawowe informacje o urządzeniach zewnętrznych, aktualny czas oraz wskazania temperatury wody.

Rys. Panel stanu urządzenia wyświetlony na ekranie LCD.

Tab. Znaczenie ikon – panel stanu urządzenia.

Ikona Znaczenie
Temperatura wody
Włączone oświetlenie
Włączona grzałka
Włączony przekaźnik
Aktualny czas

4. Pliki

Pliki projektu.

Noty katalogowe.

  • PIC16F877A – mikrokontroler.
  • DS1307 – zegar czasu rzeczywistego.
  • DS18B20 – czujnik temperatury.
  • MOC3063 – optoizolator sterujący triakiem.
  • BTA16-6008 – triak sterujący zewnętrznym urządzeniem.

5. Odnośniki