Autor Tema: Generador senoidal  (Leído 2034 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Generador senoidal
« en: 22 de Febrero de 2022, 16:21:18 »
Hola

Quiero diseñar un generador senoidal que pueda variar en frecuencia y amplitud, pero hay muchos métodos, a ver si alguien me recomienda alguno en particular?

quizá el mas simple que he encontrado es el Walsh sine wave generator, pero me da que no va a ser muy preciso.

Luego por simplicidad veo que se puede crear una señal cuadrada e integrar 2 veces analógicamente, o una triangular e integrar 1, el desfase creado aqui es muy grande?

Hoy en dia muchos micros ya llevan integrado un DAC de 10 o 12 bits, asi que esos métodos también podrían estar bien.

un saludo.
« Última modificación: 22 de Febrero de 2022, 16:23:50 por juaperser1 »

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Generador senoidal
« Respuesta #1 en: 22 de Febrero de 2022, 16:35:07 »
Hola

Quiero diseñar un generador senoidal que pueda variar en frecuencia y amplitud, pero hay muchos métodos, a ver si alguien me recomienda alguno en particular?

quizá el mas simple que he encontrado es el Walsh sine wave generator, pero me da que no va a ser muy preciso.

Luego por simplicidad veo que se puede crear una señal cuadrada e integrar 2 veces analógicamente, o una triangular e integrar 1, el desfase creado aqui es muy grande?

Hoy en dia muchos micros ya llevan integrado un DAC de 10 o 12 bits, asi que esos métodos también podrían estar bien.

un saludo.

Existen en varios chips que son generadores de función:



O puedes generar una señal SPWM con un microcontrolador y filtrar para que aparezca la señal deseada.



Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re:Generador senoidal
« Respuesta #2 en: 22 de Febrero de 2022, 18:50:54 »
el integrado especifico lo descarto, luego si no hay stock o lo que sea no hay manera de sustituirlo por otra equivalente.

¿Es factible, tener los puntos guardaros y dispararlos con un dac en el tiempo especificado? es decir teóricamente si, yo tengo un vector con los puntos del seno:

Seno[100] =
{
 2048, 2176, 2304, 2431, 2557, 2680, 2801, 2919,
 3034, 3145, 3251, 3353, 3449, 3540, 3625, 3704,
 3776, 3842, 3900, 3951, 3995, 4031, 4059, 4079,
 4091, 4095, 4091, 4079, 4059, 4031, 3995, 3951,
 3951, 3842, 3776, 3704, 3625, 3540, 3449, 3353,
 3251, 3145, 3034, 2919, 2801, 2680, 2557, 2431,
 2304, 2176, 2048, 1919, 1791, 1664, 1538, 1415,
 1294, 1176, 1061,  950,  844,  742,  646,  555,
  470,  391,  319,  253,  195,  144,  100,   64,
   36,   16,    4,    0,    4,   16,   36,   64,
  100,  144,  195,  253,  319,  391,  470,  555,
  646,  742,  844,  950, 1061, 1176, 1294, 1415,
 1538, 1664, 1791, 1919
};

y metiendo un delay entre cada punto cambio la frecuencia, el problema es que si quiero una frecuencia de 200 Hz por ejemplo, tendría que poner un punto cada 50us(1/200Hz/100puntos), teniendo en cuenta que un micro normalito, unos 48Mhz tiene una media de conversión de 20uS, lo veo muy justo, para hacerlo de esta manera digitalmente.

un saludo

la cosa es variar la frecuencia al menos hasta 1Khz, la amplitud es mas sencillo con un simple amplificador PGA.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Generador senoidal
« Respuesta #3 en: 22 de Febrero de 2022, 19:15:24 »
el integrado especifico lo descarto, luego si no hay stock o lo que sea no hay manera de sustituirlo por otra equivalente.

¿Es factible, tener los puntos guardaros y dispararlos con un dac en el tiempo especificado? es decir teóricamente si, yo tengo un vector con los puntos del seno:

Seno[100] =
{
 2048, 2176, 2304, 2431, 2557, 2680, 2801, 2919,
 3034, 3145, 3251, 3353, 3449, 3540, 3625, 3704,
 3776, 3842, 3900, 3951, 3995, 4031, 4059, 4079,
 4091, 4095, 4091, 4079, 4059, 4031, 3995, 3951,
 3951, 3842, 3776, 3704, 3625, 3540, 3449, 3353,
 3251, 3145, 3034, 2919, 2801, 2680, 2557, 2431,
 2304, 2176, 2048, 1919, 1791, 1664, 1538, 1415,
 1294, 1176, 1061,  950,  844,  742,  646,  555,
  470,  391,  319,  253,  195,  144,  100,   64,
   36,   16,    4,    0,    4,   16,   36,   64,
  100,  144,  195,  253,  319,  391,  470,  555,
  646,  742,  844,  950, 1061, 1176, 1294, 1415,
 1538, 1664, 1791, 1919
};

y metiendo un delay entre cada punto cambio la frecuencia, el problema es que si quiero una frecuencia de 200 Hz por ejemplo, tendría que poner un punto cada 50us(1/200Hz/100puntos), teniendo en cuenta que un micro normalito, unos 48Mhz tiene una media de conversión de 20uS, lo veo muy justo, para hacerlo de esta manera digitalmente.

un saludo

la cosa es variar la frecuencia al menos hasta 1Khz, la amplitud es mas sencillo con un simple amplificador PGA.

Claro, esa es la manera como se genera audio con un microcontrolador o un microprocesador.

La segunda imagen que puse corresponde a un ejemplo donde leen un archivo de audio almacenado en una memoria SD y mediante el PWM sintetizan el audio para reproducir una canción. Usan el PWM ya que no tiene un DAC.

Esos ejemplos los puedes encontrar en estos libros.





Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re:Generador senoidal
« Respuesta #4 en: 23 de Febrero de 2022, 02:58:47 »
Podrías considerar hacerlo con una DDS. No tienes porqué ceñirte a una concreta, hay muchos tipos en el mercado:
https://www.analog.com/en/analog-dialogue/articles/dds-generates-high-quality-waveforms-efficiently.html

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re:Generador senoidal
« Respuesta #5 en: 23 de Febrero de 2022, 14:56:51 »
Citar
Claro, esa es la manera como se genera audio con un microcontrolador o un microprocesador.

La segunda imagen que puse corresponde a un ejemplo donde leen un archivo de audio almacenado en una memoria SD y mediante el PWM sintetizan el audio para reproducir una canción. Usan el PWM ya que no tiene un DAC.

Esos ejemplos los puedes encontrar en estos libros.

Ok voy a estudiar lo de sintetización de audio, por que en este tema estoy perdido perdido, nunca he tocado este tema. Ayer estuve viendo esta pagina:

https://alastairbarber.com/Creating-PWL-Files-For-LTSpice-for-PWM-Signals/

te hace el fichero de puntos y despues con un paso de baja te sale la senoidal, pero claro al modificar los parámetros ya no me sirve el paso de baja del ejemplo, tengo que ver como funciona esto, por que si lo hago con pwm en vez de con un dac supongo que tendre mas velocidad, aunque creo que menos precisión.

Podrías considerar hacerlo con una DDS. No tienes porqué ceñirte a una concreta, hay muchos tipos en el mercado:
https://www.analog.com/en/analog-dialogue/articles/dds-generates-high-quality-waveforms-efficiently.html


Voy a verlos por precio y compatibilidad, no quiero usarlos por que en el pasado ya utilice algún integrado con alguna tarea especifica, y en estos tiempos tal y como están los plazos de fabricación ahora son casi imposibles de encontrar ni de sustituir sin cambiar el hardware, además aunque te facilitan mucho la tarea suelen ser carillos.
Aun así voy a verlos.

Otra opción seria poner un dac externo de estos baratos por i2c y lo mismo son mas rápidos


Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Generador senoidal
« Respuesta #6 en: 23 de Febrero de 2022, 15:28:18 »
Me parece que te conviene usar un generador en base al MAX038 (fmax 20MHz)  o al viejo XR2206 (fmax 200kHz).
Los dos son muy parecidos salvo la frecuencia máxima y el precio  (en Aliexpress el kit para un MAX038 está a unos 20USD mientras que el XR2206 a menos de 2USD)

La distorsión (tiene un preset) es baja en todo el rango, solo superada por osciladores analógicos con control de amplitud o los de filtro de capacitores conmutados.

Como la base de tiempo sale de un oscilador RC, para algo preciso se puede medir la frecuencia con el micro y realimentar la tensión de control.


Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Generador senoidal
« Respuesta #7 en: 23 de Febrero de 2022, 15:45:03 »
Ok voy a estudiar lo de sinterización de audio, por que en este tema estoy perdido perdido, nunca he tocado este tema.

Esa es la manera. Investigue, ponga en práctica, aprenda de los errores y no se desanime.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Generador senoidal
« Respuesta #8 en: 25 de Febrero de 2022, 09:03:10 »
Me parece que te conviene usar un generador en base al MAX038 (fmax 20MHz)  o al viejo XR2206 (fmax 200kHz).
Los dos son muy parecidos salvo la frecuencia máxima y el precio  (en Aliexpress el kit para un MAX038 está a unos 20USD mientras que el XR2206 a menos de 2USD)

La distorsión (tiene un preset) es baja en todo el rango, solo superada por osciladores analógicos con control de amplitud o los de filtro de capacitores conmutados.

Como la base de tiempo sale de un oscilador RC, para algo preciso se puede medir la frecuencia con el micro y realimentar la tensión de control.

Me falto el AD9833, este es DDS como sugería nocturno.   https://www.aliexpress.com/premium/ad9833.html
Si bien a alta frecuencia la cuantización es grande (filtrable) es mil veces superior a sintetizar con micro, salvo que el rango sean frecuencias muy bajas.