- Cos'è un sensore di flessione?
- Componenti richiesti
- Schema del circuito e spiegazione del funzionamento
In questo tutorial interfacciamo il sensore FLEX con il microcontrollore ATMEGA8. In ATMEGA8, utilizzeremo la funzione ADC a 10 bit (conversione da analogico a digitale) per fare questo lavoro. Ora l' ADC in ATMEGA non può accettare un input superiore a + 5V.
Cos'è un sensore di flessione?
Un sensore FLEX è un trasduttore che cambia la sua resistenza quando cambia la sua forma. È mostrato nella figura sottostante.
Questo sensore viene utilizzato per rilevare i cambiamenti nella linearità. Quindi, quando il sensore FLEX è piegato, la resistenza si piega drasticamente. Questo è mostrato nella figura sottostante.
Ora per convertire questa variazione di resistenza in variazione di tensione, utilizzeremo un circuito divisore di tensione. In questa rete resistiva abbiamo una resistenza costante e l'altra resistenza variabile. Come mostrato nella figura sotto, R1 qui è una resistenza costante e R2 è il sensore FLEX che funge da resistenza. Il punto medio del ramo viene misurato. Quando la resistenza R2 cambia, la Vout cambia con essa linearmente. Quindi con questo abbiamo una tensione che cambia con la linearità.
La cosa importante da notare qui è che l'input preso dal controller per la conversione ADC è di appena 50µAmp. Questo effetto di carico del partitore di tensione basato sulla resistenza è importante poiché la corrente assorbita da Vout del partitore di tensione aumenta la percentuale di errore, per ora non dobbiamo preoccuparci dell'effetto di carico.
Prenderemo due resistori e formeremo un circuito divisore in modo che per un 25Volt Vin, otteniamo un 5Volt Vout. Quindi tutto ciò che dobbiamo fare è moltiplicare il valore Vout per "5" nel programma per ottenere la tensione di ingresso reale.
Componenti richiesti
HARDWARE: ATMEGA8, alimentatore (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16x2LCD), condensatore 100uF, condensatore 100nF (5 pezzi), resistenza 100KΩ.
SOFTWARE: Atmel studio 6.1, progisp o flash magic.
Schema del circuito e spiegazione del funzionamento
Nel circuito PORTD di ATMEGA8 è collegato alla porta dati LCD. In 16x2 LCD ci sono 16 pin in tutto se c'è una retroilluminazione, se non c'è retroilluminazione ci saranno 14 pin. Si può alimentare o lasciare i perni della retroilluminazione. Ora nei 14 pin ci sono 8 pin dati (7-14 o D0-D7), 2 pin di alimentazione (1 & 2 o VSS & VDD o gnd & + 5v), 3 ° pin per il controllo del contrasto (VEE-controlla quanto dovrebbero essere spessi i caratteri mostrato) e 3 pin di controllo (RS & RW & E).
Nel circuito, puoi osservare che ho preso solo due pin di controllo. Il bit di contrasto e READ / WRITE non sono usati spesso, quindi possono essere cortocircuitati a massa. Questo mette l'LCD nel più alto contrasto e modalità di lettura. Abbiamo solo bisogno di controllare i pin ENABLE e RS per inviare caratteri e dati di conseguenza.
I collegamenti LCD con ATmega8 sono i seguenti:
PIN1 o VSS a terra
Alimentazione da PIN2 o VDD o VCC a + 5v
PIN3 o VEE a terra (offre il massimo contrasto migliore per un principiante)
PIN4 o RS (selezione registro) a PB0 di uC
PIN5 o RW (lettura / scrittura) a massa (mette l'LCD in modalità di lettura facilita la comunicazione per l'utente)
PIN6 o E (Abilita) a PB1 di uC
PIN7 o D0 a PD0 di uC
PIN8 o D1 a PD1 di uC
PIN9 o D2 a PD2 di uC
PIN10 o D3 a PD3 di uC
PIN11 o D4 a D4 di uC
PIN12 o D5 a PD5 di uC
PIN13 o D6 a PD6 di uC
PIN14 o D7 a PD7 di uC
Nel circuito puoi vedere che abbiamo usato la comunicazione a 8 bit (D0-D7) tuttavia questo non è obbligatorio, possiamo usare la comunicazione a 4 bit (D4-D7) ma con il programma di comunicazione a 4 bit diventa un po 'complesso quindi siamo andati con 8 bit comunicazione. (Controlla anche questo tutorial: interfaccia LCD 16x2 con microcontrollore AVR)
Quindi dalla semplice osservazione dalla tabella sopra stiamo collegando 10 pin dell'LCD al controller in cui 8 pin sono pin dati e 2 pin sono per il controllo.
La tensione ai capi di R2 non è completamente lineare; sarà rumoroso. Per filtrare il rumore, i condensatori sono posizionati su ciascun resistore nel circuito del divisore come mostrato in figura.
Il potenziometro da 1K qui serve per regolare la precisione dell'ADC. Ora parliamo dell'ADC di ATMEGA8.
In ATMEGA8, possiamo dare un ingresso analogico a uno dei QUATTRO canali di PORTC, non importa quale canale scegliamo poiché sono tutti uguali, sceglieremo il canale 0 o PIN0 di PORTC.
In ATMEGA8, l'ADC ha una risoluzione di 10 bit, quindi il controller può rilevare una variazione minima di Vref / 2 ^ 10, quindi se la tensione di riferimento è 5V otteniamo un incremento dell'uscita digitale per ogni 5/2 ^ 10 = 5mV. Quindi per ogni incremento di 5mV in ingresso avremo un incremento di uno in uscita digitale.
Ora dobbiamo impostare il registro di ADC in base ai seguenti termini, 1. Prima di tutto dobbiamo abilitare la funzione ADC in ADC.
2. Qui si otterrà una tensione di ingresso massima per la conversione ADC è + 5V. Quindi possiamo impostare il valore massimo o il riferimento dell'ADC a 5V.
3. Il controller ha una funzione di conversione del trigger che significa che la conversione dell'ADC avviene solo dopo un trigger esterno, poiché non vogliamo che sia necessario impostare i registri affinché l'ADC funzioni in modalità di esecuzione libera continua.
4. Per qualsiasi ADC, la frequenza di conversione (da valore analogico a valore digitale) e la precisione dell'uscita digitale sono inversamente proporzionali. Quindi, per una migliore precisione dell'uscita digitale, dobbiamo scegliere una frequenza inferiore. Per il normale orologio ADC stiamo impostando la prevendita dell'ADC al valore massimo (2). Dato che stiamo utilizzando l'orologio interno di 1 MHZ, l'orologio dell'ADC sarà (1000000/2).
Queste sono le uniche quattro cose che dobbiamo sapere per iniziare con ADC.
Tutte le quattro funzioni precedenti sono impostate da due registri:
ROSSO (ADEN): questo bit deve essere impostato per abilitare la funzione ADC di ATMEGA.
BLU (REFS1, REFS0): Questi due bit vengono utilizzati per impostare la tensione di riferimento (o la tensione di ingresso massima che daremo). Dato che vogliamo avere una tensione di riferimento di 5V, REFS0 dovrebbe essere impostato, dalla tabella.
GIALLO (ADFR): questo bit deve essere impostato affinché l'ADC funzioni continuamente (modalità di funzionamento libero).
ROSA (MUX0-MUX3): questi quattro bit servono per indicare il canale di ingresso. Poiché utilizzeremo ADC0 o PIN0, non è necessario impostare alcun bit come da tabella.
MARRONE (ADPS0-ADPS2): questi tre bit servono per impostare il prescalar per ADC. Dato che stiamo usando un prescalar di 2, dobbiamo impostare un bit.
VERDE SCURO (ADSC): questo bit consente all'ADC di avviare la conversione. Questo bit può essere disabilitato nel programma quando è necessario interrompere la conversione.
L'interfacciamento del sensore FLEX con ATmega8 è spiegato passo dopo passo nel codice C riportato di seguito.