Witam wszystkich, jest to mój pierwszy projekt opisywany na tym forum.
Przedstawiam projekt mojego autorstwa, zegar z termometrem wyświetlający aktualną datę, godzinę oraz temperaturę z 3 czujników.
Założeniem projektu było zbudowanie zegara wyświetlającego godzinę oraz temperaturę wewnątrz mieszkania, na zewnątrz, oraz wody w instalacji CO.
Projekt oparty jest o mikrokontroler Atmega16 firmy Atmel, który komunikuje się z układem zegara czasu rzeczywistego PCF8583P poprzez interfejs I2C oraz czujnikami temperatury DS18B20 poprzez 1Wire a następnie wyświetla zgromadzone informacje (data, godzina, dzień tygodnia, oraz temperaturę z 3 czujników) na wyświetlaczu LCD 20x4.
Użytkownik poprzez menu ma możliwość ustawienia:
- kontrastu wyświetlacza,
- sposobu wyświetlania informacji,
- daty (dzień, miesiąc, rok), godziny (godzina, minuty, sekundy) oraz dnia tygodnia.
Zgromadzone informacje mogą być wyświetlane na wyświetlaczu w 3 trybach:
- tryb godzina (wyświetlana jest tylko godzina za pomocą dużych cyfr),
- tryb szczegółowe dane (wyświetlane są wszystkie informacje za pomocą małych cyfr),
- tryb mieszany (przez około 8 sekund wyświetlana jest godzina za pomocą dużych cyfr, przez kolejne 8 szczegółowe dane),
Ponadto poprzez menu użytkownik może zobaczyć jaka była maksymalna oraz minimalna temperatura na każdym z czujników w okresie pracy urządzenia (po wyłączeniu zasilania temperatury maksymalne oraz minimalne zostają wyzerowane)
Na płytce znajdują się wyprowadzenia interfejsów:
- 1Wire - możliwość podłączenia wielu czujników temperatury (DS18B20) oraz innych czujników, urządzeń,
- RS232T - port szeregowy - umożliwia komunikację z urządzeniami wyposażonymi w ten interfejs,
- SPI (ang. Serial Peripheral Interface) - interfejs służący do programowania mikrokontrolera oraz do komunikacji z innymi urządzeniami,
- port I/O INT1 - możliwość podłączenia innych urządzeń współpracujących z mikrokontrolerem np. odbiornik podczerwieni.
Użytkownik ma do dyspozycji 4 przyciski: S1, S2, S3 oraz RESET. Pierwsze 3 służą do komunikowania się użytkownika z mikrokontrolerem (poruszania się po menu, ustawiania daty, godziny, kontrastu, itp.). Przycisk RESET powoduje ponowne uruchomienie mikrokontrolera.
Na płytce znajduje się buzer, który sygnałem dźwiękowym informowanie użytkownika o błędach lub innych zdarzeniach.
Układ odmierzania czasu został wyposażony w system bateryjnego podtrzymania zasilania. Realizowany jest poprzez baterię CR 2032.
Oprogramowanie mikrokontrolera zostało napisane w języku BascomAVR. Kod programu jest bardzo długi, dla niektórych może być bardzo skomplikowany. Wszystko starałem się pisać sam opierając się o noty katalogowe oraz o pliki pomocy kompilatora BascomAVR. Pisaniu oprogramowania poświęciłem bardzo dużo czasu, było ono wielokrotnie udoskonalane, dlatego zdecydowałem się nie publikować go.
Podczas nagrywania filmu nie było podłączonych czujników temperatury co spowodowało konieczność wciśnięcia przycisku podczas inicjalizacji oraz wyświetlenie się napisu ERROR w miejscu gdzie powinna znajdować się aktualna temperatura oraz minimalne i maksymalne.
Płytka zaprojektowana została w programie CadSoft EAGLE. Podczas projektowania starałem się dobrać rozstaw otworów tak, aby odpowiadał rozstawowi otworów w wyświetlaczu LCD. Niestety nie udało się tego zrobić z taką dokładnością jaką zakładałem. Przesunięcie względem otworów wynosi około 2mm względem dłuższego boku. Elementy znajdujące się na płytce dobrane są w taki sposób, aby zminimalizować dystans pomiędzy obydwoma płytkami PCB.
Poniżej znajdują się schematy: ideowy oraz montażowy.
W projektowaniu układu elektronicznego i nie tylko bardzo pomocne okazały się kursy oraz wpisy na blogu Pana Mirosława Kardasia (mirekk36).
Płytka została wytrawiona przeze mnie metodą "żelazkową". Po przeniesieniu tonera na laminat płytka została wstępnie przycięta do pożądanych wymiarów. Jako środek trawiący został użyty roztwór nadsiarczanu sodu (B327). Po wytrawieniu płytka została ostatecznie przycięta, następnie zostały wywiercone otwory a w kolejnym etapie wszystko polutowane.
Termometr może być zasilany w dwojaki sposób: z programatora lub innego urządzenia poprzez złącze ISP służące do programowania, oraz poprzez złącze zaciskowe z dowolnego zasilacza o stałym napięciu 5V, 150mA. Złącze zaciskowe zabezpieczone jest poprzez diodę prostowniczą zapobiegającą skutkom odwrotnej polaryzacji złącza.
Koszty:
- wyświetlacz LCD 20x4 (miałem) ----------------- około 30zł
- ATmega 16 -------------------------------------------------- 15zł
- PCF8583P ----------------------------------------------------- 5zł
- Przyciski microswitch - kątowe -------------------------- 5zł
- Podstawki precyzyjne -------------------------------------- 2zł
- Złącze KANDA - kątowe ----------------------------------- 2zł
- Podstawka na baterię -------------------------------------- 1zł
- Bateria CR2032 ---------------------------------------------- 3zł
- Laminat FR4 --------------------------------------------------- 2zł
- Dystanse 11mm --------------------------------------------- 4zł
- Nakrętki, śruby M3 ------------------------------------------ 2zł
- Buzer ---------------------------------------------------------- 2zł
- Reszta elementów (kondensatory, diody, itp.) ------- miałem
---------------------------------------------------------RAZEM: 81zł
Poza głównym przeznaczeniem przedstawianego urządzenia może ono być wykorzystane jako świetny zestaw uruchomieniowy umożliwiający początkującym jak i bardziej zaawansowanym programistom naukę programowania mikrokontrolerów.
I jeszcze kilka zdjęć:
Poniżej znajduje się krótki film przedstawiający zdjęcia oraz pracę urządzenia.
Fajne? Ranking DIY