Litros de un depósito en el móvil

Construcción de un medidor de nivel de líquidos por ultrasonidos con Arduino. Los litros que contiene un depósito se calculan en función de la ditancia libre del depósito, medida por ultrasonidos, y se muestran en un display OLED con una resolución de 1 litro. Las medidas del depósito se deben configurar en el firmware, antes de programar el ATMega328P. Todos los ajustes y medidas pueden comprobarse a distancia en un teléfono móvil, mediante una conexión Bluetooth.

Interior del medidor de litros

Nivel de un depósito con ultrasonidos

Mejoras con respecto al montaje anterior

  • Montar un módulo Bluetooth para ver en el teléfono todos los datos de cada medida, además de los litros, que es lo único que muestra el display.
  • Bajar la resolución de la medida a milímetros, para coseguir que los litros que muestra el display cambien de uno en uno, y no cada 7,4 litros.

Resolución de la medida

Precisión de la medida

Los litros que muestra este medidor sólo sirven como referencia orientativa. Aunque la precisión de la medida de distancia por ultrasonidos sea bastante buena, hay que tener en cuenta otros factores:

  • Lo normal es que un depósito no sea totalmente simétrico, debido a los flejes de refuerzo y sus ondaluciones.  Si además es un depósito de plástico,  su capacidad varía en función del volumen de líquido que contiene y su temperatura.
  • Teniendo en cuenta que en el depósito que lo instalé, cada milímetro de combustible se corresponden a 0,74 litros, en el mejor de los casos la precisión de la medida sería de +/-1 litro.

Esquema

A continuación se muestra el nuevo esquema del medidor de litros por ultrasonidos. Lo único que cambia con respecto al esquema anterior, es el pulsador del Reset y el módulo Bluetooth HC-05.

Esquema del medidor de litros

Bluetooth HC-05

Es necesario configurar el módulo Bluetooth HC-05 antes de montarlo en el circuito. Aparte de su nombre y password, se debe configurar en modo esclavo a 38.400bps. Luego sólo habría que hacer 3 conexiones con este medidor: los dos hilos de alimentación (5VCC), y la conexión entre el terminal RXD del módulo HC-05 y el terminal TX del microcontrolador ATmega328P.

La conexión TX del módulo ARDUINO UNO está rotulada como D1, y se corresponde con el pin número 3 del microcontrolador ATmega328P.

Configuración del módulo Bluetooth HC-05

El pulsador Reset lo monté para poder reiniciar el microcontrolador en cualquier momento, y permitir que el módulo Bluetooth envíe los datos de configuración del depósito al teléfono móvil.

Configuración del depósito en el móvil

Configurar el tamaño del depósito

Las medidas y capacidad del depósito forman parte de los parámetros de ajuste del código del programa, pudiendo así adaptar con facilidad el firmware a las dimensiones y volumen de cualquier depósito.

Configuración del tamaño del depósito

En esta versión hay que poner todas las medidas en milímetros. Las valores de las tres últimas variables se dejan sin valor, el programa se encargará de calcular estos valores en función de las medidas del depósito.

Al aumentar la resolución de la medida de distancia hasta un milímetro, es muy fácil que cualquier movimiento del líquido en la superficie del depósito haga fluctuar la medida. Para minimizar este efecto, el programa realizará una serie de medidas consecutivas y mostrará el promedio de todas ellas. Cada vez que toma una muestra, introducirá un pequeño retardo antes de realizar la medida siguiente. Este retardo lo calcula el programa, y varía en función de la altura del depósito. Con este retardo se minimiza el efecto eco de una medida anterior en la siguiente, lo cuál introduciría un error al calcular el promedio.

APP para el móvil

Para mostrar los datos que envía el medidor en un teléfono móvil, se puede instalar cualquier aplicación de tipo ‘Terminal‘, yo utilizo una APP gratuita:

Serial Bluetooth Terminal 

APP: Serial Bluetooth Terminal

Firmware

El código que necesitas para programar el ATMEGA-328P de Arduino, lo puedes descargar del repositorio GitHub:

https://github.com/J-RPM/Level-of-a-tank-with-ultrasound

¿Necesitas fabricar un circuito impreso?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos (PCB), pero no en todas podemos conseguir pequeñas tiradas a buen precio. Por suerte, ahora disponemos de Internet y es mucho más fácil que antes. Podemos buscar empresas en cualquier parte del mundo, y es más fácil encontrar un fabricante que haga nuestros prototipos (PCB) a buen precio. Una de las empresas más grandes del sector es PCBWay.

Logo: PCBWay

https://www.pcbway.es/

 

Nivel de líquidos con Arduino

Hace unos días monté un Capacímetro con Arduino. Modificando ligeramente el código es posible añadir una función extra, y utilizarlo también como medidor de nivel de un depósito de agua o combustible.

Medida de nivel con el capacímetro

Capacímetro con Arduino

Sensor de nivel para líquidos

Para medir el nivel de líquidos en un depósito, lo mejor sería montar un sensor resistivo con una boya magnética. Estos sensores son bastante precisos y fiables, pero no son nada baratos cuando los depósitos son grandes. Los sensores resistivos de varilla están construídos con un tubo de acero inoxidale hermético, y una boya imantada en forma de toride por el exterior.

Sensor de nivel resistivo

La varilla del sensor mide lo mismo que la altura del depósito, en mi caso 130 cms. para un depósito de 1000 litros.  En el interior de la varilla hay muchas resistencias en serie, su número varía en función de la altura del depósito y la resolución del sensor. Cada resistencia incluye un microcontacto magnético, el cuál se cierra cuando la boya exterior alcanza su altura, modificando así el valor de la resistencia entre sus dos terminales de salida. Algunos sensores pueden tener tres cables, el cable extra va conectado a un microinterruptor que se posiciona casi al final de la varilla, al fondo del depósito,  y se puede utilizar como alarma para avisar cuando se ha llegado a la reserva.

Sensor de nivel Capacitivo

El inconveniente principal de un medidor de nivel de líquidos capacitivo, es que su precisión disminuye a medida que aumenta la longitud del cableado de conexión entre el sensor y el equipo de medida, y su resolución varía en función de las propiedades del líquido. A cambio es una alternativa barata, y es muy sencillo fabricar un sensor capacitivo de forma casera.

El extremo del cable-sensor hay que sellarlo, porque el líquido no puede entrar en contacto con el cobre. Para dar rigidez al cable, utilicé un trozo de canaleta de plástico del tamaño del depósito (130 cms).

Sensor de nivel capacitivo

Para sellar el extremo final del sensor utilicé adhesivo termofundible (error), pero después hice pruebas con gasoil, con el fin de comprobar el posibe deterioro del aislante, la canaleta y el sellado del extremo.

Al cable no le pasa nada, pero la canaleta pierde algo de rigidez, y el adhesivo termofundible pierde adherencia con el cable. Con el tiempo se podría desprender el sellado del cable y falsear la medida. La solución que tomé, fué quitar el adhesivo termofundible y la canaleta.

Sellado del cable: presionando y moviendo la funda del cable hacia fuera hasta ocultar el cobre. Luego con aire caliente puse el plástico del extremo muy viscoso, y lo sellé presionando con un alicante de punta estriada.

Mantener el cable rígido dentro del depósito: puse un trozo de acero inoxidable en el extremo inferior del cable-sonda, y luego tensando el cable hacia fuera del depósito y bloqueando con una brida en el extremo superior, el cable-sensor queda totalmente recto.

Esquema del capacímetro

Este capacímetro está construido con un ATMEGA328P y sus componentes mínimos: el circuito oscilador y el del Reset.

Esquema del Capacímetro.

Código de programación

Para que este capacímetro pueda mostrar el nivel del depósito, he creado una tabla referenciando a cero el valor de capacidad que mide el sensor sin entrar en contacto con el gasoil, y la máxima la he calculado a partir de la medida que muestra el capacímetro con el sensor sumergido, actualmente el gasoil está a 93 cms. de altura desde el fondo del depósito.

Código: Capacímetro y Nivel de líquidos

Con el capacímetro colocado a dos metros del depósito, la capaciadad que medí con el sensor fuera del depósito era de 252pF, y con el sensor sumergido a 93 cms medí 267,26pF. Así  el incremento de capacidad por centímetro de gasoil en el depósito es: (267,26pF – 252pF) / 93 cms = 0,164pF. Y con el depósito lleno, la capacidad sería:  252 + (0,164pF x 130 cms) = 273,33pF.

Como podemos comprobar, existe una diferencia de capacidad entre el depósito lleno y vacío de tan apenas 21,33pF. para una distancia de 130 cms. En las pruebas que hice con la jarra de agua, el incremento de capacidad por centímetro era de 2pF… una resolución 12 veces mejor que en el depósito de gasoil. Aparte de la diferencia que exista entre el agua y el gasoil, poner el capacímetro tan lejos del sensor no ha sido buena idea. Para conseguir una mayor precisión y estabilidad en la medida, tendría que haber colocado el capacímetro más cerca del depósito.

Para minimizar la fluctuación de las medidas, se toman 150 muestras y se calcula el valor promedio, antes de mostrar los datos en la pantalla. El nivel del depósito se muestra de forma gráfica en la línea superior del display. La barra de nivel se forma a partir de 6 caracteres gráficos que se almacenan en la RAM, indexados del 0 al 5. El gráfico con index 0 es un caracter en blanco, el uno rellena la primera línea vertical de la matriz de 7×5 que conforma cada letra, y así sucesivamente hasta el index 5 que rellena las 5 líneas verticales. Así la barra gráfica completa se compone de 5 niveles por 16 caracteres = 80 niveles.

Nivel del depósito

Al inicio del void loop() se toma una medida de capacidad, y si el valor leído es inferior a 355pF se accede a la rutina de medida de pF con dos decimales, pero se muestra el valor directamente en pFx100. en la línea inferior del display, y la gráfica de nivel del depósito se muestra en la línea superior. Si la capacidad medida es superior a 355pF, funciona como un capacímetro y no se muestra la gráfica del nivel,

Madida de capacidad

Firmware

El código que necesitas para programar el ATMEGA-328P de Arduino, lo puedes descargar del repositorio GitHub:

https://github.com/J-RPM/Capacimeter-Level

¿Necesitas fabricar un circuito impreso?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos (PCB), pero no en todas podemos conseguir pequeñas tiradas a buen precio. Por suerte, ahora disponemos de Internet y es mucho más fácil que antes. Podemos buscar empresas en cualquier parte del mundo, y es más fácil encontrar un fabricante que haga nuestros prototipos (PCB) a buen precio. Una de las empresas más grandes del sector es PCBWay.

Logo: PCBWay

https://www.pcbway.es/

 

Capacímetro con Arduino

La plataforma de programación de Arduino es muy versátil. Al ser un sistema de código abierto, hay mucha gente que colabora y comparte sus programas. Con Arduino es muy sencillo diseñar y fabricar cualquier dispositivo electrónico a medida. Sólo hay que buscar las librerías del proyecto que tengamos en mente, y escribir unas pocas líneas de código para  hacer que todo funcione según lo hemos pensado. Hace unos días me preguntaron si conocía la librería Capacitor.h, y como la mejor forma de conocer una librería es trabajar con ella, hice este capacímetro con Arduino. Como en realidad son dos librerías, he utilizado las dos dentro del mismo código.

«Capacitor.h» permite medir capacidades comprendidas entre 1pF y 100μF.

https://wordpress.codewrite.co.uk/pic/2014/01/21/cap-meter-with-arduino-uno/

«CapacitorLite.h» utiliza menos almacenamiento de programa y funciona más rápido. Puede medir entre 0,2pF y 655pF, pero se aumenta su resolución porque entrega los valores en pFx100 (dos decimales).

https://wordpress.codewrite.co.uk/pic/2014/01/25/capacitance-meter-mk-ii/

Esquema del capacímetro

Este capacímetro está construido con un ATMEGA328P y sus componentes mínimos: el circuito oscilador y el del Reset.

Esquema del Capacímetro.

Para montar todo esto, utilicé un PCB de los que me sobraron cuando hice el Shield del programador ISP para Arduino.

Shield programador ATmega/ATtiny (ARDUINO)

El único problema es que tuve que hacer algunos puentes con cable por debajo.

Puentes a realizar en el PCB del Capacímetro-

Para alimentar el capacímetro utilicé una batería LiPo de 3,86V de tensión nominal, es un módulo recuperado de la batería de un PC. El largo y ancho del capacímetro lo hice en función del tamaño de la batería. La batería va alojada en la base de la caja, debajo de toda la electrónica. Para elevar la tensión de la batería a 5V, es necesario un circuito Step-Up Converter. El primer circuito Step-Up que utilicé interfería las lecturas del conversor ADC, y el capacímetro mostraba algunas medidas erróneas. Al final probé con un módulo MT-3608, previamente ajustado a 5V, y se acabaron los problemas. Para cargar la batería, utilicé el módulo de carga y protección TP-4056.

La  medida de la capacidad se muestra en un display LCD de 2×16 caracteres, utilizando la librería CapacitorLite si el condensador bajo prueba mide menos de 655 pF, o Capacitor.h para mostrar capacidades hasta 100μF. El rango de la medida de capacidad se podría aumentar un poco más, pero la precisión empeora rápidamente.

Código de programación

En los comentarios de inicio del programa están los detalles de funcionamiento, y los link de acceso a las dos publicaciones de Jonathan Nethercott, donde explica con más detalle el funcionamiento de las dos librerías y su calibración.

Código Arduino para el Capacímetro.

Al principio del código se definen los pines de conexión del display LCD y los dos pines donde las dos librerías medirán el condensador bajo prueba: el pin digital 12 y el analógico 2. Para realizar la medida, la librería genera un impulso de 5V de corta duración, alrededor de 100μSeg.

Impulso generado por el Capacímetro.

Posteriormente se realiza la media de tensión en el condensador entre los pines D12 y A2, en función de la capacidad interna y la resistencia PullUp del microprocesador que se utiliza. Estos valores los define de forma automática la librería, pero se pueden calibrar para aumentar la precisión.

En el void setup() se define la velocidad del puerto serie y se genera el mensaje de presentación en el LCD y el puerto serie. También se pueden modificar los valores de calibración de las dos librerías si fuera necesario.

En el void loop() se repite el ciclo de medida de capacidad cada segundo. Se empieza midiendo la capacidad con la librería CapacitorLite.h. El valor de esta medida es en pF x 100, por lo que habría que dividir el valor obtenido entre 100 para mostrar la medida en pF, pero primero se comprueba si el valor obtenido es menor de 65.500, ya que el contador es de 16 bits y se desborda al superar 65.535. A continuación se puede ver el impulso de 5V de corta duración, que genera el pin D12 para realizar la medida de capacidad.

Si el valor de la medida fuese mayor de 655pF, se repetiría la medida utilizando la librería Capacitor.h. A continuación se pueden ver los dos impulsos que genera el pin D12, uno a continuación del otro, para realizar otra medida de capacidad utilizando la segunda librería.

Doble impulso del capacímetro

Con Capacitor.h se obtienen directamente valores en pF. Mediante el código se ajustan los valores superiores a 1.000 para que se muestre en nF, y si la medida es superior a 1.000.000, se ajusta el valor a μF. Al principio de todo, se comprueba que el valor medido sea inferior a 101 μF, con el fin de no mostrar valores imprecisos en las medidas.

Al final del código se muestra la medida realizada en el LCD y a través del puerto serie, añadiendo una indicación de actividad en el display durante 300mSeg. Al final se realiza una pausa de 700mSeg. antes de repetir de nuevo el ciclo de medida.

Firmware

El código que necesitas para programar el ATMEGA-328P de Arduino, lo puedes descargar del repositorio GitHub:

https://github.com/J-RPM/Capacimeter/

Caja 3D del Capacímetro

La caja del Capacímetro la hice con 3 piezas, impresas en 3D con PLA de color negro. Para que destaque la serigrafía, se puede pintar con un pincel fino y pintura sintética, utilizando cualquier color que sea claro.

Caja 3D para el Capacímetro.

Caja del Capacímetro – Thingiverse: Capacimeter with Arduino

¿Necesitas fabricar un circuito impreso?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos (PCB), pero no en todas podemos conseguir pequeñas tiradas a buen precio. Por suerte, ahora disponemos de Internet y es mucho más fácil que antes. Podemos buscar empresas en cualquier parte del mundo, y es más fácil encontrar un fabricante que haga nuestros prototipos (PCB) a buen precio. Una de las empresas más grandes del sector es PCBWay.

Logo: PCBWay

https://www.pcbway.es/

Plato giratorio con motor paso a paso

Construcción de un plato giratorio, con un motor paso a paso unipolar de 5 hilos 28BYJ-48. Los platos giratorios se utilizan desde hace mucho tiempo en los escaparates como expositores, sobretodo en tiendas de relojes y joyerías. En mi caso, lo voy a utilizar para grabar algunas escenas de montajes electrónicos. Este plato puede girar en ambos sentidos con gran precisión, y a una velocidad configurable a elegir entre uno de sus 6 preset. El controlador del motor está hecho con un microcontrolador Atmega328P (Arduino). Aprovechando la gran precisión de giro de los motores paso a paso, este plato giratorio se podría utilizar como temporizador cíclico, montando levas en el plato para accionar uno o varios pulsadores.

Motores Paso a Paso

Un motor paso a paso convierte los impulsos eléctricos que recibe en sus bobinas, en movimiento de rotación, y se considera como un motor de corriente continua sin escobillas.

Motor Unipolar de 5 hilos

Un motor paso a paso funciona con tensión continua, y puede ser de casi cualquier tamaño y par. Cuando se le aplica energía en alguno de sus bobinados, da un «paso» en lugar de girar constantemente. Cada paso provoca una rotación con un ángulo especificado por el fabricante del motor, ya que depende del número de polos del motor y su demultiplicación interna.

Un motor paso a paso se comporta como un conversor Digital-Analógico (D/A), convirtiendo los impulsos digitales de tensión que recibe en giros analógicos de gran precisión. Estos motores se utilizan en cualquier dispositivo electrónico que requiera mover objetos con gran precisión: impresoras convencionales y 3D, escáner, plotter, fresadoras CNC, grabadores láser, etc.

Stepper motor 28BYJ-48

Model : 28BYJ-48
Rated voltage : 5VDC
Number of Phase : 4
Speed Variation Ratio : 1/64
Stepper Motor 5V 4-Phase 5-Wire & ULN2003 Driver Board
Stride Angle : 5.625° /64
Frequency : 100Hz
DC resistance : 50Ω±7% (25℃)
Idle In-traction Frequency : > 600Hz
Idle Out-traction Frequency : > 1000Hz
In-traction Torque >34.3mN.m (120Hz)
Self-positioning Torque >34.3mN.m
Friction torque : 600-1200 gf.cm
Pull in torque : 300 gf.cm
Insulated resistance >10MΩ (500V)
Insulated electricity power :600VAC/1mA/1s
Insulation grade :A
Rise in Temperature <40K (120Hz)
Noise <35dB (120Hz, No load, 10cm)

Control del plato giratorio

Para controlar los ángulos de giro y velocidad de un motor paso a paso, es necesario saber como mínimo el número de pasos por vuelta del motor, su tensión de alimentación y la frecuencia máxima de funcionamiento.

El motor 28BYJ-48 hace un giro completo cada 64 pasos, pero incluye una reducción de 1/64 . Como resultado tenemos 64×64 = 4096 pasos por vuelta. Como el motor se acopla al plato mediante un piñón y una corona de relación 1/7, los cálculos de giro los tendremos que calcular en función de 4096×7 = 28972 pasos por vuelta.

Al tratarse de un motor de 4 fases, es posible controlarlo en ciclos de 4 pasos. Aunque se pierda un poco de PAR, los fabricantes aconsejan hacer funcionar el motor en modo “Half Step Drive” (medio paso), haciendo los saltos menos bruscos y reduciendo su consumo.

Secuencia de 8 pasos, para mover el motor 28BYJ-48 en Half Step Drive:

Secuencia de 8 pasos, para alimentar el motor paso a paso unipolar de 5 hilos 28BYJ-48

Construcción del Plato giratorio

Para la construcción de este plato giratorio he utilizado el motor paso a paso unipolar de 5 hilos 28BYJ-4.  Este motor junto con su driver de control, se puede conseguir por Internet por menos de 5 Euros. Al tratarse de un motor unipolar, no es necesario utilizar un driver del tipo Puente H, necesario para controlar los motores bipolares de 4 hilos.

Driver para motor paso a paso unipolar de 5 hilos

El driver de este motor es muy sencillo, sólo necesita 4 transistores en montaje Open-Collector para suministrar la corriente necesaria a las bobinas del motor. El driver que se incluye con este motor utiliza 4 entradas-salidas del circuito integrado ULN2003, de las 7 que incluye el chip. También lleva 4 indicadores LED para señalizar cuando se está alimentado cada una de las 4 bobinas del motor.

El controlador del motor lo he montado aprovechando el PCB del Shield del programador ISP de Arduino UNO que hice hace unos años.

Shield programador ATmega/ATtiny (ARDUINO)

Sólo es necesario cortar una pista del circuito impreso, y unir 11 pines del ATmega328P con su puntos de conexión correspondiente, como si se tratase de un Arduino UNO.

Esquema del plato giratorio con Arduino

En el esquema de montaje se muestran todos los puentes que hay que hacer en color rojo, así como los componentes que hay que montar, resaltados en color verde. Para alimentar todo el circuito, he utilizado una pequeña fuente conmutada de 230VAC-5VDC de 500 mA.

Acceso a descargas

Firmware para cargar en Atmega328P:

Plato_28BYJ-48.rar

Caja y engranajes 3D – Thingiverse:

Turntable, with a 28BYJ-48 5-wire unipolar stepper motor

¿Necesitas fabricar un PCB?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos (PCB), pero no en todas podemos conseguir pequeñas tiradas a buen precio. Por suerte, ahora disponemos de Internet y es mucho más fácil que antes. Podemos buscar empresas en cualquier parte del mundo, y es más fácil encontrar un fabricante que haga nuestros prototipos (PCB) a buen precio. Una de las empresas más grandes del sector es PCBWay.

Logo: PCBWay

Ahora también puedes encargar trabajos 3D, mecanizados con CNC y fabricación de cajas metálicas o de plástico inyectado.

https://www.pcbway.es/

Entrenador de Reflejos y Coordinación

Hace 6 años hice un entrenador de reflejos con 6 pulsadores.

ENTRENADOR DE REFLEJOS – IMPROVES YOUR REACTION TIME

Después hice un mural de madera, y cambié los pulsadores por otros de gran tamaño, pudiendo controlar todo desde un PC mediante un software hecho a medida.

Mural con pulsadores (Entrenador de reflejos)

Con el software Reflejos.exe es posible controlar los tiempos, mostrar los intervalos entre pulsaciones, modificar las secuencias de los pulsadores, almacenar los tiempos de hasta 25 jugadores y mostrar su progresión mediante gráficas.

Software:Reflejos.exe (Control del juego/Prácticas QWERTY)

Posteriormente  hice un reloj LED con tecnología SMD, diseñando los PCB’s de la CPU y los dígitos numéricos. El PCB de control del  reloj lo hice pensando en una placa de desarrollo, igual que Arduino, montando conectores en todos los pines del microcontrolador. La CPU del reloj está construída con el microcontrolador AT89S52, el mismo microcontralador que utilicé en el primer Entrenador de Reflejos que hice, pero con encapsulado SMD.

Construye un Reloj SMD

En esta ocasión he actualizado el firmware del Entrenador de Reflejos y el software de control, para adaptarlos a esta nueva CPU y mejorar su operatividad. El nuevo montaje también es diferente, más enfocado a la rehabilitación y coordinación de movimientos que al juego. En este caso, los 6 pulsadores se pueden accionar con las manos y con los pies, y la conexión entre la CPU y el software de control es inalámbrica,  utilizando el módulo Bluetooth HC-05.

Entrenador de Reflejos y Coordinación

Nuevo esquema del Entrenador de Reflejos

Este es el nuevo esquema del Entrenador de Reflejos, con todas las conexiones adaptas al PCB del Reloj:

Esquema: Entrenador de Reflejos y Coordinación

Debido a la gran versatilidad de este PCB, en la adaptación no ha sido necesario cortar ninguna pista del circuito impreso ni hacer puentes entre ellas. Este PCB ya dispone de terminales de conexión para todos los periféricos que se necesitan conectar: los LED de señalización, los pulsadores, el display LCD y el módulo Bluetooth. El avisador acústico ya se utilizaba con el reloj, y va montado en el mismo PCB.

PCB: CPU del Reloj SERIE (Modificada)

Para la señalización óptica de los pulsadores he utilizado 2 LED SMD blancos por pulsador, en paralelo y alimentados a 5V, intercalando en serie una resistencia limitadora de 220 Ohmios en cada LED. Así la corriente máxima de cada LED es de aproximadamente 10mA. Con el fin de proteger la alimentación frente a un posible cortocircuito en el cableado, los 5 voltios que van hacia los pulsadores se alimentan de dos hilos diferentes, cada línea alimenta 3 pulsadores, y cada uno de estos hilos limita el consumo máximo intercalando una resistencia de 22 Ohmios en serie.

Para alimentar todo el conjunto he utilizado un conector microUSB. Así es posible utilizar cualquier cargador USB que tengamos disponible en casa. El consumo máximo de todo el circuito es inferior a 200mA.

PCB: microUSB

La programación y actualización del firmware del microcontrolador AT89S52 se realiza una vez montados todos los componentes en la placa, a través del conector ICSP. Lo ideal sería utilizar un programador ICSP comercial, pero si no lo tienes, podrías convertir en un momento un módulo Arduino en programador ICSP:

Programador ICSP con ARDUINO

Bluetooth HC-05

El módulo Bluetooth HC-05 hay que configurarlo antes de montarlo en la CPU.

Módulo HC-05

Para su configuración es necesario conectarlo a través de un interface serie con un PC, y con cualquier software Terminal y mediante comandos AT configurar su modo de funcionamiento como esclavo, y la velocidad a 57600 bps. Si se quiere, también se pueden modificar el nombre del dispositivo y su PIN de acceso a la conexión. La manera más fácil de configurar todo esto es a través de Arduino, utilizando su interface de comunicaciones serie para enviar los comandos AT al módulo  HC-05 y configurarlo.

Conexiones Arduino y HC-05 (configuración)

Al principio del código de configuración del módulo HC-05 he anotado los comandos AT más importantes, así como el modo de entrar en modo comandos AT. Dependiendo del tipo de módulo HC-05, el acceso a modo comandos es diferente, porque algunos módulos llevan un pulsador y otros no.

Bluetooth HC-05: Comandos AT

Acceso a descargas

Firmware para cargar en AT89S52: REFLEJOS_SMD_v1_02.HEX 

Configuración del módulo HC-05 con Arduino – DropBox: HC-05.rar

PCB de la CPU – PCBWay: Multipurpose_CPU_with_AT89S52 

Software de control – DropBox: Install_Reflejos.zip

Caja 3D – Thingiverse: Reflexes and Coordination Trainer

¿Necesitas fabricar un PCB?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos (PCB), pero no en todas podemos conseguir pequeñas tiradas a buen precio. Por suerte, ahora disponemos de Internet y es mucho más fácil que antes. Podemos buscar empresas en cualquier parte del mundo, y es más fácil encontrar un fabricante que haga nuestros prototipos (PCB) a buen precio. Una de las empresas más grandes del sector es PCBWay.

Logo: PCBWay

Ahora también puedes encargar trabajos 3D, mecanizados con CNC y fabricación de cajas metálicas o de plástico inyectado.

https://www.pcbway.es/