categorie: Circuiti a microcontrollore
Numero di visite: 18998
Commenti sull'articolo: 0
Collegamento di sensori analogici ad Arduino, lettura dei sensori
I sensori vengono utilizzati per misurare quantità, condizioni ambientali e reazioni ai cambiamenti di stati e posizioni. Alla loro uscita, possono esserci sia segnali digitali costituiti da uno e zero, sia analogici costituiti da un numero infinito di tensioni in un determinato intervallo.
A proposito di sensori
Di conseguenza, i sensori sono divisi in due gruppi:
1. Digitale.
2. Analogico.
Per leggere valori digitali, nel nostro caso è possibile utilizzare sia ingressi digitali che analogici del microcontrollore Avr sulla scheda Arduino. I sensori analogici devono essere collegati tramite un convertitore analogico-digitale (ADC). ATMEGA328, è installato nella maggior parte delle schede ARDUINO (altro su questo c'è un articolo sul sito), contiene nel suo circuito ADC incorporato. Sono disponibili fino a 6 ingressi analogici tra cui scegliere.
Se questo non è abbastanza per te, puoi utilizzare un ADC esterno aggiuntivo per connetterti agli ingressi digitali, ma ciò complicherà il codice e ne aumenterà il volume, a causa dell'aggiunta di algoritmi di elaborazione e controllo ADC. L'argomento dei convertitori da analogico a digitale è abbastanza ampio da poter creare un articolo separato o scorrere su di essi. È più facile usare una scheda con un gran numero di essi o multiplexer. Diamo un'occhiata a come collegare i sensori analogici ad Arduino.

Schema generale di sensori analogici e loro connessione
Il sensore può anche essere un potenziometro convenzionale. In realtà, è un sensore di posizione resistivo, in base a tale principio controllano il livello di liquidi, l'angolo di inclinazione, l'apertura di qualcosa. Può essere collegato ad Arduino in due modi.

Il circuito sopra ti permette di leggere valori da 0 a 1023, a causa del fatto che tutta la tensione scende sul potenziometro. Il principio di un divisore di tensione funziona qui, in qualsiasi posizione del motore, la tensione è distribuita linearmente sulla superficie dello strato resistivo o su una scala logaritmica (a seconda del potenziometro) quella parte della tensione che rimane tra l'uscita del cursore (contatto scorrevole) e la terra (gnd) arriva all'ingresso. Sulla breadboard, questa connessione è simile alla seguente:

La seconda opzione è collegata secondo lo schema del divisore resistivo classico, qui la tensione nel punto di massima resistenza del potenziometro dipende dalla resistenza del resistore superiore (nella Figura R2).

In generale, il divisore resistivo è molto importante non solo nel campo di lavoro con i microcontrollori, ma anche nell'elettronica in generale. Di seguito è riportato lo schema generale, nonché i rapporti calcolati per determinare il valore di tensione sul braccio inferiore.

Tale connessione è caratteristica non solo per un potenziometro, ma per tutti i sensori analogici, poiché la maggior parte di essi lavora sul principio del cambiamento della resistenza (conducibilità) sotto l'influenza di fonti esterne - temperatura, luce, radiazioni di vario genere, ecc.
Di seguito è riportato lo schema di collegamento più semplice termistore, in linea di principio, un termometro può essere realizzato sulla base. Ma l'accuratezza delle sue letture dipenderà dall'accuratezza della tabella di conversione della resistenza in temperatura, dalla stabilità della fonte di alimentazione e dai coefficienti di variazione della resistenza (incluso il resistore del braccio superiore) sotto l'influenza della stessa temperatura. Questo può essere minimizzato selezionando le resistenze ottimali, la loro potenza e correnti operative.

Allo stesso modo, è possibile collegare fotodiodi, fototransistor come sensore di luce. La fotoelettronica ha trovato applicazione nei sensori che determinano la distanza e la presenza di un oggetto, uno dei quali prenderemo in considerazione in seguito.

La figura mostra la connessione del fotoresistor all'Arduino.

Parte software
Prima di parlare del collegamento di sensori specifici, ho deciso di prendere in considerazione un software per elaborarli. Tutti i segnali analogici vengono letti dalle stesse porte usando il comando analogRead ().Vale la pena notare che Arduino UNO e altri modelli con 168 e 328 atmega hanno ADC a 10 bit. Ciò significa che il microcontrollore vede il segnale di ingresso come un numero compreso tra 0 e 1023, per un totale di 1024 valori. Se si considera che la tensione di alimentazione è di 5 volt, la sensibilità di ingresso:
5/1024 = 0,0048 V o 4,8 mV
Cioè, con un valore di 0 all'ingresso, la tensione è 0 e con un valore di 10 all'ingresso - 48 mV.
In alcuni casi, per convertire i valori al livello desiderato (ad esempio, per trasmettere all'uscita PWM), 1024 è diviso per un numero e come risultato della divisione, si dovrebbe ottenere il massimo richiesto. La funzione mappa (sorgente, bassa, alta, alta, alta, bassa) funziona in modo più chiaro, dove:
-
basso - numero inferiore prima della conversione per funzione;
-
vch: superiore;
-
VCh - il numero più basso dopo l'elaborazione dalla funzione (all'uscita);
-
VHV - top.
Un'applicazione pratica per convertire una funzione in un valore di input per la trasmissione in un PWM (il valore massimo è 255, per convertire i dati dall'ADC all'uscita PWM, 1024 è diviso per 4):
Opzione 1 - divisione.
int x;
x = analogRead (pot) / 4;
// verrà ricevuto un numero compreso tra 0 e 1023
// dividerlo per 4, otteniamo un numero intero compreso tra 0 e 255 analogWrite (led, x);
L'opzione 2 - la funzione MAP - apre più opportunità, ma ne parleremo più avanti.
void loop ()
{int val = analogRead (0);
val = mappa (val, 0, 1023, 0, 255);
analogWrite (led, val); }
O ancora più breve:
analogWrite (led, mappa (val, 0, 1023, 0, 255))
Non tutti i sensori hanno 5 volt all'uscita, ad es. il numero 1024 non è sempre conveniente da dividere per ottenere gli stessi 256 per il PWM (o qualsiasi altro). Può essere 2 e 2,5 volt e altri valori, quando il segnale massimo sarà, ad esempio, 500.
Sensori analogici popolari
Di seguito è mostrata una vista generale del sensore per arduino e la sua connessione:

Di solito ci sono tre uscite, ce ne può essere una quarta - digitale, ma queste sono caratteristiche.
Spiegazione della designazione delle uscite del sensore analogico:
-
G - meno potenza, bus comune, terra. Può essere designato come GND, “-";
-
V - più potenza. Può essere indicato come Vcc, Vtg, "+";
-
S - segnale di uscita, notazione possibile - Out, SGN, Vout, segno.
I principianti che imparano a leggere i valori dei sensori scelgono progetti di tutti i tipi di termometri. Tali sensori sono in progettazione digitale, ad esempio DS18B20 e in analogico: sono tutti i tipi di microcircuiti come LM35, TMP35, TMP36 e altri. Ecco un esempio del design modulare di un tale sensore sulla scheda.

La precisione del sensore è compresa tra 0,5 e 2 gradi. Costruito su un chip TMP36, come molti dei suoi analoghi, i suoi valori di uscita sono 10 mV / ° C. A 0 °, il segnale di uscita è 0 V, quindi vengono aggiunti 10 mV per 1 grado. Cioè, a 25,5 gradi la tensione è 0,255 V, è possibile una deviazione all'interno dell'errore e dell'autoriscaldamento del cristallo IC (fino a 0,1 ° C).
A seconda del microcircuito utilizzato, i campi di misurazione e le tensioni di uscita possono differire, vedere la tabella.

Tuttavia, per un termometro di alta qualità, non puoi semplicemente leggere i valori e visualizzarli sull'indicatore LCD o sulla porta seriale per la comunicazione con un PC, per la stabilità del segnale di uscita dell'intero sistema nel suo insieme, devi mediare i valori dei sensori, sia analogici che digitali, entro certi limiti, mentre senza comprometterne la velocità e la precisione (c'è un limite a tutto). Ciò è dovuto alla presenza di rumore, interferenze, contatti instabili (per sensori resistivi basati su un potenziometro, vedere malfunzionamenti dell'acqua o sensore di livello del carburante nel serbatoio dell'auto).
I codici per lavorare con la maggior parte dei sensori sono piuttosto voluminosi, quindi non li darò tutti, possono essere facilmente trovati sulla rete con la richiesta "sensore + nome Arduino".
Il sensore successivo che spesso usano gli ingegneri robotici arduino è il sensore di linea. Si basa su dispositivi fotoelettronici, tipo di fototransistor.

Con il loro aiuto, un robot che si muove lungo la linea (utilizzato nella produzione automatizzata per consegnare i pezzi) determina la presenza di una striscia bianca o nera. Sul lato destro della figura, sono visibili due dispositivi simili ai LED. Uno di questi è il LED, può emettere nello spettro invisibile e il secondo è un fototransistor.
La luce viene riflessa dalla superficie se è scura: il fototransistor non riceve un flusso riflesso, ma se la luce riceve e si apre. Gli algoritmi inseriti nel microcontrollore elaborano il segnale e determinano la correttezza e la direzione del movimento e li correggono. Il mouse ottico, che molto probabilmente tieni in mano durante la lettura di queste righe, è organizzato in modo simile.
Completerò con un sensore adiacente - un sensore di distanza di Sharp, utilizzato anche nella robotica, nonché nelle condizioni di monitoraggio della posizione degli oggetti nello spazio (con il corrispondente errore TX).

Funziona con lo stesso principio. Biblioteche ed esempi di schizzi e progetti sono disponibili in gran numero su siti dedicati ad Arduino.
conclusione
L'uso di sensori analogici è molto semplice e con il linguaggio di programmazione Arduino di facile apprendimento, apprendi rapidamente dispositivi semplici. Questo approccio presenta significativi svantaggi rispetto alle controparti digitali. Ciò è dovuto all'ampia variazione dei parametri; ciò causa problemi durante la sostituzione del sensore. Potrebbe essere necessario modificare il codice sorgente del programma.
È vero, i singoli dispositivi analogici incorporano fonti di tensione di riferimento e stabilizzatori di corrente, il che ha un effetto positivo sulla ripetibilità del prodotto finale e del dispositivo nella produzione di massa. Tutti i problemi possono essere evitati utilizzando dispositivi digitali.
I circuiti digitali in quanto tali riducono la necessità di sintonizzare e regolare il circuito dopo il montaggio. Questo ti dà l'opportunità di assemblare diversi dispositivi identici sullo stesso codice sorgente, i cui dettagli daranno gli stessi segnali, con sensori resistivi questo è raro.
Vedi anche sul nostro sito Web:Collegamento di dispositivi esterni ad Arduino
Vedi anche su electro-it.tomathouse.com
: