Arduino: input digitali
Come gestire al meglio gli ingressi digitali con sistemi pull up e pull down
Il progetto Arduino ha permesso senza dubbi di abbattere la difficoltà di programmazione dei microcontrollori e di semplificare le conoscenze/metodologie per approccio all’elettronica, permettendo a chiunque di interagire con delle schede programmabili.
Il punto di forza di queste schede è la facilità di connessione con sensori INPUT ed attuatori OUTPUT. Questi devono essere dichiarati nel ciclo di Setup nell’algoritmo di programmazione, ma possono essere gestiti in modo diverso in base allo schema che si vuole adottare.
Un ingresso digitale, infatti, si può idealizzare con una semplice onda quadra dove vi sono solo due valori: 0V oppure 5V (presenza ed assenza di tensione/segnale). In elettronica per gestire tale sistema vengono adottati sistemi di resistori connessi in pull-up oppure in pull-down.
Considerando che gli input digitali non assorbono corrente possiamo affermare che:
PULL UP –> Interruttore aperto –> HIGH
PULL UP –> Interruttore chiuso –> LOW
PULL DOWN –> Interruttore aperto –> LOW
PULL DOWN –> Interruttore chiuso –> HIGH
Nei sistemi Arduino possiamo gestire tali condizioni con i seguenti metodi (due hardware e uno software).
1. Sistema PULL UP interno
In questa configurazione si va a gestire un resistore di pull up interno al microcontrollore, risparmiando di fatto una resistenza fisica. Essendo un sistema pull up avremo lo stato logico HIGH fino a che non verrà premuto il pulsante; se tale evento si concretizza allora avremo lo stato logico LOW. Per attivare tale funzione, nel ciclo di Setup, sarà necessario dichiarare il pin input come segue:
pinMode(nome_pin, INPUT_PULLUP);
La connessione da realizzare è indicata nel seguente disegno:
2. Sistema PULL UP esterno
In questa configurazione si va a gestire un resistore di pull up utilizzando una resistenza esterna al microcontrollore. Tale resistenza non necessita di un particolare dimensionamento, pertanto qualsiasi valore tra 10k e 100k andrà bene. Essendo un sistema pull up avremo lo stato logico HIGH fino a che non verrà premuto il pulsante; se tale evento si concretizza allora avremo lo stato logico LOW. Per gestire questo sistema, nel ciclo di Setup, sarà necessario dichiarare il pin input come segue:
pinMode(nome_pin, INPUT);
La connessione da realizzare è indicata nel seguente disegno:
3. Sistema PULL DOWN esterno
In questa configurazione si va a gestire un resistore di pull down utilizzando una resistenza esterna al microcontrollore. Tale resistenza non necessita di un particolare dimensionamento, pertanto qualsiasi valore tra 10k e 100k andrà bene. Essendo un sistema pull down avremo lo stato logico LOW fino a che non verrà premuto il pulsante; se tale evento si concretizza allora avremo lo stato logico HIGH. Per gestire questo sistema, nel ciclo di Setup, sarà necessario dichiarare il pin input come segue:
pinMode(nome_pin, INPUT);
La connessione da realizzare è indicata nel seguente disegno: