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![ ? ]

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.

DETECTOR DE LLUVIA CON SENSOR FC-37 O YL-83 en ARDUINO

¿Qué es un sensor de lluvia?

Este tipo de sensores detectan la presencia de lluvia por la variación de conductividad del sensor al entrar en contacto con el agua. Existen varios modelos de sensores similares, como el FC-37 y el YL-83.
Constructivamente son sensores sencillos. Se dispone de dos contactos, unidos a unas pistas conductoras entrelazadas entre sí a una pequeña distancia, sin existir contacto entre ambas. Al depositarse agua sobre la superficie, se pone en contacto eléctrico ambos conductores, lo que puede ser detectado por un sensor.
Ambos modelos se envían con una placa de medición estándar con el comparador LM393, que permite obtener la lectura tanto como un valor analógico como de forma digital cuando se supera un cierto umbral, que se regula a través de un potenciómetro ubicado en la propia placa.
Los valores analógicos medidos varían desde 0 para una placa totalmente empapada, a 1023 para una placa totalmente seca.
La salida digital dispara cuando el valor de humedad supera un cierto valor, que ajustamos mediante el potenciómetro. Por tanto, obtendremos una señal LOW en ausencia de lluvia, y HIGH con presencia de lluvia.
En el caso del sensor de lluvia la señal analógica carece de interés, ya que el sensor no dispone de la precisión necesaria para medir la cantidad de agua acumulada. En cualquier caso, sería difícil extrapolar la medición a un valor de litros hora. Es decir, no podemos medir la cantidad de lluvia, solo su presencia.
El sensor de lluvia puede ser empleado, por ejemplo, para extender un toldo o activar algún otro mecanismo, hacer sonar una alarma, o registrar la cantidad de tiempo (días, horas) en el que se producen precipitaciones en una determinada zona.
El sensor de lluvia también puede ser empleado para detectar inundaciones, colocándolo en el suelo de un sótano o sala de calderas, por ejemplo. También puede ser útil para detectar cuando el agua de un depósito sobrepasa un determinado nivel.
Al usar el sensor en presencia de agua, aseguraros de proteger los contactos y partes eléctricas del circuito, y exponiendo únicamente la placa sensora. De lo contrario podéis provocar un cortocircuito, y dañar alguno de los componentes eléctricos.


Esquema eléctrico

El esquema eléctrico es sencillo. Conectamos el sensor a la placa de medición. El sensor no tiene polaridad, por lo que puede ser conectada en cualquier sentido.

Por otro lado, alimentamos la placa de medición conectando los pines GND y 5V a los pines correspondientes de Arduino.

Finalmente, conectamos la salida digital del sensor a una entrada digital para leer el estado del sensor, como vimos en la entrada Entradas digitales en Arduino.

Si quisieramos obtener el valor analógico de la medición, conectaríamos la salida analógica del sensor a una entrada analógica de Arduino, aunque como hemos dicho este sensor no dispone de la precisión suficiente para que el valor analógico sea realmente de utilidad.
Opcionalmente, podemos calibrar el umbral de disparo de la salida digital con el potenciómetro, vertiendo agua en un pequeño experimento. Pero suele ser suficiente con dejar el potenciómetro en un valor medio.

Ejemplos de código

El código es igualmente sencillo. Simplemente leemos el estado de la entrada digital, tal y como vimos en la entrada.
Si el sensor se dispara, ejecutamos las acciones necesarias.
Si te ha gustado comparte y comenta.

ENCENDER UNA MATRIZ LED CON MAX7219 en ARDUINO

¿Qué es una matriz LED?

Una matriz LED es un display formado por múltiples LED en distribución rectangular. Existen distintos tamaños, siendo el más habitual los cuadrados de 8×8 LED.
Podemos combinar varios módulos para formar un display mucho mayor. En estos display podemos mostrar textos, dibujos o animaciones, como desplazar un texto (scroll).
Encender una matriz de LED directamente con Arduino requiere emplear una gran cantidad de pines, lo cuál supondría un gran desperdicio de recursos. Por este motivo, lo normal es que siempre empleemos un controlador específicamente diseñado para esta función.
Un controlador habitualmente empleado por ser barato y sencillo es el integrado MAX7219.

Además estos módulos incorporan pines de entrada y salida, por lo que es sencillo unir varios módulos para formar un display mayor, simplemente usando unos jumpers de conexión.

¿Cómo funciona un matriz LED?

Una matriz de LED está formado por diferentes LED, cableados de forma conjunta por filas y columnas. Podemos encender un LED determinado de la matriz aplicando correctamente los valores HIGH y LOW a su respectiva fila y columna.

Existen dos posibles configuraciones, ánodo común en filas o en columnas. Aunque esto no afecta a la explicación, debéis tenerlo en cuenta en vuestro montajes.

Si aplicamos valores HIGH y LOW a varias filas y columnas de forma simultánea se encenderán todos los LED de las intersecciones. De esta forma, resulta casi imposible generar gráficos complejos.
Para poder hacer gráficos el procedimiento consiste en hacer un barrido por filas (o columnas). Encendemos todos los LED de una única fila (o columna), y a continuación cambiamos a la siguiente. Sólo una fila (o columna) está encendida cada instante pero, al hacerlo rápidamente, el efecto en nuestra visión es ver toda la imagen formada de forma simultánea.
Este efecto se denomina “Persistencia de visión” (POV), y es consecuencia de la forma en la que los humanos percibimos el movimiento. Es muy empleado en electrónica e informática.

Encender una matriz de 8×8 LED requeriría 16 señales digitales y un trabajo constante del procesador para refrescar la imagen. Eso es una cantidad enorme de recursos para cualquier autómata, que estaríamos mal aprovechando para simplemente encender un display.
Por este motivo, empleamos un controlador como el MAX7219 que está especialmente diseñado para encender displays de 7 segmentos y matrices de led, y libera a nuestro procesador para hacer tareas mucho más valiosas.
La comunicación con el MAX7219 se realiza a través de SPI por lo que sólo se requieren 3 pines de Arduino (SS, MOSI y SCK). Además ni siquiera “ocupamos” del todo estos pines, ya que con el mismo bus podemos controlar múltiples dispositivos.
Por último, las propias placas MAX7219 generalmente incorporan un puerto de entrada y salida, de forma que podemos combinar múltiples controladores sin ninguna dificultad.

Esquema eléctrico

El esquema eléctrico es sencillo. Alimentamos el módulo a través de Vcc y Gnd, y conectamos los pines correspondientes para la comunicación SPI.
En caso de usar más de un módulo, conectaríamos las salidas de cada módulo con las entradas del siguiente, y conectaríamos el primero a Arduino.

La conexión vista desde el lado de Arduino quedaría así.


Los números de Pin dependen del modelo concreto de Arduino. En Arduino Uno y Nano corresponden con los pines 10, 11, y 13. Consultar el esquema de patillaje para otros modelos.

Ejemplos de código

Existen varias librerías para comunicar Arduino con un controlador MAX7219. Por ejemplo, tenemos la librería Max72xxPanel, que requiere el uso de la librería Adafruit-GFX.
El siguiente código de ejemplo emplea estas dos librerías para mostrar un texto que se desplaza a lo largo de 9 matriz LED unidas. Modificar el código para adaptarse a vuestra configuración y necesidades.
Si te ha gustado comparte y comenta.

MEDIR TEMPERATURA Y HUMEDAD CON SENSOR DHT11 - DHT22 en ARDUINO

¿Qué es un DHT11 / DHT22?

El DHT11 y el DHT22 son dos modelos de una misma familia de sensores, que permiten realizar la medición simultánea de temperatura y humedad.
Estos sensores disponen de un procesador interno que realiza el proceso de medición, proporcionando la medición mediante una señal digital, por lo que resulta muy sencillo obtener la medición desde un microprocesador como Arduino.
Ambos sensores presentan un encapsulado de plástico similar. Podemos distinguir ambos modelos por el color del mismo. El DHT11 presenta una carcasa azul, mientras que en el caso del sensor DHT22 el exterior es blanco.
De ambos modelos, el DHT11 es el hermano pequeño de la familia, y cuenta peores características técnicas. El DHT22 es el modelo superior pero, por contra, tiene un precio superior.
Las características del DHT11 son realmente escasas, especialmente en rango de medición y precisión.
  • Medición de temperatura entre 0 a 50, con una precisión de 2ºC
  • Medición de humedad entre 20 a 80%, con precisión del 5%.
  • Frecuencia de muestreo de 1 muestras por segundo (1 Hz)
El DHT11 es un sensor muy limitado que podemos usar con fines de formación, pruebas, o en proyectos que realmente no requieran una medición precisa.
Por el contrario, el modelo DHT22 tiene unas características mucho más aceptables.
  • Medición de temperatura entre -40 a 125, con una precisión de 0.5ºC
  • Medición de humedad entre 0 a 100%, con precisión del 2-5%.
  • Frecuencia de muestreo de 2 muestras por segundo (0.5 Hz)
EL DHT22 (sin llegar a ser en absoluto un sensor de alta precisión) tiene unas características aceptables para que sea posible emplearlo en proyectos reales de monitorización o registro, que requieran una precisión media.
Los sensores de temperatura y, aún más, los sensores de humedad, son sensores con elevada inercia y tiempos de respuesta elevados. Es decir, al “lentos” para reflejar los cambios en la medición.


Esquema eléctrico

La conexión del DH11 y el DHT22 son idénticas, ya que como hemos comentado la única diferencia entres modelos son sus prestaciones. En ambos casos, disponemos de 4 patillas, de las cuales usaremos 3, Vcc, Output y GND.

Conectar el sensor es sencillo, simplemente alimentamos desde Arduino al sensor a través de los pines GND y Vcc del mismo. Por otro lado, conectamos la salida Output a una entrada digital de Arduino. Necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output.
El esquema eléctrico queda como la siguiente imagen

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

Ejemplos de código

Los sensores DHT11 y DHT22 usan su propio sistema de comunicación bidireccional mediante un único conductor, empleando señales temporizadas.
En cada envío de medición el sensor envía un total de 40bits, en 4ms. Estos 40 bits corresponden con 2 Bytes para la medición de humedad, 2 Bytes para la medición de temperatura, más un Byte final para la comprobación de errores (8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit decimal T data + 8bit check sum)
Para mayor información sobre el funcionamiento y detalles de la comunicación, consultar el datasheet de la serie DHTXX.

Podemos leer los datos del sensor directamente generando y leyendo las señales temporizadas según el protocolo del DHTXX. En general, lo normal es que empleemos una librería existente para simplificar el proceso.
Existen varias librerías disponibles. Por ejemplo, podemos usar la librería de Adafruit disponible en este enlace.
Descargamos e instalamos la librería y cargamos el código de ejemplo, o la siguiente versión simplificada
Cargamos el programa en Arduino, y empezaremos a recibir por el puerto de serie los valores de temperatura y humedad.
Si te ha gustado comparte y comenta.