Popularny post H1M4W4R1 Napisano Listopad 26, 2023 Popularny post Udostępnij Napisano Listopad 26, 2023 (edytowany) Wstęp Ten artykuł porusza tematykę doboru mikrokontrolerów do Twojego projektu. Nie jest istotne czy tworzysz prosty sterownik LED, narzędzie do pracy, czy zaawansowane urządzenie pomiarowe. Z tymi wskazówkami bez problemu znajdziesz odpowiedni komponent dla siebie. Artykuł jest kierowany do osób stawiających swoje pierwsze kroki w projektowaniu własnych systemów, które potrzebują podstawowych informacji "na co zwrócić uwagę" podczas wyboru elementu do potrzeb projektowych oraz listy potencjalnych alternatyw. Mikroprocesor, mikrokontroler, FPGA Zanim zgłębimy detale, warto zrozumieć główne rodzaje komponentów, które są kluczowymi jednostkami obliczeniowymi w projektach. Mikroprocesory: To stosunkowo złożone komponenty, które nie posiadają wbudowanej pamięci RAM ani ROM (w kontekście pamięci programu). Były popularne w komputerach domowych, takich jak Commodore 64 czy Atari 2600 pod koniec XX wieku. Charakterystyczne dla nich jest posiadanie magistrali równoległej do podłączenia pamięci i innych układów pomocniczych – nie posiadają wbudowanych peryferiów. Mikrokontrolery: To podzespoły elektroniczne, które zawierają wbudowaną pamięć RAM, a często także pamięć programu (ROM). Istnieją również wersje bez wbudowanej pamięci ROM, takie jak RP2040 lub ESP32D0/ESP32S0. W przypadku braku pamięci programu użytkownik musi dołączyć zewnętrzną pamięć, zazwyczaj wykorzystując interfejs QSPI. FPGA (Field-Programmable Gate Array): To zaawansowane układy do równoległego przetwarzania danych i prototypowania układów scalonych. W projektach hobbystycznych są powszechnie wykorzystywane przy obsłudze wyświetlaczy o dużej rozdzielczości lub w konstrukcji urządzeń diagnostycznych. Ich charakterystyczną cechą jest zdolność do wykonywania wielu operacji jednocześnie, co przewyższa możliwości mikrokontrolerów i mikroprocesorów. SoC (System on a Chip): To samodzielne układy zawierające pamięć RAM i ROM. Nie zawsze możliwe jest zapisywanie w pamięci ROM (czasem zawiera tylko instrukcje bootloadera, a program wgrywamy na kartę SD lub pamięć EMMC). Mimo, że niektóre mikrokontrolery można określić jako SoC, ten termin zazwyczaj odnosi się do zaawansowanych układów, które spotykamy w minikomputerach SBC (Single-Board Computers). Poniższa fotografia 1 przedstawia przykładowy mikrokontroler w obudowie TQFP: Fotografia 1 (Wikipedia, Public Domain) Podstawowe cechy mikrokontrolerów Przed wyborem układu właściwego dla naszego projektu, warto zwrócić uwagę na kilka kluczowych cech. Nie ma tu sztywnej hierarchii, ponieważ ich istotność zależy od konkretnych potrzeb projektowych: Rodzina / architektura: Określa używane środowisko programistyczne oraz narzędzia, takie jak kompilatory i debuggery. Często producenci mikrokontrolerów prześcigają się w udostępnianiu coraz bardziej zaawansowanych narzędzi dla projektantów urządzeń i programistów. Package / Obudowa: Określa liczbę wyprowadzeń i sposób montażu (w tym jak bardzo przy tym będziemy się denerwować) Peryferia: Lista wewnętrznych podzespołów mikrokontrolera, takie jak dostępne magistrale, wsparcie dla protokołów, zegary, DMA czy przetworniki ADC/DAC. RAM i ROM (Flash): Określają dostępną przestrzeń dla programu i zmiennych. Niektóre układy wymagają zewnętrznej pamięci Flash (np. RP2040, ESP32, ESP8266) ADC / DAC: Wbudowane peryferia do obsługi sygnałów analogowych – ADC dla wejść analogowych, a DAC dla wyjść analogowych. Zasługują na osobną sekcję, gdyż często wpływają na wybór układu. Taktowanie i zestaw instrukcji: Określa szybkość działania mikrokontrolera. Niektóre nowsze rdzenie mogą być wydajniejsze, nawet przy niższym taktowaniu, dzięki nowszym zestawom instrukcji. Napięcie zasilania: Definiuje pobór prądu mikrokontrolera, a również konieczność zastosowania konwerterów poziomów logicznych między układem, a zewnętrznymi peryferiami. Architektury mikrokontrolerów Obecnie na rynku wyróżnia się cztery główne „rodziny” mikrokontrolerów: ARM: Te mikrokontrolery, zasilane głównie napięciem 3,3V, są niezwykle wszechstronne i popularne. Bez względu na projekt z pewnością znajdziesz odpowiedni model dla siebie. AVR: Starsza rodzina mikrokontrolerów, wykorzystywana głównie tam, gdzie kluczowa jest niezawodność. Osiągają pełną wydajność przy zasilaniu 5V. Xtensa (ESPressif ESP32/ESP8266): Chińska rodzina mikrokontrolerów na bazie architektury Xtensa, zaprojektowana głównie dla aplikacji IoT. Warto zauważyć, że nie wszystko, co pochodzi z Chin, jest złej jakości, co udowadnia ten układ. RISC-V: To dość nowa otwarta architektura, wykorzystywana do tworzenia zarówno mikrokontrolerów, jak i procesorów. Układy oparte na tej architekturze są podobne do ARM, ale znajdują się w niższym przedziale cenowym ze względu na brak opłat licencyjnych. Jak dokonać wyboru? Często warto zacząć od tego, co już znamy. Jeśli mieliśmy do czynienia z mikrokontrolerami STM32, sensownym krokiem będzie znalezienie w tej rodzinie układu spełniającego nasze potrzeby, a jeżeli go nie znajdziemy to poszukiwanie innego mikrokontrolera na bazie architektury ARM. Jeżeli używaliśmy Arduino Uno to bliżej nam może być do AVR. W innym przypadku, dobieramy układ z dowolnej rodziny, która odpowiada nam pod względem pozostałych kryteriów. Package / Obudowa Mikrokontrolery występują w różnych rodzajach obudów, od tradycyjnych do montażu przewlekanego po nowoczesne, przeznaczone wyłącznie dla montażu powierzchniowego. Wybór obudowy najczęściej zależy od umiejętności lutowniczych. DIP – obudowy przewlekane, najprostsze do przylutowania (wystarczy lutownica transformatorowa, aczkolwiek znacznie wygodniej jest pracować z lutownicą kolbową) SOP, QFP, TQFP, LQFP – obudowy SMT z wyprowadzonymi nóżkami, proste do lutowania z wykorzystaniem grotu typu „minifala” QFN – obudowy SMT z wyprowadzeniami na boku obudowy (bez nóżek) – dość skomplikowane do lutowania grotem minifala (wykonalne, lecz czasochłonne). Najlepiej lutować je gorącym powietrzem lub w specjalistycznym piecu do lutowania rozpływowego. BGA – obudowy SMT z kulkami pod układem. Bardzo trudne do lutowania amatorskiego (wymagają wprawy). Układy te należy lutować wyłącznie z użyciem gorącego powietrza lub pieca do lutowania rozpływowego. Weryfikacja jakości spoin jest praktycznie niemożliwa. Istnieją również gotowe moduły np. ESP32 WROOM czy Arduino Nano, aczkolwiek w tym zestawieniu omawiamy wyłącznie tematykę mikrokontrolerów jako układów scalonych, a powyższe moduły do takich nie należą, ale warto ich używać w fazie prototypowania, gdyż znacząco skracają czas lutowania. Fotografia 2 przedstawia układy logiczne w obudowach DIP, a fotografia 3 zaś pamięć RAM z układami scalonymi w obudowach BGA. Fotografia 2 (Wikipedia, Public Domain) Fotografia 3 (Wikipedia, Smial, CC BY-SA 2.0) Dobrą praktyką jest wybór obudowy z większą liczbą wyprowadzeń niż potrzebujemy (czasem w trakcie projektu okazuje się, że ich brakuje). W bardziej optymistycznym scenariuszu, większa ilość nóżek ułatwi nam wyprowadzenie ścieżek z układu podczas projektowania płytki PCB, jednakowoż należy mieć na uwadze, iż ze wzrostem ilości wyprowadzeń znacząco wzrasta cena układu. Peryferia? Rozważenie potrzebnych peryferii jest kluczowe. Na przykład, jeśli chcesz stworzyć kontroler PID do sterowania grzałkami, potrzebujesz interfejsu do termopary - to może być wejście analogowe albo magistrala, jak np. SPI do podłączenia wzmacniacza MAX6675. Dodatkowo będziesz potrzebować licznika sprzętowego do generowania sygnałów sterujących grzałką. Na powyższym przykładzie widać, iż to, czego potrzebujesz, zależy od konkretnego projektu. W prostych projektach jak ten wymieniony wyżej wystarczy zwykły, najprostszy mikrokontroler - np. CH32V003. Jeśli zaś marzysz o stworzeniu konsoli do gier, potrzebne będzie coś znacznie bardziej potężnego, np. STM32H7*, który ma większą moc obliczeniową i bardziej zaawansowane funkcje, jak wbudowany układ graficzny czy obsługa pamięci zewnętrznej SDRAM. Jakie peryferia i parametry warto mieć na uwadze? Ilość pinów/wyprowadzeń mikrokontrolera (GPIO): Związana z potrzebnymi wyprowadzeniami, jak i zajętymi pinami przez magistrale (I2C, SPI itp.). Magistrale komunikacyjne (I2C, SPI, UART/USART/LIN, CAN, USB): Pomagają w sprzętowej obsłudze komunikacji z innymi modułami, oszczędzając moc obliczeniową mikrokontrolera. Przetworniki ADC: Potrzebne, gdy chcesz mierzyć sygnały analogowe, np. temperaturę na termistorze. I2S/SAI: Jeśli chcesz, by twoje urządzenie miało wbudowany dźwięk (warto zauważyć, że potrzebny będzie zewnętrzny układ do obsługi dźwięku – tzw. „kodek”). Przetworniki DAC: Wbudowany przetwornik cyfrowo-analogowy, który pozwala generować sygnały analogowe bez zewnętrznych układów. DMA – służy do sprzętowego przesyłania danych z pamięci RAM do konkretnego rejestru (nie musi tego robić program), co jest znacznie szybsze, a zarazem oszczędza moc obliczeniową RTC(C) – niektóre mikrokontrolery posiadają wbudowany zegar czasu rzeczywistego i kalendarz, które w przypadku zasilania bateryjnego są w stanie określić aktualną datę. Przydatne w projektach automatycznych zraszaczy czy lampek zapalanych o konkretnej godzinie. To tylko fragment listy, aczkolwiek pokazuje, jak duży wpływ na projekt ma wybór odpowiednich peryferii. Jak widać na 11 stronie niniejszego dokumentu niektóre mikrokontrolery posiadają naprawdę rozbudowane peryferia, a to jest układ „z niższej półki”. Dobrą praktyką jest stworzenie projektu systemu (w formie diagramu funkcjonalności urządzenia), który następnie określi nam jakie elementy sprzętowe będą nam niezbędne (również pozwoli określić pomocnicze układy scalone, lecz jest to temat na inny artykuł). Pomocne mogą być również podobne projekty zrealizowane przez inne osoby oraz dokumentacja układów w nich zastosowanych. Przykładowy projekt systemu ukazuje rysunek 4. Rysunek 4 (źródło własne) RAM/ROM Każdy mikrokontroler ma swoje ograniczenia, szczególnie jeśli chodzi o pamięć programu. Z reguły, tańsze mikrokontrolery mają mniej pamięci programu lub w ogóle jej nie posiadają, wymagając zewnętrznego układu. Dla większości projektów, minimalna ilość pamięci ROM wystarcza. Jednak w bardziej skomplikowanych projektach, jak wspomniana wcześniej konsola do gier, może okazać się, że standardowa pamięć nie wystarczy. Wybór odpowiedniej ilości pamięci ROM jest często kwestią doświadczenia - po prostu nabiera się wprawy. Tu sprawa jest jeszcze trudniejsza. Wiele zmiennych można przenieść poza pamięć RAM, co może znacząco ułatwić życie. Zazwyczaj ilość pamięci RAM rośnie wraz z ilością peryferii w mikrokontrolerze. Oczywiście, jeśli wybraliśmy mikrokontroler bazując tylko na peryferiach, bez uwzględnienia pamięci, to może okazać się, że tej pamięci nam zabraknie (szczególnie w rodzinie AVR, gdzie jest jej mniej), aczkolwiek jest to bardzo rzadko spotykane zjawisko. Warto mieć na uwadze, że bardziej zaawansowane mikrokontrolery posiadają możliwość rozbudowania pamięci RAM za pomocą zewnętrznego układu scalonego (np. W25Q128 lub MT48LC4M32B2B5). Sygnały analogowe – DAC/ADC Czasem chcemy zbudować proste urządzenie diagnostyczne bez używania zewnętrznych przetworników. Tutaj pomocne są peryferia analogowe (o których już wspomnieliśmy). Istotne w ich przypadku są dwa parametry: Rozdzielczość: To, jak dokładnie jest przekształcany sygnał cyfrowy na analogowy. Na przykład, przetwornik 8-bitowy z napięciem referencyjnym 1V ma skok równy 0,0039V między kolejnymi wartościami, zaś przetwornik 16-bitowy o identycznym napięciu referencyjnym ma znacznie dokładniejszy skok w wysokości 0,000015V. Istnieją również przetworniki o wyższej dokładności (24bit, 32bit), które są dedykowane głównie systemom audio. Sample Rate (SPS): To, jak często przetwornik dokonuje odczytów lub zmiany. Przykładowo, 1MSPS oznacza, że przetwornik może odczytywać lub zmieniać swój stan około milion razy na sekundę. W diagnostyce sygnałów o wysokiej częstotliwości (np. w oscyloskopach) potrzebujemy około 10-krotnie większego Sample Rate'a niż częstotliwość sygnału. Innymi słowy, dla sygnału 100MHz potrzebujemy około 1GSPS, aby był wyraźnie widoczny na ekranie urządzenia i nie był nadmiernie przekłamany – przykładowo na jeden okres sinusoidy 100MHz powyższy przetwornik dokona maksymalnie 10 pomiarów, co może spowodować znaczne zniekształcenie sygnału. Staramy się wybierać przetworniki o jak najwyższych parametrach zachowując jednocześnie umiar kosztowy, chyba że budujemy urządzenie do pracy z wysokimi częstotliwościami, jednakowoż wtedy często potrzebny jest sprzęt specjalistyczny – FPGA czy dedykowane przetworniki różnicowe. Dobrym wyborem na start jest układ z przetwornikiem 12-bitowym z szybkością 1MSPS, który spełnia większość potrzeb w projektach hobbystycznych, aczkolwiek w wielu przypadkach 10bit z szybkością liczoną w SPS lub kSPS też wystarczy (np. do odczytywania wartości potencjometru). Inne istotne cechy Jak już zauważyłeś ten artykuł opisuje wyłącznie najbardziej podstawowe parametry wpływające na wybór mikrokontrolera. W rzeczywistości należy brać pod uwagę również te bardziej złożone – np. w przypadku architektury ARM uwzględnić rodzaj rdzenia – np. rdzeń M3 nie posiada wbudowanej sprzętowej akceleracji obliczeń na liczbach zmiennoprzecinkowych (FPU), co już występuje w przypadku rdzenia M4. Tak samo rdzenie o niższej numeracji posiadają np. wolniejsze zestawy instrukcji względem tych o numeracji wyższej. W wielu przypadkach taktowanie mikrokontrolera nie ma znaczenia, aczkolwiek w przypadku systemów, które działają „w czasie rzeczywistym” należy brać pod uwagę czas reakcji takiego mikrokontrolera na określone zdarzenie, który definiowany jest przez ilość cykli od wystąpienia zdarzenia do reakcji oraz właśnie wspomniane taktowanie rdzenia – jeżeli ilość cykli będzie identyczna to mikrokontroler o wyższym taktowaniu szybciej je przetworzy. Oprócz tego są też inne parametry: temperatura pracy, standard wykonania (automotive – przeznaczony dla branży samochodowej, mil-spec – standard wojskowy, industrial – standard przemysłowy), pobór prądu, dostępność stanów uśpienia, to czy mikrokontroler posiada wbudowany moduł RF czy nawet niezbędne komponenty pasywne lub interfejs debuggera (JTAG, SWD, SWIO, ISP...). Dobór mikrokontrolera nie jest wbrew pozorom taki łatwy, a jest to jeden z najbardziej istotnych komponentów, które wpływają na pracę całego urządzenia, więc warto poświęcić na niego dość dużo czasu. Appendix Jeżeli masz problem z doborem mikrokontrolera do projektu przedstaw schemat poglądowy (lub opis) założeń w osobnym wątku, a bardziej doświadczeni użytkownicy forum chętnie podzielą się swoimi opiniami i propozycjami. Edytowano Listopad 26, 2023 przez H1M4W4R1 10 Link do komentarza Share on other sites More sharing options...
Gieneq Listopad 27, 2023 Udostępnij Listopad 27, 2023 @H1M4W4R1 ciekawy artykuł 🙂 17 godzin temu, H1M4W4R1 napisał: Ilość pinów/wyprowadzeń mikrokontrolera (GPIO): Związana z potrzebnymi wyprowadzeniami, jak i zajętymi pinami przez magistrale (I2C, SPI itp.). W ostatnim projekcie jaki robiłem kryteria były następujące: tyle pinów żeby się zmieściło, obudowa taka żeby było dojście (nie BGA), układ w miarę dostępny LQFP144 nada się, układy peryferyjne ok, ale na etapie projektowania PCB wyszło, że niezbędny DAC był zajęty przez magistralę równoległą do zewnętrznej pamięci i bardziej opłacało się dodać zewnętrzny DAC. Myślę, że warto też zwrócić uwagę czy coś jest planowane, że zniknie z rynku. Przykładowo ST daje na swoje produkty 10 lat gwarancji dostępności i taka F4 jest nieopłacalna w produkcji i jest już wycofywana i będzie dostępna tylko dla dużych firm typu automotiv. Można też zwrócić uwagę na popularność i zestaw narzędzi. Dostałem niedawno płytkę od Infineon - super, ale narzędzia programistyczne wyglądają tak sobie. Jak w firmie trzeba bo tak, żeby np. ścieżka błędu była rozłożona na układy różnych producentów to ok, ale hobbystycznie to raczej strata czasu. 2 Link do komentarza Share on other sites More sharing options...
H1M4W4R1 Listopad 27, 2023 Autor tematu Udostępnij Listopad 27, 2023 1 godzinę temu, Gieneq napisał: Przykładowo ST daje na swoje produkty 10 lat gwarancji dostępności i taka F4 jest nieopłacalna w produkcji i jest już wycofywana i będzie dostępna tylko dla dużych firm typu automotiv. Zwróć też uwagę na to, że powstają układy "klony" (odpowiedniki) typu GD32, CH32 etc., więc raczej tak łatwo te układy nie znikną 😉 Poza tym raczej wątpię, by duże firmy dystrybucyjne typu LCSC czy Mouser nie dostały do rączek kompletu F4 dla hobbystów. Bo jednak obrót tych scalaków (bazuję na LCSC) jest wciąż dość duży. 1 Link do komentarza Share on other sites More sharing options...
BlackJack Grudzień 8, 2023 Udostępnij Grudzień 8, 2023 Mi tu brakuje jeszcze jednego ważnego aspektu, mianowicie potrzebne zaplecze uruchomieniowe. Ważne szczególnie dla poczatkujących. Wiem że dzisiaj nie jest to taki wielki problem jak 30 lat temu, kiedy ja zaczynałem zabawę, ale warto mieć na uwadze. 2 Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »