sensore

annuncio pubblicitario
ARDUINO
Course
http://ieeessb.unisalento.it
RICHIAMI
http://ieeessb.unisalento.it
Arduino UNO
Reset
14 PIN di
input/output
digitali
Porta USB
Microcontrollore
ATmega328
Connettore
alimentazione
9V
6 PIN di input
analogici
Power PIN
http://ieeessb.unisalento.it
Breadboard
LED
Simbolo grafico
Come
distinguere
l’anodo dal
catodo
Resistenza
Collegamento
I = 20mA
Vo = 1,5V
Vs = 5V
Rs= (Vs-Vo)/I=
=175Ω180 Ω
Resistenze e Codice dei Colori
Serial Monitor
E’ uno strumento che permette di visualizzare i
dati provenienti dalla board Arduino e i dati che
verranno comunicati per via seriale alla board.
In particolare per comunicare con la nostra board
attraverso la porta seriale si può scrivere del testo
(che si può visualizzare sul Serial Monitor ) e poi
premere invio.
Per utilizzare Il Serial monitor è necessario
inizializzarlo nel void setup ( ) con la funzione
Serial.begin(baud rate), indicando il baud rate con
il quale comunicare con il nostro Arduino.
http://ieeessb.unisalento.it
Struttura di uno Sketch
Void setup()
Inizializzare i pin da utilizzare con la funzione
• pinMode(# pin, funzione);
//funzione= {INPUT, OUTPUT}
Inizializzare la comunicazione Seriale con la funzione
• Serial.begin(baudrate);
//baudrate= {4800, 9600, 14400, 19200, 28800, 38400,
57600, 115200}
http://ieeessb.unisalento.it
Struttura di uno Sketch
Void loop()
Funzioni da far eseguire ad ARDUINO
• digitalWrite(# pin, valore);
//valore= {HIGH (oppure 1) , LOW (oppure 0)}
• digitalRead(# pin);
• delay(tempo di attesa);
//tempo di attesa espresso in ms
• Serial.println(valore);
//valore può essere una stringa o un valore che vogliamo
//visualizzare sul monitor
//per stampare una stinga è necessario scriverla tra virgolette
//esempio: Serial.println(«Stringa da visualizzare»)
http://ieeessb.unisalento.it
Struttura di uno Sketch
Void loop()
Controlli da far eseguire ad ARDUINO
• if(condizione da verificare){
istruzioni da eseguire;
//digitalWrite() , digitalRead(), ecc.
};
/*Controlla che una condizione si sia verificata
La condizione si esprime con la seguente sintassi:
variabile < valore variabile > valore variabile == valore
variabile <= valore variabile>=valore */
http://ieeessb.unisalento.it
Esempio:
Accendere un LED da tastiera
http://ieeessb.unisalento.it
Codice
http://ieeessb.unisalento.it
Circuito
SENSORI
http://ieeessb.unisalento.it
Definizione
Il sensore è un trasduttore (dispositivo che mette in
relazione due grandezze fisiche appartenenti a
sistemi energetici differenti) che si trova in diretta
interazione con il sistema misurato. Ed è, in ambito
strettamente metrologico, riferito solamente al
componente che fisicamente effettua la
trasformazione della grandezza d'ingresso in un
segnale di altra natura.
Schema a blocchi di un sistema di
misura
Grandezza
fisica da
misurare
INGRESSO
Sensore
Grandezza
elettrica
Circuito di
elaborazione
Grandezza
elettrica da
acquisire
USCITA
Proprietà e parametri dei Sensori
• Accuratezza: indica quanto la misura si avvicina
al valore vero da misurare. Una causa di
mancanza di accuratezza è dovuta agli errori
sistematici. Una soluzione può essere la
calibrazione periodica del sensore.
• Precisione: capacità di fornire il stesso valore in
uscita con identiche situazioni in ingresso (in
istanti temporali differenti). La precisione
dipende da errori casuali, dovuti a variabili
incontrollate.
Proprietà e parametri dei Sensori
Esempio di misure con diverse accuratezze e
precisioni
Proprietà e parametri dei Sensori
Caratteristiche dinamiche
descrivono il comportamento del sensore durante il
periodo transitorio. Questo è dovuto al fatto che la
risposta di un sensore non è istantanea.
Proprietà e parametri dei Sensori
• Tempo di risposta: tempo necessario affinché
l’uscita del sensore si porti al 95% del valore
finale, a fronte di un ingresso a gradino.
• Costante di tempo (τ): misura la velocità di
risposta del sensore, o meglio il tempo che
impiega l’uscita a raggiungere il 63% del valore
finale.
• Tempo di salita: è il tempo che occorre al
sensore per portare l’uscita dal 10% al 90% del
valore finale.
Potenziometro
http://ieeessb.unisalento.it
Composizione
Potenziometro a giro singolo
Schema elettrico
Vi
Vi
Acquisizione e Visualizzazione su Serial
Monitor di un segnale analogico
Codice
Circuito
Accendere un LED se il segnale
analogico in ingresso supera una
determinata soglia
Codice
Circuito
Accensione graduale di un LED
Problema
Per accendere un led in maniera graduale o per
pilotare un motore con differenti velocità abbiamo
bisogno di fornire al nostro carico una tensione
analogica, ossia che assuma dei valori compresi 0V
e 5V .
Il nostro Arduino però, a parte il blocco di
acquisizione di segnali analogici, lavora nel dominio
digitale e i pin di output sono anch’essi digitali.
Soluzione
Il nostro Arduino emula un’uscita analogica da
alcuni dei suoi pin di uscita digitali avvalendosi della
modulazione PWM (Pulse Width Modulation)
a 8 bit.
PWM
Il PWM prevede la generazione di un segnale ad
onda quadra, cioè un segnale che assume
comunque solo due valori di tensione 0V e 5V
(quindi siamo ancora nel dominio digitale), e la
modulazione del duty cycle.
PWM
Il duty cycle è definito come il rapporto tra il tempo
durante il quale il segnale assume un livello alto
(5V), che chiamiamo Ta, e l’intero periodo.
Quindi questa modulazione va ad agire sul tempo
Ta, e quindi sulla larghezza dell’impulso. Se si fa la
media del segnale su tutto il periodo otteniamo un
valore di tensione analogico, cioè compreso tra 0V e
5V.
PWM on Arduino
Il nostro Arduino ha i pin 3, 5, 6, 9, 10, 11, di
input/output digitale contrassegnati dalla sigla
PWM. In particolare fornisce in uscita un segnale
PWM a 490Hz, (tranne che per i pin 5 e 6 dove il
segnale PWM di uscita ha una frequenza di 980Hz).
Il fatto che l’implementazione del PWM utilizzata
sia ad 8 bit significa che possiamo assegnare
2^8=256 valori differenti di duty cycle, e che quindi
siamo in grado di fornire in uscita una tensione
analogica che può assumere 256 valori (quindi con
una risoluzione di 5V/256=20mV)
analogWrite(#pin, duty cycle)
Andiamo ad agire sui pin di uscita che
supportano il PWM attraverso la funzione
analogWrite(#pin, duty cycle), che accetta come
argomento il numero del pin sul quale agire e il
duty cycle, espresso con un valore compreso tra
0 e 255, che andrà a determinare il valore di
tensione analogica.
Esempi di applicazione del PWM
map(value, fromLow, fromHigh, toLow,
toHigh)
Noi vorremmo andare a comandare la nostra uscita
«analogica» in base ai valori letti dal potenziometro
(o da qualsiasi altro sensore).
Problema: I valori letti dal sensore vanno da 0 a
1023, invece i valori che l’argomento della funzione
analogWrite() accetta come duty cycle vanno da 0 a
255
Soluzione: si utilizza la funzione map(), che va a
mappare un valore appartenente ad un range (da 0
a 1023) in un altro range (da 0 a 255)
Codice
Circuito
BAR LED
Accensione di 3 LED in base al livello
del segnale in ingresso
http://ieeessb.unisalento.it
Codice
Circuito
Sensore di Temperatura
LM35
http://ieeessb.unisalento.it
Caratteristiche tecniche
•
•
•
•
•
Calibrato in °Celsius
Lineare con scale-factor +10mV/°C
Accuratezza assicurata a 25°C di 0,5°C
Pensato per misure nel range da -55°C a 155°C
Tensione operativa da 4V a 30V
Collegamento alla circuiteria
Pedinatura
Lettura Temperatura da Serial Monitor
Vs = 5V
Scale-factor = +10mV/°C
Vout = (Vs*A0)/1023
Temperatura= Vout/10mV
Codice
Circuito
Accensione di un led quando la
Temperatura è superiore a 28°C
Codice
Miglioramento della risoluzione
Obiettivo: diminuzione del range di valori sui quali
effetuare la conversione A/D
• analogReference(type);
//type= {DEFAULT(5V), INTERNAL(1.1V), EXTERNAL(AREF)}
Codice
DHT 11
Sensore di Temperatura e
Umidità digitale
http://ieeessb.unisalento.it
Composizione
• Sensore di umidità di tipo resistivo
• Sensore di tipo NTC
• Memoria di tipo OTP (One Time
Programmable)
• Componenti per la gestione della
comunicazione con il micro-controllore
Specifiche tecniche
Schema elettrico
di una tipica applicazione
Si utilizza una resistenza di pull-up da 5KΩ , per garantire che gli ingressi logici dei
due sistemi siano a livelli previsti anche se uno dei due sia scollegato o nello stato di
alta impedenza
Processo di comunicazione:
Serial interface Single-Wire Two-Way
Data Format:
•
•
•
•
•
8 bit Parte intera della misura dell’Umidità Relativa (RH)
8 bit Parte decimale della misura dell’RH
8 bit Parte intera della misura della Temperatura (T)
8 bit Parte decimale della misura di T
8 bit Checksum
Processo di comunicazione
1. La MCU (Micro-Controller Unit) invia un
segnale di start al DHT11
2. Il DHT11 passa dalla fase di stand-by alla fase
operativa e attende che l’MCU termini con
l’invio del segnale di start
3. Il DHT11 invia il segnale dati di 40 bit all’MCU
4. Il DHT passa alla fase di stand-by
Lettura dei valori di Temperatura e
Umidità e visualizzazione su
Serial Monitor
Aggiungere la libreria DHT.h
Una libreria è un set di funzioni che facilità l’interfacciamento
dei sensori ad Arduino.
Le librerie sono solitamente distribuite in dei file .zip.
Per l’installazione non decompattare i file .zip.
Dall’Arduino Development Environment seguire il seguente
percorso:
Sketch->Importa Libreria->Add Library…
Scegliere successivamente il file .zip contenente la libreria di
interesse.
Proseguire con:
Sketch->Importa Libreria->DHT
Chiudere l’IDE e riavviarlo.
Aggiungere la libreria DHT.h
1° Step
2° Step
Codice
Codice
Codice
Circuito
Lettura dei valori di Temperatura
e Umidità
Accensione di un LED rosso e di un LED
verde rispettivamente se la
temperatura è inferiore o superiore ad
una soglia
http://ieeessb.unisalento.it
Codice
Codice
Codice
Circuito
HC-SR04
Sensore di distanza ad ultrasuoni
http://ieeessb.unisalento.it
Principio di funzionamento
Questo sensore genera un’onda meccanica ad
ultrasuoni che andando ad incidere sul bersaglio di
cui si vuole misurare la distanza viene riflessa e
ritorna al sensore dopo un determinato periodo di
tempo denominato tempo di volo. Nota la velocità
di propagazione del suono nell’aria (340m/s) e noto
il tempo di volo, la distanza del target si calcola
dalla seguente relazione:
Distanza=Velocità*Tempo di volo
Parametri Elettrici
Rangeability: 2cm-400cm
Accuracy: 3mm
Caratteristiche fisiche
E’ costituito da 4 pin:
• Pin1: VCC (+5V)
• Pin2: Trigger (pin di
input)
• Pin3: Echo (pin di
output)
• Pin4: GND
Misura della distanza di un oggetto e
visualizzazione su Serial Monitor
Procedura di misura
La misura con questo sensore avviene seguendo i seguenti
step:
1.
Attivazione del sensore: inviamo attraverso il nostro
Arduino un impulso della durata di 10 μs all’ingresso
Trigger del sensore;
2.
Fase di misura 1: Il sensore invia un 8 impulsi alla
frequenza di 40kHz;
3.
Fase di misura 2: il sensore quando ha finito di
inviare treno di impulsi ad ultrasuoni, invia attraverso
il pin di output Echo un impulso di larghezza pari alla
durata del tempo di volo;
4.
Calcolo della distanza.
Diagramma temporale
Codice
Circuito
Scarica