Proyectos y cursos de electronica

Encuentra informacion de cada componente, esquemas y diagramas de circuitos electronicos, tutoriales, calculadoras, electrisidad...

Robotica y domotica

Encuetra cursos, tutoriales, proyectos y mucho más. Toda la tecnologia para crear fabulosos robot.

software de electrónica

Descarga los mejores programas de electrónica para tu pc y se un profecional.

Mantención de PC

Aprende a reparar los errores mas comunes de un PC. Soluciona las fallas que tengas en tu computadora y aprende mas de informatica...

Descarga libros gratis

Descarga libros de electronica, electricidad, mantencion de pc, codigos web, robotica, domotica, html, c++, c#, java y mucho más...

Please enable / Bitte aktiviere JavaScript!
Veuillez activer / Por favor activa el Javascript![ ? ]

lunes, 12 de septiembre de 2016

CONECTAR ARDUINO CON PANELES Y TIRAS LED RGB WS2812B

¿Qué es un WS2812B?

Los WS2811, WS2812 y WS2812B son LED que disponen de lógica integrada, por lo que es posible variar el color de cada LED de forma individual (a diferencia de las tiras RGB convencionales en las que todos los LED cambian de color de forma simultánea).
Están basados en el LED 5050, llamado así porque tiene un tamaño de 5.0 x 5.0 mm. Es un LED de bajo consumo y alto brillo, que incorpora en un único encapsulado los 3 colores RGB.
La genial novedad del WS2812B (y resto de familia) es añadir un integrado dentro de cada LED, que permite acceder a cada pixel de forma individual. Por este motivo este tipo de LED se denominan “individual addressable”.
Esto abre la puerta a un sinfín de aplicaciones y combinaciones, que van desde dotar de iluminaciones distintas zonas con una única tira, animaciones complejas, o incluso generar pantallas enteras de alta luminosidad.
En adelante nos centraremos en el WS2812B, por ser el más moderno de la familia, pero todo lo expuesto es de total aplicación para los modelos WS2811 y WS2812.



¿Cómo funciona un WS2812b?

El funcionamiento de un WS2812b es realmente ingenioso. Cada LED dispone de un integrado que almacena 3 bytes (24 bits), que corresponden con los 3 colores del RGB. Cada pixel puede tener 256 niveles en 3 colores, lo que supone un total de 16.777.216 posibles colores.
Cuando un LED recibe un flujo de bytes, almacena los últimos bytes recibidos y trasmite los que contenía al siguiente LED. Finalmente, con una señal de “resetcode” cada LED muestra el último valor almacenado.
Esta genial idea permite hacer configuraciones de múltiples LED, en los que únicamente tenemos que comunicarnos con el primero de ellos y cada LED se actúa de transmisor de la secuencia a los LED posteriores. Además permite que podamos encadenar o dividir tiras de LED y cualquier fragmento seguirá funcionando porque todos los LED tienen exactamente el mismo comportamiento.
Cada vez que un punto trasmite al siguiente una señal, realiza una reconstrucción de forma que la distorsión y el ruido no se acumulan. Esto permite alimentar tiras de más de 5m sin necesidad de dispositivos adicionales.
La transmisión de 0 y 1 y resetcode se realiza mediante señales pulsadas temporizadas.
  • Un 0 se realiza por un pulso HIGH de 0,35 us, seguido de un periodo LOW de 0,9.
  • Un 1 se realiza por un pulso HIGH de 0,9us y LOW 0,35us.
  • El “resetcode” se manda como una señal LOW de 50us.

  • La frecuencia de funcionamiento es superior a 400Hz/s. Esto permite que se puedan animar más de 1024 puntos a una tasa refresco de 30fps.
    Para más información y detalles sobre su funcionamiento, os aconsejamos consultar el Datasheet del WS2182B.

    Esquema eléctrico

    El esquema eléctrico para conectar LED WS2812b es sencillo. Cada LED alimenta al siguiente, por lo cual solo tendremos que conectar con el primer elemento de la formación.
    Disponemos de 3 pines, 2 de alimentación (5V y GND) y entrada de datos (Din) para recibir los datos desde Ardunino.

    La alimentación de la tira LED tiene que realizarse desde una fuente de alimentación externa de 5V, dado que Arduino no dispone de potencia suficiente. La referencia GND será común.
    Cada LED WS2182b consume unos 60mA (0,3W), dando color blanco intenso (20mA por cada componente de color) Esto supone un consumo de 9W para 30 LED, y 18W para 60 LED, lo que es mucha potencia en una fuente de 5V.
    Afortundamante, no siempre vamos a iluminar todos los LED de forma simultánea con blanco a máxima intensidad. Dependiendo del programa y efectos que hagamos la potencia requerida será mucho menor.
    En casos de mucho consumo y gran número de LED también puede ser necesario alimentar por más de un punto a la vez (por ejemplo, cabeza y cola de la tira). De lo contrario, la caida de tensión hará que los últimos LED viren a rojo.
    Podéis emplear la fuente de 5V para alimentar el propio Arduino. Lo que no podéis es alimentar la tira desde la salida de 5V de Arduino.

    Recordar, la referencia GND siempre debe ser común.

    En cuanto al pin de señal, podemos emplear cualquiera de las salidas digitales de Arduino. Es necesario emplear una resistencia de 470 ohmios entre el pin digital y el pin de señal del WS2818b, o podéis dañar los primeros LED.
    También se aconseja instalar un condensador de al menos 1000 uF entre GND y 5V (aunque en los montajes que yo he probado nunca la he puesto y ha funcionado correctamente).

    Ejemplos de código

    Podemos mandar la señal directamente controlando adecuadamente los timings necesarios. Sin embargo, lo normal es que empleemos una librería existente que se encargue de esta tarea por nosotros. Tenemos varias librerías disponibles para manejar WS2812b desde Arduino.
    Por un lado tenemos la librería NeoPixel de Adafruit que es sencilla de usar pero relativamente lenta, lo que la hace inadecuada para efectos complejos.
    Por otro lado, tenemos la librería FastLED, algo más difícil pero a cambio permite patrones mucho más complejos.
    Bajaros ambas bibliotecas y probar los ejemplos que vienen incluidas, para que decidáis que tipos de efectos necesitáis y con librería estáis más agusto.
    A partir de aquí, depende de vuestra imaginación y del efecto que queráis conseguir. No hay límites, y la cantidad de combinaciones es infinita. Animaros a programar vuestros propios efectos y animaciones.
    Si te ha gustado comparte y comenta.

lunes, 25 de julio de 2016

MEDIR DISTANCIA CON SENSOR DE ULTRASONIDOS HC-SR04 EN ARDUINO

¿Que es un sensor de ultrasonidos?

Un sensor de ultra sonidos es un dispositivo para medir distancias. Su funcionamiento se base en el envío de un pulso de alta frecuencia, no audible por el ser humano. Este pulso rebota en los objetos cercanos y es reflejado hacia el sensor, que dispone de un micrófono adecuado para esa frecuencia.
Midiendo el tiempo entre pulsos, conociendo la velocidad del sonido, podemos estimar la distancia del objeto contra cuya superficie impacto el impulso de ultrasonidos
Los sensores de ultrasonidos son sensores baratos, y sencillos de usar. El rango de medición teórico del sensor HC-SR04 es de 2cm a 400 cm, con una resolución de 0.3cm. En la práctica, sin embargo, el rango de medición real es mucho más limitado, en torno a 20cm a 2 metros.
Los sensores de ultrasonidos son sensores de baja precisión. La orientación de la superficie a medir puede provocar que la onda se refleje, falseando la medición. Además, no resultan adecuados en entornos con gran número de objetos, dado que el sonido rebota en las superficies generando ecos y falsas mediciones. Tampoco son apropiados para el funcionamiento en el exterior y al aire libre.
Pese a esta baja precisión, que impide conocer con precisión la distancia a un objeto, los sensores de ultrasonidos son ampliamente empleados. En robótica es habitual montar uno o varios de estos sensiores, por ejemplo, para detección de obstáculos, determinar la posición del robot, crear mapas de entorno, o resolver laberintos. En aplicaciones en que se requiera una precisión superior en la medición de la distancia, suelen acompañarse de medidores de distancia por infrarrojos.


¿Cómo funciona un sensor de ultrasonidos?

El sensor se basa simplemente en medir el tiempo entre el envío y la recepción de un pulso sonoro. Sabemos que la velocidad del sonido es 343 m/s en condiciones de temperatura 20 ºC, 50% de humedad, presión atmosférica a nivel del mar. Transformando unidades resulta


Es decir, el sonido tarda 29,2 microsegundos en recorrer un centímetro. Por tanto, podemos obtener la distancia a partir del tiempo entre la emisión y recepción del pulso mediante la siguiente ecuación.


El motivo de divir por dos el tiempo (además de la velociad del sonido en las unidades apropiadas, que hemos calculado antes) es porque hemos medido el tiempo que tarda el pulso en ir y volver, por lo que la distancia recorrida por el pulso es el doble de la que queremos medir.

Esquema eléctrico

El esquema eléctrico que necesitamos es el siguiente.

Montaje

Mientras que el montaje en una protoboard sería el siguiente.

Ejemplo de código

Para activar el sensor necesitamos generar un pulso eléctrico en el pin Trigger (disparador) de al menos 10us. Previamente, pondremos el pin a Low durante 4us para asegurar un disparo limpio.
Posteriormente usamos la función “pulseIn” para obtener el tiempo requerido por el pulso para volver al sensor. Finalmente, convertirmos el tiempo en distancia mediante la ecuación correspondiente.
Observar que intentamos emplear siempre aritmética de enteros, evitando usar números en coma flotante. Esto es debido a que las operaciones en coma flotante ralentizan mucho el procesador, y suponen cargar un gran número de librerías en memoria.

Si te ha gustado comparte y comenta.

MEDIR LA HUMEDAD DEL SUELO CON HIGRÓMETRO FC-28 en ARDUINO

¿Qué es un higrómetro FC-28?

Un higrómetro de suelo FC-28 es un sensor que mide la humedad del suelo. Son ampliamente empleados en sistemas automáticos de riego para detectar cuando es necesario activar el sistema de bombeo.
El FC-28 es un sensor sencillo que mide la humedad del suelo por la variación de su conductividad. No tiene la precisión suficiente para realizar una medición absoluta de la humedad del suelo, pero tampoco es necesario para controlar un sistema de riego.
El FC-28 se distribuye con una placa de medición estándar que permite obtener la medición como valor analógico o como una salida digital, activada cuando la humedad supera un cierto umbral.
Los valores obtenidos van desde 0 sumergido en agua, a 1023 en el aire (o en un suelo muy seco). Un suelo ligeramente húmero daría valores típicos de 600-700. Un suelo seco tendrá valores de 800-1023.
La salida digital dispara cuando el valor de humedad supera un cierto umbral, que ajustamos mediante el potenciómetro. Por tanto, obtendremos una señal LOW cuando el suelo no está húmedo, y HIGH cuando la humedad supera el valor de consigna.
El valor concreto dependerá del tipo de suelo y la presencia de elementos químicos, como fertilizantes. Además, no todas las plantas requieren la misma humedad, por lo que lo mejor es que hagáis una pequeña calibración en el terreno real.

Esquema de montaje

El esquema eléctrico es sencillo. Alimentamos el módulo conectando GND y 5V a los pines correspondientes de Arduino.
Ahora si queremos usar la lectura analógica, conectamos la salida A0 a una de las entradas analógicas de Arduino.

Mientras que la conexión vista desde Arduino quedaría así,

Si quisiéramos emplear el valor digital, que se ajusta con el potenciómetro de la placa, en su lugar conectaríamos la salida D0 del sensor a una entrada digital de Arduino.

Ejemplos de código

El código necesario es realmente sencillo. Si estamos empleando la señal analógica A0, leemos el valor mediante la entrada analógica, y usamos el puerto de serie para mostrar el valor por pantalla. En un caso real, este valor se emplearía para ejecutar acciones, en lugar de mostrar el valor.


Si estamos empleando la señal digital, empleamos una entrada digital para leer el estado. En el ejemplo mostramos un mensaje por la pantalla, pero igualmente en un caso real ejecutaríamos las acciones oportunas.
Si te ha gustado comparte y comenta.

DETECTOR DE MOVIMIENTO CON SENSOR PIR EN ARDUINO

¿Que es un sensor PIR?

Los sensores infrarrojos pasivos (PIR) son dispositivos para la detección de movimiento. Son baratos, pequeños, de baja potencia, y fáciles de usar. Por esta razón son frecuentemente usados en juguetes, aplicaciones domóticas o sistemas de seguridad.
Los sensores PIR se basan en la medición de la radiación infrarroja. Todos los cuerpos (vivos o no) emiten una cierta cantidad de energía infrarroja, mayor cuanto mayor es su temperatura. Los dispositivos PIR disponen de un sensor piezo eléctrico capaz de captar esta radiación y convertirla en una señal eléctrica.
En realidad cada sensor está dividido en dos campos y se dispone de un circuito eléctrico que compensa ambas mediciones. Si ambos campos reciben la misma cantidad de infrarrojos la señal eléctrica resultante es nula. Por el contrario, si los dos campos realizan una medición diferente, se genera una señal eléctrica.
De esta forma, si un objeto atraviesa uno de los campos se genera una señal eléctrica diferencial, que es captada por el sensor, y se emite una señal digital.

El otro elemento restante para que todo funcione es la óptica del sensor. Básicamente es una cúpula de plástico formada por lentes de fresnel, que divide el espacio en zonas, y enfoca la radiación infrarroja a cada uno de los campos del PIR.
De esta manera, cada uno de los sensores capta un promedio de la radiación infrarroja del entorno. Cuando un objeto entra en el rango del sensor, alguna de las zonas marcadas por la óptica recibirá una cantidad distinta de radiación, que será captado por uno de los campos del sensor PIR, disparando la alarma.


Esquema eléctrico

Este es el esquema de patillaje de un sensor PIR.

El esquema eléctrico que necesitamos es el siguiente.

Montaje

Mientras que el montaje en una protoboard sería el siguiente.

Ejemplo de código

El código necesario para realizar la lectura es simple. Simplemente leemos la salida del PIR, y hacemos parpadear el LED mientras la señal esté activa.


Si quisiéramos ejecutar una acción una única vez al detectar movimiento, en lugar de todo el tiempo que la señal este activa, usaríamos el siguiente código.
Si te ha gustado comparte y comenta

domingo, 12 de junio de 2016

USAR UN INTERRUPTOR MAGNÉTICO CON ARDUINO (MAGNETIC REED)

¿Qué es un magnetic reed?

Una magnetic reed es un dispositivo electromecánico que se comporta como un interruptor que se activa ante la presencia de un imán.
Los sensores magnetic reed son ampliamente utilizados. Por ejemplo, muchas alarmas de puertas y ventanas funcionan ubicando un imán en el elemento, y detectando la apertura con un magnetic reed. También podemos ubicar el imán en una puerta, o vitrina, para encender una luz, etc.
Como un magnetic reed no deja de ser un interruptor, podemos emplear este dispositivo para encender o apagar un dispositivo directamente. Por supuesto, también podemos emplear las entradas digitales de Arduino para leer el estado del magnetic reed, de forma similar a como vimos en la entrada leer un pulsador con Arduino.
Los interruptores magnéticos tienen la ventaja de ser baratos, sencillos y no requieren corriente para su funcionamiento. Además, funcionan tanto en corriente alterna como continua.
Por el contrario, al ser dispositivos electro mecánicos, el tiempo de conmutación es relativamente alto, del orden de 1-5 ms. Si nuestra aplicación tiene una velocidad de conmutación superior (por ejemplo, para hacer un tacómetro), deberemos emplear un sensor Hall, como vimos en esta entrada.
Además, los magnetic reed tienen una vida útil limitada, es decir, hay un número de conmutaciones que puede realizar antes de dañarse. No obstante, en algunos dispositivos puede ser hasta 100 millones de conmutaciones, lo cual es suficiente para la mayoría de aplicaciones. Por último, la presencia de vibraciones o movimientos bruscos puede alterar su funcionamiento, y dar lugar a mediciones erróneas.

¿Cómo funciona un magnetic reed?

Físicamente un magnetic reed está constituido por dos elementos ferromagnéticos de níquel, ubicados en el interior de una ampolla de vidrio sellada.
Al acercar un campo magnético la fuerza generada provoca que ambos elementos entren en contacto, cerrando el circuito eléctrico.

También existen magnetic reed cuyo estado es normalmente cerrado, y abren el circuito eléctrico en presencia del campo magnético. Incluso encontramos magnetic reed que disponen ambas salidas, una normalmente abierta y otra normalmente cerrada, en el mismo dispositivo.
El campo magnético requerido para activar el interruptor es típicamente del orden de 50 Gauss.

Esquema eléctrico

El esquema eléctrico es sencillo. Vamos a usar las resistencias internas de pull-up de Arduino, por lo que simplemente conectamos el magnetic reed entre GND y la entrada digital que queramos emplear.

Esquema de montaje

Mientras que el montaje en una protoboard sería el siguiente.

Ejemplos de código

El siguiente código muestra un ejemplo sencillo. Usamos una entrada digital, con la resistencia pull-up interna, para leer el estado del magnetic reed. Si el sensor está activado, la entrada leerá LOW, y en ese caso encendemos el LED integrado en la placa. Por supuesto, en un proyecto real, en lugar de encender el LED integrado ejecutaríamos las acciones que quisiéramos.
Por supuesto en un proyecto real, en lugar de encender el LED integrado, ejecutaríamos las acciones que quisiéramos.
Si te ha gustado comparte y comenta.