
Udostępniamy projekt naszego programatora do ESP, który zaprojektowaliśmy na nasze potrzeby. Mamy nadzieję, że się wam przyda. :)
Podczas naszej pracy często wykorzystujemy moduły ESP32 ze względu na ich niską cenę oraz fantastyczne możliwości komunikacji bezprzewodowej poprzez WIFI. Jednak wgrywanie programu oraz debugowanie musi odbywać się przewodowo. Kiedy nasze prototypy są zasilane z sieci elektrycznej o napięciu 230V, praca deweloperska obarczona jest ryzykiem. Nieuważny programista mógłby zostać porażony albo jego komputer mógłby zostać uszkodzony, jeżeli doszłoby do jakiejś anomalii w prototypie.
Aby uniknąć takiego ryzyka, zaprojektowaliśmy na własne potrzeby programator do mikrokontrolerów ESP z optoizolacją. Postanowiliśmy udostępnić ten projekt za darmo i opisać jak i dlaczego został zaprojektowany w taki, a nie inny sposób. W tym artykule przeanalizujemy schemat. W drugiej części przeanalizujemy projekt PCB.
Wszystkie nasze projekty płytek PCB zlokalizowane są na GitLab. Dzięki temu możemy prześledzić całą historię projektu, zaczynając od pustego schematu po kolejne wersje produktu.
Stosujemy dwa systemy wersjonowania. Każdy prototyp, który został wyprodukowany lub jest to w planach, ma swój indywidualny numer HV, co oznacza Hardware Version. Jeżeli protopy został wyprodukowany, a następnie coś jest zmieniane w projekcie, wtedy podnosimy numer HV.
Oprócz tego istnieją także numery podwersji, zapisane w sześciocyfrowym formacie YYMMDD, odpowiadające dacie, kiedy została wprowadzona zmiana.

Aby zachować porządek, wszystkie pliki oznaczone są numerem HV i numerem wersji. Pozwala to precyzyjne zidentyfikować każdy plik osobom, które nie korzystają z Git, w szczególności fabrykom i innym podwykonawcom, którzy dostają tylko gotowe pliki produkcyjne, bez możliwości dostępu do całego projektu.

Analiza schematu
Schemat podzielony jest na kilka bloków funkcyjnych. Przeanalizujemy każdy z nich.

Wejście USB jest chronione przez matrycę diod przeciwprzepięciowych. Takie rozwiązanie chroni zarówno komputer jak i programator przed impulsami wysokiego napięcia, które mogłyby się zaindukować w długim kablu USB.

Kolejnym etapem jest izolacja sygnałów USB. Wykorzystaliśmy do tego celu zaawansowany optoizolator ADUM3160 produkcji Analog Devices. Układ jest bardzo prosty do wykorzystania i nie wymaga żadnej skomplikowanej konfiguracji.

Programator pobiera zasilanie z portu USB komputera i umożliwia zasilanie badanego układu, kiedy nie jest podłączony do zasilania sieciowego 230V. W tym celu należało zapewnić separację galwaniczną przy pomocy przetwornicy DC/DC separującej źródło energii. W ten sposób przekazywane jest zasilanie z VUSB do VCC. Oba te napięcia wynoszą 5V, lecz mają różne masy.
Na aukcjach internetowych można kupić optoizolatory USB, które wykonane są w podobny sposób, lecz mają słabszą przetwornicę o mocy 1W. Z naszego doświadczenia wynika, że jest to za mało. Często podczas włączania WIFI w ESP32 następowało odłączenie portu USB w komputerze ze względu na przekroczenie dopuszczalnego obciążenia. Dlatego zastosowaliśmy przetwornicę o mocy 2W razem z dużym pakietem kondensatorów.

ESP32 i inne układy tej rodziny programuje się wykorzystując linie Tx i Rx interfejsu UART. Można do tego celu wykorzystać jedną z wielu popularnych przejściówek USB/UART pracujących jako wirtualny port COM. My wybraliśmy FT232 ze względu na łatwą dostępność i niską cenę.
Do wgrywania programu wykorzystuje się także sygnały RTS i DTR, które resetują mikrokontroler (sygnał EN) i wprowadzają go w tryb programowania (sygnał Boot).

Wszystkie nasze urządzenia posiadają ten sam port programujący. Umożliwia on również dostarczenie zasilania do programowanego urządzenia. Jednak istnieją sytuacje, kiedy ta możliwość jest niepożądana. Z tego powodu dodaliśmy przełącznik umożliwiający odłączenie szyn zasilających 5V oraz 3V3.
Ponadto, czasami konieczne jest także odłączenie sygnałów resetujących mikrokontroler i włączających tryb programowania. Aby była możliwość ręcznego wykonania tych operacji, dodaliśmy przyciski J31 i J32.
Dodatkowo, wyprowadzone są także sygnały magistrali I2C, aby ułatwić pisanie programów wykorzystujących układy scalone, głównie sensory, wykorzystujące ten interfejs. Ponadto, wyprowadzenie sygnałów I2C umożliwia programowanie procesorów kryptograficznych ATECC608 przy pomocy tego samego złącza, jakie wykorzystujemy do programowania ESP32.

Inżynier piszący oprogramowanie dla ESP32 widzi status wszystkich linii sygnałowych przy pomocy kolorowych diod LED. Tranzystory T70 i T71 zastosowano, aby diody LED nie obciążały sygnałów EN i Boot.

Zasilanie o napięciu 3,3V dostarczane jest przez popularny stabilizator 1117-3.3 w obudowie SOT223. Jego wydajność jest wystarczająca, by zasilić ESP32 wraz z układami peryferyjnymi.

Na schemacie widoczne są także wszystkie ikony, jakie zostały umieszczone na płytce - wszelkiego rodzaju znaki wymagane prawnie, fiduciale dla maszyn montażowych, a także nasze logo.

W następnej części przeanalizujemy projekt płytki PCB i zastanowimy się, w jaki sposób zaprojektować urządzenie elektroniczne, aby jego produkcja była jak najtańsza.
Dlaczego płytka jest zaprojektowana tak, a nie inaczej?
Koszt produkcji urządzeń elektronicznych w dużym stopniu zależy od samego projektu urządzenia. Zaprojektować można wszystko, ale nie wszystko można wyprodukować łatwo i szybko. Błędy projektowe mogą powodować, że przez cały okres produkcji wykonywane będą niepotrzebne czynności, które bezsensownie podnoszą koszt urządzenia, nie dodając żadnej wartości dla klienta końcowego.
Ułożenie elementów SMD i THT
Proces montażu urządzeń elektronicznych składa się z wielu etapów. Nas dokładniej interesować będzie montaż SMT czyli elementów montowanych powierzchniowo oraz THT czyli lutowanie elementów przewlekanych.
Pierwszym krokiem podczas projektowania płytki PCB jest zastanowienie się, czy elementy SMD będą rozmieszczone z jednej czy z dwóch stron płytki. Ma to także duży wpływ na montaż elementów THT.
Byłoby idealnie tak dobrać wszystkie elementy, aby wszystkie były wyłącznie SMD i nie było żadnych elementów przewlekanych. Taki luksus jednak rzadko jest możliwy i elementy przewlekane są koniecznością. Lutowanie elementów przewlekanych jest najłatwiejsze, kiedy wszystkie znajdują się po jednej stronie płytki, a po drugiej nic nie ma. Wówczas wszystkie elementy umieszczone są na stronie górnej i wszystkie jednocześnie lutują się na stronie dolnej przy pomocy fali płaskiej, wyglądającej jak fontanna płynnej cyny, która polewa płytkę od spodu i lutuje wszystkie elementy jednocześnie.
Korzystnie jest, kiedy wszystkie elementy SMD są po tej samej stronie, co elementy przewlekane. Dzięki temu w procesie produkcyjnym nakładami wszystkie elementy SMD jednocześnie i lutujemy je na tej samej linii montażowej.
Jeżeli jednak zależy nam, by rozmiary płytki były jak najmniejsze, a cena jest mniej istotna, wówczas rozważyć można dwustronny montaż elementów SMD. Wtedy musimy się liczyć z dwukrotnym wzrostem kosztów montażu SMD, ponieważ płytka musi dwukrotnie przejechać przez linię montażową.
Ponadto, obecność elementów SMD po obu stronach uniemożliwia lutowanie elementów THT na fali płaskiej, ponieważ elementy SMD na stronie dolnej uległyby odlutowaniu i zmyciu przez falę. Rozwiązaniem tego problemu jest klejenie elementów SMD, jednak jest to proces bardziej kosztowny niż standardowe lutowanie ich przy pomocy pasty lutowniczej. Inną opcją jest zastosowanie fali selektywnej, która lutuje tylko wybrane obszary płytki, omijając elementy SMD, ale to rozwiązanie także jest kosztowne. Inną opcją, możliwą raczej tylko dla małych serii produkcyjnych, jest lutowanie ręczne.
Mając na uwadze wszystkie powyższe rozważania, ustaliliśmy, że nasz programator będzie posiadał elementy SMD i THT na stronie górnej. Takie ułożenie pozwoli na maksymalne obniżenie kosztów produkcji.
Tak wygląda goła płytka PCB naszego programatora.

Tak wygląda nasza płytka po montażu elementów SMD

A tak po przylutowaniu elementów THT.

Tak wyglądają nasze płytki w rzeczywistości po zakończeniu montażu SMD i THT, ale jeszcze przed depanelizacją.

Szablon sitodrukowy
Pierwszym etapem montażu w technologii SMT jest nałożenie pasty lutowniczej na miedziane pady na płytce PCB przy pomocy szablonu sitodrukowego. Jest to metalowa folia z wyciętymi otworami, zwanymi aperturami.
Płytkę umieszcza się pod szablonem, natomiast na szablonie znajduje się pasta lutownicza. Przy pomocy rakli pastę rozsmarowuje się na szablonie, niczym masło na chlebie. Pasta wypełnia apertury i przykleja się do płytki PCB. Następnie płytka jest odsuwana od szablonu i trafia do dalszego etapu produkcji.

Design apertur ma kluczowe znaczenie dla wyeliminowania takich wad lutowniczych jak zwarcia, braki spoiwa czy kulki cyny. Dobrą praktyką jest zmniejszyć apertury w szablonie o 10% względem wymiarów pól lutowniczych na płytce. Dzięki temu drobne przesunięcia pozycjonowania płytki do szablonu, wynikające z niedokładności maszyny i rozciągnięcia szablonu na skutek zużycia, zostają skompensowane.
Istotne jest także właściwe ułożenie soldermaski. Jest to warstwa ochronna mająca na celu zabezpieczenie miedzi przed utlenianiem. Ponadto, soldermaska utrudnia powstawanie zwarć. Wycięcie w soldermasce, które odsłania pad lutowniczy nazywamy oknem. Musi on być nieco większy od padu, ponieważ podczas produkcji PCB soldermaska zawsze nakładana jest z jakimś przesunięciem. Gdyby soldermaska nachodziła na pady, wówczas podnosiłaby szablon lutowniczy. Brak docisku szablonu do powierzchni płytki powodowałby, że pasta wydostawałaby się poza właściwy obszar nadruku.
Na rysunku poniżej zaznaczyliśmy jak wyglądają prawidłowe okna w soldermasce i apertury w szablonie lutowniczym.

Pin in paste
Gniazdo USB jest posiada kilka pinów lutowanych przy pomocy pasty lutowniczej w procesie SMT oraz cztery piny przewlekane, aby utrudnić oderwanie gniazda od płytki w razie szarpnięcia za kabel.
Istnieje możliwość, by małe elementy przewlekane lutować w procesie SMT razem z elementami SMD. Jest to tak zwany proces pin in paste. Polega on na nadrukowaniu pasty lutowniczej od otworów, wewnątrz których mają znaleźć się lutowane piny. Następnie element nakładany jest przez maszynę pick&place i lutowany jest w tym samym czasie co pozostałe elementy SMD.
Aby prawidłowo nałożyć pastę lutowniczą, musimy wyciąć odpowiednio duże okna w soldermasce. Pasta jest nakładana do otworu, na metalową obwódkę otworu oraz bezpośrednio na laminat. Soldermaska tworzy wannę, która nie pozwoli by płynna cyna, po roztopieniu pasty, rozlała się na płytce tworząc niepożądane kulki lutowania (co stanowi wadę według normy IPC-A-610, ponieważ mogą zrobić zwarcie).

Płytka z pastą lutowniczą.

Płytka z elementami nałożonymi na pastę, ale jeszcze przed lutowaniem w piecu rozpływowym.

Tak wygląda prawidłowo przylutowane złącze USB montowane w technologii pin in paste.

Elementy graficzne
Ponieważ ten projekt jest projektem demonstracyjnym, chcieliśmy, aby nasze logo było dobrze widoczne. Logo firmy WizzDev jest dwukolorowe. Z tego powodu część logo jest wykonana białą farbą na soldermasce. Druga część wykonana jest jako okna w soldermasce, odsłaniające miedź pokrytą złotem.
Złocenie stosuje się przy dużo bardziej zaawansowanych projektach, głównie z układami BGA i złączami krawędziowymi. W przypadku naszego projektu nie ma potrzeby, by płytka była złocona. Zastosowaliśmy złocenie jedynie ze względów estetycznych. To samo dotyczy czarnego koloru soldermaski. Zwykle wykorzystujemy zielony, ponieważ taki jest najtańszy.

Panelizacja
Panelizacja jest sposobem na to, by zmniejszyć czas produkcji płytki. Do właściwego czasu montażu, zależnego od ilości elementów, należy dodać także czas wjazdu i wyjazdu z maszyny montażowej. Ten czas jest całkowicie niezależny od ilości elementów. Z tego powodu robi się panele produkcyjne, składające się z wielokrotnie powielonego projektu płytki.
Rozmiary panelu należy przedyskutować z firmą, która będzie montować produkt, bowiem optymalne rozmiary panelu wynikają z możliwości maszyn, jakimi firma dysponuje. Z jednej strony im więcej płytek w panelu tym lepiej, ponieważ czas wjazdu i wyjazdu rozkłada się na większą liczbę produktów montowanych w tym samym czasie. Z drugiej strony im większy panel, tym większe problemy ze sztywnością panelu, co może powodować drgania płytki podczas montażu, przesuwanie się elementów, a nawet upadek panelu w piecu lutowniczym.
Ponadto, panel produkcyjny jest sposobem, by płytka miała kształt inny niż prostokątny. Kształt płytki może być absolutnie dowolny, ale pamiętajmy, że im bardziej będzie odbiegał od kształty prostokątnego, tym więcej panelu trzeba będzie później odciąć, co stanowić będzie koszt odpadowy.
Postanowiliśmy zaokrąglić rogi naszych płytek, aby nie drapały stołów i innych przedmiotów. W ramce panelu zaznaczyliśmy obszary, które mają być frezowane po łuku.

Fiduciale
Fiduciale są znacznikami umożliwiającymi maszynie zlokalizowanie płytki. Stosujemy trzy rodzaje fiduciali:
- Lokalne - są to trzy punkty umieszczone w narożnikach płytki
- Globalne - są to trzy punkty umieszczone na ramce panelu
- Skipmark - są to znaczniki umożliwiwające maszynie nakładającej elementy SMD zignorowanie wadliwie wykonanej płytki. Proces produkcji laminatów nie jest doskonały i czasami zdarzają się wady. Jednak wada na ogół dotyczy pojedynczej płytki w panelu, podczas gdy pozostałe płytki nadają się do produkcji. Aby nie marnować całego panelu, producent PCB zakleja lub zamalowuje pisakiem skipmark na uszkodzonej płytce. Przed rozpoczęciem nakładania elementów, automat pick&place sprawdza wszystkie skipmarki i w ten sposób określa, na które płytki nakładać elementy, a które zignorować.

Depanelizacja
Istnieją różne sposoby, by po zakończeniu lutowania SMT i THT, rozciąć panel produkcyjny na pojedyncze płytki. Najczęściej wykorzystujemy metodę v-cut. Producent laminatu wykonuje nacięcia na górnej i dolnej stronie płytki. Po produkcji płytkę można rozłamać bez wykorzystywania żadnych narzędzi. Wadą takiego rozwiązania są pozostałości w postaci wystających włókien szklanych, które należy usunąć pilnikiem. Większe partie produkcyjne można rozcinać depanelizatorem przystosowanym do cięcia v-cut.

Mamy nadzieję, że opis projektu był dla Was użyteczny lub chociażby interesujący

github com/wizzdev-pl/pcb-esp-opto-prog
Zapraszamy też na naszą stronę
wizzdev pl
Cool? Ranking DIY