Witam. Jako, że nie było ostatnio tego typu urządzeń na eletroda.pl pozwolę sobie przedstawić mój najnowszy projekt. Ta nietuzinkowa konstrukcja, to uniwersalny sterownik z komunikacją przez RS-485. Inaczej można to nazwać modemem.
Sterownik taki składa się z następujących sekcji:
- zasilania
- sterownika
- konwersji protokołu RS-232 na RS-485
- pamięci nieulotnej
Ogólny opis
Sercem sterownika jest 8-bitowy mikrokontroler ATMEGA8 taktowany zegarem 12MHz. Płyta ma wymiary 65x35 mm.
W skład sekcji zasilania wchodzi LM78L05 + tranzystor zapewniający wyższą wydajność stabilizatora, kontrolka zasilania - LED, elementy filtrujące RC oraz diody zabezpieczające przeciw przepięciom. Cała sekcja zasilania to źródło napięcie +5V o wydajnosci około 800mA. W kolejnej wersji sterownika dioda prostownicza i zennera zostaną zastąpione przez transil 18V.
Sekcja sterownika składa się z mikrokontrolera ATMEGA8, zegara 12MHz, 3 kontrolek LED ogólnego zastosowania oraz wyprowadzeń różnych portów oraz szyny zasilania +5V w formie styków z prawej strony PCB.
Sekcja odpowiedzialna za komunikacje sterownika to złącze RJ-45, konwerter 232-485 - SN75176 (analogiczny do MAX485).
Sekcja pamięci to EEPROM 1kB - AT24C08 podłączony przez i2c.
Projektowanie
Płytka została zaprojektowana w programie ExpressPCB (darmowy i niesamowicie praktyczny - ma wszystko co potrzebuję i posiada 0 zbędnych dodatków). Zaprojektowanie PCB zajęło mi około tygodnia w wolnych chwilach podczas sesji. Grubości ścieżek od 8 do 30 milsów (0,2 do 0,76 mm).
Zdecydowałem się na całkowite wykonanie płytki w formie montażu powierzchniowego. Jako, że planuje wykonać wiele takich sterowników uznałem, że wykonanie każdej płytki z montażem przewlekanym zajęłoby mi zbyt wiele czasu. Dzięki montażowi powierzchniowymi uniknąłem wiercenia i udało się zmneijszyc wymiary płytki do minimum. Starałem się tak rozmieścić ścieżki, aby elementy były możliwie ciasno poukładane co znowu zmniejszyło wymiary płytki i przy okazji skróciło ścieżki co pozytywnie wpłynie na jakość pracy sterownika.
Obudowy elementów użyte w sterowniku według rozmiaru : 0603, 0805, 1206, SOT23, SOIC8, TQFP32.
Ponieważ jest to montaż całkowicie jednostronny nie obyło się bez zworek. Role zworek pełnią tu 'rezystory' OΩ 0,125W w obudowie 1206 - w sterowniku jest ich 8. Dzięki temu można było przeprowadzić pod spodem zworki nawet dwie ścieżki grubości 8 mils.
Nie obyło się oczywiście bez błędów (wykrytych oczywiście już po uruchomieniu gotowego układu).
Pierwszy błąd który się pojawił (już przy montażu elementów) to zbyt blisko zamontowana dioda prostownicza zapobiegająca uciekaniu zmagazynowanej w kondensatorach energii z powrotem do linii zasilania. Przy minimalnym wychyleniu złącza rj-45 o mały kat może dojść do zwarcia masy z dodatnia szyną zasilania.
Kolejnym błędem było zamienienie linii RxD z TxD idących do konwertera 232-485 (częsty błąd w moim wykonaniu)
Brakuje także rezystora terminującego przy konwerterze 232-485 na linii różnicowej (rzędu 150Ω).
Poprawki zostały już uwzględnione w projekcie wersji V.1.1 sterownika.
Płytka PCB
Płytka została wykonana poprzez umieszczenie mozaiki ścieżek wydrukowanej z drukarce laserowej na laminacie szklano-epoksydowym. Następnie płytka zostałą wytrawiona w popularnym roztworze nadsiarczanu sodu B-327. Wykonanie samego PCB zajęło mi dość dużo czasu - w zasadzie całe popołudnie. Albo płytka została za mało podgrzana i toner odpadał, albo z kolei za bardzo i ścieżki się rozlewały co przy tak małym rastrze dyskwalifikuje płytkę. W końcu opracowałem system podgrzewania płytki - najpierw płytka od strony laminatu szklano-epoksydowego przez 45 sekund, potem od strony miedzi przez 30 sekund, następnie po nałożeniu kartki z tonerem od strony laminatu przez 15 sekund i wreszcie od strony papieru przez 10 sekund. Dzięki tak dobranym czasom podgrzewania nie przypalił się laminat, nie przegrzała się miedź, ścieżki z tonera ładnie przyległy do miedzi i sam papier się nie przypalił.
Płytki od strony miedzi nie pokryłem na na razie żadną warstwą ochronną - część ścieżek zostaną tylko pocynowana. Nie umieściłem także opisu płytki na jej powierzchni ponieważ toner nie chciał się przykleić do laminatu - pozostawał tylko tam gdzie była miedź - było to dziwne ponieważ kiedyś umieszczałem już napisy na całej płytce bez większych problemów.
Wykonanie kolejnych egzemplarzy PCB zdecyduję się już powierzyć jakiejś firmie profesjonalnie się tym zajmującej - może prototypy.com - dość niskie ceny a zaoszczędzi mi to sporo roboty.
Gotowy sterownik
Złożenie całego układu (czyli samo lutowanie) zajęło mi dłuższą chwile - po raz pierwszy przyszło mi się zmierzyć z rastrem 8 mils czyli atmegą8 w obudowie TQFP32. Z przylutowaniem układu poradziłem sobie w prosty sposób - nakładając cynę najpierw tylko na ścieżki w obrębie styków, następnie przyciskając układ scalony do polutowanych ściżek przygrzałem każdą nóżkę z osobna tym samym sprawnie montując układ na PCB. Do lutowania wykorzystałem stację lutowniczą Solomon z regulacją temperatury i możliwie cienkim grotem.
Działający sterownik
Samo uruchomienie układu sprawiło mi pewien problem - do tej pory nie wiem co było powodem ale już nigdy się nie dowiemy... Z niewiadomego powodu, nie mogłem się połączyć z megą8 przez ISP. Programator nie chciał odczytać nawet sygnatury urządzenia. Kilkukrotne sprawdzenie połączenia programatora bezpośrednio z procesorem i wyszukanie ewentualnych zwarć lub przerw ścieżek nie przyniosło żadnych efektów, ponieważ wszytko było w pożądku. Dopiero wymiana mikrokontrolera na nowy egzemplarz przyniosła pożądany skutek. Po utracie dobrych kilku godzin na sprawdzaniu układu i nerwach z uśmiechem na twarzy zobaczyłem na ekranie monitora prawidłowo odczytaną sygnaturę.
Transmisja
Transmisja odbywa się poprzez RS-232 rozszerzone o RS-485 co pozwoliło maksymalnie wydłużyć długości połączeń pomiędzy sterownikami. Sterownik pozwala na transmisję w obydwie strony, ale nie jednocześnie. Normalnie sterownik przełącza się na nasłuch odpowiednio ustawiając w SN75176 linie odpowiedzialne za wybór pomiędzy nadawaniem a odbiorem. W momencie, gdy sterownik ma wysłać dane, na czas samej transmisji przełącza się w tryb nadawania i dopiero wtedy nadaje wiadomość, po nadaniu której znowu powraca w nasłuch.
O samym protokole komunikacji - Dane wysyłane są w ramkach - ramka składa się z adresu nadawcy, adresu odbiorcy, liczby określającej ilość nadchodzących bajtów samej komendy/wiadomości, sumy kontrolnej oraz znaku terminującego transmisję. Jest to ramka przypominająca tą używaną w sieci Ethernet.
Topologia sieci sterowników
Wszystkie sterowniki połączone zostaną poprzez skretkę YnTKSy 2x2 w ekranie. pierwsza para jest wykorzystana do przesyłu zasilania, druga zaś do transmisji Half-Duplex (jedna para różnicowa).
Cała sieć zasilana będzie z 12V - tak aby ewentualne spadki napięć nie pozwoliły na obniżenie napięcia już w danym sterowniku poniżej 8V (tak aby nadal dało się wystabilizować napięcie do 5V poprzez LM78L05).
Sieć nie potrzebuje habów lub tym podobnych urządzeń. Przewidziałem tylko ewentualne expandery sieci 485 - ponieważ konwertery pozwalają na podłączenie do maksymalnie 32 urządzeń do jednej linii transmisyjnej - jest to spowodowane ograniczoną wydajnością prądową samych konwerterów 232-485).
Każdy sterownik posiadać będzie swój unikalny MAC będący jego adresem.
Sieć nie będzie zorientowana tylko w kierunku jednego głównego sterownika. Same sterowniki będą mogły się także porozumiewać pomiędzy sobą. Cała komunikacja będzie się odbywać na zasadzie wysłania wiadomości z zakodowaną komendą oraz danymi następnie otrzymując kolejną wiadomość będącą odpowiedzią od adresata na wcześniej wysłane dane.
Jaki jest sens budowy takiego sterownika?
Same sterowniki nie spełniają konkretnej roli - są to modemy pozwalające na komunikację pomiędzy innymi sterownikami. Do sterowników zostaną podłączone dopiero elementy (bądź całe układy o różnych zastosowaniach). Te które są w fazie projektowania to np:
- 6-krotny przetwornik ADC
- 6-krotny przetwornik DAC
- 8-krotny zestaw przekaźników elektromagnetycznych
- Linia 1-wire pozwaląjacą na podłączenie np popularnych termometrów cyfrowych 18b20
- miernik prądu AC w obwodach ~230V dla prądów do 30A
- potrójny sterownik PWM ze stopniem mocy
- konwerter USB<->RS-485 pozwalający podłączyć całą sieć do komputera poprzez USB
- RTC
- Expander linii 485 (pozwalający podłączyć do 32 kolejnych urządzeń)
- Regulator fazowy bądź grupowy do sterowania odpowiednio np oświetleniem lub grzałkami dużej mocy.
Oprogramowanie
Na razie oprogramowanie jest w proszku dlatego nie ma sensu go tu umieszczać. Program pisany jest w C w środowisku AVRStudio z kompilatorem WinAVR. Rozwój oprogramowania jest na razie na takim etapie, że moduł poprawnie odbiera ramkę, analizuje ją a następnie zwraca w postaci pokazującej jaki jest adres nadawcy i odbiorcy oraz długość wiadomości. Obliczona i sprawdzona także zostaje suma kontrolna.
W pamięci EEPROM (512b) procesora (nie tej dodatkowej) jest zapisany adres MAC w postaci 48 bitów (6 bajtów). Wewnętrzny EEPROM kontrolera wykorzystywany będzie tylko do zapisu danych konfiguracyjnych modemu. Wszelkie dane potrzebne do pracy samego dedykowanego modułu (czyli jednego z tych które wymieniłem wyżej) zapisywane będą na bieżąco w zewnętrznym EEPROM'ie AT24C08 (1kB).
Kosztorys
Ciężko powiedzieć ile dokładnie kosztowało zbudowanie pojedynczego sterownika, ponieważ kupując części zaopatrzyłem się w większą ich ilość aby wykorzystać je w kolejnych egzemplarzach/wersjach sterownika. Niektórych części nie dało się kupić pojedynczo - np rezystorów bądź kondensatorów SMD - w sklepie w którym sie zaopatruję można kupowac po minimum 20 sztuk danej wartości.
Pojedynczy sterownik nie licząc PCB to około 20-30 zł prawdopodobnie.
Z innej beczki
Czy ktoś z Was ma jakieś doświadczenia na temat prototypy.com? Jaka jest jakoś wykonywania płytek jak i samych usług? Jeśli macie jakieś płytki wykonane przez tą firmę, to byłbym niezmiernie wdzięczny za ewentualne zdjęcia płytek i wszelkie informacje.
Dzięki za dotychczasowe informacje na temat produkcji płytkach drukowanych. Proszę o skupienie się na głównym temacie.
Fajne? Ranking DIY