Vúmetro RGB con ARDUINO

Construcción de un vúmetro LED RGB, controlado por Arduino. Este montaje consiste en un par de tiras RGB de un metro, con 30 LED SMD de tipo inteligente (WS2812) cada una. Este tipo de diodos incluye en su interior su propio controlador. Los diodos WS2812 disponen de una entrada de datos, la salida y los dos pines de alimentación. La información se transmite en serie, desplazando los datos de un pixel hacia el siguiente, y cada pixel utiliza 24 bit de información… 8 bit por cada color (RGB). El control de este vúmetro LED se realiza con Arduino. Micrófono amplificadoEl sonido se capta mediante un micrófono amplificado, de manera que no es necesario realizar ninguna conexión eléctrica entre el reproductor de audio y el vúmetro. Para facilitar el uso de este vúmetro en cualquier lugar, la alimentación de 5V se suministra con el módulo ‘Step Down-ConverterMP1584. De esta manera es posible alimentar este vúmetro con cualquier alimentador de continua, entre 6 y 28 voltios. Así podría utilizarse también dentro del coche, alimentado desde los 12V de la batería, y mostrar los efectos luminosos al ritmo del sonido del auto radio.

Tiras LED WS2812

Existen varios tipos de tiras LED RGB, pudiendo elegir la separación entre diodos y el grado de protección IP. Cuanto mayor sea el número de diodos LED por metro, mejor será el efecto luminoso que se pretenda mostrar (mayor resolución y brillo), pero el consumo también será mayor. Dependiendo del lugar donde se vayan a instalar las tiras LED, podremos elegir un grado de protección IP. El acabado IP67 permite utilizar estas tiras LED a la intemperie, protegiendo todos sus componentes electrónicos contra el agua y el polvo. Los consumos que se muestran en la tabla siguiente, son consumos máximos (cuando se encienden los tres colores de cada pixel a máximo brillo).

Las tiras LED WS2812 necesitan 3 hilos de conexión, 2 para la alimentación y 1 para datos. Las tiras LED se pueden cortar al tamaño que se necesite, y también se pueden ampliar juntando la salida de una de ellas con la entrada de otra. Cuando se vayan a utilizar tiras de gran tamaño, es importante conectar los hilos de alimentación con cable en varios puntos. Así se evitará la caída de tensión a lo largo de la línea, lo que provocaría un cambio de color y brillo sobre el color que se pretenda mostrar.

Conexiones tiras WS812

Descripción del circuito

Este vúmetro LED no necesita una conexión eléctrica con la fuente de sonido, facilitando así su uso y pudiendo mostrar efectos luminosos al ritmo del sonido de una sala, dentro de un coche, etc.. El sonido se capta por un micrófono de tipo ‘Electret‘, el cual se amplifica con un operacional, hasta conseguir el nivel necesario para excitar la entrada analógica del micro-controlador de Arduino ATMEGA328P .

En el esquema se muestra el montaje del micrófono y el amplificador operacional, pero también podría utilizarse un módulo SMD ya montado, el cuál se vende para el uso con Arduino, y conectar su salida de audio con la entrada A0 de Arduino. Para facilitar el uso de este vúmetro en cualquier lugar, la alimentación de 5V se suministra con el módulo ‘Step Down-ConverterMP1584.

Construcción del vúmetro

El circuito de control del vúmetro lo he montado en una placa de circuito impreso de tipo universal.

CPU: Vúmetro RGB

Posteriormente fabriqué una caja con metacrilato, haciendo la serigrafía con la CNC.

Vúmetro RGB: Módulo de control

A continuación se muestra el vúmetro LED funcionando.

Vúmetro RGB en pruebas

Firmware ARDUINO

El código de Arduino que he utilizado para este proyecto lo conseguí como un comentario en Internet. No conozco el autor del código, y por eso no figura su nombre en la cabecera. Este código, junto con la librería de control necesaria para el WS2812, se puede descargar desde el siguiente enlace: Vúmetro RGB

Baliza RGB con ARDUINO

Construcción de una baliza LED RGB, controlada por Arduino. Este montaje consiste en un anillo formado por 16 LED SMD de tipo inteligente (WS2812). Este tipo de diodos incluye en su interior su propio controlador. Los diodos WS2812 disponen de una entrada de datos, la salida y los dos pines de alimentación. La información se transmite en serie, desplazando los datos de un pixel hacia el siguiente, y cada pixel utiliza 24 bit de información… 8 bit por cada color (RGB). El control de este anillo LED se realiza de forma muy sencilla, ya que Arduino dispone de unas librerías específicas para su control y además ejemplos.

Pruebas de la baliza RGB

Esquema de montaje

El esquema de montaje es muy simple, porque este módulo se controla con un solo hilo. El montaje lo podríamos realizar utilizando una placa de desarrollo de Arduino, pero es mucho más barato montar los componentes necesarios y el micro-controlador ATMEGA328P,  una vez programado, en un circuito impreso adicional.

Esquema: Baliza RGB

A continuación se puede ver el montaje del módulo de control de esta baliza RGB, utilizando un circuito impreso de tipo universal.

CPU: Baliza RGB

Montaje: Baliza RGB

Sellado de la baliza RGB

Con el fin de poder utilizar esta baliza en la intemperie, se rellena con adhesivo termo-fundible las dos placas de circuito impreso (CPU y anillo LED).  La zona central se oscurece con pintura de color negro mate en spray. El anillo LED se protege también con el mismo adhesivo, pero sin pintarlo.

Sellado de la baliza RGB

Alimentación

Esta baliza LED RGB se alimenta con 5V. El  consumo podría ser elevado, porque cada diodo LED consumo 20 mA. a máximo brillo. Si multiplicamos esos 20 mA por los 3 diodos que contiene cada pixel RGB y luego por los 16 pixeles que contiene este anillo, podríamos tener un consumo máximo de 20x3x16 =  960 mA. Este consumo nunca lo alcanzaremos, porque esta baliza produce efectos luminosos cambiando colores, y nunca estarán todos los diodos LED encendidos a máximo brillo y al mismo tiempo. No obstante, es conveniente alimentarlo con una batería externa recargable de 5 V, más conocida como Power Bank. De esta forma dispondremos de mayor autonomía, y sólo tenemos que soldar un conector USB tipo ‘A’ en el extremo del cable de alimentación. El encendido de la baliza lo realizaremos conectando el conector USB en el Power Bank, de esta manera no es necesario intercalar un interruptor.

Conexión: USB tipo A

La librería y los ejemplos que he utilizado para realizar este proyecto, se pueden descargar desde el siguiente enlace:

https://github.com/adafruit/Adafruit_NeoPixel

ARDUINO: Nivel de dos ejes

ARDUINO: Nivel de dos ejes – Construcción de un nivel electrónico de dos ejes, con ARDUINO y MPU-6050. Leyendo los valores que entregan los giróscopos de ambos ejes del MPU-6050, cuya resolución es de 14 bit para los 180º de cada eje. Posteriormente se calibran los valores con un inclinómetro de burbuja, obteniendo una precisión media mejor de 5º. Al mostrar la inclinación de ambos ejes de forma simultánea, este medidor puede ser muy útil para orientar paneles solares, antenas parabólicas, cubiertas de tejados, etc.

Inclinómetro
Inclinómetro

Giróscopo y acelerómetro: MPU-6050

Chip: MPU-60X0
Chip: MPU-60X0
MPU-6050
Módulo: MPU-6050

La construcción de este medidor de ángulos de 2 ejes, puede realizarse sin la necesidad de utilizar el módulo ARDUINO Uno. Aparte del módulo MPU-6050, sólo sería necesario extraer el micro-controlador ATMEGA328P (una vez programado) y montarlo en un circuito impreso aparte. Para realizar este montaje, además del micro-controlador se necesitan algunos componentes más para que el dispositivo funcione. A continuación se muestra un esquema de montaje, en el que se incluye también un circuito de alimentación, compuesto por una batería de Li-ion, junto con su módulo de carga TP4056 y un módulo Step-Up de 5v.

El código de programación para este montaje puede descargarse desde el siguiente enlace (es el denominado): Angulos.ino 

Esquema: Nivel de 2 ejes

Si se quisiera utilizar un medidor con más prestaciones, se podría añadir a este circuito el módulo BMP280, el cual incluye un sensor barométrico y un sensor de temperatura. De esta manera, el medidor podría disponer de dos funciones:

  1. Medidor de nivel de 2 ejes
  2. Altímetro barométrico + temperatura

El código de programación para este montaje puede descargarse desde el siguiente enlace (es el denominado): Alti_Nivel.ino 

Esquema: Altímetro y Nivel

Puede ver más detalles de este montaje en el siguiente video:

Programador ICSP con ARDUINO

Construcción de un programador serie (ICSP) utilizando Arduino. Si no disponemos de un programador, esta es la solución más barata. Sin embargo, tanto el código de Arduino como el software de programación, son específicos para programar el micro-controlador AT89S51/AT89S52… y no sirven para programar cualquier otro modelo.

AT89S52
AT89S52

FICHEROS

En la página del autor del proyecto: TIKTAK’S PROJECTS , encontrarás además de la información de este proyecto, el link de acceso directo a la descarga de los archivos que necesitas. El fichero que debes cargar a tu Arduino para que funcione como programador, y el programa que necesitarás para exportar el archivo hexadecimal (firmware) hacia el micro-controlador AT89S51/AT89S52.

3 de Marzo de 2020

Miguel Berezosky me informa en un comentario que los archivos no los puede descargar. Como el autor de este proyecto parece que los ha eliminado en su alojamiento DropBox, los he subido a mi cuenta para que los podáis descargar:

Arduino_ICSP.rar

INFORMACIÓN

He creído conveniente incorporar esta información en el blog, con el fin de ampliar un poco más los detalles de funcionamiento de este programador, y también porque en este canal tenéis otros proyectos en los que se utiliza el mismo tipo de micro-controlador. Si eres aficionado a la electrónica y no dispones de un programador, este montaje te podría ser de mucha utilidad.

Montaje ICSP
Montaje ICSP

Si quieres fabricarte un programador ICSP (In-Circuit Serial Programming) , solo necesitarás una placa de Arduino -no importa el modelo- y montar el circuito que se muestra a continuación:

Esquema ICSP
Esquema ICSP

El ejemplo siguiente muestra cómo puedes programar un circuito, en el que ya existe una entrada para su programación en serie:

  • ISP (In-system programming) 
  • ICSP (In-Circuit Serial Programming)
Programador ICSP
Programador ICSP

INCONVENIENTES

Existen algunas limitaciones y desventajas si comparamos este programador con otro de tipo convencional. La primera y más importante, es que el software NO permite verificar la integridad de lo que se ha grabado. Si existiera algún error durante la escritura, el software no lo detectaría. En estos casos, lo normal es que el dispositivo programado no llegara a funcionar, pero dependiendo del tipo de error, podría funcionar de manera defectuosa.

La segunda no es tan importante, pero ha tardado 4 minutos en programar los 6.813 bytes del fichero con el que he realizado las pruebas. Con un programador convencional  el proceso completo: borrado, escritura y comprobación, se realiza en algo menos de 13 segundos.

ARDUINO: Altímetro barométrico

Construcción de un altímetro barométrico electrónico, con Arduino. La presión atmosférica: principios, unidades de medida, relación altura/presión, sistemas de medida, etc. Se utiliza el módulo BMP280, que incluye un sensor de presión piezo-resistivo de alta precisión y bajo consumo (2,7 uA / 1Hz), además de un sensor de temperatura. Descripción del código de programación con Arduino y sus librerías de control. Montaje del altímetro en una placa de circuito impreso independiente del módulo Arduino, con alimentación a baterías y módulo de carga.

Presión atmosférica

La presión atmosférica es la fuerza por unidad de área que ejerce el aire sobre la superficie terrestre, la cual está asociada a los cambios meteorológicos. La altura modifica tanto la temperatura como la presión atmosférica. La presión atmosférica disminuye con la altitud y la humedad, ya que el peso de la masa del aire disminuye.

Los primeros barómetros fueron construidos por el físico y matemático italiano Evangelista Torricelli en el siglo XVII. La presión atmosférica equivale a la altura de una columna de agua de unos 10,33 m de altura. En los barómetros de mercurio, cuya densidad es unas 13,5 veces mayor que la del agua, la columna de mercurio sostenida por la presión atmosférica al nivel del mar es de unos 76 cm.

Barómetro
Barómetro

 La presión atmosférica normalizada, 1 atmósfera, fue definida como la presión atmosférica media al nivel del mar, que se adoptó como exactamente 101.325 Pa / 1013,25 hPa / 760 Torr. (equivalente al peso de 10,33 m de agua)

Normalmente la presión atmosférica se da en milibares, y la presión normal al nivel del mar se considera igual a 1013,25 milibares. En unidades del Sistema Internacional de Unidades, la presión se mide en pascales, aunque cuando se trata de presión atmosférica se suele utilizar el hectopascal, equivalente al milibar (1 mbar = 1 hPa).

Foto_5

  • 1 bar = 100.000 Pa = 1000 hPa = 100 kPa = 100 kN/m2 = 1,01972 kgf/cm2
  • 1 bar = 14,5037738 PSI(= libras/pulgada2 = lb/in2)
  • 1 bar = 750,062 mmHg(Torr)
  • 1 bar = 0,9869 atm
  • 1 atm = 101.325 Pa = 1,01325 bar
  • 1 atm = 760 mmHg (Torr)
  • 1 mmHg = 133,28947379 Pa

El kilopascal (kPa) es una unidad de presión que equivale a 1.000 pascales. El hectopascal (hPa) es una unidad de presión que equivale a 100 pascales y es usado por su equivalencia con el milibar.

 Sensor de presión BMP280

El módulo BMP280 contiene un sensor de presión piezo-resistivo de alta precisión y bajo consumo  (2,7 uA / 1Hz), además de un sensor de temperatura.

Sensor: BMP280
Sensor: BMP280
  • Resolución: 0,0016 hPa / 0.01ºC
  • Interface: SPI / I2C
  • Dirección I2C:  76H (SDO: 0) / 77H (SDO: 1)
  • Rango de presión:   300…1100 hPa / +9000 … -500 metros sobre el nivel del mar
  • Precisión: +- 0,12 hPa / +- 1m.

Construcción de un altímetro con ARDUINO

Altímetro (esquema)
Altímetro (esquema)

El código de programación de Arduino, junto con las librerías necesarias para realizar este proyecto, se pueden descargar de forma gratuita desde el siguiente enlace: BMP280.zip