miércoles, 31 de marzo de 2021

Vacuum Fluorescent Display - Visualizador fluorescente de vacío Reloj II

  Página principal



Vacuum Fluorescent Display
Visualizador fluorescente de vacío
 Reloj
II


Como sigo reciclando vídeos grabadores, he recuperado otro Visualizador fluorescente.
Esta vez tiene mas pins, 25, por lo cual se necesitan mas controladores si se quieres ver todos los símbolos.
Como solo quiero hacer un reloj, me sirven 2  CHIP ULN2803 para manejar los displays del reloj.
Para ponerse al día sobre estos tipos de displays, ver mi anterior artículo ardvfd.html .

Como seguro que no se encuentra ningún manual sobre estos displays, debemos hacer una búsqueda manual.
Para averiguar cuales son los pines del display, debemos crear una tabla de todas la posibles combinaciones y probar una por una, es algo pesado pero se saca sin dificultad.
Ver vídeo: https://www.youtube.com/watch?v=pDX-lknj3IM .
En nuestro caso sería un cuadrante de 25x25=625 posibilidades.



 
Se alimenta con un tensión de 3V, y el ánodo se alimenta con una tensión a partir de 12V, y empezamos la prueba.



Como podemos ver en la tabla, no hace falta probar todas las posibilidades, enseguida podemos averiguar los pin de segmentos y dígitos.
El problema es que este display utiliza muchos símbolos, por lo que este es el mayor trabajo.

Esquema del circuito.


Circuito montado y funcionando.

Para alimentar el filamento o cátodo a 3V, he colocado una resistencia de 22 ohmios, provocando una caída de tensión de 2.2V. Con lo cual el filamento está alimentado a 2.8V.
Lo mejor hubiese sido utilizar la caída de tensión de 3 diodos en serie (aproximadamente 2V) y conseguiríamos el mismo resultado sin perdidas de calor. 
La intensidad de corriente de la rejilla es 114mA, por lo cual he tenido que utilizar un 7805 con disipador exterior para disipar 1W en perdidas de calor.
Esto como práctica a modo provisional vale, pero para dejarlo en funcionamiento deberíamos tomar dos opciones:
-Utilizar doble alimentación, una para la rejilla y otra para el circuito.
-Usar un módulo DC/DC que transforme los 5V a los 12V que se necesitan en el ánodo.

El funcionamiento del programa es el clásico de repartir el tiempo entre cada uno de los segmentos.
Cada segmento se ilumina durante aproximadamente 4mS, de tal forma que si se hace lo suficientemente rápido, parece que está iluminado siempre.
Como la práctica era para probar los display, el reloj toma el tiempo de las interrupciones, por lo cual no es muy exacto.


PROGRAMA

VIDEO

Saludos.
Juan Galaz

Bibliografía:
https://www.youtube.com/watch?v=pDX-lknj3IM
https://create.arduino.cc/projecthub/screwpilot/vacuum-fluorescent-display-controller-2a5e9b
https://es.wikipedia.org/wiki/Visualizador_fluorescente_de_vac%C3%ADo
http://www.vwlowen.co.uk/arduino/vfd/vfd-clock.htm
https://www.explainthatstuff.com/how-vacuum-fluorescent-displays-work.html
ar1628.html
ardvfd.html

lunes, 29 de marzo de 2021

Vacuum Fluorescent Display VFD

  Página principal



Vacuum Fluorescent Display
Visualizador fluorescente de vacío
 Reloj


Hace tiempo que quería realizar este proyecto, y ha sido cuando reciclaba un grabador de vídeo antiguo, me encontré el display Futaba 6-MT-121ZK.
La mayoría de los display antiguos se basaban en Visualizador fluorescente de vacío (Vacuum Fluorescent Display).
Esta tecnología es bastante antigua, se basan en los válvulas tipo triodo.
Un filamento se caliento hasta hacer que los electrones se exciten de tal forma que una diferencia de potencial entre el filamento que hace la función de cátodo, y el ánodo, salten y se cree una corriente.
Entre el triodo y  el fluorescente de vacío hay una diferencia bastante grande.
En el caso del triodo existe una rejilla con potencial negativo que regula la corriente de cátodo al ánodo.
En el fluorescente de vacío, debe existir un potencial positivo en la rejilla para que consigan los electrones saltar del cátodo al ánodo.
Como indica el nombre fluorescente de vacío,  el ánodo está recubierto de fósforo que se ilumina con el choque de electrones.
Normalmente el filamento se alimenta con un tensión de 3V, y el ánodo se alimenta con una tensión a partir de 12V.

Para formar dígitos se utilizan como mínimo 7 ánodos fluorescentes, que se iluminan cuando se les aplica una tensión positiva.



Para averiguar cuales son los pines del display, debemos crear una tabla de todas la posibles combinaciones y probar una por una, es algo pesado pero se saca sin dificultad.
Ver vídeo: https://www.youtube.com/watch?v=pDX-lknj3IM

Para alimentar el filamento o cátodo a 3V, he colocado una resistencia de 22 ohmios, provocando una caída de tensión de 2.2V. Con lo cual el filamento está alimentado a 2.8V.
Lo mejor hubiese sido utilizar la caída de tensión de 3 diodos en serie (aproximadamente 2V) y conseguiríamos el mismo resultado sin perdidas de calor. 
La intensidad de corriente de la rejilla esta entre 70mA y 94mA.

Para alimentar los ánodos se me ocurrió dos formas:
Utilizar unos inversores CMOS  (4049) alimentados a 12V, una forma poco convencional de hacerlo.
Y mediante unas resistencias de 4K7 y 10K  , que junto con el CHIP ULN2803 proporcionaban los 12V.
Ninguno de los dos sistemas son los mejores métodos, pero la otra alternativa era utilizar un montón de transistores y resistencias.

El primer montaje está realizado con 2 inversores CMOS 4049.



Circuito montado y funcionando

Como hemos comentado anteriormente, no es el mejor método, y debido a la conexión directa de los CMOS y los tubos fluorescentes, se produce una corriente de alrededor de 1.2mA entre el cátodo y el ánodo, y como consecuencia un calentamiento de los CMOS, no es mucho, pero hay que tenerlo en cuenta.

El segundo montaje utilizo el CHIP ULN2803.




Circuito montado y funcionando

En este caso los CHIP no se calientan.
En este caso me sobran 4 puertas que se podrían haber utilizado para mas segmentos, pero quise mantener el mismo programa para los dos montajes.

El funcionamiento del programa es el clásico de repartir el tiempo entre cada uno de los segmentos.
Cada segmento se ilumina durante aproximadamente 2mS, de tal forma que si se hace lo suficientemente rápido, parece que está iluminado siempre.
Como la práctica era para probar los display, el reloj toma el tiempo de las interrupciones, por lo cual no es muy exacto.

PROGRAMA

VIDEO

Saludos.
Juan Galaz

Bibliografía:
https://www.youtube.com/watch?v=pDX-lknj3IM
https://create.arduino.cc/projecthub/screwpilot/vacuum-fluorescent-display-controller-2a5e9b
https://es.wikipedia.org/wiki/Visualizador_fluorescente_de_vac%C3%ADo
http://www.vwlowen.co.uk/arduino/vfd/vfd-clock.htm
https://www.explainthatstuff.com/how-vacuum-fluorescent-displays-work.html
ar1628.html

lunes, 22 de marzo de 2021

DISEÑO DE UN SISTEMA COMPUTADOR CON EL MICROPROCESADOR Z80

Página principal


DISEÑO DE UN SISTEMA COMPUTADOR CON EL
MICROPROCESADOR Z80


 Este es el primer proyecto que no es mio y que publico en mi página web.
En el foro de Gambas tomé contacto con Alfredo a raíz de la programación de una calculadora.
      https://www.gambas-es.org/showthread.php?tid=306
Me comentó que si podía poner en mi web un proyecto sobre una sistema basado en el Z80.
Cuando le dije que sí, me mandó todos los ficheros del proyecto.
Después de ver un poco el proyecto, he realizado una pequeña página web.
Todo el proyecto es de Alfredo, los ficheros son tal cual como me los mandó.




En este ambiente de diseño lo más adecuado sería utilizar el Z80 SIO para las comunicaciones
seriales, sin embargo dicho circuito integrado es difícil de conseguir hoy en día y por lo tanto se ha
decidido implementar un sistema de comunicaciones con el MAX232, un PIC16F628A y un
74LS373.





Circuito montado.


Interface realizado en Visual Basic.

PDF explicando todo el proyecto.

Fichero comprimido con todo el proyecto.



Junio de 2006
Autor: Ing. Alfredo Segura Celedón




 

martes, 16 de marzo de 2021

Reloj dígital-analógico con SDL

  Página principal


Reloj dígital-analógico
con
SDL


Estaba yo repasando la trigonometría con mi hija que tenía exámenes, cuando se me ocurrió realizar un reloj analógico.
A modo de resumen rápido, podemos hacernos una idea de que el seno de un angulo es la coordenada Y y el coseno la coordenada X, sobre una circunferencia de radio 1.
Para conseguir una linea tipo agujas del reloj hacemos el siguiente cálculo.

linea(Xorigen,Ydestino,Xorigen+tamaño*(coseno(angulo)),Ydestino+tamaño*(seno(angulo))

Ahora tenemos que pensar que la dirección de los grados van al contrario a la dirección de las agujas del reloj.
Y también debemos tener en cuenta que los 0 segundos corresponden a 90 grados.
Todas estas modificaciones programarlas, además de realizar el cambio de grados a radianes que es la que utiliza la librería en C.
El calculo de senos y cosenos suele llevar tiempo, pero para este caso que solo se calcula cada segundo, no hace falta optimizar nada.
He realizado una comparativa de cálculo de seno para ver la diferencia de tiempos entre una forma u otra.
En programación 3D que se necesita mucha rapidez se utilizan tablas precalculadas para aumentar la velocidad.

---------------------------0.47 Segundos------
#include <stdio.h>
#include <stdlib.h>
#include "math.h"

float n,out;
int z,z1;
float ns;
float ma[360];

int main()
{
    printf("senos creando tablas\n");
    for(z=0;z<360;z++) {  ma[z]=sin(z);  }
   for(z1=0;z1<2000000;z1++)
   {
    for(z=0;z<360;z++)   {      out=ma[z];     }
   }
    return 0;
}

----------------------------49 segundos---------------
#include <stdio.h>
#include <stdlib.h>
#include "math.h"

float n,out;
int z,z1;
float ns;
float ma[360];

int main()
{
    printf("senos sin tablas\n");
   for(z1=0;z1<2000000;z1++)
   {
    for(z=0;z<360;z++)    {     out=sin(z);     }
   }
    return 0;
}
Con tablas es 100 veces más rápido.



En un principio había creado una esfera que se calculaba cada segundo, pero al final he utilizado un fondo de imagen, es más vistoso, además de poder cambiar el fondo a nuestro gusto.

Al ser programado en SDL es multiplataforma, y se pueden generar ejecutables tanto en Linux como en Windows.

PROGRAMA FUENTE Y LINUX

PROGRAMA WINDOWS Y LIBRERÍAS


Saludos.
Juan Galaz


Bibliografía:

sábado, 13 de marzo de 2021

Calculadora con Arduino

  Página principal


Calculadora
con
Arduino


La primera versión la hice en Gambas (VB Linux), pero como me gusta el lenguaje C, la reprogramé en C con la biblioteca SDL.
Una vez que tienes programada la calculadora en C, traspasarla a arduino fue fácil, solo había que cambiar las rutinas que utilizaban el LCD y la lectura del teclado.
Para el LCD he utilizado un 1602 formato de 16x2 caracteres (modo 4 bits), aunque solo utilice la primera línea.
Para las teclas he utilizado una matriz de 4x5 botones. La calculadora que he realizado es simple, solo precisa 19 botones.
El primer diseño la he realizado en el simulador Proteus, te ahora mucho trabajo a la hora de grabar el programa en la placa arduino nano.
Para poder utilizar el código hex que utiliza el simulador, debemos modificar la preferencia de arduino.
En caso de Linux se encuentra en ~/.arduino/preferences.txt .
Añadir la línea build.path=/home/seta/tmp/arduino , en mi caso queda:
    board=nano328
    browser=mozilla
    browser.linux=mozilla
    build.path=/home/seta/tmp/arduino
    build.verbose=false ........


Como en mi caso trabajo en Linux, y el simulador solo funciona en Windows, creo un directorio compartido en la máquina virtual que será /home/seta/tmp/arduino , donde el arduino compilará y generará el fichero hex que utiliza el simulador.

Circuito creado y simulado con Proteus.


Circuito montado y alimentado con 3 pilas.

Como también tengo un display OLED se lo añadí.
Este OLED se comunica mediante la línea I2C , pin A4 y A5 del arduino.


Circuito montado con el OLED

PROGRAMAS

La calculadora se podría haber hecho con muchas más funciones, pero la original tenía esas funciones.
También se podría haber mejorado la visualización de los decimales, es fácil, pero eso lo dejo como tarea para otros.
Como podemos observar el lenguaje C/C++ es el mejor para portar entre diferentes plataformas.


En la  página https://calc43.blogspot.com/ muestro mi colección de calculadoras.
Añado 4 calculadoras nuevas todas las semanas.

Saludos.
Juan Galaz


Bibliografía:

Teclas->    ircopy.html
OLED->      amorb.html
LCD->       arduraa.html

miércoles, 10 de marzo de 2021

Calculadoras con SDL

Calculadoras
con
SDL


Esta calculadora es muy simple, pero la curiosidad es que tiene el nombre de la dueña.
La primera versión la hice en Gambas (VB linux), pero como me gusta el lenguaje C, la reprograme y la hice en C con la biblioteca SDL.

Funcionando en Linux.


Funcionando en Windows.

Lo que me satisface más, es el poder compilar para las dos plataformas, Linux o Windows, con solo cambiar la directiva YesWindows 0 por #define YesWindows 1 en el fichero define.h.
Como podéis observar son practicamente iguales para las dos plataformas.


Programa TRQ

Programa TRQ para Windows junto con las librerías.

En la  página https://calc43.blogspot.com/ muestro mi colección de calculadoras.
Añado 4 calculadoras nuevas todas las semanas.

Saludos.
Juan Galaz


Bibliografía:

viernes, 5 de marzo de 2021

 He creado un Blog sobre mi colección de calculadoras.

https://calc43.blogspot.com/

Añado 4 cada semana.

Espero que os guste.

SETA43