Arduino · 3 novembre 2012 6

analogComp, una libreria per gestire il comparatore analogico

Oggi vi presento analogComp, una libreria che potete usare per gestire il comparatore analogico integrato nei microcontrollori Atmel.Un comparatore analogico è sostanzialmente un amplificatore operazionale utilizzato in modalità comparatore di tensione che imposta su High la sua uscita quando la tensione presente sull’ingresso non invertente supera quella presente sull’ingresso invertente. Gli ingressi possono essere due pin esterni ai quali far pervenire le tensioni da comparare.

La libreria, che supporta una buona quantità di chip, permette sia di gestire una singola comparazione sia di richiamare una funzione tramite un interrupt ogni qual volta si manifesta una particolare condizione.

Metodi ed utilizzo

Come al solito, scaricate il pacchetto presente in fondo all’articolo e scompattatelo, fatto questo copiate la cartella /analogComp che avete ottenuto all’interno della cartella /libraries contenuta nella vostra cartella degli sketch.

Per poter utilizzare la libreria, dovete prima includerla con

#include "analogComp.h"

Adesso potete impostare ciò che deve essere connesso agli ingressi invertente (AIN-) e non invertente (AIN+) del comparatore analogico. Generalmente, AIN+ è connesso al piedino AIN0 ed AIN- è connesso al piedino AIN1. AIN+ può essere anche connesso alla tensione di riferimento interna (1,1V) mentre AIN- può anche essere connesso ad uno degli ingressi analogici del microcontrollore (vedi “Microcontrollori supportati” per alcune limitazioni specifiche).

Per scegliere gli ingressi del comparatore analogico si usa il metodo setOn():

analogComparator.setOn(AIN+, AIN-);

Le scelte per AIN+ sono le seguenti:

  • AIN0: imposta il pin AIN0 come ingresso
  • INTERNAL_REFERENCE: imposta la tensione interna di riferimento come ingresso

Per AIN- potete scegliere fra le seguenti voci:

  • AIN1: imposta il pin AIN1 come ingresso
  • A0..Ax: imposta uno specifico ingresso analogico (il valore massimo dipende dal tipo di microcontrollore, se superato viene scelto il pin A0)

AIN+ e AIN- sono opzionali, nel caso in cui non fossero passati verranno selezionati AIN0 e AIN1.

Si può attivare un interrupt in modo che esso esegua una routine al verificarsi di un evento:

analogComparator.enableInterrupt(miaFunzione[, evento]);

miaFunzione è la funzione che deve essere chiamata quando si verifica l’evento. evento può essere:

  • CHANGE: quando la comparazione cambia fra AIN+>AIN- e AIN+<AIN-
  • RISING: quando la tensione su AIN+ diventa maggiore di quella su AIN-
  • FALLING: quando la tensione su AIN+ diventa minore di quella su AIN-

evento è opzionale, se non è specificato viene scelto CHANGE di default.

Si può anche disabilitare un interrupt precedentemente attivato:

analogComparator.disableInterrupt();

Si può anche attendere per un certo tempo che si verifichi la condizione che AIN+ diventi maggiore di AIN-:

analogComparator.waitComp([timeout]);

timeout è opzionale e rappresenta il numero di millisecondi da aspettare prima di ritornare al punto di chiamata (il valore di default è 5000). Questo metodo restituisce false (0) se la tensione su AIN- rimane maggiore di quella presente su AIN+ per tutto il periodo indicato da timeout; restituisce true (1) se AIN+ diventa maggiore di AIN- durante l’intervallo specificato.

Se il comparatore analogico non è stato impostato prima di chiamare il metodo waitComp, di default la liberia imposta come ingressi AIN0 e AIN1.

Per spengere il comparatore analogico e disattivare l’eventuale interrupt basta chiamare il metodo setOff():

analogComparator.setOff();

Microcontrollori supportati

Attualmente la libreria lavora con una buona quantità di microcontrollori Atmel e schede Arduino:

  • Attiny2313/4313*
  • Attiny24/44/84
  • Attiny25/45/85
  • Atmega344/644/1284
  • Atmega8
  • Atmega48/88/168/328 (Arduino UNO)
  • Atmega640/1280/1281/2560/2561 (Arduino MEGA)
  • Atmega32U4* (Arduino Leonardo)
*Limitazioni specifiche
  • Attiny2313/4313: a causa del fatto che queste MCU non hanno un ADC integrato, per AIN- è possibile selezionare solo AIN1
  • Atmega32U4: l’AIN- dell’Atmega32U4 può essere connesso solo ad un ingresso analogico a causa del fatto che esso non ha un pin AIN1.
analogComp
analogComp
analogComp_1.2.2.zip
Version: 1.2.2
162.8 KiB
4543 Downloads
Dettagli...