Quale microcontrollore dovrei usare?


10

Sto cercando di trovare il miglior pacchetto di micro controller per i miei programmi per computer per comunicare con il mondo reale. Spero in un gran numero di pin I / O (finora 64 è tutto ciò di cui ho bisogno, niente di speciale come analogico e PWM) che posso leggere e scrivere direttamente chiamando le funzioni dal mio programma in esecuzione sulla mia CPU.

Non voglio scaricare programmi sul microcontrollore da eseguire, piuttosto vorrei qualcosa che si collega semplicemente alla mia USB e mi dà un sacco di pin I / O controllati dalla CPU che posso controllare dai miei programmi C ++.

Quale sarebbe il miglior pacchetto di micro controller per me? Spero in qualcosa che sia abbastanza economico ma a prova di futuro, poiché in esso funziona via USB e ha driver a 64 bit per sistemi operativi moderni come Windows 7. Essere in grado di interfacciare più di uno di questi micro controller con lo stesso programma per computer sarebbe un grande bonus anche (espansione futura).

Modifica: non ho bisogno di alte frequenze di campionamento (forse 10 Hz per la lettura degli ingressi, 1 kHz per i segnali di uscita) e la maggior parte dei pin sono usati solo per l'uscita. Sto lavorando con computer nuovi di zecca (core i7 860), quindi anche se il campionamento è un po 'inefficiente o lento, dovrebbe comunque essere ok (basta avere un thread dedicato all'I / O e far comunicare il programma principale con esso).

Inoltre, non ho bisogno di tutti i 64 pin I / O su un singolo pacchetto di micro controller. Se riesco a interfacciare molti pacchetti di microcontrollore allo stesso tempo, anche questo funzionerebbe (in realtà sarebbe l'ideale essere in grado di interfacciare molti pacchetti di microcontrollori più piccoli, ciò significa che è facile da espandere).

Ho visto questo: http://www.schmalzhaus.com/UBW32/index.html

Qualcuno ha avuto qualche esperienza con qualcosa del genere? Qualche idea se funzionerà o no? La preoccupazione principale è che è il micro controller che esegue il programma, non la mia CPU.


1
Di quale velocità dati hai bisogno?
Kevin Vermeer,

@reemrevnivek: Stimo che avrei bisogno di una frequenza di campionamento di circa 10 Hz per gli ingressi e 1 kHz per le uscite, I / O molto lento.
Falso

Nel tuo caso il progetto che hai trovato probabilmente funzionerà abbastanza bene. È un sistema già messo insieme (nessuna saldatura necessaria è sempre piacevole) e sembra avere un firmware molto semplice per darti accesso a tutte le porte di cui hai bisogno. Le basse frequenze di campionamento significano che la connessione seriale funzionerà sufficientemente bene. 40 $ non ti farà fallire, giusto? In tal caso, provalo prima di cercare una soluzione più costosa.
Wouter Simons,

Risposte:


4

faken,

UBW32 è un ottimo modo di procedere, da quello che posso dire delle tue esigenze. Supporterà esattamente ciò di cui hai bisogno, purché tu stia bene con 3.3VI / O (alcuni sono tolleranti a 5V, ma non tutti.) È economico ($ 40) ed è molto facile parlare con qualsiasi lingua in grado di supportare porte seriali (che sono praticamente tutte - Basic, C, C #, Processing, ecc.)

È possibile utilizzare uno qualsiasi dei 76 pin I / O come ingressi o uscite. Il firmware di serie fornito ti consentirà di fare ciò che desideri, senza necessità di programmazione sul lato incorporato. Ottenere quei dati sul PC tramite USB (a soli 10Hz) non sarà un problema. Far funzionare le uscite a 1KHz probabilmente funzionerà bene.

Se avete domande, per favore fatemi sapere. Sono felice di aiutarti.

* Creatore Brian Schmalz UBW32


Bel consiglio, signor. Schmalz
Wouter Simons,

Bene, questo è provocatoriamente confortante. Essere un ingegnere meccanico per cominciare e sapere poco sulla programmazione e ancor meno sull'elettronica; una piattaforma precompilata che si interfaccia con C / C ++ è esattamente ciò di cui avevo bisogno per dogmiere sull'aspetto della programmazione elettronica e del microcontrollore. Grazie per l'aiuto!
Falso il

9

Raccomando un Teensy ++ 2.0 (o qualsiasi altra scheda di sviluppo AT90USB1286)

Flash da 128 KB, 8 KB di RAM, 46 pin I / O, 8 ingressi analogici

$ 24

Le schede Teensy sono alimentate tramite USB e possono fornire una porta COM virtuale (USB Communications Device Class). È possibile utilizzare questo collegamento seriale per il protocollo di controllo pin. Funziona senza alcun driver personalizzato su Windows, OSX e Linux.

Per creare il firmware di controllo pin, c'è TeensyDuino o semplicemente la vecchia C.

Quando il bit banging, il collo di bottiglia sarà l'interfaccia USB del microcontrollore. Quindi potresti voler spostare protocolli come I2C e SPI sul microcontrollore. Per questo potresti usare il mio Bus Ninja .

L'aggiunta di Teensies aggiuntivi alla tua configurazione è semplice, hai solo bisogno di una porta USB per dispositivo, presentando una porta COM virtuale per dispositivo.

(Nota. Questo approccio funzionerà ugualmente bene con un'intera gamma di processori ARM e altri, semplicemente non conosco nessuna scheda di sviluppo economica con software disponibile).

Un altro modo potrebbe essere quello di utilizzare un Arduino e uno scudo Caterpillar per espandere l'I / O. Su una scheda personalizzata costruita attorno allo stesso expander I / O sono stato in grado di aggiornare 256 uscite a oltre 1KHz.


4

Penso che ciò che desideri non sia un microcontrollore, ma qualcosa di simile a una scheda I / O PCI-6509 di National Instruments . Puoi ottenere anche versioni USB, ma hanno molti meno I / O rispetto al PCI-6509. National Instruments venderà anche i driver C ++.

Se sembra troppo costoso, potresti provare qualcosa come Labjack U3 .


Ho usato il labjack, rallenta davvero il tuo computer se fai qualcosa di più serio (frequenza di campionamento più alta), ma è ottimo per la logica semplice della frequenza di campionamento lenta. I sistemi NI sono meravigliosi, ma il pacchetto software è troppo costoso per l'uso domestico. (Almeno per uso domestico.)
Wouter Simons,

4

La soluzione che descrivi non esiste per prezzi più bassi. Il problema è che si desidera eseguire il software di controllo su un sistema non progettato per questo. La serializzazione di 64 porte e l'inoltro tramite USB ad alte frequenze di campionamento rallentano immensamente il computer host.

Esistono soluzioni che funzionano per applicazioni a basse prestazioni come il labjack menzionato. Ma la vera soluzione di cui hai bisogno per gestire alte velocità di IO coinvolgerà un sistema programmato. La domanda è: quale programmazione devi usare per implementare il sistema.

LabView è un software molto costoso (che funziona alla grande, non fraintendetemi). Utilizza un linguaggio grafico per progettare software e compila codici per l'esecuzione su un sistema FPGA o ARM. Tutti i componenti sono troppo costosi per un'app integrata ad alto volume, ma assolutamente meravigliosi in un ambiente di test a causa del rapido sviluppo e delle elevate prestazioni offerte.

Una soluzione meno costosa è trovare un sistema che esegue Linux con molti I / O. EmbeddedARM.com è un sito che offre molti tipi di prodotti per questo. Il codice che puoi scrivere può essere in script di shell, Java, C, ecc.

I sistemi Arduino forniscono microcontrollori che possono essere sviluppati con un ambiente di sviluppo più semplice. La loro natura open source significa che ci sono già molti progetti da cui imparare.


3

non ne conosco nessuno con 64 pin GPIO, questo è molto, potresti doverlo costruire tu stesso.

Lo uso per le interfacce seriali di test da banco ma ha anche 23 pin GPIO.

Se hai appena cercato su Google "da USB a GPIO" un sacco di progetti là fuori che lo hanno fatto, non ne ho visto nessuno nelle prime due pagine con 64 GPIO, questo è il più vicino che ho trovato, con 32 pin.

Costruire uno non sarebbe molto difficile, probabilmente userei solo un pic18 a 100 pin con USB PHY integrato (a seconda delle tue esigenze di velocità potrebbe essere in ordine una CPU più potente)

non dovresti fare troppa codifica per farlo funzionare fino a quando il tuo fornitore uC offre uno scheletro di driver USB.

Dovresti costruire un PCB per questo molto probabilmente poiché i chip abbastanza grandi da avere 64 pin GPIO generalmente non arrivano in pacchetti a foro passante. Potresti anche utilizzare un microcontrollore più piccolo e utilizzare circuiti integrati di espansione porte esterne per i tuoi GPIO, ma sarebbe un design più complesso e più complesso da programmare.

Puoi anche guardare le schede di sviluppo che indirizzano tutti i pin I / O alle intestazioni e dispongono di USB. Questi saranno probabilmente molto più costosi in quanto probabilmente avranno un sacco di cose che non ti servono.

Un ultimo consiglio, se trovi una scheda con RS232 ma con 64 pin GPIO disponibili, puoi usare un adattatore da RS232 a USB, ne ho alcuni che hanno funzionato bene per me. Questo ti limita comunque alla velocità dell'interfaccia RS232.


3

L'ambiente NI Labview è costoso, ma farà ciò di cui hai bisogno (tramite USB, Ethernet o PCI a seconda di ciò che ottieni).

Arduino Mega ha 54 pin, che ti avvicinano, per $ 60. Tuttavia, non è un analizzatore di logica pronto all'uso; dovresti scrivere o trovare uno schizzo per farlo. Potrebbe essercene uno disponibile, non lo so. Questo dovrebbe essere abbastanza semplice a tariffe bus basse. Ogni istruzione su Mega avviene a 16MHz, quindi avrai un baud rate abbastanza lento, sarai fortunato o molto intelligente se riesci a ottenere un segnale di 115200 baud.

Alla fine, questo è un progetto molto diverso se stai campionando a 9600 baud o a 50 MHz. Ricorda, USB funziona a 480 MHz (in teoria; la tua velocità dati effettiva sarà inferiore a causa di latenze e sovraccarico) quindi non puoi fare meglio di 480/64 = 7.5MHz senza buffering. Con buffering e quantità oscene di denaro (più della tua auto), gli analizzatori logici possono ottenere 68, 102 o 136 canali a velocità di trasmissione dati gigahertz.

Ti suggerirei di provare molto seriamente a capire se puoi usare uno strumento che ti dà circa 8 canali e provare ad analizzarli separatamente.

EDIT: Aargh, cosa stavo pensando? Se stai andando a ritmi lenti come quello, allora lavorare su un collegamento seriale è sicuramente la strada da percorrere. Uso il sistema di moduli ADAM 4000 di Advantech sempre al lavoro; sono robusti, facili da usare (facilmente interfacciabili con un protocollo ASCII su una porta COM o utilizzano il software GUI incluso), espandibili e ben supportati. Procurati un controller 4500 (RS-232, utilizza un convertitore USB o una porta COM sul tuo computer (se ne ha ancora uno)) o un controller 4501 (Ethernet con server Web incorporato), collega in un gruppo di moduli 4053, 4055 e 4056, e sei a posto.


Oh. ma sono piuttosto costosi .... come $ 100 a $ 150 per 16 canali.
Kevin Vermeer,

Ho un analizzatore logico a porte intronix 34 per testare il mio software (ovvero collegare gli ingressi alle uscite dei pin controllati dal microcontrollore). Sono circa 500 $, penso, ma non è nemmeno un I / O digitale vero? Non ha lo scopo di programmare la logica personalizzata con, ma solo di analizzare i canali. Il mio può funzionare a una frequenza di campionamento di 500 Mhz, ma di solito non ho bisogno di quella velocità, a meno che le periferiche che voglio che il microcontrollore controllino velocità di supporto fino a circa 200 Mhz (cosa che di solito non lo fanno). - Comunque, per farla breve. Credo che un analizzatore di logica non sia ciò di cui ha bisogno la persona che pone la domanda.
Wouter Simons,

Sono sicuramente io, ma non O. No, sarei d'accordo che l'analizzatore di logica non è ciò di cui la persona ha bisogno, date le nuove informazioni.
Kevin Vermeer,

2

Questa cosa ha 70 GPIO e un'interfaccia USB per $ 50.


È possibile utilizzare le funzioni di chiamata per leggere e scrivere i dati dei pin direttamente dai programmi C ++ in esecuzione sulla CPU?
Falso il

Stavo per suggerire che NXP avrebbe qualcosa di basato su ARM con qualche I / O, e se non ne avessi abbastanza per schiaffeggiare semplicemente gli espansori I2C IO. Non puoi battere il prezzo di quella cosa, ed è plug 'n play. Lavoro eccellente.
akohlsmith il

Non ne ho idea. L'ho appena visto sul nuovo post dei prodotti Sparkfun.
endolith,

2

Sì, sembra che UBW32 funzioni bene per te e il firmware predefinito ti consente di controllare i pin I / O dal tuo software sul PC.

Secondo "come eseguire il bit bang SPI e le interfacce parallele su un FT232R" , apparentemente è possibile bit-bang 8 pin digitali (forse di più?) Sull'FT232R controllati dal software del PC.

Scheda di breakout da $ 15 per FT232RL

Sembra che quello che vuoi veramente sia un'interfaccia I / O digitale; non è necessario né desiderato un microcontrollore programmabile. Se volessi solo 16 bit, andrei con un paio di schede FT232RL. Tuttavia, sembra che un singolo UBW32 da $ 40 assomigli a 64 I / O desiderati a un costo inferiore rispetto a 8 delle schede FT232RL necessarie per ottenere 64 I / O.

Sto scoprendo che sta diventando sempre più comune - a volte costa meno lanciare un intero microcontrollore a un problema, anche se ha un milione di transistor "extra" che non userò mai su di esso, piuttosto che utilizzare una soluzione cablata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.