Cómo manejar un gran número de entradas y salidas analógicas

0

Estoy colaborando con un amigo en un proyecto de sintetizador, pero soy muy nuevo en el diseño de sistemas integrados. Tengo una sólida formación en ingeniería de software, pero soy un novato en lo que respecta al diseño integrado.

Una pequeña descripción del proyecto: mi amigo ha construido un sintetizador analógico que tiene ~ 20 potenciómetros que controlan la misma cantidad de parámetros de síntesis. Al ser un sintetizador analógico, estos potes controlan directamente el voltaje que va a los distintos parámetros. Queremos colocar un microcontrolador entre estos potes y sus parámetros que nos permitan guardar y recuperar parches, evitando efectivamente el voltaje en el que se configuran los potes. El flujo básico para una de estas combinaciones de potenciómetros / parámetros con un microcontrolador involucrado se vería como tal:

Potentiometer -> ADC -> Microcontroller -> DAC -> Analog synth parameter 

Habrá efectivamente dos modos de operación: control en tiempo real (el valor analógico leído desde el potenciómetro se envía al parámetro sin modificar) y modo de recuperación (el usuario recupera un parche guardado y, en lugar del valor del potenciómetro, un valor recuperado se enviaría al parámetro. Si se mueve el bote, entonces se usa el valor del bote.)

He podido construir un prototipo que puede demostrar esta funcionalidad en una placa MSP430 para un par de potenciómetro / parámetro, pero el problema es que la placa tiene ADCs y DAC muy limitados. Mi pregunta es, ¿cómo hago para encontrar una junta que admita la cantidad de ADC y DAC que necesito? ¿Tendría que usar varios microcontroladores? ¿Existe tal cosa como un multiplexor ADC / DAC? ¿Cuál es la mejor práctica para este tipo de escenario? Aquí es donde el mundo de los sistemas integrados me alude.

Otra cosa que agregar es que también nos preocupa la frecuencia de muestreo, ya que cualquier cosa que sea demasiado baja puede sonar demasiado "irregular" al girar las macetas, pero creemos que esto es algo que tendremos que probar con nuestros oídos antes de instalarnos. en un numero Sin embargo, hemos decidido que queremos tener una resolución de al menos 10 bits para los entresijos.

Cualquier consejo sería muy apreciado.

    
pregunta Alexander L

2 respuestas

1

Si tuviera que hacerlo de esta manera, consideraría algo como Dallas DS2450 1-Wire Quad A / D Converter. Estos cuentan con un bus de datos muy simple y puede conectar en cadena más que suficiente para su aplicación de sintetizador.

El gran problema, y podría inutilizar el sistema, es que será muy difícil editar un parche. Si recuerdas un parche, tus botes ya no están en control y no te muestran la configuración. (Las posiciones del puntero no guardarán relación alguna con la configuración). Para cambiar un parche, tendría que volver a activar los mandos y volver a introducir el parche.

Una posibilidad pequeña es que vuelvas a cargar un parche y luego monitoreas las macetas. Si sientes que se está ajustando uno, cambias al modo en vivo para ese bote. Esto requerirá que cree una banda muerta para que el ruido aleatorio del ADC no dispare falsamente la reversión al botón. Sería un poco extraño: si el parche está al 80% y el bote al 20% con un 5% de banda muerta, entonces se ajusta a > El 25% haría que el bote tomara el control y ese parámetro saltaría del 80 al 25%. Luego, volverá a ajustarse al 80% por oído e iniciará el ajuste desde allí.

Los módulos de interfaz están disponibles para el sistema Dallas de 1 cable. Recomiendo estos ya que eliminan los requisitos de tiempo críticos de la CPU a un dispositivo externo.

    
respondido por el Transistor
-1

Ciertamente hay microcontroladores disponibles con 20 entradas analógicas. Eso no es realmente tan difícil. Dado que los humanos están girando las ollas, solo necesitas responder a nuevos valores en el tiempo humano.

Configuré el A / D para escanear todos los canales con un período de 10 µs. Eso significa que cualquier canal se escanea cada 200 µs. Eso es mucho más rápido de lo que necesita, pero le permite realizar un filtrado de paso bajo en cada señal. Eso puede ser bastante agresivo, ya que el único inconveniente es un retraso percibido para un usuario humano. Por ejemplo, dos polos de filtrado de paso bajo por canal con una fracción de filtro de 1/2 6 cada polo le da un tiempo de establecimiento del 90% en poco menos de 50 ms. Eso es instantáneo en el tiempo humano, pero atenuará el ruido aleatorio y dará una sensación de suavidad a las ollas.

En este punto, tiene 20 valores de potes en vivo dentro del microcontrolador con la mayoría de los ciclos aún disponibles. En lugar de enviar estos al sistema analógico existente, también implementaría la síntesis en el microcontrolador. Si desea un nuevo valor para dar salida a un D / A a 40 kHz, por ejemplo, tiene 25 µs para calcular cada nueva muestra. Eso es 1750 instrucciones en un dsPIC serie 33EP, por ejemplo. Incluso después de los ciclos para manejar las lecturas A / D, aún le quedan más de 1000 instrucciones. Eso es mucho para sumar un montón de ondas sinusoidales.

Pensando más en esto, probablemente sincronizaría el muestreo A / D con el cálculo y la salida de nuevas muestras. Eso te deja con más de 60 muestras por canal dentro del tiempo instantáneo humano de 50 ms.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas