0 calificaciones0% encontró este documento útil (0 votos)
70 vistas10 páginas
Este documento describe dos proyectos con Arduino que utilizan una entrada analógica y salida PWM. En el primer proyecto, la frecuencia de parpadeo de un LED varía según el valor de un potenciómetro conectado a una entrada analógica. En el segundo proyecto, la intensidad lumínica de un LED se desvanece gradualmente según el valor de la entrada analógica, usando la salida PWM. El documento también explica conceptos como entrada analógica, potenciómetro, salida PWM y cómo programar Arduino para estos proyect
Este documento describe dos proyectos con Arduino que utilizan una entrada analógica y salida PWM. En el primer proyecto, la frecuencia de parpadeo de un LED varía según el valor de un potenciómetro conectado a una entrada analógica. En el segundo proyecto, la intensidad lumínica de un LED se desvanece gradualmente según el valor de la entrada analógica, usando la salida PWM. El documento también explica conceptos como entrada analógica, potenciómetro, salida PWM y cómo programar Arduino para estos proyect
Este documento describe dos proyectos con Arduino que utilizan una entrada analógica y salida PWM. En el primer proyecto, la frecuencia de parpadeo de un LED varía según el valor de un potenciómetro conectado a una entrada analógica. En el segundo proyecto, la intensidad lumínica de un LED se desvanece gradualmente según el valor de la entrada analógica, usando la salida PWM. El documento también explica conceptos como entrada analógica, potenciómetro, salida PWM y cómo programar Arduino para estos proyect
En este nuevo proyecto vamos a aprender utilizar las entradas analgicas de nuestro pequeo Arduino Uno para utilizarla en dos ejemplos, primero variaremos la frecuencia de parpadeo de un diodo LED con un potencimetro conectado a una entrada analgica y luego utilizaremos el mismo circuito para realizar una modulacin del ancho de un pulso en una salida digital (PWM).
Material necesario para este proyecto: 1 x Arduino Uno 1 x Diodo Led 1 x Resistencia 470 1 x Potencimetro 1K 1 x Protoboard 1 x Juego de cables
Parte 2: Diseando el Hardware En este proyecto Arduino vamos a realizar dos ejemplos con un mismo circuito, la diferencia entre ellos la observaremos es el apartado de programacin, en cuanto a hardware tenemos la novedad de este proyecto en el uso de un potencimetro combinado con una entrada analgica, as que primero aclararemos unos conceptos. Qu es un potencimetro?
Un potencimetro es una resistencia de tipo variable con tres patillas, entre las dos de sus extremos tendremos siempre una resistencia fija dada por del valor mximo de nuestro potencimetro, pero entre cualquiera de esos extremos y la patilla central obtendremos la variacin de resistencia, tenis disponible un tutorial sobre este componente AQUI. En este proyecto, vamos a utilizar el potencimetro como un divisor de tensin, primero veamos como se conecta para que esto sea posible.
Como podemos ver, debemos colocar uno de los extremos a masa, otro a +Vcc y nuestra patilla central ser nuestra tensin de salida regulable, esta salida ser la que conectemos a Arduino y que variar de 0v a 5v dependiendo de la posicin de nuestro potencimetro. Podemos ver la variacin de tensin en el siguiente video: Si estamos utilizando un Arduino Uno, las entradas analgicas vienen identificadas desde A0 hasta A5 como podemos ver en la siguiente imagen:
En cuanto a la salida, colocaremos la ya conocida configuracin de LED ms resistencia, pero deberemos tener algo en cuenta, para el primer ejemplo nos dara igual la salida digital a elegir, pero para el segundo es necesario que seleccionemos una salida con PWM, si tenis un Arduino Uno, las salidas sern la 3, 5, 6, 9, 10 y 11 como se puede ver en la siguiente imagen:
Pero.. Qu es el PWM? A menudo necesitaremos algo ms que una seal de 0 o 1 en nuestros proyectos, para variar la velocidad de giro de un motor, para variar la intensidad con la que luce un diodo, para transmitir los grados de giro de un servo, etc.. Para todo esto, y mucho ms, nos servir el PWM, que emula una seal analgica a partir de una seal digital. Las siglas PWM vienen de Pulse Width Modultation, o Modulacin de Ancho de Pulso. Lo que hace este tipo de seal es emitir, en lugar de una seal continua en nuestra salida, emite una serie de pulsos que podremos variar su duracin pero con una frecuencia constante de aproximadamente 490Hz, de manera que la tensin promedio resultante, es directamente proporcional a la duracin de estos dentro del rango de nuestro periodo, es decir, cuanto ms juntos estn esos pulsos de +5v, mayor ser la tensin promedio de nuestra salida, y cuanto ms distantes sean estos, menor ser dicha tensin:
Veamos un video del PWM en accin, observar como se corresponde la intensidad lumnica del LED con el ancho de pulso observado en el osciloscopio: La manera de controlar el nivel de salida en nuestro Arduino, la podremos ver en la seccin de programacin de este tutorial. El montaje nos quedara as en nuestra protoboard:
Aqu podemos ver en detalle el esquema elctrico:
El circuito en si mismo es muy sencillo, pero en el apartado de programacin podremos ver la versatilidad del mismo para diferentes aplicaciones, as que no esperemos ms Parte 3: Programando El primer ejemplo que vamos a tratar es la adquisicin de datos en la entrada analgica A0 para variar la frecuencia de parpadeo de un diodo LED conectado a una salida digital cualquiera, veamos el cdigo al completo: ? 1 2 3 4 5 6 7 8 9 /* Tutorial # 0003 Arduino Academy - Entrada analgica
Funcionamiento de las entradas analgicas configurando el pin analgico A0 para tomar datos de una seal. Esta toma de datos es utilizada para variar la velocidad de parpadeo de un diodo LED conectado a la salida digital 9.
Este proyecto es de dominio pblico. */
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 int pinSensor = A0; // Entrada para el potencimetro. int pinLed = 9; // Seleccionamos pin para el Led. int valorSensor = 0; // variable para el valor del sensor.
void setup() { // Declaramos el pin del Led como salida: pinMode(pinLed, OUTPUT); }
void loop() { // Leemos el valor del sensor y lo almacenamos: valorSensor = analogRead(pinSensor); // encendemo el diodo LED: digitalWrite(pinLed, HIGH); // Detenemos el programa durante <valorSensor> milisegundos: delay(valorSensor); // Apagamos el diodo Led: digitalWrite(pinLed, LOW); // Detenemos el programa durante <valorSensor> milisegundos: delay(valorSensor); } En este programa tenemos como novedad la siguiente instruccin: ? 1 analogRead(pinSensor) Esta instruccin nos permite leer cualquier sensor que conectemos al pin analgico establecido en pinSensor, por defecto, nuestra placa Arduino nos realizar una conversin analgico-digital para toda seal (40mA mximo) de 0v a 5v con una resolucin de 10 bit, lo que nos da 2 10 (1024) valores de referencia para nuestro programa, siendo 0 en 0v y 1023 en +5v, en posteriores ejemplos veremos como ese rango de tensin en el que se realizan las mediciones se puede variar para que, por ejemplo, empiece a lanzarnos valores a partir de 2,2v. Con esto, y observando un poco el programa, podemor ver que el intervalo entre encendido y apagado de nuestro diodo LED podr variar entre 0 y 1023 milisegundos, si quisiramos aumentar ms el tiempo de los intervalos podramos aplicar alguna operacin matemtica al valor de nuestro sensor, por ejemplo, si aadiramos la lnea de cdigo que se puede observar debajo de la toma de datos del sensor obtendramos un incremento del tiempo cuatro veces mayor: ? 1 2 3 // Leemos el valor del sensor y lo almacenamos: valorSensor = analogRead(pinSensor); valorSensor = valorSensor*4; Sin variar el circuito, vamos a introducir un nuevo cdigo para realizar un ejemplo diferente, en este proyecto, nuestro diodo LED variar su intensidad lumnica en funcin del valor que est aportando el potencimetro a nuestra entrada analgica, esto es el llamado efecto fading (desvanecimiento), puede observarse que se ha elegido la salida nmero 9, ya que esta s que es compatible con la opcin PWM como se explica algo ms arriba. Veamos el cdigo al completo: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 /* Tutorial Arduino # 0003 - Efecto Fading
En este tutorial, mostramos como se desvanece un LED en funcin del valor recogido en un entrada analgica.
Este proyecto es de dominio pblico. */
int pinSensor = A0; // Entrada para el potencimetro. int pinLed = 9; // Seleccionamos pin para el Led. int valorSensor = 0; // variable para el valor del sensor.
void setup() { pinMode(pinLed, OUTPUT); // Establecemos el pin como salida. }
void loop() { // Leemos el valor del sensor y lo almacenamos: valorSensor = analogRead(pinSensor); // Establecemos el valor analgico para la salida PWM analogWrite(pinLed, valorSensor / 4); // Detenemos el programa durante 30 milisegundos: delay(30); } Podemos observar una nueva instruccin: ? 1 analogWrite(pinLed, valorSensor / 4); Esta ser la instruccin que nos permitir emular una seal analgica a partir de una digital en nuestros circuitos, como explicaba algo ms arriba. El rango de salida de esta instruccin varia de 0 a 255, siendo 0 = 0v y 255 = 5v, por lo que es tan sencillo como introducir un valor determinado para la tensin de salida que nosotros queramos conseguir, si quisiramos conseguir 2,5v el valor a asignar sera 127. As que lo nico que debemos hacer es transformar mediante una simple operacin matemtica la seal tomada en nuestro potencimetro para adaptarla a nuestra salida PWM. Como hemos visto en el ejemplo anterior, los niveles de entrada son de 0 a 1023, y si los niveles de salida, deben ser de 0 a 255 Os dejo a vosotros la deduccin, y la lnea de cdigo por si no cais en cuenta. ? 1 analogWrite(pinLed, valorSensor / 4); Esta es una manera algo tosca para realizar esta conversin, ms adelante veremos como hay una instruccin que hace esto por nosotros.