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 .



jueves, 13 de junio de 2024

Si5351 CLOCK GENERATOR

Página principal

Si5351
CLOCK GENERATOR

Anteriormente había realizado:
-LTC6904 - Generador de frecuencia 1KHz a 68MHz.
-AD9833 -Generador de funciones 1Hz a 12MHz
-AD9850 DDS - Generador señal desde 1Hz a 40MHz.
Ahora me ha llegado un módulo que lleva el chip SI5351A, con tres salidas de señal.
Utilizando un cristal de cuarzo de 25MHz, podemos obtener 3 señales entre 8KHz hasta 160MHz.
El Si5351 es un generador de reloj altamente flexible que es completamente configurable a través de su interfaz I2C.
La configuración predeterminada se almacena en la memoria no volátil (NVM).


En internet existen muchos montajes que utilizan este chip para emisores/receptores de radio.
Lo primero que hice fue montar el circuito en una breadboard y ponerme hacer pruebas.


El primer programa probado fue el de CesarSound que funcionaba perfectamente.
Podéis bajaros del enlace el programa, o bajarlo de mi página  generador1-120  y LIBRERÍAS.
generador1-120   By J.  CesarSound

71% de programa, utiliza:
#include <Rotary.h>                //Ben  Buxton https://github.com/brianlow/Rotary
#include <si5351.h>               //Etherkit  https://github.com/etherkit/Si5351Arduino
#include <Adafruit_GFX.h>         //Adafruit  GFX https://github.com/adafruit/Adafruit-GFX-Library
#include <Adafruit_SSD1306.h>     //Adafruit SSD1306 https://github.com/adafruit/Adafruit_SSD1306

Como yo no me puedo estar quieto me puse a investigar el chip.
La mejor fuente es el DATA_CHIP pero en este caso deja bastante que desear.

Con los dato del DATA_CHIP te quedan bastantes dudas y sobre todo en lo referente de programar los PLL que te indica que debes utilizar el programa: 
DIREC(26–41) PLL, MultiSynth, and output clock delay offset Configuration Registers.
Use ClockBuilder Desktop Software to Determine These Register Values.

Estudiando las librerías y en las páginas en:
https://learn.adafruit.com/adafruit-si5351-clock-generator-breakout/downloads
https://ea4civ.blogspot.com/2016/05/si5351a-dds-de-bajo-coste-descripcion.html

Conseguí entender algo.



Y con estos datos me puse a realizar modificaciones del programa.


si5351_a por SETA43

45% de programa, utiliza:
#include <si5351.h>               //Etherkit  https://github.com/etherkit/Si5351Arduino
Librería propia llamada olex.h

El ENCODER del mando es mio, no utilizo interrupciones, pero funciona bastante bien.
Los saltos de frecuencia son 1/10/100/1K/5K/10K/100K/1M.



si5351__b por SETA43

45% de programa, utiliza:
#include <si5351.h>               //Etherkit  https://github.com/etherkit/Si5351Arduino
Librería propia llamada olex.h
El ENCODER del mando es mio, no utilizo interrupciones, pero funciona bastante bien.
Los saltos de frecuencia son 1/10/100/1K/5K/10K/100K/1M.
Parpadea el numero a cambiar, casualmente en la imagen se ve el numero de los millones apagado.


 
si5351__c por SETA43

41% de programa, utiliza:
#include <Adafruit_SI5351.h>
y una librería propia llamada olex.h
---------------
Divisor=108.00 =D1+(D2/D3)
D1=107
D2=001
D3=001
Frecuencia=008.333.333  =900M/Divisor
---------------
He querido mostrar como funciona el divisor de frecuencia, puedes cambiar el numero entero junto con la fracción.

LIBRERÍAS UTILIZADAS.


Me ha sorprendido para mal, la documentación del Si5351, aunque tiene muchos registros y explican para que son cada uno, no explica como utilizarlo.
Para la programación del PLL te remiten a un programa, que una vez instalado te quedas igual.
Diría que este chip se diseño para las empresas y con poca documentación para los usuarios.
Pienso, y esto solo es opinión mía, que las librerías se sacaron por Ingeniería Inversa.



Saludos.
Juan Galaz



Bibliografía:


https://projecthub.arduino.cc/CesarSound/10khz-to-225mhz-vforf-generator-with-si5351-version-2-acdc25
https://learn.adafruit.com/adafruit-si5351-clock-generator-breakout/downloads
https://ea4civ.blogspot.com/2016/05/si5351a-dds-de-bajo-coste-descripcion.html
https://projecthub.arduino.cc/CesarSound/10khz-to-225mhz-vforf-generator-with-si5351-version-2-acdc25

 

martes, 11 de junio de 2024

Antenas Loop - Comparación

  Página principal

Antenas
Loop - Comparación
NanoVNA

Tenía hecha una antena del tipo LOOP y quería ver como se comparaba con otro tipo de antenas, además vamos a ver como se ven a través del NanoVNA.
Existen muchas página en internet que muestran la fabricación de antenas tipo LOOP.
https://www.nonstopsystems.com/radio/frank_radio_antenna_magloop.htm#top-of-page
http://www.pearltrees.com/kc4fne/loop-antennas/id25196879
http://www.radioamatoripeligni.it/i6ibe/loopflat/loopflat.htm
https://www.ivarc.org.uk/uploads/1/2/3/8/12380834/multi-band_hf_magnetic_loop_slides_-1.pdf

(c) 2019Alan Badcock

¿Ventajas de un Mag-Loop?

-Disposiciones de montaje sencillas de tamaño compacto.
-Rechaza las interferencias eléctricas (mejora de 2-3 puntos S).
-Tiene polarización vertical e irradia en ángulos altos y bajos a lo largo del plano del bucle, por lo que es bueno para NVIS y Dx.
-Presenta un nulo en el eje del bucle que se puede utilizar para reducir el impacto de una fuente de interferencia eléctrica.
-Banda muy estrecha en resonancia, por lo que puede reducir las fuertes interferencias de señal.
-Puede construirse para banda única o multibanda


¿Desventajas de un Mag-Loop?

-Debe volver a sintonizarse periódicamente ya que el ancho de banda en resonancia es muy estrecho.
-Se necesita una unidad de reducción grande para un ajuste preciso.
-Tiene una resistencia a la radiación muy baja (miliohmios), por lo que cualquier pérdida del circuito afecta
-La eficiencia requiere dramáticamente una construcción cuidadosa.
-Tensiones muy altas en el condensador (varios kV incluso a baja potencia), por lo que el espaciado y las clasificaciones de los componentes son importantes.
-Las grandes corrientes de bucle también aumentan los peligros, por lo que debe mantenerse alejado del contacto con el
antena. Se debe mantener al menos 1 m (o más en QRO) del bucle.
Se puede generar un fuerte campo magnético. - Piense en seguridad con CUALQUIER antena.



La antena LOOP está realizado en RG213.


El mayor problema que veo es que debes sintonizar la antena a la frecuencia de TX/RX pues el ancho de banda es muy estrecho.

ANTENA DE BASE SIRIO GPS-27 1/2 6m, sin radiales.





En la frecuencia de ajuste, la SWR es perfecta.
Fuera de la frecuencia de ajuste, la SWR sube, pero es utilizable, aunque conviene utilizar un acoplador de antena.

Antena en V invertida.


10 m


20 m
Aunque veáis que está resonando a 13.54MHz, os cuento la historia.
Tenía puesta la antena vertical en el mismo mástil de la antena en V invertida, y me resonaba a una frecuencia baja.
Empece a cortar y cortar, hasta que me resonara a 14MHz.
Cuando quité la antena vertical y volví a probar, se me redujo la frecuencia de resonancia a 13.54MHz.
Como veis unas antena influyen en otras, tendré que alargar el hilo para que resuene bien.


La conclusión que he tenido con la antena en LOOP, es que es utilizable si vamos a transmitir en una frecuencia concreta, si vamos a hacer contactos en varías frecuencias, debemos tener la antena donde podáis ajustar el condensador variable. He visto servos que se manejaban a distancia y que movían el condensador variable.
Me hubiera gustado una prueba real, pero no ha sido posible. En los enlaces adjuntos muestro una comparación real de antenas.

Si queréis hacer pruebas de transmisión HF existe una aplicación para android pRxTx_Lite , ponéis transmitir desde vuestra emisora y oíros en la aplicación.  G0XBU se encuentra en el centro del Reino Unido, a unos 1200KM.

Este mismo método lo he utilizado en 2 m para probar antenas, cuando no hay gente en el R1 de Burgos, transmito desde Palencia y miro en el ordenador como llega la señal.


Saludos.
Juan Galaz



Bibliografía:


https://www.nonstopsystems.com/radio/frank_radio_antenna_magloop.htm#top-of-page
http://www.pearltrees.com/kc4fne/loop-antennas/id25196879
http://www.radioamatoripeligni.it/i6ibe/loopflat/loopflat.htm
https://www.ivarc.org.uk/uploads/1/2/3/8/12380834/multi-band_hf_magnetic_loop_slides_-1.pdf