Kurs podstawowy
Podstawowy układ połączeń mikrokontrolera

Jest to pierwszy artykuł odnoszący się do praktycznej części tej serii. Rozpoczniemy od budowy podstawowego układu opartego o mikrokontroler. Pierwszą rzeczą, jaką należy zrobić to pobrać ze strony producenta odpowiedni dokument ze specyfikacją mikrokontrolera. Bez tego nie warto się nawet zabierać za mikrokontrolery. Tam znajdziemy opis wyprowadzeń, minimalne wymagania oraz sposoby jak połączyć dany mikrokontroler do naszego obwodu. Dowiemy się także co on może, gdyż każdy mikrokontroler różni się od innych parametrami, możliwościami oraz obudową.

 

Aby mikrokontroler mógł pracować musi być podłączony do układu elektronicznego. To w jaki sposób go podłączyć opisane jest w dokumentacji mikrokontrolera, którą można pobrać ze strony producenta. Wszystkie układy elektroniczne składają się z wielu elementów począwszy od rezystorów na układach scalonych kończąc. Każdy element posiada szczególne właściwości, które opisane są w dokumentacjach technicznych. To samo dotyczy mikrokontrolerów. Na dole artykułu umieściłem linki do strony Atmel.com, gdzie wymienione są produkowane mikrokontrolery AVR i odnośniki do ich dokumentacji.

W tym cyklu artykułów pracować będziemy głównie z mikrokontrolerem ATmega32, ale wszystkie sposoby realizacji układów są podobne dla każdego mikrokontrolera AVR. Wiec zaczynamy.

Do dyspozycji mamy mikrokontroler ATmega32-16PU i musimy pobrać dokumentację właściwą dla mikrokontrolera ATmega32. Na początek zapoznajemy się z podstawowymi parametrami  oraz topologią wyprowadzeń mikrokontrolera.

 

ATmega32 wyprowadzenia

Rys. 1. Topologia wyprowadzeń mikrokontrolera ATmega32.

 

Z dokumentacji dowiadujemy się, ze mikrokontroler ATmega32-16PU poprawnie pracuje przy napięciu zasilania w zakresie od 4,5 do 5,5V, maksymalny prąd zasilania mikrokontrolera wynosi 200 mA, obciążalność maksymalna pojedynczego portu  to 40mA. W dokumentacji opisano również, że mikrokontroler ten posiada wewnętrzny oscylator i może być nim taktowany z częstotliwościami 1, 2, 4 i 8 MHz. Do wyprowadzeń XTAL1 oraz XTAL2 można podłączyć zewnętrzny rezonator kwarcowy o częstotliwości do 16 MHz. tymi informacjami możemy zacząć budować podstawowy układ połączeń mikrokontrolera, który będzie właściwy praktycznie dla całej rodziny AVR.

 

Na początek zawsze zaczynamy od schematu. Błędy popełnione podczas rysowania schematu łatwo jest poprawić i nie pochłaniają nic więcej oprócz czasu. Rysując schemat utrwalamy sobie także zasady wykonywania połączeń i uczymy się. Zanim zmontujemy układ z rzeczywistych elementów warto jest kilkukrotnie sprawdzić połączenia na schemacie i przeanalizować poprawność zastosowanych rozwiązań. Jest to co prawda operowanie wyłącznie na teorii, ale jej nie wolno pomijać. Poza tym musimy także wiedzieć co układ ma realizować. Od tego zależy jakich elementów użyjemy.

 

W dokumentacji napisane jest co dany mikrokontroler potrafi. Użyty przez nas egzemplarz posiada 32 wejścia/ wyjścia cyfrowe ogólnego przeznaczenia, z czego na porcie A mamy do dyspozycji programowo konfigurowalne wejścia przetworników analogowo cyfrowych. Od tego jak wykorzystamy port A zależy w jaki sposób należy zbudować zasilanie mikrokontrolera. Do tego koniecznie należy zapoznać się z wytycznymi projektowania urządzeń w oparciu i mikrokontrolery AVR. W połączeniu z dokumentacją mikrokontrolera jest praktycznie komplet niezbędnych informacji do zbudowania poprawnie działającego układu.

 

Zaczynamy od zasilania mikrokontrolera.

 

Zasilanie mikrokontrolera, a także całego układu jest jedną z najbardziej krytycznych części każdego projektu. Sposób podłączenia zasilania wpływa na jakość pracy całego układu. Jak widać na rysunku nr 1 mikrokontroler ATmega32-16PU posiada kilka pinów zasilających. Piny 10 (VCC), 11 (GND), 30 (AVCC) oraz 31 (GND) służą do podłączenia napięcia zasilającego. Dodatkowo mikrokontroler ten posiada pin 32 (AREF) do podłączenia napięcia odniesienia (referencyjnego) dla konwerterów analogowo - cyfrowych. Istnieje kilka zasad, których należy bezwzględnie przestrzegać, aby nasz układ pracował bezawaryjnie i prawidłowo. Wszystkie piny zasilania muszą być podłączone do odpowiedniego potencjału napięcia zasilania, VCC i AVCC do zasilania, a piny GND do masy zasilania. Każdy pin podłączany do potencjału dodatniego musi być od sprzęgany kondensatorem do masy. Wartość kondensatora zalecana przez producenta wynosi 100 nF. Pin AREF także musi być podłączony przez kondensator 100 nF do masy. Projektanci firmy Atmel umieścili piny zasilające tak, aby sąsiadowały ze sobą. Umożliwia to umieszczanie kondensatorów odsprzęgających jak najbliżej mikrokontrolera, aby zminimalizować długość połączeń od linii zasilających do mikrokontrolera. Jest to o tyle ważne, że część cyfrowa mikrokontrolera przełącza stany na pinach, co powoduje skoki prądu w liniach zasilających. Wielkość szpilek prądowych na zasilaniu mikrokontrolera bezpośrednio zależy od czasu przełączania. Szpilki prądowe powodują powstawanie zakłóceń w postaci skoków napięcia, co może powodować niestabilną pracę układu oraz w najgorszym przypadku być niszczące dla mikrokontrolera. Kondensatory odsprzęgające wygładzają przebieg napięcia na liniach zasilających i zapewniają stabilną i bezpieczną pracę mikrokontrolera.

 

Istnieją dwa rozwiązania podłączania zasilania do mikrokontrolera, które zależą od funkcji, jakie mikrokontroler będzie pełnił w układzie. Pierwsze rozwiązanie stosowane jest w przypadku gdy mikrokontroler będzie wykorzystywał wyłącznie część cyfrową,

 

Rys. 2. Rekomendowane podłączenie zasilania przy wykorzystaniu wyłącznie części cyfrowej mikrokontrolera.

 

Jest najprostszy sposób podłączenia zasilania do mikrokontrolera. Spełnione zostały wymagania dotyczące wymogu podłączania wszystkich pinów zasilających i pinów masy oraz stosowania kondensatorów odsprzęgających.

 

Sprawa komplikuje się, gdy chcemy wykorzystywać część analogową mikrokontrolera. Producent zaleca w takiej sytuacji rozdzielenie masy cyfrowej i masy analogowej, które powinny być połączone tylko w jednym punkcie. Punk ten powinien być zlokalizowany w zasilaczu układu. Dodatkowe wymaganie dotyczy zasilania przetworników A/C przez podłączenie pinu AVCC do zasilania VCC za pośrednictwem dolnoprzepustowego filtru LC.

 

Na stronie 210 dokumentacji mikrokontrolera ATmega32 znajduje się rysunek przedstawiający prawidłowe podłączenie przetworników A/C oraz wydzielenie płaszczyzn masy analogowej i masy cyfrowej.

 

Rys. 3. Wydzielenie masy analogowej i podłączenie przetworników A/C.

 

Rysunek 3 dotyczy obudowy TQFP/MFL, co w przypadku obudowy PDIP ?  Nic trudnego. masą przetworników A/C jest zawsze pin GND następny po pinie AVCC. Kolejny problemem związany z rozdzieleniem mas pojawia się przy projektowaniu płytki PCB. W celu uniknięcia tworzenia anteny z płaszczyzny masy analogowej nie należy prowadzić linii sygnałowych przecinających szczelinę między powierzchniami rozdzielonych mas.

 

 

Rys. 4. Rekomendowane podłączenie zasilania przy wykorzystaniu części cyfrowej i analogowej mikrokontrolera.

 

Rysunek 4 przedstawia schemat prawidłowego podłączenia zasilania do mikrokontrolera, w którym wykorzystana jest zarówno część cyfrowa, jak i analogowa. Spełnione są warunki poprawnego podłączenia pinów zasilających oraz pinów mas, zastosowano kondensatory odsprzęgające oraz zasilono przetworniki A/C za pośrednictwem dolnoprzepustowego filtru LC.  Zgodnie z zaleceniem producenta cewka L1 powinna być nawinięta na rdzeniu ferrytowym. Kondensatory C1, C2 C3 oraz cewkę L1 należy umieszczać jak najbliżej pinów mikrokontrolera. Rzeczywisty układ wyprowadzeń mikrokontrolera ułatwia to takie rozmieszczenie elementów zewnętrznych, a także rozdzielenie mas.

 

Czas na Taktowanie mikrokontrolera

 

Na etapie sprzętowym jest to najmniej skomplikowana czynność, którą możemy wykonać. Wybór sposobu taktowania mikrokontrolera jest dość duży. Możemy skorzystać  z wewnętrznego oscylatora RC, co nie wymaga stosowania żadnych zewnętrznych elementów, ale ogranicza wybór częstotliwości taktowania do wartości 1, 2, 4 i 8 MHz. Fabryczny mikrokontroler posiada domyślne ustawienia fusebitów na taktowanie z wewnętrznego oscylatora RC z częstotliwością 1 MHz. W takim przypadku nie musimy wykonywać żadnych czynności. Jeżeli budujemy urządzenie, które nie jest wrażliwe na stabilność czasową możemy mikrokontroler taktować z zewnętrznego oscylatora RC, podłączonego do wejścia XTAL1, którego przybliżona częstotliwość wyraża się wzorem:

 

\mathrm{f }= \frac{1}{3RC}

 

Rys. 5. Podłączenie zewnętrznego oscylatora RC

 

Pin XTAL2 pozostawiamy niepodłączony. Przy podłączeniu zewnętrznego oscylatora RC wartość C nie powinna wynosić co najmniej 22 pF. Można też korzystając z bezpiecznika CKOPT włączyć programowo pomiędzy wejście XTAL1 a masę wewnętrzny kondensator o wartości 36 pF. Wtedy nie ma potrzeby stosowania zewnętrznego kondensatora C. Zakres częstotliwości zawiera się w przedziale od 0,1 do 12 MHz.

 

Najbardziej rozpowszechnionym rozwiązaniem jest taktowanie mikrokontrolera przez podłączenie rezonatora kwarcowego lub ceramicznego do pinów XTAL1 i XTAL2.

 

Rys. 6. Podłączenie rezonatora kwarcowego do mikrokontrolera.

 

Podłączenie rezonatora kwarcowego do mikrokontrolera wymaga zastosowania oprócz rezonatora dodatkowych dwóch kondensatorów podłączonych między piny XTAL1 i XTAL2 a masę. Oba kondensatory muszą być jednakowe. Zalecana wartość to 22pF. My będziemy używać tego rozwiązania, które szerzej omówione zostanie w późniejszym artykule.

 

Nasuwa się pytanie, które rozwiązanie wybrać. Nie ma jednoznacznej odpowiedzi. Wszystko zależy co projektowane urządzenie ma robić. Jeśli urządzenie ma odmierzać czas, to ważna jest stabilność taktowania. W takim przypadku wybieramy rezonator kwarcowy. Częstotliwość taktowania wpływa wprost proporcjonalnie na zużycie energii przez urządzenie. Jeśli urządzenie ma być zasilane z baterii dobrze by było, gdyby zużycie energii było jak najmniejsze. Wtedy musimy wziąć pod uwagę, czy zależy nam na szybkości działania. Zwykle urządzenia zbudowane w oparciu o mikrokontroler posiadają peryferia służące do komunikowania się z użytkownikiem. To wymaga już zastosowania odpowiednio szybkiego taktowania, by nie było odczuwalne pulsowanie na wyświetlaczach, czy dziwne reakcje na naciśnięcie klawiszy.  W początkowym etapie nauki proponuję nie martwić się tym zagadnieniem i wykorzystać maksymalnie możliwości mikrokontrolera. Z czasem nabiera się doświadczenia i można wprowadzać kolejne usprawnienia.

W naszych aplikacjach będziemy wykorzystywać rezonator kwarcowy o częstotliwości 16 MHz. Bit konfiguracyjny CKOPT będzie zaprogramowany, co da nam silny sygnał zegarowy. W dokumentacji technicznej mikrokontrolera istnieje zapis, że amplituda sygnału jest w granicach napięcia zasilania, tzw. "rail-to-rail". W takim przypadku sygnał zegarowy nie będzie wrażliwy na zakłócenia pochodzące ze środowiska w jakim pracuje nasz układ. Umożliwia to także taktowanie innych urządzeń z wyjścia XTAL2.

 

Sygnał zegarowy 16 MHz

Rys. 7. Przebieg sygnału zegarowego przy zaprogramowanym bicie konfiguracyjnym CKOPT.

 

Na przedstawionym przebiegu widzimy, że napięcie międzyszczytowe sygnału zegarowego wynosi ponad 4V przy napięciu zasilania 5V. W przypadku niższych częstotliwości różnica między napięciem zasilania a napięciem międzyszczytowym sygnału zegarowego będzie mniejsza.

Aby przeprowadzić pomiar sygnału zegarowego należy sondę oscyloskopu podłaczyć do pinu XTAL2 mikrokontrolera. Z uwagi na niską obciążalność wzmacniacza oscylatora, należy dzielnik napięcia sondy przełączyć na 1:10.

 

Na koniec RESET

 

Wejście RESET jest jednym z podstawowych wejść mikrokontrolera. Reset mikrokontrolera wyzwalany jest stanem niskim na pinie RESET. Czasami jest ono współdzielone z normalnym portem, ale zazwyczaj jest to wydzielony pin spełniający tylko tę jedną funkcję. Z wejścia RESET korzystać będziemy do ustawienia mikrokontrolera do wartości początkowych, które określone są w programie. Efekt będzie taki sam jak przy załączeniu zasilania.  Także podczas programowania na wejście RESET podawany jest stan niski. Producent mikrokontrolerów AVR zaleca odpowiednią konfigurację obwodu podłączonego do pinu RESET.

 

Rys. 8. Podłączenie pinu RESET.

 

W dokumentacji mikrokontrolera można wyczytać, że pin RESET posiada wewnętrzny rezystor podciągający (pull-up), lecz w przypadku urządzenia pracującego w środowisku o dużym poziomie zakłóceń może okazać się on niewystarczający i mogą wystąpić sporadyczne zaburzenia pracy mikrokontrolera. Jednocześnie zaleca zastosowanie zewnętrznego rezystora podciągającego o wartości 4,7 k\Omega lub większy, lecz gdy chcemy korzystać z debugWIRE, do prawidłowego działania rezystor podciągający nie powinien być mniejszy niż 10 k\Omega. Dobrym więc rozwiązaniem będzie od razu zastosować rezystor podciągający o wartości 10k\Omega. Na rysunku 8 widać diodę Zenera podłączoną między Vcc a pin RESET. Stosowanie tej diody zalecane jest przez producenta, aby ograniczyć napięcie na pinie RESET. Producent mocno zaleca, aby taka dioda stosowana była w przypadku występowania dużych zakłóceń pochodzących ze środowiska w jakim pracuje urządzenie. Jednakże zastosowanie diody Zenera uniemożliwi programowanie wysokonapięciowe. W naszym przypadku programować będziemy wykorzystując interfejs SPI więc diodę tę można zastosować, jako dodatkowe zabezpieczenie mikrokontrolera. Wartość napięcia Zenera diody należy dobrać do parametrów granicznych mikrokontrolera., które wyszczególnione są w dokumentacji w sekcji Electrical Characteristics. Dla Mikrokontrolera ATmega32 napięcie na pinie RESET nie może wykraczać poza zakres od -0,5 do 13 V.  Typowe wartości napięcia na pinie RESET dla stanu wysokiego zawierają się od 0,6 Vcc do Vcc+0,5 V. W przypadku naszego mikrokontrolera, gdzie napięcie zasilania wynosi 5V, można zastosować diodę Zenera o napięciu 5,1 V.

 

Stosowanie kondensatora podłączonego między pin RESET a masę nie jest wymagane. Producent zaleca jego stosowanie w przypadku występowania dużych zakłóceń w środowisku pracy mikrokontrolera, jako element zabezpieczający. Na rysunku 7 widać zworkę między pinem RESET a kondensatorem. Służy ona do odłączenia, kondensatora na czas programowania, gdyż według producenta kondensator może uniemożliwić programowanie mikrokontrolera.  Zworka umożliwi nam szybkie odłączenie kondensatora na czas programowania, a także ponowne jego podłączenie podczas normalnej pracy. Warto z takiego rozwiązania skorzystać. Zgodnie z zaleceniami producenta elementy te należy umieszczać jak najbliżej pinu RESET.

 

Rysunek 8 przedstawia schemat, gdzie sygnał RESET pochodzi z dowolnego zewnętrznego źródła, np. z programatora. Czasem zachodzi konieczność ręcznego wywołania sygnału reset. Stosuje się wtedy przycisk zwierający pin RESET do masy.

 

Rys. 9. Podłączenie przycisku do pinu RESET.

 

Układ połączeń przedstawiony na rysunku 9 pozwala na podawanie stanu niskiego na pin RESET mikrokontrolera za pomocą sygnału pochodzącego z zewnętrznego źródła, jakim jest najczęściej programator oraz ręcznie, za pomocą przycisku. W przypadku gdy stosujemy kondensator włączony między pin RESET a masę musimy być świadomi, że w momencie wciśnięcia przycisku zwieramy do masy nie tylko pin RESET, ale także naładowany kondensator, na okładkach którego występuje różnica potencjałów równa Vcc. Zwarcie naładowanego kondensatora powoduje jego gwałtowne rozładowanie i wydzielenie się dość dużej energii. Przez przycisk płynie stosunkowo duży prąd. Występujący skok napięcia może być niebezpieczny dla mikrokontrolera oraz powodować zakłócenia dla całego układu. Należy wtedy ograniczyć prąd rozładowania kondensatora zabezpieczającego. Zgodnie z wytycznymi producenta wystarczy włączyć szeregowo z przyciskiem rezystor o wartości 330 \Omega.

 

Stosując powyższe wytyczne zapewniamy prawidłowe warunki pracy mikrokontrolera oraz całego układu. W celach dydaktycznych można używać najbardziej rozbudowanego układu połączeń z zasilaniem przetworników A/C, ale warto na etapie projektowania urządzenia określić zadania stawiane mikrokontrolerowi i do nich dostosowywać układ połączeń. Stąd tak ważne jest przygotowanie najpierw schematu. Osobiście zalecam stosowanie dwóch alternatywnych układów połączeń.

 

Rys. 10. Schemat połączeń stosowany w przypadku wykorzystywania części cyfrowej i analogowej mikrokontrolera.

 

Rys. 11. Schemat połączeń stosowany w przypadku wykorzystywania wyłącznie części cyfrowej mikrokontrolera.

 

Swój prototyp najlepiej montować na płytce stykowej, do której podłączamy kolejne elementy bez lutowania i szybko możemy zmieniać konfigurację połączeń.

 

Fot. 12. Płytka stykowa 830 pin.

 

Fotografia 11 przedstawia typową płytkę stykową. Linie zasilania biegną wzdłuż całej płytki przy obu dłuższych krawędziach. Czasem zdarza się że linie zasilania w połowie długości posiadają przerwę i jest to przyczyną frustracji mniej doświadczonych konstruktorów. Warto sprawdzić ciągłość połączeń linii zasilających aby mieć pewność, że piny na liniach zasilających rzeczywiście znajdują się pod napięciem. Zwracać należy też uwagę, aby nie zrobić przypadkowych zwarć nieosłoniętymi częściami elementów. Ponadto po zmontowaniu układu na płytce stykowej, jeszcze przed podłączeniem źródła napięcia zalecam sprawdzić omomierzem, czy nie ma zwarć między zasilaniem a masą, a także sprawdzić ciągłość połączeń. Zaoszczędzi nam to wielu kłopotów. Dopiero gdy jesteśmy całkowicie pewni, że układ zmontowany jest prawidłowo możemy podłączyć źródło zasilania. Nigdy tego nie zaniedbujcie. Trzeba mieć świadomość, że mikrokontroler zamontowany w układzie będzie programowany. Jakiekolwiek zwarcia mogą spowodować uszkodzenie komputera, który do programowania będzie wykorzystywany.

 

Pozostaje nam zmontować układ z mikrokontrolerem. Polecam na początek prostsze rozwiązanie bez przycisku reset, gdyż będziemy korzystać na tym etapie wyłącznie z bloków cyfrowych mikrokontrolera, a reset można w prosty sposób zrealizować przez wyłączenie zasilania. W następnym artykule podłączymy do naszego układu programator i połączymy się z mikrokontrolerem z komputera.

Autor: Orici
Wyświetleń: 3816|Komentarzy: 0|Ocena: 0|Głosów: 0