jueves, 29 de agosto de 2024

74HC164 - Arduino

  Página principal

74HC164
Arduino



Fruto de las vacaciones y los despieces de aparatos electrónicos he conseguido 2 chip 74HC164.
El CHIP 74HC164 es un convertidor de serie a paralelo.





Cuando el pin CLK pasa de nivel bajo a nivel alto los datos que se encuentran en
los pins 1 y 2 se almacenan en QA (pin3), y sucesivamente el valor que se encontraba en QA pasa a QB , y el dato de QB pasa a QC,  etc....

Con el simulador SIMULIDE montamos el circuito y lo probamos.

Probamos  y todo funciona bien.

Ahora en el circuito añadimos un arduino nano, para automatizar las señales.

Colocamos una consola para mandar el numero que se representará en binario con los LEDs.

Colocamos un segundo 74HC164 para poder manejar 16 LEDs.

Probamos el circuito en el simulador, todo funciona correctamente.

El entorno de simulación bajo SimulIde se hace en Debian 12, y me he dado cuenta que la compilación es bastante más rápida que bajo el IDE de arduino.



Montamos el circuito en una PROTOBOARD.

Mandado los números desde la consola de arduino, vemos que el circuito funciona bien.

PROGRAMA

VIDEO DEMOSTRATIVO

Espero que os haya gustado este pequeño circuito.


Fruto de unas pruebas que he tenido que hacer, he creado una interface gráfica para manejar las salidas.
El programa está realizado en Gambas, una especie de VB para Linux.




PROGRAMAS


Saludos.
Juan Galaz



Bibliografía:


lunes, 26 de agosto de 2024

Antena - Full-wave loop - Antenna

  Página principal

Antena
  Full-wave loop
Antenna


La antena Full-wave loop (Bucle de onda completa) tiene varias formas.


En este caso voy a realizar la del tipo triangular.
En HF se suele llamar Delta Loop, y se suele alimentar en un lateral.
Esta antena tiene una impedancia de 100 ohmios, con lo cual si queremos utilizar un cable de 50 ohmios debemos utilizar un adaptador de impedancias.
Existen dos métodos, usar un balum de 2/1 o utilizar un cable de 75 omios  de 20 cm.




Con las fórmulas de la página :
    https://sites.google.com/site/ea7ahg/antena/tipos-de-antenas/antenas/delta-loop/construccion_de_-delta_loop   

Perímetro del triangulo = 306/Frecuencia = 306/145 = 2,1 metros
Lado del triangulo = Perímetro/3 = 2,1/3 = 0,70 metros
Longitud adaptador 75 ohmios = 306/145/4*0,66 = 0.34 metros

Debemos entender que todas las medidas son orientativas, el factor de velocidad depende del material utilizado.
En las pruebas prácticas me dio unas medidas del triangulo de 73 cm de lado, y 20 cm el cable adaptador de 75 ohmios.


Para la construcción he utilizado alambre acerado de 1,5 mm, es muy barato y se vende en rollos de 10 m, recubiertos de plástico blanco.
He pelado el alambre y queda el hilo al descubierto.


Adaptador de impedancias mediante cable de 75 ohmios.


Para ajustar la antena, después de muchas prueba, coloque una clema de empalme, de esta forma variaba la longitud.



En la página:

http://f6kft.free.fr/spip.php?article183
explican una forma de adaptar la impedancia mediante la variación de la medidas del triangulo.
Esto último no lo he comprobado, lo dejaré para una próxima prueba, y lo expondré junto con una antena plegable.


Saludos.

Juan Galaz



Bibliografía:

https://pa0fri.home.xs4all.nl/Ant/Quad/quadeng.htm
https://sites.google.com/site/ea7ahg/antena/tipos-de-antenas/antenas/delta-loop/construccion_de_-delta_loop
https://antjab.wordpress.com/2012/06/07/parasitic-loops-the-nabla-and-the-delta/
https://johnsonfrancis.org/techworld/what-is-a-delta-loop-antenna/
http://w5sdc.net/delta_loop_for_hf.htm
https://www.qsl.net/lu3lj/archivos/Delta%20Loop%20de%20%CE%BB%20completa.pdf
http://f6kft.free.fr/spip.php?article183



Antena AWX antenna

  Página principal

Antenas
AWX
AWX antenna


En la página https://officinahf.jimdofree.com/antenne-vhf-uhf/vhf-awx/ encontré una antena bastante sencilla AWX.
Está se basa en https://blog.goo.ne.jp/jo7tcx/e/664eaeb918aab84e0f859164aa1650a8

Para la construcción he utilizado alambre acerado de 1.5 mm, es muy barato y se vende en rollos de 10 m, recubiertos de plástico blanco.
He pelado el alambre y queda el hilo al descubierto.






El ajuste de la impedancia de la antena se hace con el angulo de los radiales.
Y el ajuste de la resonancia de la antena se hace con la longitud de los radiales.
En mi caso con el tipo de alambre que utilizo, me dan una longitud de 44 cm.
La distancia entre los radiales en su extremo es de 30 cm
Las medidas de todos los elementos varían dependiendo del tipo de material que se usa, por lo cual las medidas son orientativas.




Lo bueno de esta antena es que se puede recoger muy bien para llevarla portátil.

Otra variante de este tipo de antenas es de solo 2 radiales.




Funciona bastante bien, pero tiene una pega, es directiva.
Lo de ser directiva puede o no puede ser una ventaja, según se mire.
La longitud de los radiales es de 50 cm.



Saludos.
Juan Galaz



Bibliografía:


https://officinahf.jimdofree.com/antenne-vhf-uhf/vhf-awx/
https://blog.goo.ne.jp/jo7tcx/e/664eaeb918aab84e0f859164aa1650a8

sábado, 20 de julio de 2024

Antena - 1/4 Wave Ground Plane - Antenna

  Página principal

Antena
1/4 Wave Ground Plane
Antenna



Hace bastante tiempo hice una antena vertical 1/4 onda para FM .
En este proyecto repito el mismo montaje, pero lo realizo en PLA con impresión en 3D y para las frecuencias de 144 MHz (2m) y 433 MHz (70 cm).
Utilizando la página para el cálculo de dimensiones, me pongo con FreeCAD para hacer la pieza.


El trabajo con FreeCAD puede ser frustrante en algunos momentos, pero al final consigues cosas muy brillantes.
Lo que más me ha costado es los taladros en ángulos de 45º.
Debería haber realizado los taladros con forma de elipse para que quedaran perfectos, pero después de 4 pruebas, lo he dejado así.




Lo normal es hacer unas cuantas pruebas hasta conseguir la pieza.


Pieza definitiva.....



Los radiales para las diferentes bandas.




Se ha realizado con dos varillas de aluminio, diámetros de 6 mm y 4 mm respectivamente, que encajan una dentro de la otra.
La unión entre las dos varillas se hace mediante clemas , o mediante un método ideado por mi que utiliza piezas de plástico con taladros descentrados.
Las varillas de 6 mm  huecas son de 100 mm de largo, suficiente para sujetar tanto las varillas de 49 cm para la banda de 2m, como para los 18 cm    de la banda de 70 cm.

Con las varillas de 10 cm probamos el nanoVNA.

Vemos que que la antena está sintonizada a 616 MHz, y con una ROE de 1.086 y la impedancia de 54 ohmios, casi perfecta.

Como la idea del montaje era realizar una antena para diferentes frecuencias, añadimos las varillas de aluminio de 4 mm de diametro.
La primera prueba es con varillas cortas 13 cm, y ajustamos para que la longitud total sea de unos 17 cm.

El ajuste a esa frecuencia debe ser preciso, pero en una primera impresión el resultado es bueno.

En la siguiente prueba es con varillas de 49 cm para la banda de 2m (144MHz).

Como vemos, la antena está resonando en 148 MHz, deberíamos ajustar un poco mas la longitud de las varillas.
No he queridos ajustar demasiado, debido que se debería hacer con la longitud real del cable, y en este caso no la tenía.
Si os fijáis también resuena sobre los 440 MHz, haré unas pruebas prácticas por si se puede utilizar en la banda de los 2 m.

Espero que os haya gustado es proyecto.

Fichero STL

VIDEO DEMOSTRATIVO

------------------------------------------------

Video prueba 30/07/2024




Saludos.
Juan Galaz




Bibliografía:
https://m0ukd.com/calculators/quarter-wave-ground-plane-antenna-calculator/
Antena vertical 1/4 de onda



lunes, 15 de julio de 2024

ESP8266 - Receptor radio Internet

Página principal

ESP8266
Receptor radio Internet



En el anterior proyecto había realizado un reproductor de wav desde la memoria Flash.
Intentando hacer lo mismo con el ESP8266, que aún no lo he conseguido debido a la falta de convertidor D/A, encontré una serie de montajes que hacían uso de de una librería ESP8266Audio , con la cual se podía reproducir flujos de audio de emisoras comerciales, deben ser MP3.
Para hacerlo más fácil, solo he utilizado micro-interruptores en la selección de canales, y un botón para parar y escuchar la emisora de radio.
He creado dos programas que son casi lo mismo, la única diferencia es el uso de los buffer.







PROGRAMA_A
PROGRAMA_B

VIDEO DEMOSTRATIVO


Saludos.
Juan Galaz




Bibliografía:
https://github.com/earlephilhower/ESP8266Audio/tree/master
https://www.hackster.io/earlephilhower/esp8266-digital-radio-ee747f



 

jueves, 4 de julio de 2024

ESP32 - Reproductor de WAV

  Página principal

ESP32
Reproductor de WAV

En el anterior proyecto ../vozmemo.html había realizado un reproductor de WAV desde una memoria Flash, utilizando el arduino.
Ahora me dispongo a realizar el mismo proyecto pero con el ESP32, y utilizando la memoria Flash que incorpora la placa, en este caso para la placa LOLIN 32 la memoria es  T25S32.
He utilizado la placa LOLIN 32 debido a que es más pequeña y la tenía cerca, pero el montaje funciona con cualquier placa ESP32.
En el caso del montaje con arduino, grabar la memoria Flash con un programador, en este montaje los datos de sonido WAV  se incorporan en el propio código.

Empezamos con el sonido grabado en formato de 11KHz y 8bits.

Una vez que tenemos el archivo WAV, debemos transformarlo a código C.
Utilizamos el programa HxD , es un editor hexadecimal que tiene la opción de exportarlo a código C.

Obtenemos un fichero con extensión .c , aunque lo he renombrado con extensión .h , es un gusto mio.

Ahora debemos editar el fichero para cambiar el tipo de dato.
Debemos cambiar de:
 unsigned char rawData[301892] = {
a
const char rawData[] = {

Con este cambio los datos se almacenan en la memoria Flash.

El fichero lo copiamos al mismo directorio del proyecto arduino y lo agregamos con:

#include "metro1.h"
long tamano=sizeof(rawData);


En el código  de programa del ESP32, creamos una interrupción cada 11KHz, que lo que hace es leer los datos WAV almacenados en la memoria Flash y mandarlos al convertidor D/A.

hw_timer_t *timer = NULL;

void IRAM_ATTR timerInterrupcion()
{
 if(dire>tama) { fin=1; dacWrite(25, 128);  } //
 if(fin==0) {  dacWrite(25, rawData[dire++]);  }
}

void setup()
{
  ....
  timer = timerBegin(1000000); // Timer 0, clock divider 80
  timerAttachInterrupt(timer, &timerInterrupcion); // Attach the interrupt handling function
  timerAlarm(timer, 90, true, 0); // ((1/11000)*1000000)
  ...
}


He creado dos programas, uno que utiliza el terminal para mandar el numero de trozo WAV a reproducir.




En el  segundo he añadido un display OLED y un mando rotatorio para elegir el sonido a reproducir, también se puede mandar los códigos desde consola.


Para leer el mando rotatorio utilizo las entradas en modo INPUT_PULLUP, debería funcionar tal como está en el código.
El problema es que algunos pin del ESP32 no se pueden poner en modo INPUT_PULLUP, si no os funciona con está configuración, deberéis colocar una resistencia de 10K desde las entradas hasta Vcc.

He tenido un problema con las librerías del ESP32.
Como yo utilizo Linux para programar, y tiene su propio Arduino en los repositorios, si mezcláis las librerías con la versión que viene de serie en Linux, saldrán errores.
Solución, desinstalar el Arduino que viene en Linux, y bajar de la página de arduino la versión arduino-1.8.19 y utilizar esta última.

Como en la versión de arduino, el leer byte a byte desde la memoria Flash no es del todo rápido, próximamente intentaré crear un buffer de 100 bytes para que sea más rápido.

PROGRAMA


09/07/02024
Como había prometido, he realizado una segunda versión, en esta la lectura de los datos desde la memoria Flash la hago de 100 datos cada vez.
En el arduino se notaba que aumentaba el rendimiento del programa, pero en este caso al ser un procesador 10 veces más rápido, no se nota mucho.
De todas formas he programado el cambio.
PROGRAMA2


VIDEO DEMOSTRATIVO


Saludos.
Juan Galaz




Bibliografía:

../vozmemo.html
voz2.html
arduvoz.html
arvoc.html .



jueves, 20 de junio de 2024

Arduino - Reproductor de voz desde memoria - Flash Memory EN25F80

Arduino
Reproductor de voz
desde memoria
Flash Memory EN25F80
 


Hace bastantes años hice los montajes voz2.html, arduvoz.html y arvoc.html .
Reproducían ficheros wav almacenados en tarjeta SD.
Revolviendo en los cajones, encontré algunas memorias Flash, frutos de mis reciclajes de componentes.
Se me ocurrió utilizar estas memorias como almacenamiento de ficheros wav.
Lo primero era almacenar el fichero wav en este tipo de memorias que  utilizar el bus SPI.
Para grabar esta memoria (EN25F80) he utilizado el programa IMSProg junto con un grabador CH341.


Antes de todo esto he tenido que grabar una serie de palabras en un fichero wav.
Este fichero wav tiene el formato de 8bits y a 11KHz.


Con el programa Audacity  edito el fichero de sonido y calculo la posición de memoria de cada palabra.
Ejemplo:
        {1,"beep", 0,25960},
        {2,"proxima",28017,15983},
        {3,"cuatro", 44869,13409},
El sonido beep empieza en la posición de memoria 0, y con un tamaño de 25960.
Se calcula multiplicando 11000 * por los segundos.

Para entender el funcionamiento del programa, ver la explicación en ../arduvoz.html .
No he querido retocar la forma en que recarga los 2 buffer, lo hace leyendo byte a byte, cuando sería mucho mas eficiente leyendo de 100 en 100.

Para reproducir varios sonidos continuados, he creado una cola de sonidos(FIFO), primero en entrar, primero en salir, que reproduce uno tras otro los sonidos.
La lectura de la memoria 25F80 se hace mediante unas rutinas sacadas de https://hackaday.io/page/6060-spi-flash-test . He estado probando varias librerías pero el resultado no era el esperado, y eran difíciles de manejar y entender.
La adaptación de niveles entre el arduino que funciona a 5V y la memoria que funciona a 3.3V la he realizado mediante resistencias.

He realizado 2 montajes, el primero solo utiliza la consola para enviar el código de sonido, que reproduce cuando se manda la orden.
Como ejemplo he creado un anunciador de estaciones de metro, simple pero de los mas curioso, no he querido añadir enlaces. ;)



He colocado un pequeño altavoz piezoeléctrico, aunque si se quiere oír alto deberás conectarlo a un amplificador.
Programa1


En el  segundo he añadido un display OLED y un mando rotatorio para elegir el sonido a reproducir.

 


Programa2

Pensando como hacer algo más rápido la lectura desde la memoria Flash, lo que he hecho es leer 100 bytes a la vez, en vez de 1 byte cada vez, y se nota.
Programa3


Video demostrativo.

El que le quiera dar imaginación, lo puede utilizar para ascensores, puertas, etc.
Si no te gusta la calidad de sonido, puedes utilizar un módulo que reproduce MP3 desde SD, ver montaje armpg.html .

Saludos.
Juan Galaz




Bibliografía:

https://hackaday.io/page/6060-spi-flash-test
voz2.html
arduvoz.html
arvoc.html .