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.

aquarium_board-300x218 Sterownik akwariowy v3

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

2. Podzespoły urządzenia

sterownik_akwarium-300x191 Sterownik akwariowy v3

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

zlacza Sterownik akwariowy v3

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.

PIC16F874A-877A-300x262 Sterownik akwariowy v3

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.

ds1307-300x195 Sterownik akwariowy v3

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).

DS18B20_pin Sterownik akwariowy v3

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.

MOC3063-300x136 Sterownik akwariowy v3

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.

FK237-300x218 Sterownik akwariowy v3

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).

lcd_pic-300x242 Sterownik akwariowy v3

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.

resistometr Sterownik akwariowy v3
Rys. Schemat podłączenia rezystora nastawnego

Tab. Funkcje zależne od wychylenia gałki sterującej

resistor_l Sterownik akwariowy v3

Lewy

resistor_c Sterownik akwariowy v3

Środek

resistor_r Sterownik akwariowy v3

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.

keyboard-300x193 Sterownik akwariowy v3

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.

wyswietlacz_sterownik_akwariowy-300x118 Sterownik akwariowy v3

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

Tab. Znaczenie ikon – panel stanu urządzenia.

Ikona Znaczenie
aqua Sterownik akwariowy v3 Temperatura wody
lamp Sterownik akwariowy v3 Włączone oświetlenie
heather Sterownik akwariowy v3 Włączona grzałka
air Sterownik akwariowy v3 Włączone napowietrzanie
feed Sterownik akwariowy v3 Włączony podajnik karmy
watch Sterownik akwariowy v3 Aktualny czas

4. Pliki

Pliki projektu.

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