Cómo usar PWM con un Arduino

0

Compré un conector de audio trrs y traté de usarlo usando arduino. Conecté la punta a una salida analógica (hice un pwm a convertidor analógico), creé un programa en arduino que enviaba un 10% de voltaje en el pwm y escuché un sonido pero no cambió cuando cambié el voltaje (por 10 % a 9%, 11%, etc.). Tengo dos preguntas:

  1. ¿Hay algún límite de voltaje en el conector de audio trrs?

  2. ¿Cómo puedo cambiar realmente el sonido de lo que escucho en mis auriculares (cambiar la frecuencia de sonido del sonido)

Editar: Me dijiste que cambiara la frecuencia de PWM y lo hice y el sonido sí cambió , luego usé mi Raspberry Pi y cambié la frecuencia de PWM a Algunos valores (entre 20000-20 hz) y el sonido chaged. Mi problema es que mi arduino no reemplaza el cambio de la frecuencia PWM libremente (no puedo cambiarlo a cualquier frecuencia que desee). Mi frambuesa pi sí lo admite pero quiero que mi proyecto sea portátil (tengo arduino nano). ¿Como puedó resolver esté problema? ¿Hay algún chip / módulo PWM?

Gracias.

    
pregunta gal aharon

2 respuestas

3

PWM no es útil para la música. La variación de la frecuencia PWM le brinda un generador de tonos, pero para la reproducción de mp3 necesita al menos 16000 muestras por segundo, más probablemente 22.1k o 44.1k, cada una con una amplitud diferente y bien controlada. Para crear eso con PWM, eso significa que la configuración de PWM está cambiando 16000 veces por segundo. La frecuencia PWM en sí misma debe ser 256 veces más alta para aproximarse al control de amplitud de 8 bits, por lo que estamos hablando de una frecuencia PWM de 2 MHz, mínimo , y eso es bastante mala calidad de audio. Para las muestras de 16 bits de "calidad de CD", tendría 44100 * 65536 = frecuencia PWM de 2.9 GHz. Y eso es con un filtro de reconstrucción analógico "perfecto" que no tiene ninguna interferencia entre símbolos. Eso simplemente no está sucediendo, y es por eso que los DAC de audio no usan PWM para la síntesis de formas de onda.

Consiga un DAC mejor que admita al menos una salida de 12 bits (podría usar el tramado / sobremuestreo y un DAC de 8 bits, pero la frecuencia de muestreo aumentada será más difícil para usted). Esta es básicamente la misma idea que pasar de un ADC delta-sigma a una aproximación sucesiva a una conversión directa, excepto en el lado DAC.

Un DAC de este tipo normalmente se conectará a través de SPI a su procesador, aunque a veces también se ve I2C (tanto Raspberry Pi como Arduino tienen estos puertos disponibles en el conector de expansión). En su lugar, los DAC de audio especialmente diseñados utilizan I2S (IIRC, el procesador Raspberry Pi tiene esto pero está precableado a los circuitos de audio integrados)

    
respondido por el Ben Voigt
0

Espero que estés conectando el pin a tus auriculares y atenuando la señal también. Creo que un PWM de 5v sobrecargaría la mayoría de los auriculares, y el componente de CC no les servirá de nada. Enlace al módulo trrs que tiene, puede ahorrar el uso de adivinar.

1) Lo hay, pero no lo vas a alcanzar con un Arduino

2) Parece que está usando una salida PWM (pero puede que no lo esté, no lo sé). El voltaje corresponde a la relación marca / espacio, la salida de CC promedio. Al utilizar la biblioteca PWM estándar, no importa qué proporción se programe, la frecuencia se mantiene igual, por lo que el sonido será muy similar.

Espero que el 9%, el 10% y el 11% de PWM no parezcan indistinguibles. Es posible que escuche una diferencia entre el 33% y el 50%, ya que las proporciones de armónicos pares e impares pueden ser lo suficientemente diferentes, una especie de clarinete contra violín tocando las mismas diferencias de tipo de nota.

Si desea explorar sonidos más interesantes, intente golpear el pin directamente. Es posible que encuentre una biblioteca sigma delta que haría un mejor trabajo al representar un archivo MP3 en una salida de audio.

    
respondido por el Neil_UK

Lea otras preguntas en las etiquetas