Mostrando entradas con la etiqueta max7219. Mostrar todas las entradas
Mostrando entradas con la etiqueta max7219. Mostrar todas las entradas

sábado, 10 de octubre de 2020

ARDUINO LTC5904 - MAX7219 - Generador de frecuencia - 1KHz a 68MHz - Frecuencímetro 1 Hz a 8 MHz

ARDUINO
LTC5904 -
MAX7219
Generador de frecuencia -
1KHz a 68MHz
Medidor de frecuencia - 1 Hz a 8 MHz
Frecuencímetro


En el anterior artículo habíamos realizado el generador de frecuencia con el CHIP LTC6904.
Posteriormente había creado 2 diferentes montajes para manejar el generador de frecuencia mediante botones.
Para medir la exactitud de generador me ví en la necesidad de utilizar un frecuencímetro.
La siguiente idea fue juntar los 2 montajes, generador de frecuencia y frecuencímetro.

Como se puede observar he utilizado la posibilidad de poner en las salidas y entradas del arduino una resistencia interna de 50K a Vcc (PULLUP).
Para el manejo de los botones funciona sin problemas, pero para el manejo del bus I2C vendría mejor colocar además una resistencia de 1K a Vcc.
Para este caso funciona, pero su valor para 5V es de 50K, igual demasiado alto.
El MAX7219 induce mucho ruido en la alimentación, por lo cual deberíamos colocar un condensador de 470uF lo mas cerca de el.
Existen 3 modelos de MAX7219, tienen diferente color, y sus conexiones cambian de uno a otro.
En el LTC6904 debemos de colocar un condensador de algunos nanofaradios para atenuar el ruido en la señal de alimentación.

Comprobando el frecuencímetro con otro mio. Un error de 3 Hz cada 100000 Hz.

Llegados a este momento probamos el generador de frecuencia.
Comprobamos que la frecuencia obtenida en la frecuencia mas baja, es diferente entre dos
LTC5904.

Está claro que estos chip deberían estar ajustados de fabrica para corregir este error.
Igual en la soldadura me he pasado y los he calentado mucho modificando su ajuste, o son defectuosos.
También debería ser posible ajustarlos mediante programa, pero no he encontrado la forma.

De la medidas reales concluimos que la relación entre el valor de ADC y la frecuencia no es lineal.
Para corregir o atenuar este error, podemos cambiar las constantes 2048 y 2078 en la formula de DAC.
En mi caso los he cambiado a 2038 y 2078 respectivamente, consiguiendo un menor error en el cálculo.

Para pasar del modo FRECUENCÍMETRO al GENERADOR FRECUENCIA pulsamos un botón, cambiará el LED testigo.
En el modo
GENERADOR FRECUENCIA, con un botón seleccionaremos el display, y con el otro botón cambiaremos el dígito.
Después de 2 segundos de no tocar ningún botón se generara la frecuencia marcada en el display.

Aunque no tengamos un generador de lo más exacto, tenemos también en el mismo montaje un frecuencímetro para corregir el error.

PROGRAMA



Bibliografía:

Generador de frecuencia con el CHIP LTC6904.
https://digibird1.wordpress.com/arduino-controlled-frequency-generator-1khz-68-mhz/
http://www.kerrywong.com/2012/04/11/interfacing-ltc6904-with-arduino/
https://www.polaxis.be/2011/11/sp0256-al2-pitch-control/

https://github.com/rjbatista/tm1638-library
https://www.arduinolibraries.info/libraries/led-control

Saludos.
Juan Galaz




 

sábado, 3 de octubre de 2020

ARDUINO - LTC5904 - Generador de frecuencia 1KHz a 68MHz - Display

ARDUINO
LTC5904 - LTC5903
Generador de frecuencia
1KHz a 68MHz
Display


En el anterior artículo habíamos realizado el generador de frecuencia con el CHIP LTC6904.
En este montaje vamos a poder controlar el chip mediante botones y visualizar la frecuencia con un display de 8 dígitos.
He creado dos modelos utilizando dos tipos de módulos.
Con el TM1638, que dispone de un monton de botones y led, además de un display de 8 dígitos.
El segundo montaje lo he realizado con el MAX7219 , otro módulo de 8 dígitos.



En este montaje utilizamos los 8 botones, que utilizaremos para cambiar los diferentes dígitos.
Mientras estamos modificando la frecuencia, parpadeará un LED.
Después de 2 segundos de no tocar ningún botón se generara la frecuencia marcada en el display.
PROGRAMA




En este montaje utilizamos el módulo de 8 display MAX7219.
Con un botón seleccionaremos el display, y con el otro botón cambiaremos el dígito.
Mientras estamos modifican los dígitos, parpadeará el punto decimal sobre el segmento seleccionado.
Después de 2 segundos de no tocar ningún botón se generara la frecuencia marcada en el display.
PROGRAMA


Llegados a este punto debemos estudiar la exactitud del MAX7219.
Lo primero es explicar su funcionamiento.
Un oscilador programable (ADC) de 1024 pasos, nos genera frecuencia entre 34.05MHz y 68.03MHz.
Por lo cual el oscilador va en pasos de 33184 Hz.
Un segundo divisor programable (OCT) en múltiplos de 2, (1,2,4,8.....16384,32768) (Valor de OCT 15,14,13,12.....1,0) nos proporciona la frecuencia de salida.
Ejemplo:
    ADC=443   ->48.750512 MHz
    OCT=4   (/2048)   ->23803 Hz

La teoría está muy bien, pero dependemos de la precisión de oscilador (VCO), y no es del todo precisa, ya nos pasaba con el DS1077 .
Haciendo medidas hemos descubierto que la frecuencia real del oscilador va desde 67.993.000 Hz a los 33.991.000 Hz.
Esta dentro de los márgenes que indica el CHIP, pero hay que tenerlo muy en cuenta.


Tabla con las diferentes frecuencia generada con los diferentes valores de DAC y OCT.
Podemos ver la frecuencia marcada y la frecuencia real generada.


Es un montaje sencillo y fácil para tener vuestro propio generador de frecuencia.



Bibliografía:

Generador de frecuencia con el CHIP LTC6904.
https://digibird1.wordpress.com/arduino-controlled-frequency-generator-1khz-68-mhz/
http://www.kerrywong.com/2012/04/11/interfacing-ltc6904-with-arduino/
https://www.polaxis.be/2011/11/sp0256-al2-pitch-control/

https://github.com/rjbatista/tm1638-library
https://www.arduinolibraries.info/libraries/led-control

Saludos.
Juan Galaz




lunes, 11 de abril de 2016

Letrero con matriz de led controlado por android-MAX7219-Bluetooth HC05

Página principal

Arduino
Anunciador con matriz de led
controlado por android
MAX7219
Bluetooth  HC05


En el anterior montaje había utilizado el MAX7219 para realizar un marcador deportivo matrixb.html , en esta ocasión aumento el numero de matrices de led a 4, siendo el numero de caracteres visualizados 8, y el control se realiza mediante bluetooth con un teléfono android.

Diagrama del montaje de los 4 matrices de led.


Buffer de 32 bytes GrafBuff[32]


Esquema del circuito.


Detalle del conexionado.


Circuito montado.


Como vemos en el circuito empleamos 4 matrices de led de 8 bytes cada matiz, dando un total de 32 bytes.
En un buffer llamado GrafBuff[32] almacenamos toda la información que queramos representar en los led.
Una vez que hemos terminado de realizar todos impresiones de caracteres en el buffer volcamos la información en los leds mediante el función  Refres().
Cuando mandamos la cadena de caracteres el arduino lo procesa según el primer carácter de la cadena.
Si el primer carácter es / realiza un scroll de la cadena completa.
Si el primer carácter es & realiza un scroll de la cadena hasta que llega al primer dígito.
En cualquier otro caso la cádena enviada se queda fija.

La comunicación entre el dispositivo android y el arduino se hace mediante el módulos Bluetooth  HC05.
Es un simple modulo que emplea la comunicación serie (Tx/Rx). Esta vez aunque sea poco ortodoxo he empleado una resistencia de 330 ohmios para adaptar los niveles entre el HC05 y el arduino , de tal manera que si se conecta el HC05 no se puede programar el arduino dado que los dos se conectan a los mismos pins.
Para cambiar la contraseña y el nombre del HC05 recomiendo ver mi montaje ardisx.html.


Programa matriz en el android.

Para el programa en android he utilizado un interprete de basic  en su modo trial  BASIC4Android.
Debemos tener activado el bluetooth y emparejados los dispositivos.
Escribimos lo que queramos y lo mandamos a la matriz de caracteres.
La representación es instantánea si la representación anterior es fija, si es con scroll debemos esperar para visualizarlo a que termine el scroll.
Por un motivo que no he podido arreglar cuando se rota la pantalla en el android se pierde la comunicación y debemos reconectar si queremos cambiar el letrero.


Debemos tener muy en cuenta el consumo del circuito cuando aumentamos el brillo. Para una representación normal de dos números con el brillo al mínimo (0) , el consumo es de 80 mA todo el circuito. Pero si ponemos el brillo al máximo (15) el consumo aumenta a 500 mA.
El consumo máximo de cada matriz de leds a su máximo brillo y encendidos los 64 leds ronda los 600mA, un consumo considerable.
Debemos tener cuidado de no alimentar los módulos de leds directamente del arduino si colocamos el brillo al máximo.

PROGRAMAS


Saludos.
Juan Galaz

Bibliografía:

http://seta43.duckdns.org/marelo.html
http://seta43.blogspot.com.es/2015/11/marcador-controlado-por-bluetooth.html
http://www.prometec.net/scroll-max7219/




martes, 15 de marzo de 2016

Arduino - Reloj - Termómetro - MAX7219

Página principal

Arduino
Reloj - Termómetro
MAX7219
Matriz de leds


En esta ocasión realizo un reloj y termómetro que muestra alternativamente los datos.
Para el reloj en tiempo real utilizo un módulo de tiempo real que utiliza el chip DS1302.
Como sensor de temperatura utilizo el sensor DS18B20.
El diseño del programa está para colocar hasta 4 módulos MAX7219 en cascada, lo que significa 8 caracteres.
Aunque en el circuito solo se coloquen 2 módulos, los datos mandados a los módulos son para 4 módulos.
En esta ocasión utilizo un buffer de 32 bytes para almacenar la representación de los módulos.
Cuando se ha realizado todas las operaciones sobre el buffer, se llama al procedimiento Refres()  que vuelca todos los datos del buffer a los leds de los módulos.



Esquema del funcionamiento del MAX7219.



Módulo LED - MAX7219
Mando a distancia - PT2272


Esquema del circuito.



Detalle de conexionado.



Montaje del circuito.

   
Reloj y termómetro funcionando.

Con el mando a distancia cambiamos la hora de la siguiente forma:
Si pulsamos el botón  C  entramos en el modo de cambio de hora, poniéndose automáticamente las horas y los minutos a cero.
Si pulsamos el botón  A aumentamos los minutos, y si pulsamos B aumentamos las horas.
Para fijar la hora se pulsa el botón C y queda ajustada la hora.

También se puede utilizar pulsadores si el reloj tiene buen acceso y se puede eliminar el mando a distancia y el receptor.

Para el manejo del DS1302 utilizo la librería DS1302 .
Si se quiere ir al sitio de la librería es :  http://www.rinkydinkelectronics.com/library.php

Debemos tener muy en cuenta el consumo del circuito cuando aumentamos el brillo. Para una representación normal de dos números con el brillo al mínimo (0) , el consumo es de 50 mA todo el circuito. Pero si ponemos el brillo al máximo (15) el consumo aumenta a 300 mA.
El consumo máximo de cada matriz de leds a su máximo brillo y encendidos los 64 leds ronda los 300mA, un consumo considerable.
Debemos tener cuidado de no alimentar los módulos de leds directamente del arduino si colocamos el brillo al máximo.
De cualquier manera debemos colocar condensadores de desacoplo en la alimentación y alejar un poco el módulo receptor de las matrices de leds, producen interferencias y reducen la cobertura del mando a distancia.

En un próximo montaje colocare todos los componentes en un circuito impreso, quedando todo el circuito compacto.


PROGRAMA

Saludos.
Juan Galaz

Bibliografía:

http://seta43.blogspot.com.es/2015/11/marcador-controlado-por-bluetooth.html
http://www.prometec.net/scroll-max7219/
http://www.rinkydinkelectronics.com/library.php

miércoles, 9 de marzo de 2016

Marcador deportivo2 - MAX7219- Modo cascada

Página principal

Arduino
Marcador deportivo 2
MAX7219
Matriz de leds


En el anterior montaje de marcador deportivo, matrix.html , había realizado el montaje con el MAX7219 manejando independientemente por una línea CS. Para este segundo montaje he cambiado de estrategia, utilizando el modo encadenado. Esto facilita la conexión de muchos módulos en cascada, uniendo uno detrás de otro.
El diseño del programa está para colocar hasta 4 módulos MAX7219 en cascada, lo que significa 8 caracteres.
Aunque en el circuito solo se coloquen 2 módulos, los datos mandados a los módulos son para 4 módulos.



Conexionado en cascada del MAX7219


Módulo LED-MAX7219 Mando a distancia - PT2272


Esquema del circuito.



Detalle de conexionado.



Montaje del circuito.


Marcador funcionando.

Con el mando a distancia cambiamos los números, subir o bajar tanteo de cada segmento, hasta un máximo de 25.
Si pulsamos a la vez los botones A y C  del mando a distancia, el marcador se pone a cero.
Si pulsamos a la vez los botones D y B  del mando a distancia, aumentamos progresivamente la luminosidad de los leds hasta un máximo de 15, luego vuelve a 0.
Debemos tener muy en cuenta el consumo del circuito cuando aumentamos el brillo. Para una representación normal de dos números con el brillo al mínimo (0) , el consumo es de 50 mA todo el circuito. Pero si ponemos el brillo al máximo (15) el consumo aumenta a 300 mA.
El consumo máximo de cada matriz de leds a su máximo brillo y encendidos los 64 leds ronda los 300mA, un consumo considerable.
Debemos tener cuidado de no alimentar los módulos de leds directamente del arduino si colocamos el brillo al máximo.
De cualquier manera debemos colocar condensadores de desacoplo en la alimentación y alejar un poco el módulo receptor de las matrices de leds, producen interferencias y reducen la cobertura del mando a distancia.

A nivel de programación del arduino he cambiado respecto al anterior montaje varias cosas:
-La conexión del módulo receptor al arduino se realiza a través de las entradas D2-D3-D4-D5 del arduino.
-He modificado el programa para que ocupe la mitad de tamaño, eliminando los String y utilizado librería propia para pasar numero a cadena.
-Como he cambiado el modo de mandar datos al MAX7219, he tenido que rediseñar todas las librerías.
-En aumento de tanteo al apretar los botones A y C del mando, no se auto-aumenta si no sueltas el botón.

PROGRAMA

Saludos.
Juan Galaz

Bibliografía:

http://seta43.blogspot.com.es/2015/11/marcador-controlado-por-bluetooth.html
http://www.prometec.net/scroll-max7219/

domingo, 6 de marzo de 2016

Marcador deportivo - MAX7219 - Matriz de leds

Página principal

Arduino
Marcador deportivo
MAX7219
Matriz de leds


En un anterior montaje ardisx.html , había realizado un marcador controlado por bluetooth, utilizando el chip MAX7219.
En esta ocasión utilizo el mismo chip pero manejando 2 módulos de matrices de diodos, y manejados por un control de mando a distancia.
Estos módulos vienen montados con 64 leds manejados por el chip MAX7219, se pueden encadenar conectado el DOUT de un módulo con el DIN del módulo siguiente. Para este montaje no utilizo esta propiedad de encadenado, los utilizo como módulos sueltos manejados independientemente por una línea CS, esto tiene sus pros y sus contras.












Módulo LED - MAX7219 Mando a distancia - PT2272





Esquema del circuito.



Detalle de conexionado.



Montaje del circuito.


Marcador funcionando.

Con el mando a distancia cambiamos los números, subir o bajar tanteo de cada segmento, hasta un máximo de 25.
Si pulsamos a la vez los botones A y C  del mando a distancia, el marcador se pone a cero.
Si pulsamos a la vez los botones D y B  del mando a distancia, aumentamos progresivamente la luminosidad de los leds hasta un máximo de 15, luego vuelve a 0.
Debemos tener muy en cuenta el consumo del circuito cuando aumentamos el brillo. Para una representación normal de dos números con el brillo al mínimo (0) , el consumo es de 50 mA todo el circuito. Pero si ponemos el brillo al máximo (15) el consumo aumenta a 300 mA.
El consumo máximo de cada matriz de leds a su máximo brillo y encendidos los 64 leds ronda los 300mA, un consumo considerable.
Debemos tener cuidado de no alimentar los módulos de leds directamente del arduino si colocamos el brillo al máximo.
De cualquier manera debemos colocar condensadores de desacoplo en la alimentación y alejar un poco el módulo receptor de las matrices de leds, producen interferencias y reducen la cobertura del mando a distancia.

PROGRAMA

Saludos.
Juan Galaz

Bibliografía:

http://seta43.blogspot.com.es/2015/11/marcador-controlado-por-bluetooth.html
http://www.prometec.net/scroll-max7219/

martes, 24 de noviembre de 2015

Marcador controlado por bluetooth. Display de 8 caracteres. MAX7219-Arduino

Página principal


Marcador controlado por bluetooth.
Display de 8 caracteres.
MAX7219
Arduino


xsetaseta@gmail.com

Continuando con los anteriores montajes  Marcador controlado por bluetooth y Marcador controlado por bluetooth - 4 caracteres , ahora hago lo mismo, pero con un display de 8 caracteres utilizando un módulo que emplea el MAX7219.

El MAX7219 incorpora todo lo necesario para manejar 8 displays, comunicándose con el arduino mediante el interface SPI.
Para el manejo del MAX7219 mediante el arduino existe una librería bastante buena llamada LedControl que se puede emplear fácilmente.
Como siempre, yo me complico un poco, y prefiero realizar mis propias rutinas de manejo de circuitos, de esta forma entiendo mejor el funcionamiento de los mismos.
He realizado una serie de rutinas para el manejo del MAX7219 que se incorporan en el propio programa arduino, no hace falta ninguna librería añadida. Debo de decir que partes de mis rutinas las he sacado de la librería LedControl, pero cambiándolas mucho.


Para la introducción de textos se emplea la consola del arduino o un terminal serie, o el convertidos serie-bluetooth el cual se puede manejar a distancia. el HC05 es un simple modulo que emplea la comunicación serie (Tx/Rx), en nuestro caso utilizaremos un puerto serie por software mediante los pins A0 y A1 del arduino. En el módulo original HC05 viene a una velocidad de 9600 y con la contraseña 1234.
Para poder cambiar el nombre y contraseña debemos entrar en modo de comandos AT.  Para usar los comandos AT el módulo Bluetooth no debe estar vinculado a ningún dispositivo (led rojo del módulo parpadeando). En mi caso que tengo botón, pulso el botón y entro en modo configuración.
Para comprobar que todo está bien, prueba a escribir AT+
Debes recibir un “OK” .
Cambiar el nombre del dispositivo: AT+NAME:nuevoNombre
Cambiar contraseña a 5555: AT+PSWD:5555 Ver la versión: AT+VERSION
Para salir del modo AT después de configurar todo, quito la alimentación y la vuelvo poner, ahora está con la nueva configuración.
Como existe diferente tipo de módulos, he mantenido las dos resistencias que adaptan los niveles TTL de 5V a los de 3.3V, aunque en muchos módulos no hacen falta.

Esquema del circuito





Circuito montado

Para el control mediante un teléfono android recomiendo ver mi anterior montaje Marcador controlado por bluetooth.

PROGRAMAS

Saludos.
JUAN GALAZ

Bibliografía:

http://www.cecilioruiz.com/bluetooth-arduino/
http://diymakers.es/arduino-bluetooth/
http://www.martyncurrey.com/arduino-bluetooth-control/
http://www.martyncurrey.com/hc-05-fc-114-and-hc-06-fc-114-part-3-master-mode-and-auto-connect/
http://seta43.duckdns.org/arduan1.html
http://diymakers.es/arduino-bluetooth/
http://english.cxem.net/arduino/arduino4.php
http://www.instructables.com/id/Andruino-A-Simple-2-Way-Bluetooth-based-Android-C/step1/How-to-use-ArduDroid/
http://www.instructables.com/id/Cheap-2-Way-Bluetooth-Connection-Between-Arduino-a/?ALLSTEPS
http://mcuoneclipse.com/2013/06/19/using-the-hc-06-bluetooth-module/
http://www.basic4ppc.com/
http://www.extremadura-web.es/Blog/2012/10/29/comunicacion-bluetooth-serie-arduino-y-basic4android/
http://iesromerovargas.es/recursos/elec/sol/basic4android.htm