Witajcie moi drodzy.
Dzisiaj przedstawię wam mój sieciowy sterownik przekaźników/zegarek/termometr zrealizowany w obudowie po tunerze satelitarnym Ferguson AF 2818 SE na bazie mojej płytki uruchomieniowej pod PIC18F67J60.
Pomysł na projekt
Z sterowaniem przez internet eksperymentowałem już od dłuższego czasu i już miałem przygotowaną do tego celu własną płytkę z PIC18F67J60, ale dopiero niedawno wpadł mi w ręce tuner satelitarny Ferguson AF 2818 SE. Jego obudowa od razu mi się spodobała - mała, poręczna, w sam raz do wykorzystania. Po otwarciu całości zobaczyłem, że jego moduł zasilacza również wygląda dość ok i zapewnia potrzebne dla mnie napięcia (3.3V, 7V i 12V).
Postanowiłem wykorzystać obudowę i zasilacz z tego Fergusona do zrobienia prostego urządzenia do sterowania kilkoma odbiornikami na napięcie sieciowe przez internet. Na początku projekt miał być dość skromny, ale z czasem się rozrósł i na ten moment całość zawiera:
- PIC18F67J60 wraz z komunikacją Ethernet
- 4 przekaźniki (bez problemu można zwiększyć ich ilość)
- wyświetlacz czterocyfrowy (ten sam oryginalny co był w tunerze; w roli zegara i wyświetlacza temperatury; sterowany przez MM74HC164N)
- zegar RTCC MCP7940 wraz z kwarcem i bateryjką (by trzymać godzinę po odłączeniu całości od sieci)
- termometr TC74
- włącznik sieciowy, bezpiecznik
- zasilacz (oryginalny od tunera sat)
- trzy przyciski (oryginalne od tunera; nieobsługiwane w kodzie na ten moment, ale sprzętowo podłączone)
- odbiornik IR (oryginalny od tunera; nieobsługiwany w kodzie na ten moment)
Tutaj opiszę od początku jak projekt powstawał a na koniec umieszczę powiązane z nim załączniki (kody, pliki PCB)
Początek projektu - demontaż tunera
Więc zaczynamy od początku. Początkiem było rozkręcenie tunera i sprawdzenie co jest w środku - miałem nadzieję, że uda się wykorzystać przynajmniej moduł zasilacza i też tak się stało.
Na początek sprawdziłem, czy zasilacz sam uruchamia się bez płyty głównej. Bez problemu się uruchamiał (tak jak zresztą w większości tego typu urządzeń - zasilacze impulsowe z nich są bardzo proste do ponownego użycia w różnych projektach).
Co więcej zobaczyłem, że nawet napięcia od zasilacza są podane na PCB! Wszystko jasne i czytelne - tak jak powinno być. Dokładnych wartości napięć z kolei nie sprawdzałem, bo i tak zamierzałem zastosować osobno stabilizator 7805 (5V) oraz TC1264 (LDO 3.3V, już na płytce z PIC):
Zwróciłem też uwagę na ciekawy sposób, w jaki podłączony do płytki zasilacza był przewód sieciowy:
Chyba płytka zasilacza była przeznaczona dla nieco bardziej rozbudowanego modelu, ale potem ktoś postanowił ciąć koszty i zrobił tak jak zrobił. Cóż, często się spotykam z takimi 'kwiatkami'.
A tak prezentował się tuner po skasowaniu z niego tego co zbędne:
Niespodziewane rozszerzenie projektu - użycie frontowego panelu z Tunera sat
Początkowo nie było tego w planach, ale po rozkręceniu całości zorientowałem się, że płytka frontowa od tunera zdaje się być dość prosto zrealizowana.
Oto jej zdjęcia, tuż po wymontowaniu:
Na tej płytce znajduje się:
- trzy przyciski (oryginalnie włącznik i przełączanie kanałów przód tył)
- odbiornik IR
- wyświetlacz 7segmentowy 4-cyfrowy LIN-39422g
Wszystko sterowane jest jednym układem scalonym - MM74HC164N. Na zdjęciu wyróżnia się on szczególnie, bo to jedyny układ tam w obudowie DIP.
MM74HC164N jest to Serial-in/Parallel-out Shift Register, czyli rejestr przesuwny.
Wymontowałem ten panel i dokładnie mu się przyjrzałem. Do reszty podłączony był tylko jedną taśmą. Nie mogłem znaleźć w sieci schematu tej płytki, więć szybko zrobiłem rozpiskę połączeń i pinów. Wkleję ją tutaj w takim stanie, w jakim ona powstała:
Cytat:
Wyświetlacz LIN-39422g, MM74HC164N
TAŚMA 1 - masy trzech przycisków.
TAŚMA 2 - masa (kondensatorów od VDD)
TAŚMA 3 - pin 9 clear MM74HC164N
TAŚMA 4 - pin 8 clock MM74HC164N
TAŚMA 5 - piny 1,2 Serial Inputs MM74HC164Na
TAŚMA 6 - kolektor tranzystora od odbiornika IR (jego emiter jest do masy)
TAŚMA 7 - masa (ta sama co TAŚMA 2)
TAŚMA 8 - baza tranzystora przez rezystor (ta baza ma też pullup do VDD); jego emiter podłączony jest do 7seg
TAŚMA 9 - baza tranzystora przez rezystor (ta baza ma też pullup do VDD); jego emiter podłączony jest do 7seg
TAŚMA 10 - baza tranzystora przez rezystor (ta baza ma też pullup do VDD); jego emiter podłączony jest do 7seg
TAŚMA 11 - baza tranzystora przez rezystor (ta baza ma też pullup do VDD); jego emiter podłączony jest do 7seg
TAŚMA 12 - ostatni - VDD - VDD MM74HC164N; przez rezystor 20 omów też kolektory 4-rech tranzystorów
D1, D2, D3 - rezystory od przycisków, 100ohm
Przyciski idą do PINów MM74HC164N: 3, 4, 5
MM74HC164N:
1 i 2 - TAŚMA 5
3 - przycisk + rezystor a dalej 7-seg
4 - przycisk + rezystor a dalej 7-seg
5 - przycisk + rezystor a dalej 7-seg
6 - rezystor, a dalej 7-seg
8 - clock
9 - clear
10 - rezystor a dalej 7-seg
11 - rezystor a dalej 7-seg
12 - rezystor a dalej 7-seg
13 - rezystor a dalej 7-seg
Dodatkowo skonsultowałem się z notą katalogową MM74HC164N:
To starczyło mi, by później od 0 napisać obsługę tego panelu dla mojego PICa. W ten sposób projekt został wzbogacony o możliwość prostego wyświetlania informacji.
Pierwsze przeróbki
Na początek dodałem mały wentylatorek oraz sieciowy włącznik ON/OFF, wszystko wzięte z szuflady/złomu elektronicznego.
Przewody do włącznika zaizolowałem dokładnie koszulkami termokurczliwymi.
Sam pomysł z włącznikiem wziął się z dwóch powodów:
- oryginalnie tuner po podłączeniu do sieci cały czas był w stand by i nie dało się go w ogóle wyłączyć
- płytka zasilacza z tunera miała już gotowe, wyprowadzone złącze, aż się prosiło by je wykorzystać
Były też problemy z mechanicznym montażem części (widać to też po zdjęciu), bo założyłem, że wszystko będzie mocowane śrubkami, ale mimo wszystko ostatecznie udało się wykonać potrzebne otwory.
Przy montażu korzystałem m. in. z plastikowych dystansów:
Wybrałem plastikowe, gdyż takie nie przewodzą prądu. W trakcie konstrukcji dużą wagę przywiązałem do zrobienia solidnych połączeń i starannej izolacji.
Następnie sięgnąłem po moją płytkę od PICa i komunikacji Ethernet (PIC18F67J60 development board mojego projektu):
To na tej płytce znajduje się PIC18F67J60 z komunikacją Ethernet który będzie sterować całością konstrukcji.
Potem zamocowałem już ją oraz wykonałem pierwsze testy programowania całości za pomocą mojego klona PICKIT2.
Ta duża zielona płytka poza obudową urządzenia to mój klon PICKIT2 - programator PIC na USB. Poprzez niego wgrywam wsad na PIC18F67J60, który jest na czerwonej płytce.
To samo co wyżej, ale po włożeniu spowrotem modułu zasilacza:
Następnie postanowiłem wykorzystać złącze od zasilacza (i fragment PCB, bo tam są podpisane napięcia) i przygotowałem sobie małą płytkę na której też umieściłem 7805 na radiatorze (bo akurat 5V z zasilacza mi brakowało):
Termometr TC74 (na szynie I2C)
Pomiaru temperatury nie było w planach, ale skoro udało się uruchomić wyświetlacz to czemu nie? Wybrałem termometr który jest dość prosty w obsłudze (TC74) i szybko napisałem jego obsługę w C.
Ten termometr zwraca temperaturę w postaci liczby całkowitej, ale w tym zastosowaniu to nie problem. Komunikacja z nim zrealizowana jest poprzez I2C.
Moduł RTCC MCP7940 (na szynie I2C)
Pomysł pojawił się spontanicznie (tuż po tym jak udało się uruchomić wyświetlacz z frontowego panelu), więc RTCC jest na płytce prototypowej. Użyty układ to MCP7940, schemat taki jaki w jego nocie katalogowej. Na płytce jest też bateryjka CR3032 do podtrzymania czasu kiedy urządzenie jest wyłączone z prądu.
Sam moduł podłączyłem do magistrali I2C, na której już był termometr. To nie problem, te układy mają różne adresy.
Przekaźniki
Do projektu użyłem gotowego modułu z czterema przekaźnikami zakupionego w chinach, ale zasadniczo nie ma tutaj żadnego ograniczenia co do ich ilości. Można by pomyśleć, że ogranicza je ilość pinów - ale nic bardziej mylnego, obsługa expandera portów (przykładowo MCP23017) jest bardzo prosta.
W celu podłączenia przekaźników do sieci postanowiłem po raz kolejny użyć gotowego modułu ze złomu (a właściwie zrobić sobie samemu moduł poprzez wycięcie go z płyty). Zdjęcie przedstawia płytę główną od monitora CRT z której wziąłem złącze oraz jej cały fragment pod bezpiecznik:
Wykorzystałem również złącza wsuwane z płyty od starej kuchenki mikrofalowej:
Tak wygląda gotowy moduł (przygotowany z myślą o zamocowaniu go poprzez plastikowe dystanse do spodu obudowy oraz poprzez śruby na złączu zasilania do tyłu obudowy):
Potem uznałem, że na razie potrzebuję sterować tylko dwoma urządzeniami na 230V więc przerobiłem odpowiednio podwójne gniazdko sieciowe, z myślą że zostanie ono podłączone do przekaźników.
Do tego gniazda pociągnięte jest pięć żył (uziemienie jest wspólne). Wszystko jest dobrze zaizolowane, też z pomocą koszulek termokurczliwych.
Tak wygląda całość po dodaniu do środka przekaźników oraz modułu gniazda sieciowego:
I gotowa całość - jeszcze z podłączonymi przewodami ICSP od programatora.
Firmware na PIC
Firmware został napisany w MikroC PRO for PIC w oparciu o HttpDemo dla PIC18F67J60. Dodałem do niego obsługę magistrali I2C (dla termometru i RTCC), rejestru przesuwnego 74HC, softwarowy PWM (nieużywany w tym projekcie) oraz możliwość kontroli przekaźników i wspomnianego wcześniej PWMa przez stronę WWW.
Kod nie jest finalny, nie jest przeczyszczony, udostępniam go tylko zainteresowanych w pełni na ich odpowiedzialność.
Testowa strona internetowa na ten moment prezentuje się tak:
Na stronie znajduje się interfejs dla:
- kontroli włączania/wyłączania przekaźników
- kontroli softwarowego PWM na wolnych pinach PICa (w tym momencie tego nie używam, ale to jest przeznaczone dla kontroli jasności oświetlenia LED)
- dodatkowo wyprowadzone są informacje o czasie z RTCC i temperaturze.
Całe sterowanie oświetleniem można by też wydzielić na UDP i sterować nim np. z poziomu aplikacji na telefon z system Android całkowicie pomijając stronę WWW.
Końcowy test zasilacza
Na koniec chciałem jeszcze sprawdzić, czy aby na pewno zasilacz daje radę i czy nic się w układzie nadmiernie nie grzeje. Całość zostawiłem włączoną na pół dnia a potem (po tymczasowym odłączeniu od sieci) zdjąłem nałożoną obudowę i sprawdziłem temperatury moim pirometrem:
Na szczęście nie zanotowałem żadnego nadmiernego grzania się, więc urządzenie jest gotowe do działania.
Potem jeszcze sprawdziłem, czy bateria trzyma czas i czy wyniki pomiaru temperatury są sensowne i jak na mój gust wszystko było w porządku:
Dalszy rozwój projektu
Na ten moment projekt zamknąłem i uważam za gotowy, ale oczywiście można by było jeszcze dużo do niego dodać. Między innymi można by jeszcze:
- dodać obsługę przycisków z przedniego panelu (są podłączone, tylko nadać im jakąś funkcję)
- dodać synchronizację czasu z internetem poprzez UDP
- dodać sterowanie pilotem (na frontowej płycie jest odbiornik IR, tylko trzeba podłączyć kabelek i zaprogramować dekodowanie RC)
- rozwiązać problem zbędnych otworów z tyłu obudowy (np. z pomocą płyty laminatu)
Załączniki
Projekt w MikroC (strona WWW oraz organizacja wszystkiego, dodatkowo nieużywany tutaj kod PWM; timer 1 używany jest do software PWM, timer 0 do odświeżania wyświetlacza; bazuje na HttpDemo od MikroC):
Kod obsługi RTCC MCP7940N po I2C:
Kod obsługi rejestru przesuwnego 74HC:
Gerbery sterownika Ethernet:
Noty katalogowe użytych elementów:
Fajne? Ranking DIY Pomogłem? Kup mi kawę.
