Jakiego mikrokontrolera powinienem użyć?


10

Próbuję znaleźć najlepszy pakiet mikrokontrolerów dla moich programów komputerowych do komunikacji ze światem rzeczywistym. Mam nadzieję na dużą liczbę pinów I / O (do tej pory potrzebuję 64 cyfrowych, nic nadzwyczajnego jak analogowe i PWM), które mogę czytać i pisać bezpośrednio, wywołując funkcje z mojego programu działającego na moim CPU.

Nie chcę pobierać programów do samego mikrokontrolera, aby uruchomić, ale wolę coś, co po prostu podłącza się do mojego USB i daje mi kilka pinów we / wy kontrolowanych przez procesor, którymi mogę sterować z moich programów C ++.

Jaki byłby dla mnie najlepszy pakiet mikrokontrolerów? Mam nadzieję na coś, co jest dość niedrogie, ale na przyszłość, ponieważ działa bez USB i ma 64-bitowe sterowniki dla nowoczesnego systemu operacyjnego, takiego jak Windows 7. Możliwość połączenia więcej niż jednego z tych mikrokontrolerów za pomocą tego samego programu komputerowego byłaby świetny bonus (przyszłe rozszerzenie).

Edycja: Nie potrzebuję wysokich częstotliwości próbkowania (może 10 Hz dla odczytów wejściowych, 1 kHz dla sygnałów wyjściowych) i większość pinów służy tylko do wyjścia. Pracuję z nowymi komputerami (rdzeń i7 860), więc nawet jeśli próbkowanie jest nieco nieefektywne lub powolne, powinno być nadal w porządku (wystarczy mieć jeden wątek poświęcony we / wy i mieć komunikację z nim z głównym programem).

Nie potrzebuję też wszystkich 64 pinów I / O na jednym pakiecie mikrokontrolera. Jeśli mogę interfejsować wiele pakietów mikrokontrolerów w tym samym czasie, to też działałoby (w rzeczywistości byłoby idealnie, aby móc łączyć wiele mniejszych pakietów mikrokontrolerów, co oznacza, że ​​łatwo je rozbudować).

Patrzyłem na to: http://www.schmalzhaus.com/UBW32/index.html

Czy ktoś miał jakieś doświadczenie z czymś takim? Masz pomysł, czy to zadziała, czy nie? Głównym problemem jest to, że to mikrokontroler uruchamia program, a nie mój procesor.


1
Jakiej szybkości transmisji danych potrzebujesz?
Kevin Vermeer

@reemrevnivek: Szacuję, że potrzebowałbym około 10 Hz częstotliwości próbkowania dla wejść i 1 kHz dla wyjść, bardzo wolne I / O.
Faken

W twoim przypadku znaleziony projekt prawdopodobnie będzie działał całkiem dobrze. Jest to system już zmontowany (nie wymaga lutowania, jest zawsze miły) i wydaje się mieć bardzo podstawowe oprogramowanie układowe, które zapewnia dostęp do wszystkich potrzebnych portów. Niskie częstotliwości próbkowania oznaczają, że połączenie szeregowe będzie działać wystarczająco dobrze. 40 $ cię nie zbankrutuje, prawda? Jeśli tak, po prostu spróbuj, zanim spojrzysz na droższe rozwiązanie.
Wouter Simons,

Odpowiedzi:


4

Faken,

UBW32 to bardzo dobra droga, z tego co mogę powiedzieć o twoich wymaganiach. Będzie obsługiwał dokładnie to, czego potrzebujesz, pod warunkiem, że jesteś w porządku z 3.3VI / O (niektóre tolerują 5 V, ale nie wszystkie). Jest niedrogi (40 USD) i bardzo łatwo jest rozmawiać z użyciem dowolnego języka, który może obsługiwać porty szeregowe (czyli prawie wszystkie - Basic, C, C #, przetwarzanie itp.)

Możesz użyć dowolnego z 76 pinów I / O jako wejść lub wyjść. Dostarczone oprogramowanie wewnętrzne pozwala robić to, co chcesz, bez konieczności programowania po stronie wbudowanej. Przeniesienie tych danych do komputera przez USB (tylko 10 Hz) nie będzie problemem. Zapewnienie wyjścia na częstotliwości 1 KHz prawdopodobnie również będzie działać dobrze.

Jeśli masz jakieś pytania, daj mi znać. Chętnie Ci pomogę.

* Twórca Brian Schmalz UBW32


Niezła deska, panie. Schmalz
Wouter Simons

Jest to zdecydowanie pocieszające. Będąc inżynierem mechanikiem na początku i niewiele wiedząc o programowaniu, a jeszcze mniej o elektronice; Wstępnie zbudowana platforma, która współpracuje z C / C ++ jest dokładnie tym, czego potrzebowałem, aby rozwinąć aspekt programowania elektroniki i mikrokontrolera. Dzięki za pomoc!
Faken

9

Polecam Teensy ++ 2.0 (lub inną płytę rozwojową AT90USB1286)

128KB Flash, 8KB RAM, 46 pinów I / O, 8 wejść analogowych

24 USD

Płytki Teensy są zasilane przez USB i mogą zapewniać wirtualny port COM (klasa urządzeń komunikacyjnych USB). Możesz użyć tego łącza szeregowego do protokołu kontroli pin. Działa to bez żadnych niestandardowych sterowników w systemach Windows, OSX i Linux.

Aby utworzyć oprogramowanie sterujące pinem, jest TeensyDuino lub zwykły stary C.

W przypadku bit buksowania wąskim gardłem będzie interfejs USB mikrokontrolera. Możesz więc chcieć przenieść protokoły, takie jak I2C i SPI, do mikrokontrolera. Do tego możesz użyć mojego Bus Ninja .

Dodanie kolejnych ustawień Teensies do konfiguracji jest proste, wystarczy jeden port USB na urządzenie, co oznacza jeden wirtualny port COM na urządzenie.

(Uwaga. To podejście będzie działać równie dobrze z całą gamą procesorów ARM i innymi, po prostu nie znam tanich płyt programistycznych z dostępnym oprogramowaniem).

Innym sposobem może być użycie Arduino i Caterpillar Shield do rozszerzenia I / O. Na niestandardowej płycie zbudowałem wokół tego samego ekspandera I / O, byłem w stanie zaktualizować 256 wyjść przy częstotliwości ponad 1 KHz.


4

Myślę, że nie chcesz mikrokontrolera, ale coś w rodzaju karty we / wy PCI-6509 firmy National Instruments . Możesz również uzyskać wersje USB, ale mają one znacznie mniej operacji we / wy niż PCI-6509. National Instruments będzie także sprzedawał sterowniki C ++.

Jeśli to wygląda zbyt drogo, możesz wypróbować coś takiego jak Labjack U3 .


Użyłem labjacka, to naprawdę spowalnia twój komputer, jeśli robisz coś poważniejszego (wyższa częstotliwość próbkowania), ale świetnie nadaje się do prostej logiki o niskiej częstotliwości próbkowania. Systemy NI są wspaniałe, ale pakiet oprogramowania jest zbyt drogi do użytku domowego. (Przynajmniej do użytku domowego.)
Wouter Simons

4

Opisane rozwiązanie nie istnieje w przypadku niższych cen. Problem polega na tym, że chcesz uruchomić oprogramowanie sterujące w systemie, który nie jest do tego przeznaczony. Serializacja 64 portów i przepychanie go przez USB z dużą częstotliwością próbkowania znacznie spowalnia komputer hosta.

Istnieją rozwiązania, które działają dla aplikacji o niskiej wydajności, takich jak wspomniany labjack. Ale prawdziwe rozwiązanie potrzebne do obsługi wysokich stawek IO będzie wymagało zaprogramowanego systemu. Pytanie brzmi, jakiego programowania należy użyć do wdrożenia systemu.

LabView to bardzo drogie oprogramowanie (które działa świetnie, nie zrozumcie mnie źle). Używa języka graficznego do projektowania oprogramowania i kompiluje do kodu działającego w systemie FPGA lub ARM. Wszystkie komponenty są zbyt drogie jak na wbudowaną aplikację o dużej objętości, ale absolutnie cudowne w środowisku testowym ze względu na szybki rozwój i wysoką wydajność.

Tańszym rozwiązaniem jest znalezienie systemu działającego pod Linuksem z wieloma wejściami / wyjściami. EmbeddedARM.com jest witryną, która oferuje wiele rodzajów produktów do tego celu. Kod, który możesz napisać, może znajdować się w skryptach powłoki, Javie, C itp.

W Arduino systemy zapewniają mikrokontrolery, które mogą być opracowane z prostszej środowiska programistycznego. Ich charakter open source oznacza, że ​​jest już wiele projektów, z których można się uczyć.


3

nie znam żadnego z 64 pinami GPIO, to dużo, być może będziesz musiał to zbudować sam.

używam tego do testowania interfejsów szeregowych, ale ma także 23 piny GPIO.

Jeśli po prostu wyszukujesz hasło „USB to GPIO”, istnieje wiele projektów, które to zrobiły, nie widziałem żadnych na pierwszych stronach z 64 GPIO to jest najbliższy, jaki znalazłem, z 32 pinami.

Zbudowanie jednego nie byłoby bardzo trudne, prawdopodobnie użyłbym 100-pinowego pic18 z wbudowanym USB PHY (w zależności od wymagań prędkościowych może być potrzebne mocniejsze procesor)

nie musiałbyś robić zbyt dużo kodowania, aby działało, dopóki twój sprzedawca uC oferuje szkielet sterownika USB.

Będziesz musiał zbudować dla niego płytkę drukowaną, ponieważ układy, które są wystarczająco duże, aby mieć 64 piny GPIO, na ogół nie są dostarczane w pakietach przelotowych. Możesz także użyć mniejszego mikrokontrolera i użyć układów scalonych ekspandera portów zewnętrznych dla GPIO, ale byłby to bardziej złożony projekt i bardziej skomplikowany do zaprogramowania.

Możesz także spojrzeć na płyty programistyczne, które kierują wszystkie piny I / O do nagłówków i mają USB. Będą one prawdopodobnie znacznie droższe, ponieważ prawdopodobnie będą zawierały wiele rzeczy, których nie potrzebujesz.

Ostatnia wskazówka: jeśli znajdziesz płytkę z RS232, ale z dostępnymi 64 pinami GPIO, możesz użyć adaptera RS232 na USB, mam kilka z nich , które działały dla mnie dobrze. Ogranicza to jednak szybkość interfejsu RS232.


3

Środowisko NI Labview jest drogie, ale zrobi to, czego potrzebujesz (przez USB, Ethernet lub PCI, w zależności od tego, co otrzymujesz).

Arduino Mega ma 54 piny, które Cię zbliżają za 60 USD. Nie jest to jednak gotowy analizator logiki; aby to zrobić, musisz napisać lub znaleźć szkic. Może być jeden dostępny, nie wiem. To powinno być dość proste przy niskich stawkach autobusowych. Każda instrukcja na Mega odbywa się z częstotliwością 16 MHz, więc będziesz miał dość powolną prędkość transmisji, będziesz mieć szczęście lub spryt, jeśli uzyskasz sygnał 115200 bodów.

Ostatecznie jest to zupełnie inny projekt, jeśli próbujesz przy 9600 bodów lub 50 MHz. Pamiętaj, że USB działa z częstotliwością 480 MHz (Teoretycznie; rzeczywista szybkość transmisji danych będzie niższa z powodu opóźnień i narzutu), więc nie można zrobić nic lepszego niż 480/64 = 7,5 MHz bez buforowania. Dzięki buforowaniu i nieprzyzwoitym kwotom pieniędzy (Więcej niż samochód), analizatory logiczne mogą uzyskać 68, 102 lub 136 kanałów z szybkością gigaherca.

Sugeruję, abyś bardzo poważnie zastanowił się, czy możesz użyć narzędzia, które daje ci około 8 kanałów, i spróbuj przeanalizować je osobno.

EDYCJA: Aargh, o czym myślałem? Jeśli idziesz z takimi wolnymi prędkościami, zdecydowanie najlepszym rozwiązaniem jest praca nad łączem szeregowym. Cały czas korzystam z systemu modułowego ADAM 4000 firmy Advantech; są solidne, łatwe w użyciu (łatwo współpracują z protokołem ASCII przez port COM lub korzystają z dołączonego oprogramowania GUI), są rozbudowywane i dobrze obsługiwane. Zdobądź kontroler 4500 (RS-232, użyj konwertera USB lub portu COM na komputerze (jeśli nadal go ma)) lub kontrolera 4501 (Ethernet z wbudowanym serwerem internetowym), połącz kilka modułów 4053, 4055 i 4056, i możesz iść.


O. ale są dość kosztowne ... od 16 do 150 USD za 16 kanałów.
Kevin Vermeer

Posiadam analizator logiki portów Intronix 34 do testowania mojego oprogramowania (tj. Podłączaj wejścia do wyjść pinów sterowanych mikrokontrolerem). Myślę, że to około 500 $, ale nie jest to tak naprawdę cyfrowe We / Wy, prawda? Jego celem nie jest programowanie niestandardowej logiki, a jedynie analiza kanałów. Mój może pracować z częstotliwością próbkowania 500 MHz, ale zwykle nie potrzebuję tej prędkości, chyba że na peryferiach chcę, aby mikrokontroler kontrolował prędkości wsparcia do 200 MHz lub mniej więcej (czego zwykle nie potrzebują). - W każdym razie, krótka historia. Uważam, że analizator logiki nie jest tym, czego potrzebuje osoba zadająca pytanie.
Wouter Simons,

To zdecydowanie ja, ale nie O. Nie, zgodziłbym się, że analizator logiczny nie jest tym, czego potrzebuje osoba, biorąc pod uwagę nowe informacje.
Kevin Vermeer

2

Ta rzecz ma 70 GPIO i interfejs USB za 50 USD.


Czy możesz używać funkcji wywoływania do odczytu i zapisu danych pin bezpośrednio z programów C ++ uruchomionych na twoim CPU?
Faken

Chciałem zasugerować, że NXP będzie miał coś opartego na ARM z niektórymi I / O, a jeśli nie będziesz mieć ich dość, by po prostu uderzyć w ekspandery I2C IO. Nie da się pobić ceny tego produktu, a to gra typu plug and play. Wspaniała robota.
akohlsmith,

Nie mam pojęcia. Właśnie widziałem to w poście o nowych produktach Sparkfun.
endolith

2

Tak, wygląda na to, że UBW32 działałby dla ciebie dobrze, a domyślne oprogramowanie układowe pozwala kontrolować styki we / wy z oprogramowania na komputerze.

Zgodnie z „jak Bit Bang SPI i interfejsy równoległe na FT232R” , najwyraźniej możesz bit-bang 8 cyfrowych pinów (być może więcej?) Na FT232R kontrolowanych przez oprogramowanie na twoim komputerze.

15 $ Breakout Board dla FT232RL

Wygląda na to, że tak naprawdę chcesz cyfrowego interfejsu we / wy; nie potrzebujesz ani nie chcesz programowalnego mikrokontrolera. Jeśli chcesz tylko 16 bitów, wybrałbym kilka płytek FT232RL. Wygląda jednak na to, że pojedynczy UBW32 o wartości 40 USD da Ci 64 I / O, które chcesz za mniejszy koszt niż 8 płyt FT232RL, które wymagałyby uzyskania 64 I / O.

Przekonałem się, że staje się to coraz bardziej powszechne - czasami rzadziej kosztuje rzucić cały mikrokontroler na problem, mimo że ma milion „dodatkowych” tranzystorów, których nigdy nie użyję, niż zastosowanie rozwiązania przewodowego.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.