Envía múltiples señales analógicas a la entrada de audio de la PC

Tengo 4 señales que necesito enviar a la PC a través del conector de audio. ¿Hay alguna manera de hacerlo con pérdidas mínimas de datos? No puedo usar la multiplexación por división de frecuencia, por lo que necesito una forma de enviar las 4 señales en serie para grabarlas con el micrófono y extraer cada señal por separado.

¿Es factible? Si es así, ¿cómo?

Sí, es factible.
me puedes dar una sugerencia de como? @Andyaka
¿Cuál es el ancho de banda de sus señales?
Lo mismo dice RoyC y debe explicar por qué no se puede hacer FDM.
analógico digital?
señales analógicas, frecuencia 0-5 Hz, probé FDM con modulación AM y FM, la grabadora no deja de capturar la señal AM o FM (está un poco deformada). FDM fue mi primera opción, pero luego mi asesor sugirió no usar eso, lo que sugirió fue usar el dominio del tiempo, capturar intervalos de 10 ms y graficarlos (matlab). por supuesto para poder usar esto, se usará un multiplexor analógico para seleccionar los canales y pasarlos a la pc.
¿Las señales son constantes o solo cambian lentamente para que cambiar entre ellas no sea un problema? ¿Esto es para un proyecto de laboratorio? En ese caso, yo diría que opte por la tecnología baja y use dos relés DPDT en serie, que le permitirán seleccionar cuál de las 4 señales está conectada a la entrada.
no, son constantes (latidos del corazón) y este no es un proyecto de curso, es un gran proyecto de investigación, y estoy trabajando en una parte de él.
Sabes que normalmente hay un límite de bloqueo de CC en la entrada de las tarjetas de sonido, ¿verdad? Y, si se trata de un gran proyecto de investigación, ¿no puede permitirse un dispositivo de captura a un precio razonable con entradas analógicas reales? Una entrada de sonido realmente no es muy apropiada para esto.
Lo sé, pero es una aplicación para países en desarrollo, así que tenemos que hacerla lo más económica posible, eventualmente, se usará un teléfono en lugar de una computadora.

Respuestas (5)

Saliendo un poco de la pregunta aquí, pero creo que tenemos una situación de problema XY aquí.

Siguiendo los comentarios, no necesita obtener 4 señales analógicas en la entrada de audio de una PC.
Lo que debe hacer es obtener 4 señales analógicas en una PC/teléfono de la manera más económica posible.

Ese es un problema muy diferente.

Por el precio de un multiplexor analógico de 4 entradas y la electrónica para cambiar entre las entradas a la velocidad adecuada, probablemente podría obtener un pequeño microcontrolador con 4 entradas analógicas. Esto le permitiría muestrear las 4 señales constantemente a una velocidad suficiente y luego transferir esos datos a la PC/teléfono a través de USB. Tiene la ventaja añadida de que, a diferencia de la toma del micrófono, la toma USB también podría suministrar mucha energía para hacer funcionar la electrónica externa.

Sí, ya he probado a hacerlo con un usb, leyendo 4 sensores directamente (comunicación serie). Mi controlador era arduino, logré trazar los 4 sensores con éxito. Por alguna razón, mi supervisor lo quiere a través del conector de audio (aunque le dije que es más robusto y que no perderemos ningún dato). El pensamiento final de hoy es usar un arduino para generar las señales de control para el mux y una vez que se pasa un flujo en serie a la PC, podemos tomar segmentos de él (digamos que cada canal tiene 500 muestras) y luego agregarlo al canal. vector en matlab y trazarlo. Voy a probar eso y ver qué pasa.
Yo diría que vaya con una CPU basada en ARM M0. Algo así como una pieza LPC11Uxx con al menos 4 entradas analógicas. Pueden ser tan baratos como $ 2.50, le darán mucha más potencia de CPU que un arduino para que pueda probar más rápido y tener USB incorporado, por lo que no se necesita un convertidor USB / serie para conectarlo a un teléfono.
Absolutamente correcto. Este tiene que ser el camino a seguir. +1

En términos generales, use un multiplexor de interruptor analógico para seleccionar el canal (multiplexación por división de tiempo). Debe tener en cuenta que la entrada de la tarjeta de sonido estará acoplada a CA, por lo que la medición de valores instantáneos no funcionará. Si puede convertir el nivel de salida del multiplexor en un valor de CA de alta frecuencia (modulación de amplitud), puede medir la amplitud de CA en la tarjeta de sonido y obtener el valor instantáneo para cada canal.

Intenté leer un solo canal (latido del corazón) y pude verlo claramente. Estaba usando audacity y vi varios enfoques similares en línea. Para la modulación AM, lo probé (con una onda sinusoidal), la señal AM será clara en mi osciloscopio, pero tan pronto como lo conecto a la PC (a través de AUX), se deforma (se vuelve muy ruidoso o señal de mensaje en negrita).
¿Qué frecuencia era su señal AM y cuál es la frecuencia de muestreo de su tarjeta de sonido?
la frecuencia de muestreo de la tarjeta de sonido era de 1000 Hz, mi señal de mensaje era de 3 Hz (seno) y mi portadora era de 500 Hz.
Eso debería estar bien, pero cuanto mayor sea la frecuencia de muestreo, mejor debería ser su tarjeta de sonido al menos a 44 kHz. También verifique que su nivel de señal a la entrada de audio no sea demasiado alto.
sí, tanto el mensaje como el operador son 0.5vpp, intentaré con una tasa de muestreo más alta
de alguna manera no puedo grabar con éxito una señal AM, pero cuando la demodulo usando los bloques de demodulación de simulink, obtengo una onda sinusoidal gigante que tiene una frecuencia de 0.1 Hz (que no es mi señal de mensaje).

Múltiples señales en un canal significa multiplexación.

Hay varios tipos de multiplexación que la gente ha inventado durante el último, ooh, siglo más o menos. En general, es bastante fácil meter varias señales en un canal, lo más difícil es recuperar las señales separadas después.

Si tiene una tarjeta de sonido de PC y 4 canales de ancho de banda de frecuencia cardíaca, entonces hay bolsas de exceso de capacidad, lo que significa que puede ser bastante perezoso acerca de cómo decodificar las señales (en comunicaciones, el ancho de banda es costoso, por lo que trabajamos duro en el codificación y decodificación para introducir la mayor cantidad de datos posible en un canal determinado).

La multiplexación por división de tiempo es conceptualmente fácil, la parte complicada es sincronizar el cuadro para que podamos cambiar cada segmento al canal correcto. También debemos asegurarnos de que terminemos con una señal que pase por el canal, por lo que si se trata de una tarjeta de audio de PC, no introduzca CC.

Si puede usar ambos canales estéreo, entonces una marca de sincronización en un canal es una forma muy simple de sincronizar el decodificador. Para evitar la CC, me inclinaría a cambiar cada canal como +ve, luego -ve polaridad, por lo que el voltaje de CC neto de cada canal es cero.

Si debe usar solo un canal, o desea expandir la capacidad más adelante, puede usar un método de sincronización 'en banda', con un nivel específico, forma o duración de un pulso para señalar el inicio de la trama multiplex.

El multiplexado por división de frecuencia también es muy posible. Use un VCO para cada canal, con la señal modulando la frecuencia. Use los VCO de 4046, son bastante lineales y bastante dóciles. Centre uno en (digamos) 1kHz, otro en 4kHz y 2k y 8k en el otro canal. Las ondas cuadradas tienen armónicos pares muy bajos, por lo que el filtrado es relativamente simple, no queremos que los armónicos de un oscilador bajo corrompan la señal de uno más alto. La separación y demodulación de las señales no necesita sincronización temporal, pero sí un conocimiento elemental de DSP. Debería estar dentro de la capacidad de cualquier PC razonable para demodular múltiples canales en tiempo real.

Solo una idea, si quiere que sea lo más barato posible y aún así usar el conector de entrada de sonido de una PC/teléfono móvil: ¿por qué no simplemente envía datos digitales a través del conector?

Dada la frecuencia de muestreo muy baja requerida para su aplicación, podría simplemente tomar la MCU más barata que tiene un ADC con 4 entradas analógicas y enviar regularmente los cuatro valores muestreados como un flujo de bits en serie, a una velocidad adecuada para la entrada de sonido. (tal vez algo así como 1kHz).

Todo lo que necesita tener para el protocolo es algún tipo de bit de inicio (o secuencia de inicio) y modular la transmisión utilizando un esquema muy simple como RZ unipolar para eludir el límite de bloqueo de CC. Puede hacerlo más robusto con codificación 4b/5b y manchester, pero dudo que esto sea realmente necesario.

Esto es fácil de generar (solo necesita un chip y apenas pasivos), y muy fácil de analizar en el software PC/teléfono (mucho más fácil que la demodulación de FM, o incluso multiplexación por división de tiempo que requiere algún tipo de sincronización).

Y, dado que le preocupa la pérdida de datos: tiene control total sobre la precisión de sus muestras, ya que el ADC está del lado de su propia MCU. Simplemente elija uno que tenga la precisión que necesita. Pero ya no depende de la precisión de la entrada de sonido, y hay un circuito analógico mínimo.

¡Esto nunca pasó por mi mente! ¡Aprenderé más sobre Rz unipolar y lo probaré! Muchas gracias
Aquí hay un enlace para los diversos esquemas de modulación habituales. Pero realmente, este sin duda sería el más simple. Tanto desde el lado del diseño del circuito del dispositivo como desde el lado de la demodulación del software.

He leído lo que pusiste y, en mi opinión, la multiplexación por división de frecuencia es la mejor manera.

la frecuencia de muestreo de la tarjeta de sonido era de 1000 Hz, mi señal de mensaje era de 3 Hz (seno) y mi portadora era de 500 Hz. – Isra

Entonces es por eso que tienes problemas. Si está muestreando a 1000 Hz y su portadora es de 500 Hz, tiene un problema de alias potencial (si no real). Imagine que está tomando muestras de un portador dos veces por ciclo; puede obtener esto: -

ingrese la descripción de la imagen aquí

O puede obtener estos: -

ingrese la descripción de la imagen aquí

¿Cómo sabrá qué forma de onda original está muestreando si muestrea la tasa de nyquist? Hágase un favor y muestree al menos 3 veces la tasa.

Es por eso que la multiplexación por división de frecuencia no funciona para usted.

sí, tanto el mensaje como el operador son 0.5vpp

Facilítese la vida y agregue un desplazamiento de CC para obtener una modulación que sea más fácil de decodificar: -

ingrese la descripción de la imagen aquí

Debería apuntar a una modulación del 50% para facilitar las cosas. También agregaré que para cada señal transmitida, debe intercalar 0 voltios y un voltaje de referencia, pero asegúrese de que toda la señal de banda base permanezca limitada en la banda a unas pocas decenas de Hz para evitar la superposición con otros canales.

¡Muchas gracias! Probé una portadora más baja (100 Hz) y ahora puedo recuperar mi señal de mensaje; sin embargo, con una frecuencia de muestreo de 44,1 kHz no puedo recuperarlo. Si voy a modular los 4 canales y tengo un espacio entre ellos (portadores 100 300 500 y 700), mi frecuencia más alta será de alrededor de 800 Hz, por lo que usar una frecuencia de muestreo de 1 kHz nuevamente no funcionará, ¿correcto? Seguiré intentándolo, tal vez esté haciendo algo mal, ya que debería funcionar incluso con frecuencias de muestreo más altas.
¿Quizás el dispositivo utilizado para demodular cada portador no puede funcionar con portadores simultáneos presentes? En otras palabras, ¿solo es capaz de demodular una portadora?
Estoy usando matlab, debería poder manejar varios operadores. Lo que quise decir es que con una frecuencia de muestreo de grabación más alta (44100) en Matlab, no pude recuperar el mensaje. Estaba probando un solo canal solamente. Sin embargo, esto funcionó con una frecuencia de muestreo de 1000 Hz y una frecuencia portadora de 100 Hz.
Además, menciona el desplazamiento de CC, ¿no va a ser bloqueado por la tarjeta de sonido?
El desplazamiento de CC que mencioné tiene que ver con la forma de onda de modulación; una vez modulado, no hay compensación de CC.