Koło elektroniczno-informatyczne

Projektowanie płytek drukowanych w Eagle
Płytka bazowa APP000

 

Projekt płytki bazowej dla ATTiny13

 
   
W celu wygodnego kontynuowania nauki programowania mikrokontrolerów skonstruujemy kilka przydatnych układów elektronicznych. Na początek będzie to płytka bazowa z mikrokontrolerem ATTiny13. Jest to coś w rodzaju samodzielnego komputera, do którego będzie można przyłączać różne urządzenia. Oczywiście układy takie da się budować na płytce stykowej, jednak nie jest to rozwiązanie wygodne.

Najpierw określmy, co będzie taka płytka bazowa zawierała oprócz samego mikrokontrolera. Po pierwsze musimy mieć możliwość wygodnego programowania mikrokontrolera. Zatem na płytce bazowej umieścimy 10-cio bolcowe gniazdo Kanda (można zamiast niego zastosować dwurzędowe goldpiny, co jest rozwiązaniem tańszym, lecz będziesz musiał uważać, aby poprawnie dołączać wtyczkę taśmy programatora), do którego bez problemów podłączymy taśmę z programatora. Programator dostarczy nam również zasilania, zatem nie będziemy się musieli tym martwić. Płytka bazowa będzie jeszcze zawierała przycisk RESET, diodę sygnalizującą działanie, dwa goldpiny z napięciem zasilania (gdybyśmy chcieli coś dodatkowo do niej podłączyć) oraz gniazdo wyjściowe do podłączania różnych urządzeń, które skonstruujemy w dalszej części kursu.

Gotowa płytka bazowa wygląda jak na poniższej fotografii (dwie płytki w wersji przewlekanej oraz dwie w wersji SMD).

Ważnym elementem jest gniazdo wyjściowe. Do jego konstrukcji użyjemy podwójnej, kątowej listwy żeńskiej  goldpin (koszt około 1...2zł za listwę z 40-toma stykami). Na stykach tego gniazda będą dostępne sygnały mikrokontrolera PB0...PB5 oraz masa i zasilanie Vcc. Umówmy się, że przydział tych sygnałów do poszczególnych pinów gniazda będzie następujący (widok od przodu gniazda):

 

Vcc PB0 PB2 PB4
GND PB1 PB3 PB5

 

Gniazdo wyjściowe będzie posiadało 8 styków. Taki przydział sygnałów pozwoli łatwo rozszerzyć to gniazdo na większą liczbę linii portów dla pozostałych mikrokontrolerów, do których będziemy mogli podłączać układy zaprojektowane dla tej płytki ATTiny13.

Schemat płytki bazowej jest następujący:

 

Uruchom program Eagle i utwórz w nim nowy projekt o nazwie APP000 i opisz go jako "Płytka bazowa dla ATTiny13":

W projekcie APP000 utwórz schemat (klikasz prawym przyciskiem myszki nazwę APP000 i z menu kontekstowego wybierasz New → Schematic). Klikasz narzędzie Add (lub wpisujesz polecenie add) i z biblioteki frames wybierasz ramkę A5L-LOC i wstawiasz ją na schemat w miejscu krzyżyka po lewej stronie u dołu:

Wracasz do wyboru elementu z biblioteki (klawisz ESC) i wstawiasz na schemat poszczególne elementy wg podanej niżej listy.

 

pinhead  PINHD-1X2  PINHD-1X2 x 1 (dodatkowe wyjście Vcc i GND)

pinhead  PINHD-2X4  PINHD-2X4/90 x 1 (wyjście, wybieramy goldpiny kątowe męskie, lecz będzie to gniazdo kątowe żeńskie, którego brak w bibliotekach Eagle)

con-ml  ML10 x 1 (złącze Kanda)

atmel   TINY13 TINY13-20PU x 1 (mikrokontroler)

supply1   Vcc x 2 (zasilanie)

supply1   GND x 2 (masa)

rlc   R-EU   R-EU_0204/7 x 2 (opornik)

rlc   C-EU   C-EU050-025x-75 x 1 (kondensator)

rlc   CPOL-EU   CPOL-EUE2.5-5 x 1 (kondensator elektrolityczny)

led   LED   LED3MM x 1 (dioda LED)

switch-omron  10-XX (przycisk RESET)

 

Rozmieszczamy elementy na schemacie za pomocą narzędzia Move.

Ponieważ połączeń będzie dużo, wykorzystamy narzędzie Bus do narysowania magistrali.

Magistrala jest grupą ścieżek, które na schemacie są rysowane jedną linią. Po wybraniu narzędzia w opcjach ustaw Wire bend style 1:

Narysuj magistralę jak na poniższym rysunku, rysowanie zakończ podwójnym kliknięciem lewym przyciskiem myszki:

 

 

Musimy określić sygnały, które będą przebiegały w magistrali. Robi się to nadając magistrali odpowiednią nazwę, która zawiera nazwy sygnałów. Co będzie się znajdowało w tej magistrali? Wszystkie linie portu B mikrokontrolera ATTINY13, czyli PB0...PB5. Dodatkowo umieścimy tam Vcc i GND. Jeśli sygnały różnią się tylko cyframi, to można wprowadzić je blokowo. Np. linie portu wpiszemy do nazwy magistrali jako PB[0..5] (inaczej należałoby żmudnie wpisywać PB0, PB1...).

Wybierz narzędzie Name i kliknij magistralę i wpisz.

Teraz chcielibyśmy zobaczyć na schemacie tę nazwę. W tym celu używamy narzędzia etykiety Label.

Wybierz je z paska narzędziowego i kliknij lewym przyciskiem myszki w magistralę. Pojawi się jej nazwa, którą możesz sobie przemieszczać. Ustaw ją w jakimś widocznym miejscu i zatwierdź położenie kliknięciem lewego przycisku myszki:

Zmianę położenia etykiety zawsze uzyskasz za pomocą narzędzia Move.

Po nazwaniu magistrali możemy przystąpić do łączenia elementów na schemacie. Wybierz narzędzie Net. Najpierw połącz wszystkie elementy poza magistralą:

Następnie wyprowadzimy z magistrali przewody do odpowiednich elementów na schemacie. Robi się to bardzo prosto. Dla przykładu połączymy magistralę z wyprowadzeniami Vcc i GND. Najpierw ustaw we własnościach Net opcję:

Pozwala ona zaginać przewód pod katem 45 stopni. Kliknij narzędziem Net lewą końcówkę magistrali. Ponieważ magistrala zawiera wiele przewodów, pojawi się menu kontekstowe, z którego wybieramy właściwy przewód, w tym wypadku przewód GND, czyli masę:

Przewód łączymy z elementem GND na schemacie:

Wyprowadzony przewód może posiadać etykietę w celu łatwej identyfikacji. Kliknij go prawym przyciskiem myszki i wybierz opcję Label.

Etykietę ustaw w odpowiednim miejscu i zatwierdź to położenie kliknięciem lewym przyciskiem myszki.

W podobny sposób wyprowadź przewód Vcc i połącz go z elementem VCC na schemacie:

W ten sam sposób połącz resztę elementów z magistralą.

Schemat jest prawie gotowy. Pozostaje jeszcze nazwać elementy i określić ich wartości:

Zapisz schemat pod nazwą app000.sch i przejdź do edytora PCB. Ułóż elementy wg poniższego rysunku:

Wykonaj połączenia ścieżek wg poznanych wcześniej zasad. Możesz uruchomić Autorouter, a następnie ręcznie poprawić ścieżki. Ja tak często robię. Efekt wygląda następująco (nie musisz tworzyć płytki identycznej z naszą):

Wykonaj płytkę PCB i przylutuj do niej elementy. Pamiętaj, że JP2 jest gniazdem żeńskim kątowym, tutaj widać bolce, ponieważ w standardowych bibliotekach Eagle brakuje tego elementu. Oczywiście, można sobie zaprojektować dowolny element biblioteczny, lecz nie wszystko na raz. W dalszej części kursu pokażę, jak to się robi. Poniżej masz pliki z projektu Eagle wraz z grafiką i stroną do wydruku na drukarce laserowej:

 

Element Ilość Opis
ATTiny13 1  
podstawka DIL8 1  
złącze Kanda lub goldpin 2x5 1 złącze programatora
złącze żeńskie goldpin kątowe 2x4 1 złącze wyjściowe
goldpin 1x2 prosty 1 złącze zasilania
opornik 1kΩ/0,125W 1 –(                )–
opornik 4,7kΩ/0,125W 1 –(                )–
dioda LED 3mm 1 kolor dowolny
kondensator 100nF 1  
kondensator 4,7µF/6,3V 1 elektrolityczny
przycisk Omron 1 RESET

 

Stronę z obrazami ścieżek drukujemy za pomocą drukarki laserowej na gładkim papierze kredowym. Wycinamy odpowiedni fragment – płytka SMD jest dwustronna, wycinamy zatem oba obrazki spodu i wierzchu płytki.

Wycięty kawałek kartki zaginamy wzdłuż kreskowanej linii i dopasowujemy do siebie oba obrazki ścieżek. Najlepiej zrobić to pod światło. Po dopasowaniu zszywamy z trzech stron zszywkami i wkładamy do środka płytkę miedziowana przyciętą na odpowiedni wymiar i dokładnie oczyszczoną papierem ściernym, płynem do mycia oraz rozpuszczalnikiem nitro lub benzyną. Zamykamy płytkę w środku przez zszycie kartek ostatnią, czwartą zszywką. Zszywki należy spłaszczyć, aby nie rysowały spodu żelazka.

Tak przygotowane płytki traktujemy rozgrzanym żelazkiem przez około 2 min. Płytkę dwustronną należy ogrzać z obu stron. Przy termotransferze nie dociskaj zbyt mocno żelazka do płytki, ponieważ może to spowodować nieładne rozpłaszczenie ścieżek, szczególnie tych cienkich. Toner przy ogrzewaniu mięknie i zachowuje się jak materiał plastyczny.

Operacja jest skończona, gdy poprzez papier widoczne są ścieżki. Musisz sobie to wypraktykować. Po kilku "produkcjach" nabierzesz wprawy.

Płytki z papierem wrzucamy do letniej wody z mydłem i zostawiamy tak na około 15 minut, aby papier dobrze odmoknął. Następnie delikatnie odrywamy papier od płytek. Jeśli termotransfer został wykonany poprawnie, to całość tonera powinna pozostać na płytce. W przeciwnym razie będziesz musiał uzupełnić ubytki ścieżek pisakiem edding 141F. Ze ścieżek należy dokładnie usunąć resztki papieru. Możesz to zrobić palcem lub starą szczoteczką do zębów. Papier z otworów na polach lutowniczych usuwasz ostrym końcem nożyka lub szpikulcem.

Przygotowujemy roztwór trawiący: łyżeczkę nadsiarczanu sodowego B327 zalewamy gorącą wodą (nie wrzątkiem) i dokładnie mieszamy, aby w całości się rozpuścił. Do roztworu wrzucamy płytki i mieszamy od czasu do czasu, co przyspiesza trawienie.

Po wytrawieniu płytki czyścimy dokładnie rozpuszczalnikiem nitro, który usunie toner ze ścieżek. Ja wrzucam jeszcze płytki na kilka minut do roztworu kalafonii w rozpuszczalniku nitro lub w denaturacie. Tak potraktowane płytki należy dokładnie wysuszyć. Zostaną one pokryte cieniutką warstwą kalafonii, która później ułatwi lutowanie.

W płytce wiercimy otwory. Pod elementy przewlekane stosujemy wiertło 0,7mm. Pod goldpiny 0,9mm. Otwory należy wiercić prostopadle do płytki, inaczej miną się z polami lutowniczymi po drugiej stronie płytki.

Płytka jest gotowa. Lutujemy do niej elementy w kolejności od najniższych do najwyższych – łatwiej je wtedy dociskać przy lutowaniu, inaczej te wyższe będą ci przeszkadzać. W płytce SMD zacznij od zlutowania przelotek (Via). Płytki na poniższych fotografiach posiadają zamiast gniazda Kanda zwykłe goldpiny. Wtyczkę z programatora dołączamy tak, aby jej występ był skierowany do mikrokontrolera.

 

Uruchomienie płytki bazowej APP000

Zlutowaną płytkę APP000 należy teraz uruchomić, czyli sprawdzić poprawność montażu elementów. Podłącz płytkę do programatora USBasp, programator podłącz do gniazda USB w komputerze i uruchom środowisko Eclipse. Stwórz nowy projekt dla ATTINY i wpisz do edytora poniższy program:

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
    DDRB  = 0b11111; // Określamy PB0...PB4 jako wyjścia
    PORTB = 0;       // Na wszystkie wyjścia stan 0
    while(1)
    {
        PORTB++;        // W rejestrze portu B tworzymy licznik
        _delay_ms(100); // Czekamy 0,1 sekundy
                        // I od nowa w pętli
    }
}

Program tworzy w rejestrze portu B licznik, który zlicza co 0,1 sekundy. Pojawia się tutaj nowy operator: ++. Zwiększa on o 1 zawartość rejestru PORTB i w ten sposób powstaje w tym rejestrze prosty licznik binarny, który zlicza co 1/10 sekundy. Najszybciej zmienia się stan linii PB0 (najmłodszy bit licznika). PB1 zmienia się dwa razy wolniej (starszy bit licznika), PB2 znów dwa razy wolniej i tak dalej aż do PB4. Do badania stanu linii wyjściowych PB0...PB4 wykorzystaj próbnik stanów logicznych, który wykonałeś wcześniej. Zasilanie próbnika pobieramy z dwóch goldpinów na płytce bazowej. Sondę próbnika wkładamy do kolejnych otworów gniazda wyjściowego (za wyjątkiem dwóch pierwszych, w których jest +5V i masa).

+5V PB0 PB2 PB4
GND PB1 PB3 PB5

Jeśli próbnik będzie wskazywał odpowiednie zmiany poziomów logicznych, to płytka bazowa jest poprawnie zbudowana. W przeciwnym razie będziesz musiał zabawić się w detektywa i znaleźć na niej błąd. Ostatecznie możesz sobie zrobić nową płytkę, tym razem bardziej starannie.

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.