lunes, 22 de septiembre de 2014

Entrada y Salida Analógica en el Arduino

ENTRADA ANÄLOGA:

El  microcontrolador del arduino Uno dispone de un conversor análogo digital de 10 bits, que permite leer valores analógicos desde 0 hasta 5 voltios, como por ejemplo a través de un potenciómetro o un sensor de temperatura o de una fotoresistencia, que se convertirán en valores dentro del rango desde 0 hasta 1023.



Se puede utilizar un potenciómetro para controlar el tiempo de parpadeo de un Led.

Veamos el programa en Arduino:

int potPin = 0;        // pin de entrada análoga para potenciómetro
int ledPin = 10;      //  pin de salida para el Led

void setup ( )
{
     pinMode (ledPin,OUTPUT);  // se declara ledPin como salida
}

void loop ( )
{
     digitalWrite (ledPin, HIGH);  // coloca 5 voltios en el Led encendiendolo
     delay (analogRead (potPin);  // retardo de acuerdo al valor leido en el potenciometro
      digitalWrite (ledPin, LOW);  // coloca 0 voltios en el Led apagándolo
     delay (analogRead (potPin);  // retardo de acuerdo al valor leido en el potenciometro
}

Observe que el pin de entrada análoga no hubo necesidad de declararlo en el void setup ( ). 

De acuerdo al esquema el voltaje análogo leido en el potenciómetro va por el pin 0 de entradas análogas del arduino al conversor análogo digital ADC de 10 bits. La salida binaria 0000000000 corresponde a 0 voltios, y los 10 unos: 1111111111 corresponde a los 5 voltios. La salida binaria del ADC se convierte a decimal, y esos valores desde el 0 hasta el 1023 son los que corresponden al retardo del Led en milisegundos, o sea el máximo retardo corresponde a 1023 milisegundos.

SALIDA ANÁLOGA:

Algunos arduinos poseen  conversores  DAC , entrada digital, salida análoga, de tal manera que la salida análoga  AnalogWrite es verdaderamente análoga, desde 0 hasta 5 voltios.

Pero para el arduino UNO la salida analógica es emulada a través del procedimiento PWM.
En el arduino UNO, el microcontrolador ATmega168 permite habilitar como salidas analógicas tipo PWM los pines 3,5,6,9,10 y 11. 

El valor que se puede enviar a estos pines de salida analógica puede darse en forma de variable o constante pero siempre dentro del arango del 0 al 255.

analogWrite(pin,valor);     // escribe 'valor'  en el 'pin' definido como analógico.

El siguiente ejemplo lee un valor analógico de un pin de entrada analógica, convierte el valor dividiendolo por 4 (debido a que 255 es aproximadamente la cuarta parte de 1023), y envía el nuevo valor convertido a una salida de tipo PWM o salida analógica:

     int led = 10;      // define el pin 10 como 'led'
    int analog = 0;   //  define el apin A0 como 'analog'
    int valor;           //  define la variable 'valor' 

   void setup ( ) {
    pinMode (led,OUTPUT);  }   //se declara el pin 10 como salida, la entrada no es necesaria por ser                                                                analoga

   void   loop  ( ) 
   {
    valor = analogRead (analog);   // lee el pin 0 y lo asocia a la variable 'valor'
    valor /= 4;      // divide 'valor' entre 4 y lo reasigna a 'valor';
    analogWrite (led, valor);  // escribe en el pin 0 valor


    


No hay comentarios:

Publicar un comentario