Witajcie moi drodzy
Dziś przedstawią moją minimalną płytkę uruchomieniową dla PIC18F4450 i PIC18F45K50 wykonaną w SMD. Zawiera ona zasadniczo tylko to co jest niezbędne by uruchomić tego PICa.
Motywacja projektu
Projekt powstał tylko dlatego, że korzystam dość dużo z PICów, a stare rozwiązania (wykonane montażem przewlekanym, często co gorsza na płytkach prototypowych) stały się dla mnie dość nieporęczne i duże. Postanowiłem, że spróbuję od 0 zaprojektować płytkę pod PIC18F4550 która będzie zrobiona z w miarę możliwości małych wersji komponentów, czyli w montażu powierzchniowym.
Projekt płytki
Płytkę zaprojektowałem w darmowej wersji programu Eagle. Schemat układu jest to wręcz absolutne minimum potrzebne do uruchomienia PIC18F4550. Wszystkie potrzebne wyjścia/wejścia mikroprocesora są wyprowadzone na goldpiny. Zasilanie można podpiąć z zewnątrz lub z USB, wybiera się to zworką. Na płytce znajduje się również przycisk RESET. Są też miejsca na opcjonalne komponenty:
- opcja podłączenia diody LED informującej o podłączeniu zasilania (POWER)
- opcja podłączenia diody LED na pin RA4 (zgodnie z Pinguino)
- opcja podłączenia rezonatora kwarcowego na piny RA6/RA7 - PIC18F4550 ma wewnętrzny oscylator, ale nie jest on zbyt dokładny. Nie nadaje się do zastosowań USB. Z kolei PIC18F45K50 ma lepszy rezonator kwarcowy, spełniający wymagania USB, więc lutowanie na płytce zewnętrznego rezonatora kwarcowego może mieć sens jedynie gdy mamy PIC18F4550 i chcemy korzystać z jego sprzętowego USB. W przeciwnym razie nie ma potrzeby go lutować.
Elementy rozmieściłem w miarę możliwości ciasno, tak aby płytka zajmowała jak najmniej miejsca. Po drodze poszedłem na pewne kompromisy, np. brak wyprowadzonego osobno złącza ICSP, czy też ograniczona ilość pinów VDD/GND dostępnych dla użytkownika. Ciężko to było wszystko upchnąć, ale może ktoś da radę to zrobić lepiej? Projekt jest open source/hardware, więc zapraszam do pobrania moich plików Eagle i do ich modyfikacji!
Rozmiar płytki to tylko 45mm na 30mm.
Wykonanie
Samo PCB zamówiłem z pewnej chińskiej firmy wykonującej płytki. Wysłałem im odpowiednio wyeksportowane Gerbery, zapłaciłem a po paru tygodniach paczkę 6 płytek przyniósł listonosz. Tak wygląda jedna z nich:
Przygotowałem wszystkie potrzebne komponenty i zacząłem lutowanie. Dopiero się uczę i nie mam dużego doświadczenia w montażu SMD, a tym bardziej nie mam profesjonalnego sprzętu używanego do tego celu, więc musiałem poradzić sobie moją wierną lutownicą z chin:
Tak wyglądała płytka w trakcie lutowania:
Kolejne zdjęcia przedstawiają już zlutowany układ w trakcie programowania za pomocą mojego klona PICKIT2:
Porównanie starej wersji i nowej
To nie jest moja pierwsza styczność z PIC18F4550. Dość długo korzystam z tego mikrokontrolera, znajduje on u mnie zastosowanie w różnych projektach. Tutaj pokażę, jak wyglądała moja pierwsza płytka z PIC18F4550 która powstała jak zaczynałem naukę mikrokontrolerów:
(Dla przypomnienia) tak wygląda nowa płytka:
To jest zasadniczo ten sam mikrokontroler i obie płytki oferują to samo, a jednak różnica jest wielka.
Przykładowe kody dla PIC18F4550
Umieszczam tutaj przykładowe kody dla PIC18F4550, które pokazują jak można wykonać na nim najprostsze operacje, czyli mruganie diodą LED (słynny "blink"), obsługa timerów (Timer0, Timer1) oraz wysyłanie danych na UART i odczyt wartości z ADC (też wysyłana jest na UART).
Przykładowe kody testowałem na mojej płytce, ale równie dobrze sprawdzą się na innych płytkach z PIC18F4550 lub podobnymi PICami.
Wszystkie projekty umieszczone tutaj korzystają z wewnętrznego oscylatora PICa (nie wymagają zewnętrznego kwarca).
Umieszczone tu przykłady są napisane w dwóch wersjach (dla dwóch IDE):
- dla MPLAB X IDE (z kompilatorem XC8)
- dla MikroC PRO for PIC
Umieszczone kody są dość proste, ale może komuś bardzo początkującemu (lub leniwemu) się przydadzą.
Wersje dla XC8 z MPLAB są nieco bardziej skomplikowane.
Zrzut ekranu z środowiska MPLAB X w trakcie pisania kodu:
Zrzut ekranu z środowiska MikroC PRO for PIC w trakcie pisania kodu:
Zrzut ekranu z testów ADC tego PICa (i drukowania rezultatów przez UART):
Wszystkie przykłady dla pobrania umieszczam w tabelce:
| Nazwa | Opis | Download dla MPLAB X z XC8 | Download dla MikroC PRO for PIC | Blink | Najprotsze mruganie diodą (użycie blokującej funkcji Delay) | Timer0 | Przykład użycia przerwania od timer0 dla mrugania diodą | Timer1 | Przykład użycia przerwania od timer1 dla mrugania diodą | UART | Przykład wypisywania tekstu poprzez UART | ADC | Przykład odczytu napięcia (tutaj: wartości z potencjometru) przez ADC i wypisanie rezultatu na UART |
Podsumowanie
Z mojej płytki dla PIC18F4550/PIC18F45K50 w SMD jestem bardzo zadowolony. Z pewnością jest ona dużym krokiem naprzód względem tego co kiedyś składałem na płytkach prototypowych za pomocą montażu przewlekanego (THT). Pokazana tutaj wersja jest mała i poręczna, i wcale nie jest aż taka trudna do zlutowania w domu, mimo iż wiem, że moje luty nie są idealne.
Jedynym drobnym mankamentem mojej płytki może być umiejscowienie rezonatora kwarcowego na spodniej warstwie, ale nie przejmuję się tym, ponieważ w zasadzie nie trzeba z niego korzystać - nowsza wersja PIC18F4550, zwana PIC18F45K50 oferuje bardzo dokładny rezonator wewnętrzny w samym PICu, co w zasadzie usuwa konieczność używania zewnętrznych kwarców.
Zamieszczam Gerbery płytki:
Pliki Eagle (brd i sch) dam na prośbę jak będzie ktoś zainteresowany.
Fajne? Ranking DIY Pomogłem? Kup mi kawę.