Generador de Plata Coloidal con Arduino

Construcción de un generador de Plata Coloidal con Arduino. El generador está programado para producir 200mL de plata coloidal, con concentraciones a elegir entre 10 y 100 ppm. La plata coloidal está compuesta por nanopartículas de plata de alta pureza, que se mantienen suspendidas en agua purificada. Las nanopartículas de plata miden entre 5 y 100nm, y tienen una carga eléctrica positiva debido al proceso de electrolisis que se utiliza en su producción. La plata coloidal se podría considerar como un antibiótico casero, quizás por su falta de interés comercial de las empresas farmacéuticas.

Generador de Plata Coloidal

Plata Coloidal

El uso de plata en sus diversas formas ha sido frecuente desde la antigüedad, para tratar infecciones y todo tipo de enfermedades. Aunque su popularidad decreció a partir de los años ’40, cuando aparecieron los antibióticos.

La plata coloidal se podría considerar como un antibiótico casero, quizás por su falta de interés comercial de las empresas farmacéuticas. Actualmente la plata coloidal se utiliza y se acepta como segura para uso externo, pero existen serios recelos por parte de la comunidad científica acerca de su seguridad por vía oral.

La comunidad científica siempre aplica el principio de la precaución: No se puede autorizar el uso  de la plata coloidal por vía oral hasta que se demuestre que sus resultados son seguros. Sin embargo, aplicando el conocimiento de nuestros antepasados podríamos considerar que: La plata coloidal por vía oral es segura mientras no se demuestre lo contrario.

El principal problema que tiene la ingesta de la plata coloidal, es que es muy difícil comprobar su calidad y cantidad de plata (ppm) que contiene el producto, y siempre hay que fiarse del vendedor. Actualmente es muy fácil comprar plata coloidal por Internet, porque se ha puesto de moda y hay mucha gente que se dedica a fabricarla. Para comprobar las ‘ppm’ que contiene la plata coloidal no sirve un medidor TDS. Los medidores TDS miden la conductividad del agua para calcular y mostrar el valor de los sólidos disueltos que contiene.

Medidor TDS

La plata coloidal está compuesta por nanopartículas de plata de alta pureza, que se mantienen suspendidas en agua purificada. Las nanopartículas de plata miden entre 5 y 100nm, y tienen una carga eléctrica positiva debido al proceso de electrolisis que se utiliza en su producción. Los iones de plata se mantienen separados entre sí, debido a su repulsión al disponer de la misma polaridad, y su concentración apenas altera la conductividad del agua. Los iones de plata no están disueltos en el agua, permanecen flotando sin entrar en contacto entre ellos.

Iones de Plata Coloidal

Dependiendo de la concentración de plata en el agua, el color de la plata coloidal varía. Empezando por un color amarillento pálido con bajas concentraciones de plata, pasando por el color ámbar hasta el rojo cereza para concentraciones muy altas.

Para estar seguros de que la plata coloidal es de buena calidad, la forma más sencilla es fabricarla uno mismo. Lo más importante es utilizar electrodos de plata de alta pureza y agua de calidad. Normalmente se aconseja utilizar agua bidestilada para fabricar la plata coloidal, pero el proceso de fabricación es muy largo debido a su baja conductividad. Algunos aconsejan mezclar sales con el agua bidestilada para acelerar el proceso de la electrolisis, pero con esto se empeora notablemente la calidad del producto final.

Ósmosis Inversa de 5 Etapas

La mejor opción sería utilizar agua potable de calidad, después de pasar por un filtro de ósmosis inversa. No es aconsejable utilizar directamente el agua del grifo, porque su valor TDS siempre estará por encima de 10ppm. y además podría contener metales. Cuanto mayor sea la concentración de sales en el agua (ppm), más rápida será la producción de plata coloidal, pero podría llegar a ser perjudicial en lugar de beneficiosa. Lo ideal es utilizar agua purificada con un valor TDS < 10ppm.

Calidad del agua & Ósmosis Inversa

Fabricar Plata Coloidal

Cuando se fabrica un generador de Plata Coloidal, hay que tener en cuenta la corriente que circula entre los electrodos,  para ajustar con precisión el tiempo del proceso de la electrolisis. Como la corriente varía en función de la conductividad del agua que utilicemos (TDS), es conveniente que nuestro generador realice todo el proceso con una corriente constante. Como es lógico, el tiempo total de la producción varía en función de los mL de agua que utilicemos y de la concentración de plata que queramos obtener. Si no se hacen estos cálculos y se ajustan en el generador que fabriquemos, no sabremos las partes por millón (ppm) de plata coloidal que contiene el producto final.

Plata Coloidal por electrolisis

Así la calidad de la plata coloidal cambiará en función de la calidad del agua y la pureza de la plata que utilicemos, pero la concentración de plata en el agua (ppm) siempre la podremos controlar.

Calibrar el generador

Para calibrar un generador de plata coloidal, sería necesario disponer de una pequeña báscula de precisión. Yo utilicé una báscula digital electrónica muy barata, se puede conseguir por Internet por menos de 5€. Esta báscula puede pesar hasta 200 gramos con una resolución de 10mg.

El calibrado del generador consiste en pesar los electrodos de plata antes de empezar, y realizar varios procesos utilizando el mismo tiempo a una corriente constante. La precisión del calibrado será mejor si los cálculos se hacen después de fabricar mucha cantidad de Plata Coloidal. Yo lo hice repitiendo 10 veces el mismo proceso con 200mL de agua purificada, circulando una corriente constante de 2mA durante 70 minutos en cada proceso.

Peso de los electrodos de plata

Después de esto, desmonté los electrodos y los volví a pesar. El único electrodo que se consume es el que se conecta al positivo de la fuente de alimentación, el ánodo. Para conocer las partes por millón de Plata Coloidal de los 2 litros de agua, sabiendo la cantidad de plata que se ha utilizado en la electrolisis, sólo hay que hacer un cálculo matemático. En mi caso se perdieron exactamente 100mg de plata en 2 litros de agua (2Kg).

Después podemos asociar el tiempo de cada proceso con una ppm, para que nuestro generador calcule y ajuste los tiempos de forma automática en función de las ppm que queramos obtener en el futuro.

70 minutos / 50 ppm = 1,4 minutos/ppm

Por último, para que el generador pueda ajustar correctamente los tiempos de la electrolisis con agua de bajo valor TDS, sin la necesidad de tener que calentarla para alcanzar los 2mA del ajuste que tomé como referencia, al iniciar el proceso el generador mide la conductividad del agua y reajusta de forma automática el tiempo de la electrolisis. Para que no se eternice el proceso de la producción, al arrancar se comprueba que la corriente de la electrolisis sea >1mA, y la corriente máxima se limita a 2,25 mA. De la limitación de corriente máxima se encarga el regulador 78L05, no se programa por software.

Si el valor de corriente que muestra el display fuese >2,2mA, sería porque la conductividad del agua es muy alta, y sería conveniente medir el valor TDS del agua antes de iniciar el proceso. El circuito limitador de corriente máxima de este generador (78L05) empieza a actuar cuando el TDS del agua supera aproximadamente las 10ppm .

Esquema de montaje

Este generador incluye una fuente alimentación conmutada de 5V, para conectarlo directamente a la red eléctrica. La tensión de 5V alimenta el microcontrolador, el display y también el módulo conversor DC/DC  que permite elevar la tensión hasta 45V. En este caso se ajusta a 35V, con el fin de no superar la tensión máxima de funcionamiento del regulador 78L05, encargado de limitar la corriente máxima de la electrolisis.

Esquema: Generador de Plata Coloidal

El microcontrolador es un ATmega328P, y podría utilizarse un Arduino UNO,  pero así queda todo más reducido. La temporización de la electrolisis la controla el ATmega328P, en función de la conductividad del agua que mide al inicio, y la concentración de plata que elijamos. Con el pulsador se pueden seleccionar concentraciones entre 10 y 100ppm antes de iniciar el proceso.

A través del pin 5 del ATmega328P, D3 en Arduino, se controla el relé que conecta y desconecta la tensión de 35 voltios a los electrodos. Añadí 2 condensadores de 1000uF en la fuente de 5V, para evitar que el microcontrolador se bloquease con los picos de consumo del relé cuando se activa. La tensión de la electrolisis se corta a la entrada del módulo conversor DC-DC (5V), porque no tiene sentido que el módulo permanezca alimentado cuando no se utiliza.

La tensión de 35V se conecta al electrodo de plata que hace de ánodo, este electrodo es el único que pierde plata durante la electrolisis. Así el circuito queda interrumpido hasta que no se llene de agua el envase y circule la corriente a través de ella hacia el segundo electrodo, el cátodo.

Dependiendo de la conductividad del agua -el valor TDS- la corriente será mayor o menor. El circuito se cierra a través del LED indicador de corriente, el regulador 78L05 que limita la corriente de la electrolisis y la resistencia de 1K que hace de ‘shunt’. Esta resistencia de 1k medirá una tensión entre sus extremos cuando circule corriente, y la tensión subirá en función de la corriente que circule entre los electrodos de plata, porque es un circuito serie. En paralelo con la resistencia ‘shunt’ hay un condensador de 100nF, para evitar falsas medidas por inducción.

El pin 28 del ATmega328P, A5 en Arduino, mide la tensión y la traduce en corriente. Para que la medida de corriente sea precisa, es necesario ajustar el valor de una variable en el software antes de programar  el chip.

Display LCD 2×16

El display muestra el estado de funcionamiento del generador y sus valores:

Display del Generador de Plata Coloidal

  • La concentración de plata coloidal actual durante el proceso
  • El valor ppm objetivo
  • La corriente que circula entre los electrodos
  • Y el tiempo restante que falta para finalizar

Si se sacan del agua los electrodos durante el proceso de la electrolisis, por ejemplo para remover el contenido, la temporización se detiene hasta que se vuelvan a introducir los electrodos en el agua. Este umbral de detección se configura en el software. Puse un valor de 50 en la medida del ADC, para fijarlo a una corriente de 250uA aproximadamente. En la parte inferior izquierda del display se muestra de forma gráfica el proceso de la electrolisis, animado cuando se detecta que está funcionando, y fijo si la corriente de la electrolisis no supera el umbral mínimo que hayamos fijado.

Conservación de la Plata Coloidal

La plata coloidal se podría conservar hasta 1 año, siempre que se haga en condiciones óptimas:

  • La plata coloidal debe almacenarse en botellas de cristal tintado y cerradas, evitar las botellas de plástico.
  • Hay que guardarla en un lugar oscuro y alejada de radiaciones electromagnéticas. Lejos de las tomas de enchufe, electrodomésticos, teléfonos móviles, etc.
  • Se almacena a temperatura ambiente, no en la nevera, y no debe entrar en contacto con elementos metálicos, como las cucharillas.
  • Antes de cada uso es conveniente agitar la botella, para mantener su homogeneidad.

Color

El color de la plata coloidal no es el mejor indicador de su concentración, porque varía dependiendo de muchos factores. Principalmente por la intensidad y temperatura de color de la luz que se utilice. También depende de la temperatura del agua durante la electrolisis.

PPM

Las partes por millón (ppm) de la plata coloidal no se puede medir con un medidor TDS. Hice plata coloidal de 50ppm utilizando agua filtrada con un valor TDS de 3ppm. Después del procesado el valor TDS subió a 14ppm, ligeramente superior, pero este incremento del TDS no sirve para saber la concentración de plata que contiene.

Transparencia del agua

Para comparar la transparencia del agua, se puede utilizar un puntero láser. Al atravesar la luz del láser desde un lateral hacia el otro,  desde el frente se verá con mayor intensidad o menor el haz de luz del láser, en función de las partículas y sales disueltas en el agua.

Transparencia del agua con un puntero láser

Piezas 3D

Piezas 3D para el Generador de Plata Coloidal

El diseño de las piezas 3D que necesitas para fabricar la caja y el soporte de este montaje, las puedes descargar de forma gratuita desde el siguiente link:

https://www.thingiverse.com/thing:6403044

¿Dónde fabricar el PCB?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos, 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

Capacímetro & ESR con Arduino (v2)

Hace unos meses monté un capacímetro con el fin de comprobar el funcionamiento de las librerías de Arduino: Capacitor.h y CapacitorLite.h. El resultado final no fue todo lo bueno que esperaba, porque el rango de medidas quedó bastante limitado, y no conseguí medir capacidades superiores a 100μF con precisión.

Capacímetro con Arduino

Ahora tengo un capacímetro que apenas utilizo, porque la mayoría de las veces lo necesito para comprobar el estado de condensadores electrolíticos en fuentes conmutadas. En estos casos, los condensadores superan el rango de medidas del capacímetro, y además necesitaría también comprobar su valor ESR para determinar si el condensador sospechoso está en buen estado o no.

Por todo esto, he decidido ampliar las prestaciones de este capacímetro de acuerdo a las necesidades de uso más habituales:

  • Medir capacidades entre 1pF y 10.000μF con precisión
  • Medir los valores ESR de los condensadores a partir de 10μF

Medida de un condensador variable

Detalles de funcionamiento del capacímetro

Después de analizar todas las posibles opciones de medida del capacímetro que monté, limitada por los 1024 umbrales del conversor ADC de Arduino, he decidido añadir una segunda toma de medida. Una entrada será para medir las capacidades entre 1pF y 1μF, y la otra será para medir valores entre 50nF y 10.000μF, incorporando la medida ESR a partir de 10μF.

Esquema: Capacímetro & ESR

Así con la primera entrada utilizaré la librería Capacitor.h para medir capacidades por debajo de 1uF, y la segunda entrada la utilizaré para medir las capacidades más altas, midiendo el tiempo que tarda el condensador bajo prueba en alcanzar el 63% de la tensión máxima del conversor ADC. Con esta segunda entrada del capacímetro, se podrán medir capacidades entre 50nF y 10.000μF.

Entrada 1: 1pF … 1μF (Capacitor.h)

La librería Capacitor.h toma como referencia la capacidad interna de un pin analógico de Arduino, y mide su voltaje después de 30nS. Luego toma como referencia el 1% de la tensión aplicada junto con la capacidad del pin de Arduino, para calcular la capacidad del condensador que se ha conectado.

Capacitor.h con capacidades

Partiendo de los 5 voltios máximos del ADC de Arduino y sus 1024 posibles valores, las lecturas del ADC que podemos esperar oscilarán aproximadamente entre un valor 33 para 1pF y 993 para 1nF (1000pF).

Si la capacidad medida es superior a 1nF, la librería Capacitor.h toma como referencia la resistencia interna PullUp del pin de Arduino, de aproximadamente 30KΩ, y mide el tiempo que tarda el condensador bajo prueba en alcanzar el 63% de la tensión aplicada. A partir de ese tiempo medido se calcula la capacidad aplicando la constante de tiempo RC, tomando como referencia el valor de la resistencia PullUp.

Medida de capacidades altas

Entrada 2: 50nF … 10.000μF (bornas)

Al conectar un condensador en la segunda entrada, el programa realizará un test de estado del condensador y luego realizará una medida rápida, conectando en serie una resistencia de bajo valor (240Ω), para medir el tiempo que tarda en alcanzar el 63% de la tensión máxima del ADC.

Test de los condensadores

  • Si la medida obtenida es superior a 80μF, medirá el valor ESR mostrando ambas medidas en el display. Haciendo la medida RC con una resistencia de bajo valor, se acelera el tiempo de medida de los condensadores de alta capacidad sin perder precisión.

Medida 1000uF

  • En caso de que la medida obtenida fuera inferior a 80μF, no se muestra el valor y se realiza una segunda medida conectando una resistencia 40 veces más alta (10KΩ), con el fin de obtener mayor precisión en la medida de condensadores más bajos. En este caso también se mide el valor ESR si la capacidad es >80μF, y se muestran los resultados en el display.

Calibración del capacímetro

El proceso de calibración de este capacímetro hay que hacerlo en 4 pasos. Dos de ellos son para calibrar los dos sistemas de medida de la librería Capacitor.h, y los otras dos para calibrar los dos rangos de medida de la segunda entrada del capacímetro.

Entrada 1: medidas entre 1pF y 1nF

Es imprescindible conocer el valor exacto de la capacidad interna del pin analógico de Arduino, junto con las capacidades parásitas externas del montaje. Por esto siempre es necesario realizar una calibración final, conectando un condensador de valor conocido y menor de 1000pF como referencia, para medir su valor con el capacímetro una vez montado y cerrado.  Si la medida que muestra el capacímetro fuera inferior a la capacidad real del condensador, subiremos ligeramente el valor de la capacidad interna en el programa, y volveremos a programar el microcontrolador con la nueva referencia. Y si midiera una capacidad superior a la real, bajaremos el valor de la capacidad de referencia. Este proceso habrá que hacerlo varias veces, hasta que consigamos que el capacímetro muestre el valor real del condensador que hemos elegido como referencia.

Entrada 1:  medidas entre 1nF y 1μF

Seguiremos el mismo proceso de antes, pero en este caso es mucho más sencillo porque podremos hacerlo sin cerrar la caja del capacímetro. Conectaremos un condensador algo inferior a 1μF de valor conocido, y retocaremos el valor de la resistencia PullUp que hemos puesto en el programa. Teniendo en cuenta que si aumentamos el valor de la resistencia PullUp, se reducirá el valor de la capacidad que muestre el capacímetro, y si reducimos el valor de la resistencia aumentará la capacidad medida.

Entrada 2:  medidas entre 50nF y 10.000μF

En la segunda entrada del capacímetro, los condensadores de capacidad más baja (<80μF) se miden conectando una resistencia en serie de 10KΩ, y se mide el tiempo que tarda el condensador en alcanzar el 63% de la tensión máxima del conversor ADC. Aunque pongamos una resistencia de precisión, como la tensión de 5V se conecta a través de un pin digital de Arduino, tendremos que sumar el valor de su resistencia interna para que la medida sea precisa.

Pin de medida del Capacímetro

Por otra parte, la conexión común de ambas entradas del capacímetro no es GND, es otro pin analógico de Arduino, y aunque lo configuremos como salida con valor bajo, se sumará una resistencia extra a la constante RC. El valor de esta resistencia extra se compensa de forma automática en el código del programa.

Pin de referencia del capacímetro

Cuando se miden condensadores >80μF, el capacímetro le conecta una resistencia en serie de 240Ω, con el fin de reducir el tiempo de la medida. En este caso sucede lo mismo que antes, y por eso también tendremos que compensar el valor de la resistencia interna del pin digital que conecta la tensión al circuito RC.

Ajuste automático de referencia

El capacímetro realiza un ajuste a cero de las dos entradas cada vez que se conecta la alimentación, compensando así las capacidades parásitas de las puntas de medida que hayamos conectado. Es importante conectar el capacímetro con las puntas libres, sin ningún condensador conectado entre ellas.

Auto ajuste inicial del capacímetro

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/

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/

 

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/

Monitor FM-RDS (v1.2)

Con este receptor es posible conocer los parámetros más importantes que se transmiten por la subportadora RDS. Con esta nueva actualización (v1.2), las librerías del RDS permiten analizar más información que antes, y todo el código está depurado para optimizar la memoria del ATMEGA328P, permitiendo así añadir más prestaciones en el receptor de radio, utilizando el mismo microprocesador.

Monitor FM-RDS v2

Tabla de caracteres del RDS

El sistema RDS transmite los textos codificando los caracteres con su propia tabla de 8 bits, y dispone de 3 tablas de caracteres diferentes, denominadas G0, G1 y G2. Por defecto, los receptores de radio traducen los 8 Bytes del PS y el Radio Texto (RT) utilizando la tabla de caracteres G0. La tabla GO incluye la mayoría de los caracteres utilizados por las diferentes lenguas de la zona EBU. Los receptores de radio tienen que leer el código de 8 bit que reciben por cada letra, y convertirlo al código que se corresponda con la tabla de caracteres que estén utilizando. En este caso sería necesario convertir los caracteres dos veces, una vez para adaptarlos a la tabla de caracteres gráficos de su display LCD, y otra más para codificarlos en UTF-8 y transmitirlos por el puerto serie.

Receptor RDS: tabla de caracteres

Los primeros 127 caracteres de la tabla del RDS siguen el estándar ISO, por lo tanto no hay que convertirlos. Sin embargo, los 127 caracteres más altos de la tabla del RDS no son estándar, y es necesario convertir sus códigos para mostrar correctamente las letras. En este receptor sólo se convierten los caracteres latinos más utilizados, son los caracteres enmarcados con color en la tabla del gráfico anterior.

El display LCD de este receptor dispone de una memoria RAM, que le permite almacenar un máximo de 8 caracteres gráficos diferentes. El display reserva las 16 primeras posiciones de su mapa de caracteres para almacenar gráficos, pero hay que tener en cuenta que el display sólo guardará 8 caracteres gráficos diferentes. Si se guardan los 8 caracteres en las primeras posiciones de la CGRAM (direcciones 0x00 a 0x07), estos mismos caracteres se copiarán también en las 8 posiciones siguientes (direcciones 0x08 a 0x0F). Debido a esta limitación, sólo se generan y guardan los gráficos de las 5 letras acentuadas en minúscula, y las letras: ü, ñ y ç. Cuando se reciban por RDS letras mayúsculas acentuadas, el programa las convertirá en letras mayúsculas sin acento.

Receptor FM-RDS con: SI4703

Este sencillo receptor de radio está basado en el módulo SI4703, de bajo coste y altas prestaciones. Este módulo incluye en su interior todo el receptor de radio, incluso el decodificador Estéreo, el decodificador RDS y un pequeño amplificador de audio. Para controlar este módulo, he utilizado el micro-controlador ATMEGA328P (Arduino).

Esquema: Radio LCD con SI4703

Descarga de ficheros

El firmware y librerías que necesitas para programar el ATMEGA328P,  los puedes descargar desde el siguiente enlace: RDS_Radio_SI4703 (v1.2)

¿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/

Monitor FM-RDS v2

Construcción de un pequeño receptor de radio de FM con RDS, orientado al personal de mantenimiento de los centros emisores de radio. La idea es construir un pequeño receptor de radio que decodifique la información más relevante del RDS, para poder controlar el correcto funcionamiento de la información que se está transmitiendo por la subportadora RDS de cada transmisor.

PCB: SI4703Este receptor es la segunda versión, utilizando el módulo SI4703, en lugar del RDA5807M que monté anteriormente:

Monitor FM-RDS

Módulo receptor FM-RDS: SI4703

El módulo SI4703, incluye un completo receptor de radio en FM: sintonizador, demodulador FM, decodificador estéreo, decodificador RDS y un pequeño amplificador de audio estéreo de 150mW.

Módulo receptor FM-RDS: SI4703

 

Este módulo se alimenta con una tensión continua de 3,3V, la configuración y el control se realiza mediante el bus I2C y la toma de antena está acoplada al hilo común de los auriculares. De esta forma, el cable de los auriculares hace de antena.

Receptor FM-RDS con: SI4703

Este sencillo receptor de radio está basado en el módulo SI4703, de bajo coste y altas prestaciones. Este módulo incluye en su interior todo el receptor de radio, incluso el decodificador Estéreo, el decodificador RDS y un pequeño amplificador de audio. Para controlar este módulo, he utilizado el micro-controlador ATMEGA328P (Arduino).

Esquema: Radio LCD con SI4703

Descarga de ficheros

El firmware y librerías que necesitas para programar el ATMEGA328P,  los puedes descargar desde el siguiente enlace: Radio_SI4703.rar

¿Necesitas fabricar un PCB?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos, 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. Hasta un 30% de descuento para PCBs especiales, con fabricación en 24 horas.

Logo: PCBWay

https://www.pcbway.es/

Ahora el servicio de montaje en PCBWay por 30$, con envío GRATUITO mundial:
https://www.pcbway.es/quotesmt.aspx

Luz de dirección para bicicletas (v2)

Diseño y montaje de una barra LED, para indicar los cambios de dirección y disponer de iluminación trasera en bicicletas y patinetes. Todo el conjunto está montado en cajas hechas a medida, fabricadas en PLA con la ayuda de una impresora y un bolígrafo 3D.

Luz de dirección para bicicletas y patinetes

Barra LED en la bicicleta

Este montaje es una mejora del circuito que mostré anteriormente, basado en el microprocesador ATtiny.

Barra LED de señalización para bicicletas, con ATtiny

En este caso, se amplía el número de puntos LED desde 5 a 9, y se habilita la posibilidad de hacer funcionar las luces de dirección cuando está conectada la luz trasera. En el circuito anterior, debido al número tan limitado de conexiones que dispone el ATtiny  (8 pines), el circuito seleccionaba el modo de funcionamiento al arrancar, y era necesario desconectar la alimentación para cambiar su modo de funcionamiento.

Barra LED para bicicletas
Barra LED para bicicletas

Al utilizar el microprocesador ATmega 328P (28 pines), es posible dedicar 2 pines como entradas y detectar su modo de funcionamiento de forma permanente –sin tener que apagar y encender

Esquema: Barra LED (v2)

Como se puede ver en el esquema, el circuito está alimentado directamente desde la batería de 3,7V. Por este motivo es muy importante que elijamos los LED de alta luminosidad, pero siempre que su umbral de encendido sea bajo (menor de 3V).

Corriente LED

Firmware

El código de programación de esta barra LED,  se puede descargar desde el siguiente enlace: Luz trasera para bicicletas (v2)

Construcción y mecanizado

Como este montaje necesita muy pocos componentes electrónicos, he utilizado un PCB de tipo universal para montar el microprocesador, la batería y el módulo de carga TP4056. Los 9 LED los he montado directamente en una caja hecha a medida, fabricada en PLA con una impresora 3D.  El mecanizado y anclaje de todo el conjunto también está hecho con PLA.

Barra LED: Piezas 3D

Descargar ficheros .stl

LED steering light for bicycles and skateboards

Para la fijación de los LED con el frontal de la caja, he utilizado un bolígrafo 3D. Este bolígrafo 3D  me lo ha enviado GearBest para que muestre su funcionamiento.

Bolígrafo 3D Sunlu SL - 300

El bolígrafo 3D Sunlu SL – 300 utiliza el mismo tipo de filamento que las impresoras 3D, permitiendo así realizar reparaciones y mecanizados en las piezas utilizando el mismo material y color con el que están hechas.

Logo GearBest

A pesar de que el bolígrafo 3D Sunlu SL – 300 tiene un precio muy ajustado, GearBest me ha facilitado un código de descuento para poder conseguirlo todavía más barato. A continuación os dejo algunos link de acceso que me han parecido interesantes, y los códigos de descuento que me han facilitado.

Bolígrafo 3D Sunlu SL – 300
https://goo.gl/sNC6qQ
Cupón de descuento: RPM3DPEN

Accesorios y filamentos 3D
https://goo.gl/9KtaaJ
Cupón de descuento: CA%PS704
8% para compras superiores a 10$

Nuevos gadgets
https://goo.gl/5iCiVL

Web de GearBest en español
https://goo.gl/knpkvD

Fuses Arduino & Dado electrónico

Construcción de un dado electrónico con Arduino, modificando la configuración (fuses) para que funcione con su oscilador interno de 8 MHz. El dado electrónico se controla con un ATmega8A, alimentado con una batería de 3,7V y gobernado con el pulsador táctil capacitivo TTP223.

Cargador USB con sensor táctil

Programar con ARDUINO

Arduino es una plataforma de desarrollo con código abierto, y dispone de librerías para controlar infinidad de sensores y dispositivos sin apenas tener que escribir código. Esto facilita a cualquier aficionado a la electrónica, para que pueda realizar diseños a medida sin apenas tener conocimientos de programación.  Como consecuencia, Arduino ha tomado una gran popularidad, y actualmente se puede encontrar código abierto para realizar cualquier proyecto que se nos ocurra. A pesar de esto, Arduino es mucho más potente y versátil del uso que normalmente se le está dando, porque la potencia y versatilidad de los procesadores ATmega es muy superior al uso que normalmente se le está dando.

Esquema: Arduino UNO (v3)
Esquema: Arduino UNO (v3)

El IDE de Arduino facilita mucho la programación de un microprocesador ATmega, porque sólo es necesario seleccionar la placa de desarrollo con la que se está trabajando (UNO, Mega, Leonardo) y el IDE se encarga de grabar todos los parámetros de configuración y adaptar el código escrito cuando se realiza la compilación y se programa. En la mayoría de los casos esto es suficiente, pero es posible avanzar un poco más y sacar más provecho en los montajes, reduciendo el tamaño y costo de los componentes. El primer paso sería montar el micro controlador, una vez programado, en un PCB aparte y montar únicamente los periféricos que fueran necesarios. Pero si queremos realizar un proyecto de tipo profesional y venderlo, tendremos que modificar los parámetros de configuración para evitar que alguien pueda leer el código y realizar copias. La manera más fácil de cambiar la configuración de un ATmega, es utilizar AVRDUDE y ejecutar las órdenes a través de la ventana de comandos del PC.

https://j-rpm.com/2018/05/%E2%9C%85-arduino-a-fondo-no-te-lo-pierdas/

Dado electrónico con sensor táctil

Como la mejor forma de aprender algo es hacerlo, he contruido un dado electrónico con un ATmega8A, funcionando con su oscilador interno de 8MHz.

Dado con sensor táctil

Para programar el ATmega8A he utilizado una placa de desarrollo Arduino UNO, haciéndola funcionar como programador ISP. Como el código del programa está escrito en el IDE de Arduino, la compilación la hará para funcionar con un oscilador a cristal de 16 MHz. Lo primero que hay que tener en cuenta para que todo funcione correctamente, es reducir los retardos que hayamos definido en el programa a la mitad, porque cuando cambiemos la configuración del microprocesador para que funcione a 8 MHz, los valores de retardo que hayamos escrito durarán el doble.

Programando FUSES de ATmega8A

Una vez programado el microprocesador, sin desmontarlo del zócalo de programación, abriremos la ventana de comandos de Windows en el PC, y modificaremos la configuración (fuses) del ATmega8A / ATmega328P ejecutando AVRDUDE. Los argumentos que tenemos que añadir al ejecutar AVRDUDE, dependerán del tipo de microprocesador ATmega que estemos programando, y el puerto COM con el que se haya conectado el PC con Arduino.

Ejemplo: ATmega8A en COM3

avrdude -c arduino -p m8 -P COM3 -b 19200 -U lfuse:w:0xe4:m -U hfuse:w:0xd9:m

Ejemplo: ATmega328P en COM3

avrdude -c arduino -p m328p -P COM3 -b 19200 -U lfuse:w:0xe2:m -U hfuse:w:0xd9:m

Firmware

El código de programación de este dado electrónico,  se puede descargar desde el siguiente enlace: Dado electrónico con sensor táctil

 

ARDUINO a fondo… no te lo pierdas!!!

Configuración de un ATmega8A para hacerlo funcionar en un Arduino UNO. Si utilizas Arduino, te aconsejo que no te pierdas este artículo, porque encontrarás la información que necesitas para saber cómo funciona y esclarecer algunas dudas.

Programador ISP, con Arduino UNO

Contenido

Descripción comparativa entre el ATmega8A y el ATmega328P (capacidad de memoria, rango de tensiones, frecuencia máxima de trabajo). Configuración del IDE de Arduino (software de programación) y sus diferentes modos de funcionamiento. Convertir un Arduino UNO en programador ISP, cunstruyendo un ‘shield’ con zócalo de 28 pines, para programar cualquier ATmega compatible… y en el video final encontrarás las explicaciones, consejos y algunos trucos.

ATmega328P / ATmega8A

El  microprocesador ATmega8A tiene una arquitectura muy parecida al ATmega328P, ambos son AVR, aunque existen algunas diferencias en cuanto a sus prestaciones.

Esquema de bloques: ATmega8A

Esquema de bloques: ATmega328P

El ATmega8A podría utilizarse en la placa de desarrollo de Arduino UNO en sustitución del ATmega328P, siempre que se tengan en cuenta sus limitaciones.

Comparativa: ATmega328P / ATmega8A

Ambos circuitos integrados son compatibles en cuanto a su encapsulado conexiones y funcionamiento, de hecho el ATmega8A es uno de los primeros microprocesadores que se empezaron a utilizar con Arduino. Antes de montar un ATmega8A en la placa de desarrollo Arduino UNO, habría que programar su Boot Loader, y colocarlo en el lugar adecuado de su memoria Flash.

Boot Loader

El Boot Loader es el mecanismo de auto programación que permite cargar y descargar el código del programa desde el propio micro controlador. Esta característica permite que las actualizaciones del software sean controladas por el propio micro controlador, y esto lo hace  utilizando un pequeño programa de arranque, llamado Boot Loader…  y este ocupa una pequeña parte de la memoria Flash.

El Boot Loader o cargador de arranque, puede utilizar cualquier interfaz de datos y protocolo para leer y escribir el código del programa, tanto el de la memoria Flash como el de la memoria de programa.

Boot-Loader ARDUINO

El código del programa alojado en la sección del Boot Loader tiene la capacidad de escribir en toda la Flash, incluido el propio gestor de arranque de memoria. O dicho de otra manera, el Boot Loader tiene la capacidad de modificarse y borrarse a sí mismo.

El tamaño de la memoria del Boot Loader se puede configurar mediante el estado de unos bits denominados ‘fusibles’, y dispone de dos conjuntos separados, aparte de los bits Boot Lock (bits de bloqueo), los cuales permiten seleccionar los diferentes niveles de protección del micro procesador.

Fusibles en una memoria PROM

Secciones de la memoria FLASH

La memoria flash está organizada en dos secciones principales, la sección de la aplicación y la sección del cargador de arranque. El tamaño de las diferentes secciones está configurado por los fusibles BOOTSZ. Estas dos secciones pueden tener diferentes niveles de protección, ya que tienen diferentes conjuntos de bits de bloqueo.

Sección de la aplicación

La sección de la aplicación se encuentra dentro de la memoria Flash, y es la que se utiliza para almacenar el código principal del programa. Los  niveles de protección para la sección de la aplicación se configuran con los bits del Boot Lock. Dentro de la sección de la aplicación no se puede almacenar ningún código del cargador de arranque, ya que la instrucción SPM quedaría deshabilitada cuando se ejecuta esta sección.

BLS – Sección del cargador de arranque

Si bien la sección de la aplicación se utiliza para almacenar el código de principal del programa, el software del Boot Loader debe almacenarse dentro de la sección de arranque (BLS), ya que la instrucción SPM sólo puede iniciar una programación cuando se ejecuta desde el sector de arranque (BLS). La instrucción SPM puede acceder a todo el contenido de la memoria Flash, incluso al propio  sector de arranque (BLS). El nivel de protección para la sección Boot Loader puede seleccionarse mediante los bits de bloqueo del cargador de arranque.

Secciones de lectura sin escritura y sin lectura mientras se graba

Si la CPU admite la lectura mientras escribe (Read-While-Write) o si la CPU se detiene durante un software Boot Loader, la actualización depende de la dirección que se está programando. Además de las dos secciones, que son configurables mediante los fusibles BOOTSZ, la memoria Flash también se divide en dos secciones fijas: la sección leer mientras se escribe (RWW) y la sección sin lectura mientras se escribe (NRWW). El límite entre las secciones RWW y NRWW depende del modelo de micro controlador que se utilice.

La principal diferencia entre las dos secciones es:

  • Al borrar o escribir dentro de la sección RWW, la sección NRWW puede leerse durante la operación.
  • Al borrar o escribir dentro de la sección NRWW, la CPU se detiene hasta que finalice el proceso.

El software del usuario no puede leer ningún código que se encuentre dentro de la sección RWW durante la ejecución del sector de arranque.

El significado de leer mientras escribe (Read-While-Write) se refiere a cuando se borra o escribe en la memoria, es decir, cuando se está programando. Y esto no es posible hacerlo cuando se está ejecutando el gestor de arranque.

RWW – Sección de lectura mientras se escribe

Cuando se actualiza el programa con el Boot Loader y se está cargando código dentro de la sección RWW, es posible leer código del Flash, pero solo el código que se encuentra en la sección NRWW. Durante un proceso continuo de programación, el software debe garantizar que la sección RWW nunca se lea. Si a través de software se intentara leer dentro de la sección RWW durante la programación, el software podría terminar en un estado desconocido. Para evitar esto, las interrupciones tienen que deshabilitarse o moverse dentro de la sección del Boot Loader,  porque la sección Boot Loader siempre se encuentra en sección NRWW.

NRWW – Sección sin lectura mientras se escribe

El código ubicado en la sección NRWW se puede leer cuando el software Boot Loader está programando la sección RWW. Cuando el código Boot Loader programa la sección NRWW, la CPU se detiene hasta que termine la operación.

Bits de bloqueo del cargador de arranque (Boot Loader)

Cuando no se programa el Boot Loader, toda la capacidad de la memoria el Flash queda disponible para el programa. El cargador de arranque tiene dos conjuntos separados de bits de bloqueo, los cuales se pueden configurar de forma independiente y permiten diferentes niveles de protección.

Modos de protección contra una posible actualización realizada a través del micro procesador

  • Proteger la escritura en toda la memoria Flash
  • Proteger la escritura sólo en la sección del cargador de inicio (Boot Loader)
  • Proteger la escritura sólo en la sección Flash del programa
  • Permitir la actualización del software en toda la memoria Flash

Bits de bloqueo

Los bits de bloqueo o protección (Boot Lock) se pueden configurar en ambos modos de programación, tanto serie como paralelo, pero solo pueden borrarse cuando se borra toda la memoria. El bloqueo de escritura general  no controla la programación de la memoria flash mediante instrucción de auto programación (SPM). Del mismo modo, el bloqueo de lectura / escritura general no controla la lectura ni la escritura por LPM / SPM.

Si necesitas saber las posibles configuraciones de algún micro-controlador AVR, puedes consultar en esta Web: http://www.engbedded.com/fusecalc/

Desde aquí puedes realizar una configuración, calcular los valores en hexadecimal y copiar los argumentos de la cadena que le tendrías que añadir a la aplicación AVRDUDE, para programar los fusibles del micro-controlador.

SPM – Self-Programming Mode

El modo de auto programación (SPM) es una función que permite que un micro controlador programe su propia memoria flash. Usando el SPM, un micro controlador puede programarse con un nuevo código SPM. El modo de auto programación (SPM) se usa comúnmente con los códigos de cargador de arranque del micro controlador que ayudan a su programación en serie. El SPM está disponible solo para el código que se ejecuta en el Boot Loader (BLS) de la memoria flash. Con la ayuda de SPM, un código en el Boot Loader puede reescribir la memoria flash de la aplicación por completo o una parte de ella. Incluso puede reescribir su propio código en la sección BLS.

El modo de auto programación (SPM) es un factor clave del código Boot Loader, ya que su principal función es la de cargar el programa dentro de la sección destinada a la aplicación de la memoria flash. El Boot Loader puede recibir el código binario de otros chips de memoria, tarjetas SD o a través del puerto serie del micro controlador en caso de programación en serie. Es entonces con la ayuda de modo de auto programación (SPM)  que el micro controlador escribe el código binario en la sección flash de la aplicación.

Programador ISP con Arduino UNO

El IDE (Integrated Development Environment) de Arduino dispone de un código en la sección de los ejemplos: Archivo – Ejemplos – 11.ArduinoISP, que permite convertir la placa de desarrollo de Arduino en un programador ISP. Este código puede controlar el encendido de 3 diodos LED, para indicar su estado de funcionamiento durante la programación.

Esquema: Programador ISP

Funcionamiento del programador

Fluctúa la iluminación de uno de sus indicadores LED cuando el programador está disponible (LED azul), muestra otra indicación durante la  escritura (LED amarillo), y  también puede mostrar la indicación de error (LED rojo).

He añadido un cuarto LED al circuito, conectando un diodo LED en la línea SCK (LED verde). Esta señalización nos permite saber si un micro-controlador tiene cargado el Boot-Loader:

…al pulsar el botón RESET del programador, el LED verde (conectado a la línea SCK) debería parpadear durante un instante. 

Autoprogramación

La memoria del programa se actualiza  página por página (64 palabras en ATmega328P / 32 palabras ATmega8A). Antes de programar una página con los datos almacenado en el buffer de página temporal, la página debe borrarse. El buffer de página temporal se llena uno palabra a la vez usando SPM y el buffer se puede llenar antes del comando de borrado de página o entre una página borrada y una operación de escritura de página:

Alternativa 1. Llenar el buffer antes de borrar una página

  • Rellenar el buffer temporal de la página
  • Realizar un borrado de página
  • Realizar una escritura de página

Alternativa 2. Completar el buffer después de borrar la página

  • Realizar un borrado de página
  • Rellenar el buffer temporal de la página
  • Realizar una escritura de página

Analizador acústico con ARDUINO

Construcción de un analizador acústico con Arduino. La información se presenta de forma gráfica, en un display LCD de 16×2 caracteres. Como ecualizador gráfico se puede utilizar el circuito integrado MSGEQ7 o el MSGEQ5, dependiendo del número de bandas de audio que queramos mostrar. Este circuito se puede montar de forma independiente, previamente programando el ATMEGA328P con la placa de desarrollo de Arduino. Una vez programado, mediante la posición de un jumper se puede configurar para que muestre 5 o 7 bandas… montando previamente el circuito integrado ecualizador correspondiente.

Utilidad de un analizador acústico

Este analizador acústico no puede competir con un equipo profesional, pero podría ser muy útil para acondicionar la acústica de un salón de actos o sala de conciertos improvisada. Comprobando la respuesta en frecuencias y volumen de escucha en diferentes puntos, se podrían corregir los defectos reorientando los altavoces/bocinas, ecualizando la respuesta de los amplificadores, etc.   Por otra parte, como este analizador de audio es de bajo costo y no requiere de conocimientos especiales para montarlo, podría ser muy instructivo realizarlo como práctica en escuelas relacionadas con la formación en las ramas de electrónica y tecnología.

Ecualizador gráfico de 5/7 bandas

Este montaje está basado en el circuito integrado MSGEQ5 / MSEGQ7,  ecualizador gráfico de audio  de 5 y 7 bandas respectivamente.  Dentro de un pequeño encapsulado DIL de 8 pines, se encuentra todo lo necesario para obtener a su salida los valores de energía a diferentes frecuencias,  a partir de la señal de audio en su entrada (descomposición espectral).

MSGEQ5 - Analizador de 5 bandas

Como se puede ver en la imagen anterior,  el MSGEQ5  analiza los valores comprendidos entre 100 y 10.000 Hz. Este rango es más que suficiente para conocer la respuesta en frecuencias de cualquier entorno. Pero si queremos analizar con más detalle los extremos de la zona audible, graves más bajos y agudos más altos, sería mejor utilizar el MSGEQ7.

MSGEQ7 - Analizador de 7 bandas

Como se puede comprobar comparando los datos entre ambos componentes,  son compatibles tanto en conexiones como características técnicas. Lo único que cambia es la gestión de los datos,  pero el protocolo es el mismo.  Con el MSGEQ5 tendremos que tomar y asignar los valores leídos de 5 en 5, y con el  MSGEQ7 lo haremos en grupos de 7 (número de bandas). Aprovechando estas características, es muy fácil construir un circuito que permita trabajar con ambos componentes.

Analizador acústico de 5/7 bandas

 

Este montaje lo puedes hacer siguiendo el esquema anterior, o utilizando la placa de desarrollo de Arduino junto con el Shield LCD, desarrollado para Arduino UNO.

Escala gráfica

La escala de las barras gráficas que muestra el display no es logarítmica, como lo harían la mayoría de los analizadores de audio. Con el fin de obtener un efecto visual más pronunciado, la gráfica que muestra el display  traduce los valores de tensión en cada banda de forma lineal.

Escalado lineal de las medidas

Si prefieres cambiar la escala, sólo tienes que modificar los valores de la tabla (resaltadas en color  amarillo), editando el código antes de programar el microprocesador ATMEGA328P con Arduino.

Firmware

El código de programación de este analizador acústico,  se puede descargar desde el siguiente enlace: Analizador acústico