Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody

p.kaczmarek2 28 Lip 2019 16:23 1329 5
  • Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody
    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ć.
    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody
    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.
    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody

    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody

    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:
    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody
    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:
    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody

    Tak wyglądała płytka w trakcie lutowania:
    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody

    Kolejne zdjęcia przedstawiają już zlutowany układ w trakcie programowania za pomocą mojego klona PICKIT2:
    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody
    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody

    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody

    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:
    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody
    (Dla przypomnienia) tak wygląda nowa płytka:
    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody
    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:
    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody
    Zrzut ekranu z środowiska MikroC PRO for PIC w trakcie pisania kodu:
    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody
    Zrzut ekranu z testów ADC tego PICa (i drukowania rezultatów przez UART):
    Mała płytka startowa PIC18F4550/PIC18F45K50 wykonana w SMD + przykładowe kody

    Wszystkie przykłady dla pobrania umieszczam w tabelce:
    NazwaOpisDownload dla MPLAB X z XC8 Download dla MikroC PRO for PIC
    BlinkNajprotsze mruganie diodą (użycie blokującej funkcji Delay) XC8_PIC18F...link.X.zip Download (56.97 kB)Punkty: 4 dla użytkownika PIC18F4550..._Blink.zip Download (20.8 kB)Punkty: 4 dla użytkownika
    Timer0Przykład użycia przerwania od timer0 dla mrugania diodą XC8_PIC18F...MER0.X.zip Download (62.93 kB)Punkty: 4 dla użytkownika PIC18F4550...Timer0.zip Download (21.08 kB)Punkty: 4 dla użytkownika
    Timer1Przykład użycia przerwania od timer1 dla mrugania diodą PIC18F4550...Timer1.zip Download (21.17 kB)Punkty: 4 dla użytkownika
    UART Przykład wypisywania tekstu poprzez UART XC8_PIC18F...UART.X.zip Download (79.07 kB)Punkty: 4 dla użytkownika PIC18F4550...c_UART.zip Download (24.71 kB)Punkty: 4 dla użytkownika
    ADC Przykład odczytu napięcia (tutaj: wartości z potencjometru) przez ADC i wypisanie rezultatu na UART XC8_PIC18F..._ADC.X.zip Download (142.65 kB)Punkty: 4 dla użytkownika PIC18F4550...sc_ADC.zip Download (144.5 kB)Punkty: 4 dla użytkownika


    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:
    P4550_10_g..ers.zip Download (54.99 kB)Punkty: 4 dla użytkownika
    Pliki Eagle (brd i sch) dam na prośbę jak będzie ktoś zainteresowany.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • PCBway
  • #2
    viayner
    Poziom 37  
    Witam,
    pobieranie punktow za kody ogolnodostepne to chyba pomylka.
    Pozdrawiam

    Moderowany przez gulson:

    Wyjaśnienie usera:
    Załączniki to pełne projekty pod PIC18F4550, skonfigurowane z wewnętrznym oscylatorem, a same kody były pisane przeze mnie na bazie materiałów z sieci.

  • PCBway
  • #4
    p.kaczmarek2
    Poziom 23  
    Załączniki od pierwszego postu pochodzą ode mnie, to są pełne projekty pod MPLAB oraz MikroC (wraz z skompilowanym hexem) pod PIC18F4550 z wewnętrznym oscylatorem. Wiadomo, że nie jestem pierwszą osobą na świecie która napisała pod tego PICa tzw. "blinka", czy tam drukowanie wyników ADC na UART, ale przykłady są ode mnie, a do tego nikt nie zmusza do ich pobierania.
    I te moje załączniki to są praktycznie 'gotowce' pod tego konkretnego PICa - wystarczy pobrać i wgrać wsad, nawet nie trzeba kompilować.

    dasej napisał:

    Procesor ma tylko 44 piny. Trzeba było upakować go w podstawce DIL40 byłoby bardziej praktycznie.


    Fajny pomysł, wezmę to pod uwagę jeśli będę robić jakąś następną wersję.

    Do postu dołączam źródła Eagle mojej płytki z tematu.
    Załączniki:
  • #5
    mat343
    Poziom 12  
    wygląda ładnie, można to programować przez port USB? jaki był koszt wykonania płytek w chinach?
  • #6
    p.kaczmarek2
    Poziom 23  
    mat343 napisał:
    wygląda ładnie, można to programować przez port USB?

    Tak, bez problemu dowolny bootloader USB dla PIC18F4550/PIC18F45K50 da radę, jedynie pamiętaj że wersja 4550 wymaga zewnętrznego oscylatora by móc korzystać z USB. 45K50 już nie.

    Też można wgrać na to bootloader Pinguino i programować to podobnie jak Arduino z poziomu środowiska Pinguino IDE.
    https://www.pinguino.cc/
    http://wiki.pinguino.cc/index.php/PIC18F4550_Pinguino

    mat343 napisał:
    jaki był koszt wykonania płytek w chinach?

    Trochę już tych płytek zamawiałem, cena nieco się waha, czasem są promocje. Z reguły jest do 100 zł za 10 PCB do 10x10cm, tu chyba nawet było taniej bo to te mniejsze.
    No i trzeba uważać na różne haczyki w stylu, że niektóre firmy z chin nie wykonują wycięć w PCB innych niż okrągłe (ktoś na forum naszym o tym pisał jakiś czas temu), jedne firmy liczą panel 2x ta sama PCB jako jedno PCB, a inne za to sobie żądają dopłaty...
    Niedawno się spotkałem w sieci z firmą PCB która się reklamuje "free first order" a w rzeczywistości dolicza do niego opłatę, tyle że to nie jest "opłata za PCB" tylko "opłata za test ścieżek", ale oczywiście jest obowiązkowa.