Autor: Paweł Wójcicki
Redakcja: Dondu
Zaprojektowany i wykonany układ uruchomieniowy powstał jako część dyplomowej pracy inżynierskiej na wydziale Elektronika i Telekomunikacja. Tytuł inżyniera obroniłem w 2010 roku ale dopiero niedawno postanowiłem przedstawić szerszej publice urządzenie mojego autorstwa. Pliki niezbędne do wykonania płytki i montażu załączam na końcu artykułu.
Urządzenie wraz z zestawem podstawowych ćwiczeń wspomagających naukę programowania mikrokontrolerów AVR w języku C pomyślane zostały dla takiego odbiorcy jak: uczeń technikum elektronicznego lub studenta politechniki o kierunku elektronika/informatyka.
Nie mniej myśląc o pierwszych kształtach układu prócz celu dydaktycznego chciałem uwzględnić również swoje potrzeby, które płynęły nieustanie z zainteresowania i pasji jakim jest dla mnie świat mikrokontrolerów.
Tak więc na projekt zostały nałożone następujące założenia:
- bogactwo praktycznych peryferii
- "mocny" mikrokontroler dający duże możliwości i brak skrępowania znacznymi ograniczeniami na polu prototypowania
- wysoka elastyczność dająca z jednej strony narzędzie edukacyjne o krótkim czasie konfiguracji potrzebnej do przygotowania urządzenia do następnego ćwiczenia laboratoryjnego. A z drugiej strony dającego się w łatwy sposób rekonfigurować w zależności od aktualnej potrzeby elektronika-konstruktora
- maksymalnie uproszczona obsługa, tak by z zaprogramowaniem układu poradził sobie laik.
- łatwość analizy sygnałów
Połączenie tak różnych potrzeb na jednej płytce PCB było dla mnie sporym wyzwaniem. Z jednej strony wymiary płytki dla celów prototypowych musiały być ściśle kompaktowe, zaś z drugiej strony potrzeba uwzględnienia jak największej ilości użytecznych peryferii i czytelności płytki dla celów edukacyjnych sprawiała, że ciężko było uzyskać kompromis nie tracąc nic dla żadnej z potrzeb.
Przed dojściem do dyplomu wykonałem nie jeden układ uruchomieniowy dla AVR o różnych koncepcjach projektowych, jednak za każdym razem czułem, że to nie to. Projekty o zdefiniowanych połączeniach szybko zamieniały się w "monstrum doktora Frankensteina", zaś rozwiązania z mnogą ilością złącz kołkowych kończyła się wypuszczeniem do lasu kolejnego szalonego jeża z pomieszanymi obwodami.
Dopiero realizując podobny projekt na potrzeby Koła Naukowego Pasjonatów Elektroniki zrozumiałem, że by do tego dojść potrzebuję efektu synergicznego. Dokonałem tego decydując się na wybranie najważniejszych moim zdaniem peryferiów pod kątem dydaktycznym, następnie przydzieliłem im konkretne połączenia z nóżkami mikrokontrolera. Połączenie te jest możliwe dzięki zworką, gdyż złącza kołkowe przystają do wybranych pinów złącz kołkowych o podwójnym wyprowadzeniu każdego funkcyjnego pinu AVR-a.
Tak więc by skorzystać z takich peryferii jak:
- LCD,
- linijka diodowa,
- konwerter USART-USB (FT232),
- RS485,
- zegar czasu rzeczywistego (RTC) I2C,
- pamięć trwała EEPROM I2C,
- klawiatura matrycowa 4x4,
- piszczek piezo-elektryczny (buzzer)
Niepotrzebny jest ani jeden kabelek łączeniowy!!!
Z pomocą kilku(dziesięciu ;P) zworek możemy przystąpić do pracy z wyżej wymienionymi peryferiami. Rozwiązanie to jest bardzo wygodne i estetyczne. Ponadto zachowuje dostatecznie kompaktowe rozmiary płytki tak by można było ją zabrać ze sobą wrzucając ją do plecaka, torby czy niewielkiego pudełka. Może również znaleźć miejsce w większym konstruowanym urządzeniu nie zajmując specjalnie wiele miejsca. Oczywiście nic nie stoi na przeszkodzie by dowolnie re konfigurować połączenia przewodami łączeniowymi.
A teraz parę suchych faktów co by już dłużej nie przynudzać.
Wyposażenie zestawu:
- Mikrokontroler Atmel AVR ATmega 16/32/x64
- Kwarc 16MHz
- Przycisk Reset
- Klawiatura matrycowa 4x4
- 8 X Przełącznik typu Dip-Switch Piano
- 2 X Ceramiczny potencjometr montażowy
- 10 X LED (linijka diodowa)
- 2 X dwucyfrowy wyświetlacz LED 7-segmentowy z kropką
- Wyświetlacz LCD 2X16 znaków z podświetleniem i regulacja kontrastu
- Zegar RTC PCF8583 (I2C) z własną baterią pastylkową podtrzymującą pamięć
- Pamięć EEPROM AT24C08 (I2C) – pełna re-konfigurowalność adresu
- Slot karty pamięci typu MMC/SD (z WP/CD)
- Złącze klawiatury/myszy PS/2
- Konwerter USB<>UART (FT232)
- Konwerter RS485<>UART (zabezpieczony dwukierunkowymi diodami tonsil)
- Termometr DS18B20
- Interfejs 1Wire (wyprowadzony na kątowym złączu kołkowym)
- Nadajnik podczerwieni
- Odbiornik podczerwieni TSOP43836
- Interfejs I2C (TWI)
- 8ch. Driver Darlington ULN2803
- Sygnalizator dźwiękowy piezo (wbudowany generator)
- 3 x złącza napięć stabilizowanych (12V, 5V, 3.3V) + 1 X niestabilizowane + 1 X Masa
- Złącze programujące ISP w standardzie KANDA
- Diody LED sygnalizujące napięcia 5V i 12V
- Dolna płyta ochronna wraz z gumowymi nóżkami.
- Bateria litowa podtrzymująca zegar RTC
Cechy szczególne:
- Napięcie pracy układu do wyboru 5V lub 3.3V
- Peryferie z predefiniowanymi połączeniami zworkowymi:
- LCD, Klawiatura matrycowa, 8xLED, USB, RS485(prócz linii kierunku), RTC, EEPROM, piszczek piezo
- Podwójne wyprowadzenia portów- ułatwia badanie stanów na pinach i umożliwia wprowadzenia bardziej skomplikowanej konfiguracji
- Konwerter USB<>UART posiada diody sygnalizacyjne RxD, TxD
- Dzięki użytemu konwerterowi FT232 można programować mikrokontroler i obsługiwać port szeregowy przez USB
- Port RS485 zabezpieczony 2-kierunowymi diodami tonsil
- Większość scalaków w podstawkach
- Interfejs I2C wyprowadzone na złączu zaciskowym TerminalBlock i złączu kołkowym, na których są: VCC, SDA(PC1), SCL(PC0), I2C Interrupt, GND
- Dodatkowe wyprowadzenie na interfejsie 1Wire dla montażu Strong Pull-Up
- Złącze sterownika mocy ULN2803 wraz z masą i napięciem wybieranym zworką (12V lub niestabilizowane)
- ew. inne za pomocą przewodu łączeniowego
- Radiator na stabilizatory typu T
Układ wyposażony jest w mikrokontroler z wgranym Bootloaderem. Bootloader umożliwia szybkie wgrywanie programu (średnio 1.4kb/s) przez USB bez ryzyka o zablokowanie mikrokontrolera FuseBit-ami. Ja w swoim układzie używam z powodzeniem AVRUBD.
Płytka została wykonana metodą sitodruku z pomocą znajomego emerytowanego drukarza i nie ocenionym supportem Ojca. Wtedy to był niezły eksperyment wynikający z chęci zrobienia niewielkiej serii. Ostatnio natknąłem się na pdf-a szczegółowo opisujący użytą wtedy technologię, a więc zainteresowanych zapraszam do lektury: http://eeit.pl/uploads/files/ad10_book_AA_rep.pdf
Decyzja użycia druku jednostronnego i znacznej ilości tanich elementów przewlekanych wiązała się z masą otworów na każdą z wykonanych płytek. Z pomocą przyszła mała frezarka CNC poskładana ze szrotu i paru płaskowników pospawanych przy uprzejmości jednego z kolegów taty zajmującego się tym zawodowo.
... a to rezultat jej pracy:
Z polutowaniem, poskładaniem oraz uruchomieniem układu nie było większego problemu wszak bazuje on na sprawdzonych już rozwiązaniach.
Układ uruchomieniowy cały czas towarzyszy mi gdzie się tylko tułam po tym malutkim świecie. Niedawno wspomagał pracę polskich renowatorów sztuki w katedrze w Nemur (Belgia) podczas analizy struktury uszkodzonego płótna z pomocą profilometru laserowego.
Co bym zmienił po 3 latach?
Myślę, że:
- Piny AVR z I2C dał bym również na rekonfigurowalnym złączu kołkowym bo niestety są na sztywno do PU i dalej na interfejs i peryferia.
- Inaczej bym rozwiązał klawiaturę matrycową bo teraz trzeba skanować ją z wykorzystaniem rejestru kierunku pinów co nie jest nie poprawne, ale można bardziej elegancko.
- Zasilanie zamienił bym na przetwornice z porządną filtracją napięć. Może dorzucił bym dodatkowe precyzyjne napięcie referencyjne.
- Brak złącza JTAG, co prawda dla AVRów zawsze mi wystarczył debugging po USART, ale przy zabawie z LPC43XX czuję bardzo mocno jaką daje wygodę.
- Pełne wyprowadzenie FT232 też by się od czasu do czasu przydało.
- Potencjometry mogłyby być na predefiniowanych.
- Full-Duplex w 485 też przyjemny bajer :-)
Ale nigdy nie były to dla mnie poprawki krytyczne, które w jakiś szczególnie dotkliwy sposób przeszkadzały w użytkowaniu.
Pliki do pobrania
Układ uruchomieniowy "MegaStarterKit":
- Schemat: m32kit_sch.pdf (kopia),
- Płytka PCB (ścieżki): M32Kit_Sciezki.pdf (kopia)
- Płytka PCB (rozmieszczenie elementów): component_print.pdf (kopia)
- Płytka PCB (elementy): mega32kit_topo.pdf (kopia)
- Płytka PCB (soldermaska): soldermaska_m32kit.pdf (kopia)
Zapraszam do dyskusji :-)
Paweł Wójcicki
Profil na Elektroda.pl: Grizzly16
Ile czasu zajęło ci zaprojektowanie jednostronnego PCB?
OdpowiedzUsuńCzy masz może takie płytki na sprzedaż?
OdpowiedzUsuńTakie pytania proszę zadawać za pomocą wiadomości na forum.
UsuńDodałem do artykułu link do profilu autora na Elektrodzie.
A potrafiłbyś podać przybliżony koszt zbudowania takiego zestawu?
OdpowiedzUsuńps. jak dodać komentarz z konta z bloga?
Witam,
OdpowiedzUsuńwiększość odpowiedzi można znaleźć na forum Elektroda.
Nie sprzedaję tych układów. Kosz budowy to max 150zł. Ile czasu zajęło hmm, ciężko powiedzieć, projektowanie PCB to zawsze absorbujące zajęcie a często kończy się późnymi godzinami nocnymi gdzie łatwo o zatracenie rachuby czasu. ;)
Pozdrawia autor.
Super!
OdpowiedzUsuń