Domanda:
Come collegare più di 10 sensori ad Arduino uno r3
Mr. Robot
2014-06-06 00:06:41 UTC
view on stackexchange narkive permalink

Come posso collegare più di 10 sensori ad Arduino Uno R3? L'ho calcolato e posso collegare solo 4 sensori di fiamma (sensori che possono trovare un fuoco (una candela, per esempio)) e forse 1 sensore a ultrasuoni. Ho bisogno di più per il mio progetto. Ho bisogno di un sensore IR, un sensore di fiamma antincendio su ogni lato e 1 sensore a ultrasuoni davanti. Inoltre, devo collegare 2 motori CC, 1 ventola e 1 servomotore per il sensore a ultrasuoni. Come posso risolvere questo? Devo acquistare Arduino Mega?

Crea un bus con protocollo e alcuni dispositivi bus :)
E se non vuoi fare un bus: conta i pin / protocolli che devi usare. Crea un bel diagramma. E giudicare i tuoi requisiti
Per favore, vuoi sapere come leggere la registrazione su un computer. Sono un principiante
sai come risolvere il problema suddetto con il multiplexer TCA9548A?
Quattro risposte:
#1
+7
Dariusz
2014-06-08 16:07:37 UTC
view on stackexchange narkive permalink

Puoi facilmente aumentare il numero di pin I / O utilizzando un expander, ad es. PCF8574. L'espansione può essere collegata utilizzando i pin SCL / SDA situati accanto ai pin GND / AREF. (Qui puoi trovare foto dettagliate: http://forum.arduino.cc/index.php?topic=84190.0) Puoi collegare fino a 8 espansori di questo tipo per estendere il numero dei tuoi pin digitali a 64.
Dopo averlo collegato, ecco uno snippet di codice su come usarlo:

  #include <PCF8574.h> // libreria disponibile all'indirizzo: https://github.com/skywodd/pcf8574_arduino_libraryvoid setup () {sensori PCF8574; sensori.begin (0x20); // 0x20 significa che hai collegato i pin A0, A1, A2 di PCF8574 ai sensori di terra.pinMode (0, INPUT_PULLUP); sensori.pinMode (1, INPUT_PULLUP); /*...*/} void loop () {byte sensorValue = sensori.digitalRead (0); // legge il valore digitale del primo sensore collegato al pin 0 dell'espansore PCF8574 /*...*/}

Puoi leggere di più con questo tutorial (nota : stanno usando un'interfaccia cablata, quindi il codice sarà diverso. Scegli quello che preferisci).

#2
+2
ryeager
2014-06-06 03:48:03 UTC
view on stackexchange narkive permalink

Non consiglierei il multiplexing, ma sono d'accordo sul fatto che un modo sia aggiungere un secondo MCU.

Un'altra opzione migliore è usare uno shift register a N bit. Questi sono piccoli circuiti integrati che sono esattamente ciò che il nome implica: registri a scorrimento e sono molto più facili da configurare e interfacciare che sprecare un intero altro microcontrollore per aggiungere I / O o multiplexing (che limita la tua applicazione). Effettivamente si sposta nelle impostazioni I / O desiderate e quindi si possono bloccare quei registri quando è stata caricata la corretta sequenza I / O nel registro. In altre parole, se volessi avere 8 nuovi pin I / O, potrei collegare un registro a scorrimento a 8 bit al mio MCU e se volessi 4 dei primi pin ALTI e gli ultimi 4 bassi, dovrei spostarmi in 00001111b, quindi bloccare i dati in modo che appaiano sull'uscita proprio come se fosse un normale pin I / O sull'MCU.

Richiedono solo pochi pin per farli funzionare (quindi questo è un modo semplice per aggiungere più sensori al tuo sistema. Come sempre, controlla la scheda tecnica per assicurarti che l'IC soddisfi le tue specifiche (in termini di assorbimento di corrente, voltaggio, ecc.).

Uno svantaggio è che per un registro a scorrimento a N bit, masterizzerai N cicli di clock per caricare i dati. Per la maggior parte delle applicazioni questo dovrebbe andare bene, ma vale la pena notare. Rende anche un codice leggermente più complesso (anche se sono sicuro che ci siano librerie per loro là fuori).

Nota: ho visto che hai menzionato il controllo di cose come i motori DC, ecc. Assicurati di non provare a pilotarli direttamente con i pin I / O e di utilizzare un interruttore o un transistor per controllare questi tipi di periferiche.

#3
+1
Anonymous Penguin
2014-06-06 02:50:46 UTC
view on stackexchange narkive permalink

Il Mega è il modo più semplice per ottenere molti pin è, come hai detto, il Mega. Presenta molti altri vantaggi, come più amperaggio, più memoria e più porte UART. Consiglio vivamente di fare questo percorso per un principiante, anche se ottieni un clone invece di una tavola ufficiale. Se niente di tutto ciò sarebbe un vantaggio per te, ci sono alcune cose diverse.

  • Secondo MCU. Puoi collegare un altro chip identico a quello di Uno. Questo è chiamato ATmega standalone. Sono abbastanza economici. I 2 C è il modo più semplice per collegarli, utilizzando solo due pin per ogni chip. La configurazione dipenderà dal progetto.
  • Multiplexing. C'è un modo per collegare più cose di quanti siano i pin su Arduino. Questo si chiama multiplexing . Influisce leggermente sulle prestazioni, ma per alcune applicazioni ne vale la pena. Nota: questo non funzionerà bene con le librerie o con SPI / I 2 C. Il chip 4051 sembra un chip decente. Il playground di Arduino ha un buon articolo introduttivo su questo chip..
#4
  0
Zeph
2016-03-15 14:27:59 UTC
view on stackexchange narkive permalink

Esistono diversi modi per ottenere più input e output, con implicazioni diverse. E dipende dai tipi di sensori e dalle librerie o dagli snippet di codice che desideri utilizzare.

La prima cosa che devi fare è elencare i sensori che desideri, insieme al tipo di interfaccia che ciascuno utilizza ; Uso un foglio di calcolo.

Ad esempio, un sensore di fiamma potrebbe utilizzare solo una singola uscita digitale (andando a un ingresso digitale su Arduino), con la soglia impostata con una pentola sul modulo. Oppure potrebbe emettere un segnale analogico che va a un ingresso analogico su Arduino, consentendo al codice di rilevare l'intensità o impostare soglie variabili senza dover spostare la pentola. Ogni approccio ha implicazioni diverse.

Ci sono ancora altre interfacce per sensori e attuatori oltre a queste due (semplici digitali e analogiche). Alcuni danno un valore variabile (come analogico) ma basato sulla temporizzazione di un impulso su un segnale digitale; ecco come funzionano i telemetri ad ultrasuoni più economici. E naturalmente ci sono sensori che utilizzano standard (I2C o SPI) o proprietari (protocollo a un filo, o sensori di umidità DHT-xx temp &).

Allo stesso modo alcune uscite avranno bisogno di PWM o altro in modo significativo, oltre il semplice on / off.

Ingressi o uscite digitali extra semplici possono essere ottenuti abbastanza facilmente con estensori I2C o con registri a scorrimento. Ad esempio, controllare un sensore di fiamma con uscita digitale o accendere una luce.

Ingressi analogici aggiuntivi possono essere eseguiti con multiplexing analogico (come un interruttore elettronico) o tramite moduli ADC esterni utilizzando I2C o SPI.

Se è necessario il tempismo, ci sono potenziali problemi maggiori. Spesso useresti una libreria per gestire queste cose.

Librerie. La maggior parte delle librerie di sensori e attuatori verrà scritta per utilizzare pin di input e output diretti su Arduino. Potresti riuscire a passare un numero pin durante l'inizializzazione, ma se stai usando un registro a scorrimento o un extender non c'è modo di dire alla libreria come usare la tua estensione personalizzata. In questo caso dovrai eseguire il rollio del nostro codice senza utilizzare la libreria, o creare una versione modificata della libreria che esegue I / O tramite il tuo hardware di estensione hardware.

Funzioni speciali dei pin. Un secondo problema sono le funzioni speciali dei pin; se la libreria o lo snippet di codice che desideri utilizzare prevede di utilizzare una funzione speciale di un pin (come un'interruzione del pin o un'acquisizione dell'input del timer), potrebbe non essere disponibile dall'hardware dell'estensione o potrebbe essere un lavoro extra da gestire. Ad esempio, alcuni extender potrebbero essere in grado di segnalare un pin di interrupt su Arduino quando uno dei loro input cambia, ma dovrai scrivere il tuo gestore di interrupt per rilevarlo e sostituire la funzionalità dell'interrupt diretto del pin.

Tempistica. E un terzo problema è che a volte i tempi stretti sono difficili da gestire tramite l'hardware di estensione.

La maggior parte di questi può essere risolta con uno sforzo appropriato, a volte facilmente ea volte no. Guarda il tuo elenco di sensori e attuatori; individuare quelli che possono essere collegati più facilmente all'hardware di estensione (come un registro a scorrimento) e quali dovrebbero essere collegati direttamente ad Arduino per semplicità o prestazioni. Potresti essere fortunato.

Raccomandazioni

1) Se riesci a gestire sensori o attuatori fantasiosi con pin diretti e coprire quelli semplici con registri a scorrimento o chip extender I2C, questa è un'opzione praticabile. Ad esempio, se il tuo codice vuole controllare occasionalmente se è stata rilevata una fiamma (versione digitale) o se vuole accendere un motore, non è così difficile passare attraverso un registro a scorrimento invece di eseguire un accesso diretto al pin.

2) Se vai oltre e finisci i pin per cose che sono molto più facili da gestire quando sono collegati direttamente, allora ti suggerisco di andare su un Mega o Mega2560, che ha più pin digitali e più ingressi analogici e più PWM uscite. La maggior parte (anche se non tutte) le librerie si adatteranno semplicemente cambiando i numeri dei pin. È molto più facile che riscrivere le librerie utilizzare pin digitali e analogici esterni.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...