Sterownik akwariowy v3
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,
- sygnalizacja dźwiękowa w chwili przekroczenia temperatury 29 °C,
- sterowanie grzałką celem utrzymania zadanej temperatury w zbiorniku,
- sterowanie podajnikiem karmy,
- sterowanie napowietrzaczem.
Zmiany w wersji 3.0
Sterownik jest nową wersją układu opisanego w artykule “Sterownik akwariowy v2.0”.
Naniesione zmiany:
- zastąpienie klawiatury rezystorem nastawnym,
- zastąpienie przekaźników przez triaki,
- zwiększenie liczby złącz przetworników analogowo/cyfrowych,
- dodatkowe gniazda wejscia/wyjscia,
- dodatkowe wyjście sterujące urządzeniem małej mocy.
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.
2. Podzespoły urządzenia
Rys. Sterownik akwariowy w trakcie montażu w obudowie
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ść |
---|---|
R1, R8, R22, R20 | 4,7kΩ |
R9, R4, R7, R15 | 3,3kΩ |
R5, R6, R16, R34 | 510Ω |
R17, R14, R19, R18, R13, R12, R11, R10 | 360Ω |
C1, C2 | 22pF |
C4 | 100nF |
C5 | 100uF |
C7, C8 | 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, U9, U12 | BTA16-6008 (triak) |
U4, U3, U11, U8 | MOC3061 |
U7 | LM7805 (stabilizator napięcia 5V) |
Q1, Q3 | 2N3904 (tranzystor) |
D4 | mostek prostowniczy |
D1 | 1N4004 (dioda prostownicza) |
X1 | 20MHz (kwarc) |
X2 | 32,768 kHz (kwarc) |
J1 – J15 | listwa kołkowa |
(montowany poza płytą) | WC1602A0 (wyświetlacz) |
U10 | warystor zabezpieczający (np. 400V) |
(montowany poza płytą) | 45kΩ Rezystor nastawny logarytmiczny – montaż na obudowie |
2.1. Złącza
Rys. Płyta główna sterownika z zaznaczonymi złączami
Tab. Oznaczenia złącz
Oznaczenie | Funkcja |
I2C | Szeregowa magistrala danych I2C |
1Wire | Magistrala 1Wire do podłączenia czujnika temperatury |
ICSP | Łącze programatora mikrokontrolera ICSP |
LCD | Gniazdo wyświetlacza LCD |
Key | Gniazdo gałki sterującej / klawiatury |
Air | Gniazdo napowietrzacza (230 VAC) |
Feed | Gniazdo karmidełka (230 VAC) |
La | Gniazdo oświetlenia (230 VAC) |
Gr | Gniazdo grzałki (230 VAC) |
Zas | Gniazdo zasilania (230 VAC) |
AN0 – AN3 | Gniazda przetwornika analogowo cyfrowego |
EXT1 | Złącze oczkując na implementacje |
EXT2 | Złącze oczkując na implementacje |
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ęciobitowy 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. 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 urządzeniami zewnętrznymi.
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.6. Wyświetlacz LCD
W urządzeniu zastosowano dwulinijkowy 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.7. Sterowanie
Sterowanie urządzeniem, wybieranie opcji z menu itp. dokonywane jest za pomocą gałki sterującej (2.7.1). Alternatywnie może zostać użyta klawiatura zbudowana z trzech klawiszy (2.7.2).
2.7.1 Gałka sterująca
Urządzenie zostało wyposażone w gałkę sterującą. Funkcję tę pełni rezystor nastawny logarytmiczny o wartości 45kΩ podłączony do gniazda AN1 na płycie PCB.
Rys. Schemat podłączenia rezystora nastawnego
Tab. Funkcje zależne od wychylenia gałki sterującej
Lewy |
Środek |
Prawy |
|
Funkcja w głównym menu | Przesuń w dół | Zatwierdź | Przesuń w górę |
Funkcja w wybranej funkcjonalności | Minus | Zatwierdź | Plus |
2.7.2 Klawiatura sterująca
Alternatywną opcją która umożliwia sterowanie pracą urządzenia jest klawiatura. Zbudowana jest ona z trzech przycisków typu reset, do których zostały podłączone rezystory. Klawiaturę należy podłączyć do gniazda AN1.
Rys. Schemat podłączenia klawiatury sterującej
Wartości rezystorów:
- R1 – 100Ω
- R2 – 6kΩ
- R3 – 45kΩ
Tab. Funkcje przycisków sterujących
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, podajnik karmy oraz napowietrzanie.
- Po dokonaniu powyższych ustawień możliwe jest definiowanie czasu włączenia oświetlenia, podajnika karmy oraz napowietrzacza.
3.2. Menu
Wejście do “Menu” urządzenia dokonywane jest po przesunięciu w prawo gałki sterującej (rozdział 2.8). Przejście do kolejnych funkcji menu odbywa się poprzez zatrzymanie gałki wychylonej w prawo (kolejna pozycja w menu) lub wychyleniu gałki w prawo (poprzednia opcja menu). Wejście do wybranej opcji dokonywane jest po zatrzymaniu gałki w pozycji środkowej na kilka sekund.
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. Napowietrzanie
Automatyczne włączenie napowietrzacza 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 “Napowietrzanie” należy ustawić wartość interwału godzinowego poprzez inkrementację lub dekrementację aktualnej wartości. Następnie należy ustawić czas działania napowietrzacza, który określony jest w minutach.
3.2.6. Podajnik karmy
Automatyczne włączenie podajnika karmy 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 “Karmienie” należy ustawić wartość interwału godzinowego poprzez inkrementację lub dekrementację aktualnej wartości. Następnie należy ustawić czas podawania karmy, który określony jest w sekundach.
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. Testowanie
Procedura testująca działanie
- oświetlenia,
- grzałki,
- podajnika karmy,
- napowietrzacza.
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łączone napowietrzanie | |
Włączony podajnik karmy | |
Aktualny czas |
4. Pliki
Pliki projektu.
- Wsad mikrokontrolera.
- Projekt PCB w formacie PDF.
- Rozmieszczenie elementów na płycie PCB w formacie PDF.
Kod źródłowy bibliotek użytych w programie sterownika.
- resistometr.c – obsługa rezystora nastawnego jako sterownika menu.
- lcd.c – biblioteka “flex lcd” rozbudowana o możliwość zdefiniowania własnych znaków na wyświetlaczu.
- ds1820.c one_wire.c – obsługa wielu termometrów DS18B20 podłączonych do magistrali one wire.
- ds1307.c conversion.c – obsługa zegara czasu rzeczywistego DS1307.
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
- Temat na forum elektroda.pl dotyczący projektu
- Strona internetowa ułatwiająca projektowanie własnych znaków dla wyświetlaczy HD44780