Archivo de la etiqueta: Arduino

LDR con Arduino

Una fotorresistencia o LDR (por sus siglas en inglés “light-dependent resistor”) es un componente electrónico cuya resistencia varía en función de la luz.

Se trata de un sensor que actúa como una resistencia variable en función de la luz que capta. A mayor intensidad de luz, menor resistencia: el sensor ofrece una resistencia de 1M ohm en la oscuridad, alrededor de 10k ohm en exposición de luz ambiente, hasta menos de 1k ohm expuesto a la luz del sol. Aunque estos valores pueden depender del modelo de LDR.

El LDR actúa como una resistencia variable. Para conocer la cantidad de luz que el sensor capta en cierto ambiente, necesitamos medir la tensión de salida del mismo. Para ello utilizaremos un divisor de tensión, colocando el punto de lectura para Vout entre ambas resistencias. De esta forma:

Dónde Vout es el voltaje leído por el PIN analógico del Arduino y será convertido a un valor digital, Vin es el voltaje de entrada (5v), R2 será el valor de la resistencia fija colocada (10k ohm generalmente) y R1 es el valor resistivo del sensor LDR. A medida que el valor del sensor LDR varía, obtendremos una fracción mayor o menor del voltaje de entrada Vin.

El LDR que usamos: Photoresistor [VT90N2 LDR]

El valor de resistencia eléctrica de un LDR es bajo cuando hay luz incidiendo en él (puede descender hasta 50 ohms) y muy alto cuando está a oscuras (varios megaohmios).

Más información http://diwo.bq.com/descubre-el-ldr/

Ejemplos de uso:

Esquema de conexión:

Leer el valor del LDR cada 500ms y mostrarlo por el Serial Plotter. Usar delay para grabar cada 500ms.

Opcionalmente calcular el máximo y mínimo, mostrándolo por pantalla. Usar las funciones:

Esto nos puede servir para calibrar un elemento y conocer su máximo y mínimo para luego en función de esos valores regular otro elemento como la intensidad de un LED.

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Programacion_Arduino/tree/master/Ejercicio02-LDR

Sonda DS18B20 con Arduino

Un sonda de temperatura muy usada con Arduino es la DS18B20, esta usa un bus de comunicación multipunto llamado one wire, lo que nos permite leer muchas sondas con una sola i/o digital.

Sonda: http://www.seeedstudio.com/depot/One-Wire-Temperature-Sensor-p-1235.html

Datasheet sensor: http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf

Librería: http://playground.arduino.cc/Learning/OneWire

Última versión de la librería OneWire:

Existen librerías para la sonda DS18B20 que facilita el trabajo:

Protocolo one-wire:

Esquema de montaje. El bus 1-Wire necesita una resistencia de pull-up de 4K7, y que podemos alimentar el sensor directamente a través del pin Vdd o usar el modo “parásito” y alimentarlo con la propia línea de datos.

Para poder usar las sonda DS18B20 necesitaremos las librerías OneWire y DallasTemperature. Solo hay que buscar e instalar la librería a través del Gestor de Librerías.

Leer la sonda conectada al pin 2:

Código: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/12-DS18B20/12-DS18B20.ino

Más información:

Buzzer con Arduino

Un buzzer pasivo o un altavoz son dispositivos que permiten convertir una señal eléctrica en una onda de sonido. Estos dispositivos no disponen de electrónica interna, por lo que tenemos que proporcionar una señal eléctrica para conseguir el sonido deseado.

En oposición, los buzzer activos disponen de un oscilador interno, por lo que únicamente tenemos que alimentar el dispositivo para que se produzca el sonido.

El buzzer activo es el que tiene la pegatina y al alimentarlo entre 5V y GND suena a una frecuencia fija,

Usar el ejemplo de blink para probarlo y comparar con el buzzer pasivo. El buzzer activo es adecuado para hacer avisos sonoros pero no para reproducir tonos o música.

El buzzer pasivo no tiene un oscilador interno y por lo tanto la frecuencia del sonido debemos hacerla desde Arduino, para ello disponemos de la función tone(): https://www.arduino.cc/reference/en/language/functions/advanced-io/tone/

Tone() genera una onda cuadrada de una frecuencia específica y con un 50% de duty cycle en el pin especificado. La duración del tono puede ser especificado o en caso contrario continúa hasta llamar a la función noTone().

Esquema de conexión:

Hacer sonar un sonido: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio21-tone

Hacer sonar la musica Star Wars con Arduino: http://miarduinounotieneunblog.blogspot.com.es/2016/01/banda-sonora-de-star-wars-con-un.html

Led RGB con Arduino

Un LED RGB se puede considerar como tres LEDs de colores rojo, verde y azul a los que les han unido (soldado) o bien los ánodos (ánodo, “polo positivo”, común) o bien los cátodos (cátodo, “polo negativo”, común).

Con un led RGB y jugando con las intensidades de cada uno de sus colores se puede obtener cualquier color:

Colores:

Conexión:

Código: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/11-Led_RGB/11-Led_RGB.ino

Observar cómo se iluminan los 3 colores en el setup y luego se generar colores aleatorios.

Servo con Arduino

Servo es un tipo de motor DC con reductora que sólo puede girar 180 grados. Se controla mediante el envío de impulsos eléctricos de Arduino. Estos pulsos le dice al servo a qué posición se debe mover.

Un servomotor está formado por un motor de corriente continua, una caja reductora, un juego de engranajes, un potenciómetro y un circuito de control. Puede aguantar cierto peso a través del par o torque del servo indicado en sus características. Normalmente se indica con Kg/cm, que quiere decir los kilos que aguanta a 1 cm de distancia.

Para controlar un servo, se usa el PWM. La mayoría trabaja en una frecuencia de 50 Hz (20ms). Cuando se manda un pulso, la anchura de este determina la posición angular del servo. La anchura varía según el servomotor pero normalmente es entre 0,5ms a 2,5ms.

El Arduino utiliza la librería <Servo.h> para controlar los servos y usa las siguientes funciones:

Todos los servos tienen 3 cables de conexión uno para positivo DC (normalmente 5-6V), otro para masa y el tercero para la señal.

Los tamaños de los servos son:

Servo de rotación continua

Un servo de rotación continua es un motor cuyo circuito electrónico nos permite controlar la dirección de giro. A diferencia del servos anteriormente mencionados, no se detiene en una posición, sino que gira continuamente. Son muy utilizados en robótica y en muchas aplicaciones electrónicas, como en lectores de DVD.

En un servo de rotación continua, la función write() configura la velocidad del servo en lugar del ángulo de posición. En este caso 0 es máxima velocidad en giro contrario al sentido horario, 180 es máxima velocidad en sentido horario y 90 motor parado.

Trucar un servo a rotación continua: http://www.ardumania.es/trucar-servo-a-rotacion-continua/

Librerías Arduino Instaladas

Las librerías son trozos de código reutilizables hechos por terceros que usamos en nuestro sketch. Esto nos facilita mucho la programación y hace que nuestro programa sea más sencillo de hacer y de entender. En este curso no veremos como hacer o modificar una librería pero debemos ser capaces de buscar una librería, instalarla, aprender a usar cualquier librería y usarla en un sketch.

Las librerías son entre otras cosas colecciones de código que facilitan la interconexión de sensores, pantallas, módulos electrónicos, etc. El entorno de arduino ya incluye algunas librerías de manera que facilita, por ejemplo, mostrar texto en pantallas LCD.

Varias librerías vienen instaladas con el IDE, pero también puede descargar o crear las suyas propias. Las librerías instaladas en el IDE de Arduino son: https://www.arduino.cc/en/Reference/Libraries entre ellas la librería servo https://www.arduino.cc/en/Reference/Servo

Para añadir una librería a nuestro proyecto simplemente se añade a nuestro código la palabra clave #include seguido del nombre de la librería entre los caracteres “<” y “>”.

Esto también se puede hacer desde el IDE en el menú Programa – Incluir Librería y seleccionar la librería que deseamos incluir y está instalada.

Ejemplo de Uso de Servo con Arduino

Conexión servo:

Servo SG90 pinout:

Se usa la librería Servo https://www.arduino.cc/en/Reference/Servo instalada por defecto en el IDE de Arduino.

Instalar el código: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/05-Servo/servo/servo.ino

Ver en Serial plotter el ángulo en el que se mueve y cambiar el delay para que vaya más rápido o lento.