Witajcie moi drodzy.
Przedstawię tutaj unikalny zestaw płytek uniwersalnych pod elementy w obudowach SMD, obejmujący TQFP100, TQFP64 i TQFP48, różne SSOP, SOIC itp. Płytki te wyróżnia sprytne i uniwersalne poprowadzenie ścieżek, ułatwiające uruchomienie dowolnego mikrokontrolera (gotowe zworki pod VCC/GND, pady pod kondensatory, filtry, blok zasilający) oraz duża ilość wolnego miejsca na dodatkowe układy (strefa prototypowania).
W ramach demonstracji uruchomię na nich różne mikrokontrolery, dwa produkcji Microchip, a jeden od Silabs. Dodatkowo uruchomię dla jednego z tych mikrokontrolerów kilka przykładów peryferiów, w tym pamięć EEPROM na I2C, konwerter USB na UART, ADC i potencjometr, wszystko by pokazać jak wygodnie można niezbędne elementy umieścić i przylutować do prezentowanych tu płytek.
Plytki uniwesalne Jon Newcomb
Płytki te dostałem jako próbki od Jon Newcomb w celu pokazania ich Elektrodowiczom. Płytki można zakupić na stronie poniżej:
https://www.ebay.com/usr/jon_newcomb?ul_noapp=true
Zapraszam też na stronę autora: http://www.jnewcomb.com
Oto dostępne wersje płytek:
Grafiki promocyjne, na przykładzie wersji TQFP100:
Dostępne są wersje:
- panel VSSOP8, VSSOP10, VSSOP20, SSOP28, SOT-353
- sztuka QFP LQFP TQFP 48,64,100pin 0.5mm
- zestaw 4 sztuk - SOIC24 SOIC-24 (0.05", 50mil, 1.26mm)
- zestaw 2 sztuk - LQFP QFP TQFP QFN MLF 32/48 pin 0.5mm
- zestaw 4 sztuk - SSOP24 0.635mm TSSOP MSOP
- zestaw 4 sztuk - VSOP VSSOP MSOP QSOP MSSOP 0.5mm
- zestaw 4 sztuk - SSOP SSOP24 0.65mm
Płytki te wyróżniają się tym, że mają ścieżki podprowadzone tak, że połączenia zasilania i masy do różnych pinów mamy zasadniczo gotowe, wystarczy postawić zworkę z cyny.
Spójrzmy przykładowo na TQFP 100:
Dzięki temu nie ma problemów z:
- podłączeniem pinu do masy
- podłączeniem pinu do zasilania
- podłączeniem kondensatora między pinem a masą bądź między zasilaniem a masą (przykładowo VCAP z PICów)
- podłączeniem filtru na wejściu pinu (np. analowego, AVDD)
- podłączeniem rezystora pull-up dla pinu
- itp. itd.
Dodatkowo oferują gotowe miejsca na sekcję zasilania, wyprowadzenia programatora oraz duże pole na prototypowanie. Pola prototypowe są zrobione w sposób przemyślany, a w niektórych płytkach (np. TQFP100) zawierają również pady na mniejsze układy w SOIC i SSOP. W TQFP jest też miejsce na debuger ETM-TRACE.
Dodatkowy przykład uniwersalności zworek
Ale to nie wszystko. Po ponownym przeanalizowaniu obrazka:
można nawet wymyśleć sposób na wygodne podłączenie diody LED z rezystorem na GPIO mikrokontrolera.
1. przecinamy "cuttable pad" ze schematu
2. lutujemy diodę LED na jego miejscu
3. Mostkujemy L3
4A. (jeśli chcemy doprowadzić do masy) L3 mostkujemy, na L2 lutujemy rezystor SMD (powiedzmy 330 omów w obudowie 0805) albo osiowy na padach L2/L3 z przelotkami
4B. (jeśli chcemy doprowadzić do zasilania) Na L1 lutujemy rezystor
Gotowe! LED na miejscu, bez zbędnych przewodów i kombinacji.
Zestaw który otrzymałem
Zacznijmy od tego, jak płytki prezentują się w praktyce. Pierwszy zestaw jaki otrzymałem:
Ta duża płytka TQFP100 to jest ta sama trzy razy na zdjęciu, po prostu od spodu jest duża przestrzeń prototypowa, a z wierzchu opisy roli pinów i m. in. ich wyprowadzenia.
Drugi zestaw jaki otrzymałem - 48/32pinowe 0.5mm QFP QFN:
Na pierwszy rzut oka widać, że płytki są bardzo dobrej jakości, ale i tak zaraz przetestujemy je w praktyce..
Użyty sprzęt lutowniczy
Do demonstracji płytki użyję najbardziej problematycznej lutownicy jaką mam, czyli lutownicy kolbowej której grotu nie wymieniałem od jej zakupu, dodatkowo nie posiadającej regulacji mocy.
To po to, by zademonstrować że naprawdę nie potrzeba mieć super sprzętu by uruchomić jakiś mikrokontroler na tych płytkach.
Dodatkowo musicie mi wybaczyć słabą jakość lutów, ale dość słabo widzę a fizycznie też nie jestem mistrzem koordynacji ruchów.
Oto mój zestaw lutowniczy użyty do tego tematu:
Mamy tu:
- lutownica 30W silverline kolbowa
- gąbka do czyszczenia grotu (mam też salmiak)
- spoiwo lutownicze Sn60Pb40 (ołowiowe) w dwóch wersjach, 1mm do THT i 0.25mm do SMD. Wybieram je ze względu na niską temperaturę topnienia (bezołowiowe by miało wyższą)
- pasta do lutowania (jak się np. zrobi mostek na pinach TQFP to troszkę pasty + ruch wzdłuż pinów/ścieżek grotem może uratować sytuację)
- plecionka do usuwania nadmiaru spoiwa, w tym też do usuwania mostków na pinach SMD jak metoda z pastą zawiedzie
Dodatkowo mam jeszcze środek IPA by usunąć topnik po lutowaniu z płytki. To tyle - nie ma żadnych stacji lutowniczych, żadnych hot airów, regulacji temperatury... nic z tych rzeczy. Początkujący może łatwo uruchomić układ w TQFP-100 bez takich bajerów.
Demonstracja TQFP 100 - PIC32MZ2048EFG100
Pora zademonstrować użycie tej płytki w praktyce.
Uruchomimy na niej PIC32MZ2048EFG100 - 32-bitowy mikrokontroler z 2MB pamięci flash i 512KB RAM.
UWAGA: Są różne rodzaje TQFP 100 - niektóre mają odstęp między pinami 0.4mm, inne 0.5mm. Wersja 0.4mm nie będzie pasować na tę płytkę... wersja 0.4mm nazywa się PIC32MZ2048EFG100-E/PT, a wersja 0.5mm PIC32MZ2048EFG100-I/PF.
Zresztą, wszystko jest w jego nocie katalogowej. Będzie nam ona niezbędna:
Potrzebne tez są informacje o wyprowadzeniach:
UWAGA: Pin numer 1 to jest pin przy rogu z kropką. Orientacja napisu/grafiki na układzie nie ma znaczenia. Może być czasem odwrócona. Sugerowanie się nią może wprowadzić w błąd.
Dodatkowo sprawdźmy co trzeba podłączyć - sekcja 2.1 Basic Connection Requirements:
Trochę tu naciągniemy zasady, bo kondensatory odsprzęgające powinny być "placed as close to pins as possible" (umieszczone najbliżej pinów jak to możliwe) aby minimalizować pasożytnicze pojemności i indukcyjności, a tu troszkę tego odstępu jest, ale myślę, że w przypadku płytki prototypowej do nauki jest to akceptowalne.
Zasadniczo mamy do zrobienia:
- przylutowanie układu do płytki
- zworki dla wszystkich pinów VDD i GND (też AVDD i AGND)
- kondensatory odsprzęgające 100nF na piny od zasilania
- podłączenie programatora Pickit przez ICSP na MCLR/VDD/GND/PGD/PGC
- LDO 3.3V z wejściem 5V z USB (PIC32MZ wymaga napięcia 3.3V)
Zacznijmy od przylutowania PICa. Pozycjonowanie układu, wykonuję to pęsetą antystatyczną ale i tak nie dotykam jego pinów by nie uszkodzić go poprzez ESD, tylko obudowę:
Złapanie pinów, używam cyny 0.25mm ołowiowej, musi też być topnik:
Lutowanie; praktycznie nie było zwarć na pinach (ale jak jest zwarcie, to najpierw próbuję samą lutownicą + pastą je usunąć, ruchami wzdłuż pinów, a jak nie idzie to w ostateczności plecionką):
Po lutowaniu należy sprawdzić każdy pin, zarówno pod kątem połączenia, jak i zwarcia z sąsiadami:
Teraz trzeba przylutować wszystkie piny VDD i GND.
Mamy do tego ściągę:
Pin 14 to zasilanie. Poniżej zrobiona zworka do VDD loop:
Pin 13 to masa. Poniżej zworka do GND loop:
Po każdej zworce sprawdzamy czy nie zrobiliśmy zwarcia masy z zasilaniem (lub z sąsiednimi pinami), gdyż potem jak będzie zwarcie to trudniej będzie określić kiedy ono powstało!
Gotowe:
Teraz zrobimy sekcję zasilania.
Potrzebny będzie LDO - AMS 1117:
Niestety nie miałem go na stanie (zawsze korzystam z TC1264, MIC2940, itp). Musiałem swojego znaleźć w wylucie:
Zdecydowałem się na 5EBL17-33. Możemy go najpierw ustawić a potem przylutować, a można też najpierw nanieść cynę na jeden pad a potem go pozycjonować, jednocześnie roztapiając tą cynę:
W międzyczasie można przylutować też goldpiny od zasilania:
Gotowe. Przygotujmy teraz kondensatory 100nF ceramiczne w obudowie 0603. W sumie jeden jest już na zdjęciu poniżej - widzicie?
One nie mają polaryzacji.
Lutuję je tak, że cynuję jeden pad, jak tutaj:
Pozycjonuję kondensator roztapiając spoiwo na tamtym padzie, potem przylutowuję drugi styk:
Teraz pora na kondensator elektrolityczny. Te w SMD mają linię tam gdzie jest ich +. Kondensatory przy LDO nie są tylko na pokaz, są niezbędne do jego poprawnej pracy. Swój kondensator musiałem znaleźć w wylucie:
Tu też może być wygodniej najpierw pobielić jeden pad, a potem go rozgrzać, umiejscowić element, a nastepnie przylutować drugi styk.
Teraz kondensatory odsprzęgające dla par pinów VDD/GND. Też po 100nF, takie jak wcześniej:
Analogicznie dla każdej pary.
Następne w kolejce jest złącze programowania, sześciopinowe (w zasadzie starczy pięciopinowe). Płytka jest tak przemyślana, że nawet na nie jest dobre miejsce:
Kątowe piny ICSP poprowadziłem przewodami do podwójnych listw goldpinów, najpierw te listwy też musiałem przylutować:
Pora na złącze USB. Ułatwi ono podprowadzenie zasilania 5V na wejście zainstalowanego już LDO 3.3V:
Masę łatwo jest podłączyć, 5V trzeba przewodem pociągnąć do LDO:
Zostało jeszcze przylutować rezystor 10k między MCLR a VDD (pull-up, wymusza stan wysoki na pinie resetującym układ):
(ten przewód to od złącza ICSP do MCLR idzie, to nie zasilanie).
Zasadniczo to wszystko, pozostało wyprowadzić resztę pinów. Zdecydowałem się jeszcze dodać jedną diodę LED, oczywiście wraz rezystorem (też w obudowie 0603), z wyprowadzeniem na goldpin, tak bym mógł kabelkiem żeńsko-żeńskim podłączyć ją do dowolnego innego pinu.
PICKIT3 już pozwala programować PICa:
Można wgrać blink led:
Kod: C / C++
Układ działa i LED miga, nawet na zasilaniu z powerbanka (latarki):
Dodatki dla PICa
Płytki te jednak pozwalają na znacznie więcej, niż samo uruchomienie mikrokontrolera.
Można na nich również bez problemu przylutować dodatkowe układy scalone, np. konwerter USB na UART MCP2221:
Wybrałem MCP2221 a nie MCP2200, bo ten drugi wymagałby zewnętrznego rezonatora kwarcowego.
Sam MCP2221 nie ma dużych wymagań:
Dodatkowo rezystor 10k na pin RST (pull up), oczywiście kondensator 100nF na zasilanie...
Na płytce jest akurat w sam raz pod ten układ miejsce:
Lutujemy:
RX/TX wyprowadziłem na te goldpiny, by móc dowolnie decydować na które piny PICa podłączę MCP2221:
Jeszcze potrzebny jest testowy program... trzeba użyć PPS (Peripheral Pin Select), by wybrać jakiś pin któremu przypiszemy rolę wyjścia TX.
Kod: C / C++
UART działa!
Teraz przylutujemy 24AA256, czyli pamięć EEPROM 256KBit z interfejsem I2C:
Piny określające adres (A0, A1, A2) dla wygody zewrę do masy. Na WP też musi być stan niski, by wyłączyć blokadę zapisu.
PIC32MZ nie ma I2C na PPS (Peripheral Pin Select), tylko na określonych pinach. Ale mamy aż 5 różnych modułów I2C do wyboru. Wybrałem I2C3:
Lutujemy:
Kondensator 100nF:
Linie SDA/SCL do PICa:
Jeszcze rezystory pull-up dla linii SDA/SCL:
Pora sprawdzić komunikację (chociaż wstępnie):
Kod: C / C++
PIC widzi urządzenie I2C o adresie 160:
Teraz może coś banalniejszego. Potencjometr, do prezentacji ADC. W przypadku tej płytki jest na niego miejsce, przylutujemy go tak jak lutowaliśmy przycisk RESET.
Te połączenia do pinów 45/46 to oczywiście połączenia do masy i zasilania. Potencjometr umieszczam między masą a zasilaniem a jego odczep stanowi wyjście dzielnika napięcia, i ADC z niego odczytuje to właśnie napięcie.
Kod:
Kod: C / C++
Rezultat:
Potencjometr działa, jak widać na tej płytce można zrobić nawet dość duży projekt, a miejsce prototypowe na wierzchu też się przydaje.
Demonstracja TQFP48 - EFM32ZG222F32
Teraz pora na prezentację drugiej płytki w oparciu o 32-bitowy mikrokontroler firmy Silabs o rdzeniu ARM Cortex-M0+:
Tutaj jednak wszystko jest analogicznie jak na wersji TQFP-100, więc komentarz będzie krótszy.
Tutaj też bazujemy na nocie katalogowej układu:
Notę trzeba przeczytać dokładnie - nie można zapomnieć np. o niezbędnym kondensatorze Decouple (w PICach nazywa się Vcap lub Vusb):
Zaczynamy lutowanie.
Pozycjonowanie:
Tu próbowałem złapać układ topnikiem:
Lutowanie:
Blok zasilania. AMS1117. Troszkę spoiwa na pierwszy pad...
Zworki od GND i VDD Loop:
Pin DECOUPLE. Kondensator o pojemności Cdecouple, czyli 1uF.
Podwójne rzędy goldpinów:
Kondensatory 100nF na wejściu i wyjściu AMS1117:
Kondensator 4.7uF, też z wylutu:
Spoiwo na padzie:
Przylutowany:
Gotowy układ do testu bootloadera:
Bootloader odpowiada na znak "U", czyli EFM uruchomiony:
Nie mam przygotowanego środowiska i kompilatora pod ten układ. W razie dodatkowych postępów uzupełnię temat.
Oczywiście tak można uruchomić też inne mikrokontrolery...
Na przykład taki ATSAMD21G18. Też zacząłem próbę z nim, jednakże nie jest ona kompletna ze względu na to, że mój programator do niego jest wciąż w drodze.
Tym razem tylko kilka fotek - wszystko tak jak wcześniej.
Jak uda się uruchomić to być może zrealizuję na tej płytce jakiś ATSAM'owy projekt i też opublikuję na forum.
Demonstracja SOIC24 - co jeśli mamy układ w SOIC28?
Na tych płytkach naprawdę można dużo wyrzeźbić. Teraz zaprezentuję płytkę SOIC24 (pitch=1.26mm) przy użyciu PIC32MX150F128B w SOIC28.
Tak, cztery piny będą "wisieć" w powietrzu, ale dzięki pomysłowości autora płytek i tak uda się je wykorzystać:
Pinout:
Wymagane podłączenie:
Przylutowany pierwszy pin:
Kolejne:
Odginanie ponadliczbowych pinów (prosty trik by wykorzystać płytkę SOIC24 do SOIC28). Po przylutowaniu:
Zworki dla masy na spodzie (tu nie ma pętli zasilania, zrobimy ją ręcznie):
Kondensator VCAP (10uF, najlepiej tantalowy, ESR < 3Ω). Tutaj przerwiemy ścieżkę na płytce by wykorzystać pod niego pad. To jest kondensator między pinem VCAP a masą.
Zainstalowany:
Rezystor 10k. Jednak łatwiej było dać przewlekany (dzięki otworom w płytce):
Teraz pora na złącze ICSP (czyli MLCR, VDD, GND, PGD, PGC). Tu musiałem powiększyć otwory...:
Gotowe:
Sygnały od ICSP - akurat te dwa skrajne piny (14 i 15) to PGD i PGC - część 1:
Kilka z tych padów tutaj jest ze zworkami. To się przyda w przyszłości. Masę też łatwo jest podpiąć:
Złącze USB pozwoliłem sobie przykleić. Potem jeszcze poprawię je klejem. Ułatwi to podłączenie 5V oraz (w przypadku wersji PIC32MX220/250/270, tej z USB) pozwoli podłączyć USB prosto.
Reszta sygnałów ICSP:
LDO, 3.3V, TC1264. Oczywiście z kondensatorami odsprzęgającymi (są niezbędne, kiedyś bez nich uruchomiłem na dłuższym przewodzie taki i nie było 3.3V stabilnego):
Programowanie przez PICKIT3:
Wisienka na torcie - użyjemy specjalnych dłuższych gniazd goldpinowych:
Dzięki temu możemy użyć płytki SYB170:
A dokładniej to dwóch, by zyskać przestrzeń prototypową:
Oczywiście płytka działa - PIC jest wykrywany, można go programować, może miga LED...
Port ETM-TRACE do debugowania mikrokontrolerów STM32 w TQFP100
Nie miałem żadnego STM32 pod ręką więc tego nie zaprezentowałem, ale i tak chciałbym podkreślić, że na płytce z TQFP jest miejsce na ten port, który pozwala nam na debugowanie naszych projektów przez J-trace i co za tym idzie skuteczniejszą ich diagnozę, rozwiązywanie problemów i rozwój. Na zdjęciu przykład użycia portu ETM-TRACE (materiały od sprzedawcy płytek):
Ciąg dalszy tematu
Płytki te tak bardzo mi się spodobały, że uznałem, iż troszkę pociągnę dalej wątek uruchamiania na nich mikrokontrolerów i spróbuję za jakiś czas opublikować tematy:
- Minitutorial PIC32MZ2048EFG100 na uniwersalnej płytce TQFP
- Minitutorial EFM32ZG222F32 na uniwersalnej płytce TQFP
- Minitutorial ATSAMD21G18 na uniwersalnej płytce TQFP
Być może jeszcze coś więcej na nich uruchomię, lutowanie na takiej płytce jest satysfakcjonujące.
Podsumowanie
Płytki te dostałem jako darmowe próbki od ich sprzedawcy, ale wygłaszana tu opinia o nich jest moja własna. Uważam, że są bardzo przydatne. A mam dość długą historię "druciarstwa" na TQFP breakoutach, przykładowo w tym temacie:
https://www.elektroda.pl/rtvforum/topic3742912.html
Myślę, że ten temat dobrze pokazuje, że nawet osoba o małym budżecie, słabym sprzęcie i dość niskich zdolnościach lutowniczych jest w stanie uruchomić dowolny mikrokontroler w TQFP100/TQFP48 na tych płytkach bez większych problemów. Wcale nie są potrzebne płytki startowe od producenta, a tak naprawdę nawet ich unikanie ma walory edukacyjne - uczy czytania not katalogowych i pozwala zrozumieć czego potrzebuje mikrokontroler by wystartować.
W przypadku tych płytek wyjątkowo mocno spodobały mi się liczne ułatwienia które umieścił na nich sprzedawca - gotowe ścieżki pod zasilanie, masę, pady na kondensatory, blok zasilania, oraz obszary prototypowe na wierzchu i spodzie PCB.
Wiem, że w dzisiejszych czasach PCB z Chin są bardzo tanie i można łatwo zaprojektować coś swojego i zlecić za niewielką cenę zewnętrznej płytkarni, ale i tak uważam, że warto jest mieć kilka takich "uniwersalek" jak te z tematu w szufladzie. Gotowe, wygodne i od ręki - to wręcz taki "złoty środek" pomiędzy klasycznym "TQFP breakout" (bez padów i pętli zasilania/masy) a własnym PCB.
PS: Na koniec dodam, że studenci uczelni wyższych na odpowiednich kierunkach, mogą często ubiegać się o otrzymanie za darmo tego typu mikrokontrolerów i jest to względnie łatwe, na pewno łatwiejsze niż otrzymanie całej płytki startowej. Więc płytki z tego tematu są "jak znalazł" dla studentów, gdyż pozwalają uruchomić "goły" mikrokontroler w warunkach amatorskich, stanowią de facto uniwersalną płytkę startową.
Fajne? Ranking DIY Pomogłem? Kup mi kawę.
