Arduino ejemplos: Lectura analógica y led PWM

Muy buenas a todos!!!
Muchos de los sensores que utilizamos para Arduino son sensores analógicos como potenciómetros, fotoresistencias, etc.

Para esto Arduino utiliza unos pines específicos, que van desde el A0 al A5 en Arduino UNO y del A0 al A7 en el Arduino Nano.

El ADC:



Para poder leer correctamente los valores se utilizan 3 pines por sensor, +5V An GND.

Por si mismo Arduino es incapaz de realizar lecturas analógicas y para esta función utiliza un conversor ADC (Analog Digital Converter) que convierte la entrada analógica en una digital soportada por la lógica TTL (0 - 5V) de Arduino.

Para la lectura de las entradas analógicas Arduino Uno tiene una resolución de 10 bits, o lo que es lo mismo puede leer valores desde 0 hasta 1023. En cada paso aumentamos la lectura en 5 / 1024 = 0.00488V.


El ADC en Arduino:

Para leer una señal Analógica Arduino UNO utiliza los pines arriba descritos (del A0 al A5).
Procesaremos esta señal mediante la función analogRead() de la siguiente manera:

valor = analogRead(pin);

Donde pin sera el pin analógico que queramos y valor la variable donde guardaremos la lectura.

La variable donde guardamos la lectura del potenciómetro (valor) no la podemos aplicar directamente a la salida PWM ya que esta solo admite de 0 a 255 y con analogRead() los valores almacenados van de 0 a 1023.
Para esto tenemos que dividir entre 4 la variable valor de este modo:

valor = valor / 4 ;
o
valor /= 4;

El PWM:

PWM (Pulse Width Modulation) o modulación por ancho de pulsos es una técnica que consigue reproducir el efecto de una señal analógica en una carga. Esto lo logra con la variación de la frecuencia y el ciclo de trabajo de una señal digital.

Ciclo de trabajo: Es la cantidad de tiempo que la señal esta en estado lógico alto.
La frecuencia: es la rapidez con la que se completa un ciclo ( 50Hz = 50 ciclos por segundo)

Cuando cambiamos un señal de alto a bajo lo suficientemente rápido con ciclo de trabajo dado, la salida parecerá comportarse como una señal analógica constante y la podremos aplicar al dispositivo (por ejemplo un motor).


Ejemplo ciclos de trabajo PWM

PWM en Arduino:
Arduino UNO tiene pines específicos para este propósito y son el 3, 5, 6, 9, 10 y 11.
Para activar en uno de estos pines la función PWM usaremos: analogWrite().

analogWrite(pin, valor);

Donde pin sera el pin que queramos para este propósito y valor el ciclo de trabajo (0-255).

analogWrite() no necesita llamar a pinMode() en el setup para establecer el pin como salida ya que esta función no tiene nada que ver con los pines analógicos o la función analogRead().

Ejemplo esquema analogRead analogWrite

Esquema analogRead() analogWrite()

Programa:
int led = 10; // define el pin 10 como led
int analog = 0; // define el pin 0 como analog
int valor; // define la variable valor

void setup(){} // no es necesario configurar
// entradas y salidas

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, value); // escribe en el pin 10 valor
}

Espero que les ayude a comprender el funcionamiento de las funciones analogRead() y analogWrite(). Saludos!!!

Fuentes:
Arduino Playground
digital.ni.com
Fuente: este post proviene de InfotronikBlog, donde puedes consultar el contenido original.
¿Vulnera este post tus derechos? Pincha aquí.
Creado:
¿Qué te ha parecido esta idea?

Esta idea proviene de:

Y estas son sus últimas ideas publicadas:

Buenas a todos!!! Esta publicación va con un poco de retraso... ya tenía la Raspberry Pi 2 desde hacia bastante tiempo, pero como la tenia en otros usos y no he podido hacerle una entrada en condicion ...

Recomendamos

Relacionado

Arduino Ejemplos i2C ...

Buenas a todos!!! Si ya vimos antes como utilizar un LCD 16x02, Arduino: El LCD 16x2 y Arduino: Diferentes efectos en un LCD 16x2 directamente conectando a Arduino usando en total un mínimo de 6 líneas, esto puede que no sea un problema si tú proyecto no utiliza muchos sensores, pero si es necesario usar el máximo de pines disponibles existe una solución que puedes usar, el módulo i2c para LCD. Co ...

Tutoriales arduino robótica

Arduino es una plataforma de desarrollo de software y hardware libres que incorpora un microcontrolador re-programable y una serie de pines hembra, los que permiten establecer conexiones entre el microcontrolador y los diferentes sensores y actuadores de una manera muy sencilla. ¿Por qué usar Arduino? Arduino es libre y extensible: esto quiere decir que cualquiera que desee ampliar y mejorar el di ...

Aplicaciones Arduino Ejemplos ...

Buenas a todos otra vez!!! Esta semana he estado trasteando con la comunicación infrarroja o IR (Infra Red). Este tipo de comunicación es unidireccional, es decir, la comunicación se efectúa en un solo sentido. Casi todos los controles remoto de TV, reproductores de DVD, incluso el mando del aire acondicionado funcionan con este sistema. ¿Que es la luz infrarroja? La luz infrarroja o radiación inf ...