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

Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów

p.kaczmarek2 30 Maj 2016 18:46 10932 13
  • Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów
    Zdjęcie przedstawia mój klon PICKIT2 podłączony przewodami ICSP do mojej płytki developerskiej USB na PIC18F4550. Płytka na zdjęciu może się lekko różnić od opublikowanego PCB ponieważ przed publikacją jeszcze go poprawiałem.

    Witajcie moi drodzy!
    Dziś chciałbym pokazać Wam mój projekt, który pozwolił mi tanio rozpocząc przygodę z mikrokontrolerami PIC.
    Jest to niezwykle prosty do wykonania klon programatora PICKIT2, zbudowany z łatwo dostępnych elementów (zbędne układy są pominięte, natomiast MOSFETy są zastąpione tranzystorami z rodziny BC*). Jego koszt ogranicza się w zasadzie do kosztu mikroprocesora PIC18F2550, ponieważ pozostałe elementy można nawet wyciągnąć ze złomu elektronicznego, a całość jest na tyle prosta, że można ją nawet zlutować na wierconej płytce prototypowej.


    Parę słów o oryginalnym PICKIT2

    PICKIT2 to programator na USB dla mikrokontrolerów PIC od Microchipa. Oficjalnie przestał być wspierany w 2009 roku, kiedy to pojawił się PICKIT3, ale nieoficjanie dalej jest rozwijany przez hobbystów i w większości przypadków radzi sobie równie dobrze jak jego nowszy i droższy odpowiednik. Wraz z nieoficjalnymi aktualizacjami pozwala zaprogramować zdecydowaną większość układów od Microchipa, a nawet nowsze procesory z rodzin PIC32MX i PIC32MZ. Ponadto jego samodzielne wykonanie jest znacznie prostsze, ponieważ bazuje on na mikroprocesorze PIC18F2550 dostępnym w obudowie DIP, w przeciwieństwie do PICKIT3a, którego sercem jest PIC24FJ256GB106, niestety dla hobbystów dostępny tylko w obudowach pokroju TQFP.

    Schemat PICKIT2 od Microchipa wygląda następująco:
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów




    Źródło: dokumentacja Microchipa.

    Jak widzimy, PICKIT2 składa się z nastepujących częsci:
    - układ zasilania VDD - generuje na wyjściu ICSP napięcie zasilania PICa, w zależności od rodziny jest to z reguły 5V bądź 3.3V, ale można ustawić inne napięcie.
    - uklad napięcia VPP - generuje napięcia do 12V które potrzebne są do wprowadzenia programowanego PICa w tryb programowania HVP (High Voltage Programming). PICe oferują również opcję LVP (Low Voltage Programming), ale jest ona znacznie rzadziej używana.
    - układ pamięci EEPROM - wykorzystywany jest jedynie do możliwości programowania układu bez podłączenia PICKIT2 do USB, tzn. PICKIT2 może zapamiętać wsad a potem programować PICe tym właśnie zapamiętanym wsadem.

    Natomiast schemat mojego klona PICKIT2a jest znacznie prostszy:
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów

    Całość jest uproszczona najbardziej jak się dało aby nie stracić przy tym funkcjonalności programowania wszystkich układów.
    Co zostało zmienione:
    - układ zasilania VDD - został usunięty, mój klon PICKIT2 jest przeznaczony głównie do programowania ICSP i na wyjściu VDD zawsze ma 5V z USB. Oczywiście i tak można nim programować PICe na napięcie 3.3V, ale w tym celu należy zasilić je z osobnego źródła 3.3V (np. poprzez dodatkowy stabilizator LDO). Również należy sprawdzić, czy dany układ ma 5V-tolerant pins, bo jeśli nie to trzeba również przenieść sygnały PGD/PGC z poziomu 5V na 3.3V. W ten sposób programowałem moim klonem nawet niektóre układy z rodziny PIC32 i PIC24.
    - układ napięcia VPP - został uproszczony, tak aby korzystać z ogólnodostepnych tranzystorów z rodziny BC*.
    - układ pamięci EEPROM - został pominięty, w żaden sposób nie wpływa on na normalną pracę PICKITa.


    Uprzedzając pytania - ani mój klon, ani oryginalny PICKIT2 nie ma rezystora na pinie RESET (MCLR, pin 1), ponieważ jest on sprzętowo wyłączony. To nie jest błąd, schemat podany wyżej jest kompletny.

    Spis elementów:
    R1 - 10k (dzielnik napięcia, z rzeczywistego VDD równego 5V robi 3.4V tylko po to by oszukać soft PICKITa i pozornie ustawić VDD na 3.4V)
    R2 - 22k (dzielnik napięcia, z rzeczywistego VDD równego 5V robi 3.4V tylko po to by oszukać soft PICKITa i pozornie ustawić VDD na 3.4V)
    R3 - 10k
    R4 - 10
    R5 - 10k
    R6 - 4k7 (dzielnik napięcia dla pomiaru uzyskanego VPP)
    R7 - 470 (rezystor dla diody LED)
    R8 - 2k7 (dzielnik napięcia dla pomiaru uzyskanego VPP)
    R10 - 100
    R11 - 10k
    R12 - 10k
    R13 - 470 (rezystor dla diody LED)
    L1 - 680uH (lub zbliżona)
    C1 - 22pF (można by pominąć, ale bez niech PICKIT2 może działać niestabilnie)
    C2 - 22pF (można by pominąć, ale bez niech PICKIT2 może działać niestabilnie)
    C3 - 220nF do 2.2uF (wartość można dobrać zgodnie z datasheetem PIC18F2550, V-USB capacitor)
    C4 - 47uF
    C5 - 30uF (musi być na conajmniej 25V)
    C6 - 220uF lub podobny, do filtracji zasilania
    C7 - 100nF ceramiczny odsprzęganie zasilania
    C8 - 100nF ceramiczny odsprzęganie zasilania
    C9 - 100nF ceramiczny odsprzęganie zasilania
    D1 - 1N4148
    Q1 - 20MHz
    Q2 - BC557 lub podobny
    T1 - BC547 lub podobny
    T2 - BC547 lub podobny
    T3 - BC547 lub podobny
    IC1 - PIC18F2550 (najlepiej w podstawce DIP)
    LED1 - czerwona dioda LED "Action"
    LED2 - zielona dioda LED "Power"
    X1 - złącze USB typu B, ale od biedy można nawet wykorzystać ucięty kabelek od myszki.
    JP1 - wyjście ICSP do programowania, zgodne z PICKITem z tą różnicą że pin 6 został pominięty i nie jest obsługiwany

    Jeśli chodzi o koszt, to zasadniczo można go ograniczyć do kosztu procesora. Pozostałe elementy są ogólnie dostepne, odpowiednie tranzystory można nawet wylutować ze sprzętu RTV. Jeśli nie chcemy trawić własnej płytki, to całość można wykonać na gotowej, wierconej płytce (tak robiłem swój prototyp, zanim jeszcze ogarnąłem termotransfer). Myślę, że bez problemu można koszt całości zamknąć w 20 zł.

    Moje PCB
    Własną płytkę zaprojektowałem w Eagle tak, by łatwo było ją samodzielnie wykonać w domu. Ścieżki są grube i wychodzą bez trudu nawet gdy użyje się starodawnej metody termotransferu. Rezystory od dzielników napięcia proszę lutować dość ostrożnie, bo tam na PCB jest ciasno i można się pomylić.
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów

    Wgranie bootloadera
    Zasadniczo to jest najbardziej problematyczna kwestia. Aby wykonać ten programator PIC, należy mieć programator PIC, by wgrać wsad na PIC18F2550! Ja użyłem prostego JDMa na RS232, ale równie dobrze może to być Brenner lub inny PICKIT. Jeśli ktoś nie ma dostępu do programtora, a chce złożyć ten klon, to ja również mogę pomóc, mam chyba jeszcze jednego zaprogramowanego PICa pod ten układ. Użyty przeze mnie bootloader to PK2V023200.hex.

    Pierwsze uruchomienie
    Windows powinien od razu wykryć i zainstalować programator. Na Linuxie nie sprawdzałem, ale z tego co wiem to też jest wspierany.
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów
    Po zainstalowaniu się sterowników możemy odpalić interfejs graficzny PICKITa. Proszę zwrócić uwagę na to, że VDD jest zawsze pokazywane jako 3.4V - jest to ustawione na sztywno poprzez dzielnik napięcia na rezystorach, ponieważ w moim klonie rzeczywisty układ VDD został pominięty.
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów
    Potem warto wykonać Troubleshoot, aby sprawdzić czy poprawnie złożyliśmy całość.
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów
    Zaczynamy testowanie, klikamy Next.
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów
    Tutaj nie mamy nic do zrobienia - VDD jest na sztywno i ten komunikat jest poprawny. Klikamy Next.
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów
    Tutaj klikamy Test VPP.
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów
    Powinno wynosić około 12V. Również sprawdzamy te napięcie multimetrem na wyjściu ICSP.
    Na koniec sprawdzamy też sygnały PGD i PGC:
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów
    Jeśli wszystko działa zgodnie z opisem to PICKIT2 jest gotowy do użytku. Jeśli nie, to należy sprawdzić płytke pod kątem uszkodzonym elementów, zimnych lutów itp. Można również spróbować dobrać lepszy induktor. Te 680uH nie jest wartością krytyczną, ale rzeczywista wartość powinna być do niej w miarę zbliżona.
    Tak wygląda nasz programator w akcji:
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów


    PICkit2 Devicefile Editor
    Myślę, że w tym temacie wypada wspomnieć również o narzędziu takim jak PICkit2 Device File Editor. Pozwala ono modyfikować i rozszerzać plik Devices.dat który zawiera informacje i skrypty wsparcia procesorów kompatybilnych z PICKITem. Wiele nowszych procków zostało w ten sposób dodanych do PICKIT2a a zmodyfikowane pliki Devices.dat są dostępne za darmo w sieci.
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów

    Strona domowa PICkit2 Device File Editor'a: https://sites.google.com/site/pk2devicefileeditor/
    Wątek poświęcony mu na forum Microchipa: http://www.microchip.com/forums/m473925-p3.aspx

    Dalszy plan rozwoju
    Teraz planuję przeprojektowanie w pełni płytki i wykonanie tego programatora w pełni w wersji SMD.

    Podsumowanie
    Z mojego uproszczonego PICKIT2a jestem bardzo zadowolony. Posiadam również programatory typu Brenner, ale one mają problemy z działaniem na nowszych systemach, natomiast PICKIT2 chodzi bez potrzeby instalowania dodatkowych sterowników (sprawdzałem na Windows XP, Windows 7 i Windows 8.1). Ten programator jest nie do zdarcia i szczerze polecam go każdemu, kto chce choć trochę zająć sie PICami. Zawsze to lepiej samemu coś wytrawić niż kupować gotowca od chińczyków.


    Załączniki
    - użyty przeze mnie wsad .hex PICKIT2
    - zzipowany mój folder softu PICKIT2
    - projekt Eagla (schemat+wzór ścieżek)
    - pdf ścieżek gotowy do wydruku
    - PICkit2 Devicefile Editor
    - PICKIT2 Users Guide od Microchipa
    - pełna instalka PICKIT2a od Microchipa


    Fajne!
  • Semicon
  • #2 30 Maj 2016 20:05
    krzysssztof
    Poziom 19  

    Fajne i w miarę proste. Może skusi mnie to do wypróbowania PIC'ów :)

  • #3 30 Maj 2016 20:32
    p.kaczmarek2
    Poziom 23  

    krzysssztof napisał:
    Fajne i w miarę proste. Może skusi mnie to do wypróbowania PIC'ów :)


    Polecam, w razie czego zawsze możemy pomóc na forum w dziale "Mikrokontrolery PIC".

    Jeśli chcesz jeszcze bardziej uprościć układ to można by pominąć LEDy :D
    Co do reszty elementów, to zamiast tranzystorów BC* chyba mogą też być jakieś 2N*, np. 2N3904 i 2N3906 (gdzieś się spotkałem z ich użyciem w klonie), albo jeszcze inne 2N* które wyskakują jak się poszuka w sieci zamienników, ale tego osobiście nie sprawdzałem.

  • #4 30 Maj 2016 20:40
    mariomario
    Poziom 18  

    Jak ktoś podeśle do mnie uC, to mogę zaprogramować nieodpłatnie PIC18F2550 do tego programatora (posiadam programator pickit3) ;)

  • Semicon
  • #5 31 Maj 2016 12:25
    stepawel
    Poziom 14  

    Czemu Kolega tak uparcie zrobił te trzy zworki na płytce? Tylko bez tłumaczenia, że inaczej się nie dało :)

  • #6 31 Maj 2016 13:47
    trippo1
    Poziom 11  

    Mógłbyś napisać coś więcej o programowaniu mikroprocesorów 32MXF... za pomocą Pickit 2? Jakie pliki dołączyć do bibliotek aby była taka możliwość.

  • #7 31 Maj 2016 15:10
    michał_bak
    Poziom 15  

    stepawel napisał:
    Czemu Kolega tak uparcie zrobił te trzy zworki na płytce? Tylko bez tłumaczenia, że inaczej się nie dało :)

    Bo to nie są wybory Miss PCB.
    Mogą byś trzy a nawet pięć, bo chodzi o coś zupełnie innego.
    Chcesz bez zworek, poświęć trochę czasu i zamieść bez zworek.

  • #8 31 Maj 2016 15:32
    p.kaczmarek2
    Poziom 23  

    michał_bak napisał:
    stepawel napisał:
    Czemu Kolega tak uparcie zrobił te trzy zworki na płytce? Tylko bez tłumaczenia, że inaczej się nie dało :)

    Bo to nie są wybory Miss PCB.
    Mogą byś trzy a nawet pięć, bo chodzi o coś zupełnie innego.
    Chcesz bez zworek, poświęć trochę czasu i zamieść bez zworek.

    Rzeczywiście, ale tak mi było prościej i starałem się też nie przecinać zbyt wiele razy ground plane oraz unikać cienkich ścieżek.

    trippo1 napisał:
    Mógłbyś napisać coś więcej o programowaniu mikroprocesorów 32MXF... za pomocą Pickit 2? Jakie pliki dołączyć do bibliotek aby była taka możliwość.


    Narzędzie do tego nazywa się pic32prog, jest w pełni konsolowe. Zastępuje ono soft PICKIT2a na PC i korzysta z PICKIT2a bez zmian jego firmware.
    Link do repozytorium: https://github.com/sergev/pic32prog
    Tutaj możesz pobrać całość w ZIPie (pic32prog.exe na Windowsa też tam jest).
    pic32prog-...160531.zip Download (1003.66 kB)Punkty: 0.5 dla użytkownika
    Na repo (i w zipie) jest instrukcja jak się tego używa.
    Ale UWAGA: Większość procesorów z rodziny PIC32 nie ma "5V tolerant pins", a więc podanie im na PGC/PGD poziomu 5V może je uszkodzić!. PICe 32 pracują na napięciu 3.3V. Natomiast część klonów PICKIT2 (zwłaszcza te uproszczone) mają napięcia PGD/PGC tylko na poziomie 5V, więc wymagają dodatkowej translacji sygnałów przed podłączeniem mikrokontrolera.
    Moża to rozwiązać prostym translatorem 5V<->3.3V sygnałów dwukierunkowym (zamówiłem swego czasu taki okazyjnie z chin), albo dzielnikiem napięcia na rezystorach (chyba też kiedyś próbowałem i o dziwo działało).

    PS: Tym PIC32prog'iem (z PICKIT2) zaprogramowałem nawet mikroprocesor z rodziny PIC32MZ (w obudowie TQFP).

    PS2: Swego czasu wykombinowałem modyfikację PICKIT2a (jeszcze prostszą od tej przedstawionej w pierwszym poście), która pozwala łatwo z pomocą PIC32proga programować mikroprocesory z rodzin PIC32MX i PIC32MZ (kosztem utraty możliwości programowania starszych procków), w tym momencie nie mam dostępu do jej schematu, ale też mogę swego czasu wrzucić na DIY.

  • #10 31 Maj 2016 20:43
    ukixx
    Poziom 19  

    Też jakiś czas temu robiłem klona PICKIT2 ale trochę mniej go uprościłem, tak samo jak tu nie dawałem EEPROM'ów i usunąłem część odpowiedzialną za regulację napięcia Vdd ale zostawiłem odcinanie Vdd, tu Vdd jest na sztywno podpięte do USB co w niektórych przypadkach może być problematyczne (czasami wymagane jest podanie Vpp przed Vdd).

    Ostatnimi czasy nie przepadam za tranzystorami bipolarnymi i staram się używać mosfetów, tutaj można by też użyć ogólnodostępnych bipolarnych 2SC945 i 2SA733, chociaż ja zamiast npn często stosuję mosfety 2N7002.

    W moim programatorze do załączania Vdd w pierwszej wersji użyty był tranzystor 2SA733 ale można było programować tylko "gołe" procki, a jak były wlutowane w układ to występował błąd Vdd i nie chciał programować ale P-CH mosfet rozwiązał problem.

    Mikrokontroler PIC18F2550 kupowałem na alledrogo i niby była możliwość zaprogramowania ale coś się nie udało i pożyczałem od kumpla kupiony PICKIT2, w tej chwili nie pamiętam który soft wrzuciłem ale ostateczne chyba ten co on miał na programatorze (nie był zabezpieczony).

    Milek79 napisał:
    Pytanie tylko czy jest sens uczyć się programowania czegokolwiek bez debuggera?

    W MPLAB jest opcja debuggera PICKIT2 ale jak na razie z tego nie korzystałem więc nie wiem jak działa.

  • #11 05 Cze 2016 02:04
    CHWDP_
    Poziom 12  

    Ja lata temu wykonałem projekt bez zbędnych uproszczeń - działa po dziś dzień bez zarzutu.
    Projekt pcb jednostronnej z kilkoma zworkami smd 0805 Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów

  • #12 13 Cze 2016 11:28
    mdef
    Poziom 8  

    Ciekawy projekt, jednak minusem jest fakt iż trzeba mieć programator żeby zbudować ten programator :|
    Ja prosty sprzęt "na start" można znaleźć tutaj - Programator JDM. Z jego pomocą zaprogramowałem podobny programator do tego co przedstawił kolega.

  • #13 22 Cze 2016 19:41
    p.kaczmarek2
    Poziom 23  

    CHWDP_ napisał:
    Ja lata temu wykonałem projekt bez zbędnych uproszczeń - działa po dziś dzień bez zarzutu.
    Projekt pcb jednostronnej z kilkoma zworkami smd 0805

    Nie pominąłeś nawet pamięci, które są wykorzystywane tylko w programowaniu "bez USB", tzn. zapamiętują wsad. Korzystasz z tej funkcjonalności?


    A ja niedawno przekonałem się po raz kolejny, że rzeczywiście PICKIT2 jest nieśmiertelny i można zaprogramować nim nawet nowsze PICe - udało mi się zaprogramować stosunkowo nowy PIC16F1459 z pomocą mojego uproszczonego klona PICKIT2.
    PIC16F1459 to jeden z nielicznych PICów z 8-bitowej rodziny 16F ze wsparciem sprzętowego USB. Ma 14kB pamięci flash, 1kB pamięci RAM i wewnętrzny oscylator 48MHz. Jak najbardziej może nadawać się do mniejszych projektów, gdzie nie potrzeba takich dużych procków jak PIC18F4550 lub PIC18F2550.
    Podłączyłem po prostu wyjście ICSP do odpowiednich pinów mikroprocesora, użyłem PGD/PGC oznaczonego na schemacie:
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów
    Nic poza podłączeniem nie dawałem. Odpaliłem PICKIT2a i sprawdziłem, że ID procka jest poprawnie odczytywane (mimo iż sam ten mikrokontroler nie jest w bazie devices):

    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów
    Tak, te 3020 to jest Device ID w notacji hex, można to sprawdzić w datasheecie.
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów

    Nastepnie znalazłem w sieci odpowiedni plik Devices (nieoficjalny, ale wygląda na to, że sprawny) i odpaliłem ponownie PICKIT2a:
    Prosty klon PICKIT2 (programator PIC na USB) z łatwo dostępnych elementów
    MCU już jest widziane.
    Zrobiłem prosty projekt w mikroC PRO for PIC, dodałem diodę LED z rezystorem 680 (ale można też oczywiście dać 1k itp) na RB7 (ale w zasadzie jak potem sprawdziłem to na RA5, RA6 też mruga).
    Wgrałem wsad moim PICKITem 2, no i proszę - dioda LED mruga!

    Dodaję załączniki:
    - projekt mikroC blinka LED 1 sekunda 16MHz wewnętrzny oscylator
    - hex wyżej wymienione blinka gotowy do wgrania na PICa
    - plik Devices dla PICKIT2 z wsparciem dla wspomnianego PICa (+wiele innych) wygrzebany z odchłań internetu

  • #14 01 Maj 2017 02:11
    szlovak
    Poziom 11  

    Szczerze mówiąc szkoda zachodu na ten klon o ile ktoś ma nie mieć zamiaru korzystać ze wszystkich dobrodziejstw PICKIT2 ani PICKIT3. Ja bym jednak dorobił te wszystkie bufory itd. jak w oryginale, bo przecież na PICKIT2 można mieć analizator stanów logicznych, a w tym układzie to tak zupełnie nie do końca . Tak samo napięcie Vpp już dawno nie jest 13V , ale np 9V w wielu scalakach. Szczerze mówiąc, nie mając translacji poziomów logicznych to jest złom, działający złom na 5V , ale złom. Chociażby teraz robiłem układ na pic18f14k50 i w czasie programowania nie może mieć on na nóżkach PGD i PGC 5 V bo się zepsuje, oczywiście jak wcześniej był zaprogramowany w tryb USB na nóżkach PGC i PGD. Pickit 3 na prawdę jest tani na obecne czasy, kupiłem go 3 lata temu za około 140 zeta normalnie oryginał w sklepie.

    Robiłem kiedyś klon ICD2, na RSie jak i zubożony na USB. Ten na RSie jakoś działał, miał pełną translacje poziomów, ale wolno i na starych Mplabach. Ten USB co miałem scalak z próbek :) miał same problemy i też stary Mplab. PICKIT3 ma dożywotnia gwarancję, tak na marginesie :) , a klony są w identycznej cenie , LOL