Se sto esaurendo i pin su un Arduino, a corto di acquistare un secondo o ottenere una scheda Mega, c'è un modo per connettersi di più a una scheda? Devo preoccuparmi di sovraccaricarlo?
Se sto esaurendo i pin su un Arduino, a corto di acquistare un secondo o ottenere una scheda Mega, c'è un modo per connettersi di più a una scheda? Devo preoccuparmi di sovraccaricarlo?
Hai esaurito anche tutti i tuoi pin analogici? Possono anche essere usati come input / output digitali semplicemente riferendoli ad essi come pin digitali da 14 a 19.
Dopo averli usati anche tutti potresti considerare di usare un IC del registro a scorrimento. Questi chip convertiranno i dati seriali in dati paralleli. Le versioni a 8 bit prenderanno dati seriali su tre pin e trasmetteranno dati paralleli su 8 pin, offrendoti 5 pin extra. Una spiegazione molto carina è fornita da Dave Clausen di NYC Resistor.
Esiste effettivamente la possibilità di sovraccaricare il tuo arduino. Non usando troppi pin, ma attingendo troppa corrente dai pin, collegando troppa roba ai tuoi pin. Il datasheet di Atmega168 dice che i pin hanno una corrente massima assoluta di 40mA. Questo sarebbe equivalente a due LED in parallelo. Qualunque cosa più di un LED (20mA) dovrebbe essere commutato attraverso un transistor o un array di transistor. Questo è spiegato anche nel video menzionato sopra e da Tom Igoe.
Sparkfun vende un multiplexer digitale / analogico che consente di controllare 16 pin da cinque su Arduino. È bidirezionale quindi puoi anche usarlo per l'input.
Ci sono molte opzioni per espandere il numero di input e output disponibili. Per un ingresso analogico è comune utilizzare multiplexer analogici (come 4051, disponibile come 74HC4051 e CD4051) che consentono di commutare tra 8 sorgenti analogiche utilizzando 3 linee digitali e 1 ingresso analogico.
Un'opzione comunemente utilizzata per l'IO digitale è l'aggiunta di registri a scorrimento TTL (o CMOS). I registri a scorrimento sono disponibili in due varietà principali, "serial in, parallel out" (come 74HC595) che sono utili per estendere il numero di uscite digitali del progetto e "parallel in, serial out" ( come 74HC165) che ti consente di aggiungere più ingressi digitali.
Tom Igeo ha una bella recensione su Controllo di molti output da un microcontoller
Puoi sovraccaricare l'output di Arduino provando a 'fanout' troppo lontano. Ciascun circuito integrato collegato a un'uscita assorbe corrente da quell'uscita. Se carichi molti circuiti integrati sulla stessa uscita (o set di uscite) potrebbero provare a disegnare più di quanto gli output di Arduino possono gestire. Per ovviare a questo problema puoi posizionare chip buffer non invertenti (come il 74LS07) tra alcuni circuiti integrati.
Sto giocando con questo ... http://www.neufeld.newton.ks.us/electronics/?p=241 Espansione I / O di Arduino usando I2C. Sembra davvero promettente, non sono ancora riuscito a ordinare le patatine. È anche un ottimo tutorial sull'uso di I2C.
Se si finisce per ottenere un altro microcontrollore, mi piace sanguino per almeno quattro motivi:
Arduino Mega ha più PWM pin - 14, ma non credo che li multiplexeresti.
-
* Sanguino sembra andare per $ 25, Arduino per $ 30, anche se ti servirà un cavo da $ 20 da USB a TTL se è necessario utilizzare una porta USB per programmarlo, dove Arduino ha USB integrato.
Ho scritto una libreria per controllare gli interruttori a 1 filo DS2406.
Con uno di questi, puoi usare un singolo pin per cambiare un numero molto maggiore di dispositivi. Ovviamente sarà più lento che capovolgere direttamente il pin IO e utilizzerà più memoria poiché devi indirizzare i dispositivi su quella porta (questo può essere scambiato per una maggiore velocità se lo desideri).
Se stai guidando LED, potresti considerare il charlieplexing.
Questo prodotto è un modo semplice ed economico per aggiungere pin al tuo Arduino. Esiste una libreria open source di facile utilizzo per l'accesso ai nuovi pin: