LECTURES EN SENYAL ANALÒGIC

Com has après anteriorment, els senyals digitals només tenen dos estats oposats: 1 o 0. Si prems un botó, el seu estat canviarà de l’un a l’altre. Un LED està encès o apagat.

Ara bé: el món real no és digital. L’aigua, per exemple, no només pot estar calenta o freda; també pot estar tèbia. Per poder mesurar això i altres coses del món real, no podem utilitzar només senyals digitals. Enlloc d’això, farem servir senyals analògics.

En comptes de 2 estats oposats, els senyals analògics tenen nivells continus. D’aquesta manera, per exemple, si tens un sensor de llum pots obtenir molts valors diferents que expressin com està il·luminada una habitació i no només si està clara/fosca. Per posar un altre exemple: un termòmetre et diu la temperatura mitjançant un número, enlloc de dir-te només freda/calenta.

Amb l’Arduino pots obtenir els valors analògics amb els pins analògics. Sobre la placa pots veure un grup de pins marcats com a analog in, que porten el nom d’A0 a A5. Quan se’ls aplica tensió, reporten valors d’entre 0 i 1023; d’aquesta manera, quan no hi ha voltatge en un pin, la lectura és 0. Si els apliques 5V, la lectura serà 1023. Amb una entrada de 2.5V, obtindràs 512. Per llegir aquests valors des d’un Pin analògic has d’utilitzar la funció analogRead(), enlloc de digitalRead().

Per seguir explicant els senyals analògics, necessitem introduir el potenciòmetre.

EL POTENCIÒMETRE

Un potenciòmetre és un control que funciona mitjançant el gir d’un braç. Per exemple, el regulador de volum d’un estèreo és un potenciòmetre. Amb dos Pins exteriors al potenciòmetre, connectats a GND i 5V respectivament, pots utilitzar el potenciòmetre per controlar la quantitat de tensió que vols que hi hagi al Pin central, sempre dins el rang de 0V a 5V.

Els potenciòmetres són resistències que tenen un mecanisme per variar el seu valor. En aquest cas el nostre potenciòmetre pot prendre valors de 0 a 10kΩ.

Hi ha molts tipus de potenciòmetres, però tots ells tenen 3 pins en fila.

  • Els dels extrems es comporten com una resistència amb el valor màxim del potenciòmetre.
  • El pin central ens permet prendre valors de resistència en funció de l'ajust que li fem.
  • En ser resistències, no tenen polaritat, és igual quin dels seus pins dels extrems usem com a positiu i quin com a negatiu. 

Connexió:

Per comprendre el funcionament del potenciòmetre muntarem un circuit compost pel potenciòmetre , 1 LED i una resistència de la següent manera:

Els potenciòmetres tenen tres terminals: els dos terminals extrems es connecten a 5V i a GND. El central, a un pin d'entrada analògica.

  • Si el potenciòmetre està al valor màxim, la resistència a la branca del LED serà molt gran i no s'il·luminarà.
  • Si la resistència del potenciòmetre està ajustada a 0Ω, el LED s'il·luminarà al màxim. Si no tinguéssim connectada l'altra resistència de limitació al LED, el cremaríem.
  • Per ajustos de valors intermedis en la resistència del potenciòmetre, el LED s'il·luminarà amb més o menys força.
  • En realitat com estem fent servir una resistència de valor molt alt, costarà una mica que el LED comenci a il·luminar-se. 

 

Utilitzant el potenciòmetre amb Arduino

A la placa Arduino UN tenim 6 pins analògics, des A0 fins A5 i el seu ús comú és la lectura de dades de dispositius analògics com és el cas del potenciòmetre. Tenen una resolució de 10 bits el que implica que tenim  1024 valors diferents , és a dir, podem llegir un rang de tensions des 0V fins 5V detectant canvis de voltatge de 0.004V (5/1024). Pel que els valors que obtindrem aniran des de 0 fins 1023.

I com que la millor manera d'entendre una cosa són els exemples, vam començar amb un que mitjançant el monitor sèrie podrem anar veient que valors anem obtenint en un pin analògic segons anem modificant la posició del potenciòmetre.

En el següent esquema et mostro la connexió.

Com es programa

La instrucció analogRead(pin); permet llegir el valor de qualsevol sensor connectat a una entrada analògica, entre 0 (0V) i 1024 (5V).

 

Pots trobar una nova ordre:

  • analogRead (pinNumber): Aquesta ordre agafa la lectura d’un pin analògic especificat per la variable pinNumber, que pot ser des d’A0 fins a A5. El valor llegit variarà entre 0 (0V) i 1023 (5V).
  • Els pins analògics només es poden utilitzar com a entrades, per la qual cosa no és necessari declarar el pin mode al setup.

el codi

I el codi que has de carregar a la placa és el següent.

//Variable donde almacenaremos el valor del potenciometro
long valor;
 
void setup() {
  //Inicializamos la comunicación serial
  Serial.begin(9600);
  
  //Escribimos por el monitor serie mensaje de inicio
  Serial.println("Inicio de sketch - valores del potenciometro");
 
}
 
void loop() {
  // leemos del pin A0 valor
  valor = analogRead(A0);
 
  //Imprimimos por el monitor serie
  Serial.print("El valor es = ");
  Serial.println(valor);
  delay(1000);
 
}

Un cop hagis pujat el codi del potenciòmetre a la placa, obre el monitor sèrie. La sortida dependrà on la posició del potenciòmetre, veus girant la roda i veuràs com el valor es va modificant.


En un extrem, la resistència serà mínima i deixarà passar els 5 V (valor analògic de 1023), i en un altre extrem la resistència serà màxima i deixarà passar 0 V (valor analògic de 0).

Encenent LEDs amb un potenciòmetre

Anem amb el segon exemple, ara anem afegir 4 LEDs al nostre circuit. Així segons anem modificant la posició del potenciòmetre anirem encenent un LED o un altre. Munta el cirucito del següent esquema

Hem vist que podem llegir 1024 valors diferents, des de 0 fins a 1023. Si dividim entre 4 aquest rang i assignem un rang a cada LED, podrem controlar que LED encendre depenent del valor a l'entrada del pin analògic.

Els rangs de valors que tenim són els següents:

  • De 0 a 255, encendre LED 1
  • De 256 a 511, encendre LED 2
  • De 512 a 767, encendre LED 3
  • De 768 a 1023, encendre LED 4

Ara, segons el potenciòmetre estigui variant l'entrada analògica, podrem encendre un LED o un altre. Això ho anem a programar a través de diversos if niats.

el codi

Utilitzarem la propietat del potenciòmetre de resistència variable per encendre un o altre LED. Farem un seguit de if per determinar que LED encendre i apagar els altres, segons el valor que obtinguem a l'entrada del pin analògic. El codi seria el següent.

//Variable donde almacenaremos el valor del potenciometro

long valor;
 
//Declaramos los pins de los LEDs
int LED_1 = 2;
int LED_2 = 3;
int LED_3 = 4;
int LED_4 = 5;
 
void setup() {
  //Inicializamos la comunicación serial
  Serial.begin(9600);
  
  //Escribimos por el monitor serie mensaje de inicio
  Serial.println("Inicio de sketch - valores del potenciometro");
}
 
void loop() {
  // leemos del pin A0 valor
  valor = analogRead(A0);
 
  //Imprimimos por el monitor serie
  Serial.print("El valor es = ");
  Serial.println(valor);
 
  if(valor >= 0 && valor <=255)
  {
      digitalWrite(LED_1, HIGH);
      digitalWrite(LED_2, LOW);
      digitalWrite(LED_3, LOW);
      digitalWrite(LED_4, LOW);
  }
  
  if (valor >= 256 && valor <=511)
  {
      digitalWrite(LED_1, LOW);
      digitalWrite(LED_2, HIGH);
      digitalWrite(LED_3, LOW);
      digitalWrite(LED_4, LOW);
  }
 
  if (valor >= 512 && valor <=767)
  {
      digitalWrite(LED_1, LOW);
      digitalWrite(LED_2, LOW);
      digitalWrite(LED_3, HIGH);
      digitalWrite(LED_4, LOW);
    }
 
  if (valor >= 768 && valor <=1023)
  {
      digitalWrite(LED_1, LOW);
      digitalWrite(LED_2, LOW);
      digitalWrite(LED_3, LOW);
      digitalWrite(LED_4, HIGH);
   }
}

conclusió

El potenciòmetre és un component electrònic molt utilitzat en Arduino i és convenient saber com s'utilitza. En aquest article t'he mostrat el seu ús bàsic. Intenta practicar amb més exemples i familiaritzar-te amb aquest component.

Darrera modificació: dijous, 3 de novembre 2022, 09:23