Cerca

modulo attività

modulo tecnica

Utilizzare i sensori con Arduino/Genuino

I sensori sono componenti elettronici che producono una tensione che dipende da un fenomeno fisico (posizione, angolo, temperatura, luce, suono, pressione, concentrazione ....

Con i sensori i circuiti elettronici possono essere messi in grado di modificare il proprio funzonamento in base ad un fenomeno fisico.

La scheda Arduino ha ingressi analogici e digitali che sono previsti per essere collegati a dei sensori in modo che i software possa tenere conto dei valori che assumono le grandezze fisiche e agire di conseguenza come previsto dal programmatore.

Un ampia spiegazione si trova a questo link.

I questo articolo si trattano questioni d'uso dei sensori binari.

Ingressi digitali  binari di Arduino e sensori.

Tutti i pin digitali, dal pin 0 al pin 13 possono funzionare da ingresso digitale binario, basta assegnargli questa funzione con l'istruzione

// initialize the pushbutton pin as an input:
pinMode(numPin, INPUT);

Uso degli ingressi digitali

Un ingresso digitale consente di rilevare solo due valori:

alto/basso

zero/uno

vero/falso

Dal punto di vista elettrico significa che il valore della tensione in ingresso viene interpretato come “alto” se la tensione è prossima a 5V (la tensione di alimentazione della scheda Arduino) e “basso” se la tensione è prossima a 0v (GND, Ground o massa).

Dal punto di vista semantico, solitamente nei test logici, al valore "alto" corrisponde "vero" al valore "basso" corrisponde "falso".

SD input digit diretto

Un modo immediato di produrre un segnale digitale in ingresso consiste nel connettere con un filo un pin di ingresso digitale con 5V per avere “vero” o con GND per avere “falso”. Nella figura a destra il pin 7 è a GND (falso) ed il pin 8 è a 5V (vero).

Meglio farlo con una resistenza di valore piuttosto elevato, 10kΩ va bene, in modo da non correre rischi nel caso avessimo posto il pin come uscita digitale. Nella figura il pin 5 va a GND tramite una resistenza da 10kΩ.

L'uscita del sensore digitale deve essere accoppiata all'ingresso digitale della scheda Arduino con le seguenti precauzioni:

- dato che la scheda Arduino Uno viene alimentata a 5V non si devono avere tensioni agli ingressi digitali inferiori a 0V e superiori a 5V;

- l'impedenza di uscita del sensore può essere molto elevata in quanto l'ingresso digitale non assorbe praticamente corrente avendo un'impedenza di ingresso con valori intorno a 100 - 200MΩ (argomento trattato qui)


Sensori digitali con contatti.

Spesso si usano sensori digitali costituiti da contatti, sia normalmente aperti (na) che normalmente chiusi (nc), che fanno parte di dispositivi elettromeccanici come pulsanti, interruttori, microcontatti a goccia di mercurio, fine corsa ...

Il modo corretto di realizzare l'accoppiamento tra uscita del sensore e ingresso di Arduino consiste nel collegare il contatto in serie ad una resistenza di valore elevato, valori da 10kΩ a 100kΩ vanno bene (nota 1), e portare la tensione del punto di mezzo all'ingresso digitale di Arduino.

Sono possibili due configurazioni dette di pull-up o di pull-down (o anche push-down) con riferimento alla funzione del resistore (per ripassare vedi qui).

 

Come si implementa la funzione logica 

  • La scheda Arduino deve essere istruita per andare a “leggere” (vedere) lo stato (la posizione) del pulsante, assegnarne il valore ad una variabile inserendo dentro il loop le istruzioni di acquisizione del segnale sulla porta (vedi http://www.arduino.cc/en/Tutorial/Button)

void loop() {

// leggere lo stato del pin numero "buttonPin" -- fin qui il segnale è sulla parte hardware della scheda

// assegnarne il valore alla variabile "buttonState" -- qui il valore entra nel software come dato che il programma può utilizzare

buttonState = digitalRead(buttonPin);

.......

//istruzioni che utlizzano il valore di buttonState

}

In questo modo il software può utilizzare lo stato del contatto.

Alcuni esempi:

Michele Maffucci: link

Antonio Mancuso: link

Mauro Alfieri: link

 

Ovvamente i sensori digitali si possono anche usare con S4A.

Un elenco di sensori per Arduino lo trovi nel blog di Antonio Mancuso.

Note

nota 1: da dove viene questo valore? Valori bassi producono correnti elevate che in questo caso caricano inutilmente l'alimentatore, valori molto alti, prossimi al valore dell'impedenza di ingresso