Entrada de datos en serie a través del microcontrolador al voltaje de salida

Soy nuevo aquí y nuevo en la programación, así que pensé que tal vez algunos de ustedes podrían ayudarme en la dirección correcta.

Estoy buscando diseñar un circuito que reciba datos en serie de un puerto RS232 en mi CPU, e ingrese eso en lo que imagino que sería una especie de microcontrolador, que contiene un convertidor digital a analógico. A partir de ahí, en función de los datos específicos de los voltajes de salida en serie, para controlar un medidor LED de gráfico de barras.

Más detalladamente, hay un programa de grabación de audio que estoy usando que emite datos de medición MIDI en grupos de 8. Puedo convertir esos mensajes MIDI en mensajes en serie, emitiéndolos a través de un cable RS232. Me gustaría enviar estos datos en serie a un microchip y programar esos datos para generar voltajes específicos por canal.

Digamos que tengo el medidor 1 enviando datos en serie a un microcontrolador. Me gustaría usar el microchip para convertir esos datos a voltaje, de un pin del microchip. Dado que hay 8 canales de medición, espero que sea posible tener 8 pines separados, generando 8 voltajes específicos basados ​​en su programación de entrada de datos en serie, para controlar 8 medidores de barra LED separados.

La razón por la que busco convertir a analógico es porque le da al medidor una resolución más fina. Después de mucha investigación sobre matrices LED (medidores digitales), esta parece una mejor solución. Los datos en serie deben tener niveles de salida específicos, al igual que los datos MIDI convertidos. Estaré monitoreando esto en un futuro cercano para confirmar. Los circuitos del medidor LED aceptan entrada analógica.

El plan inicial para diseñar un 'puente Midi Meter', permanecer en el ámbito digital no parecía posible después de muchas conversaciones e investigaciones. Es por eso que estoy explorando esta ruta. En última instancia, estoy buscando tener un medidor de 32 LED de alto, 32 canales en total... pero usando una matriz de LED digital, no he encontrado que sea una opción.

Mis disculpas, cuando me refiero a la resolución, me refiero a esto... al diseñar un puente de medidor a través de una matriz de LED, la resolución máxima que puedo obtener es de 16 LED. Sin embargo, el protocolo MIDI es de 8 bits, lo que permite 128 pasos para el medidor. Si fuera posible programar un Microchip para generar un voltaje específico cada 4 pasos, la resolución en el medidor de barra LED analógico se vería mejor que la matriz MIDI. Además, usando mi gráfico de barras LED analógico, puedo agregar muchos más segmentos de los que podría con la matriz.

ingrese la descripción de la imagen aquíComo alternativa, (noob aquí) mirando el esquema analógico anterior, ¿tendría más sentido (o incluso sería posible) que el PIC16f88 aceptara los 'datos en serie' en lugar del audio para controlar los medidores LED?

¿Hay alguna razón por la que necesite convertir a analógico antes de mostrar? ¿Los datos seriales tienen un nivel explícito que conoces digitalmente?
Scott, te estás perdiendo un principio fundamental, MIDI es digital, al convertirlo a analógico no obtienes más resolución de la que obtendrías con la misma cantidad de bits que manejan un medidor de barra LED digital. Si el medidor tiene 20 segmentos, se necesitarían 5 bits para codificar esos datos, independientemente de si son analógicos o digitales. De hecho, la conversión a información analógica y de retropérdidas se produce a través del error de conversión y la adición de ruido analógico.
No importa si maneja una cadena de LED de forma analógica o digital. Si solo hay 16 o solo 32 LED, no hay forma de representar 128 valores. Si está en el ámbito digital y va al ámbito digital, no hay razón para incorporar lo analógico. Simplemente escale lo que necesita en un micro.
@ScottK Si alguien le pide más detalles, incluya esos detalles en su pregunta original, no como comentarios a la pregunta. No es apropiado en sitios SE. Además, no se vincule a su sitio privado de Photobucket: SE tiene un alojamiento de imágenes incorporado (solo apunte al original y se clonará en imgur).
Acabo de registrarme hoy, gracias por informarme sobre las reglas y los métodos apropiados del sitio. Mis disculpas por volver a comentar.

Respuestas (2)

Yo sugeriría hacer esto en un pequeño FPGA. Lo que quiere es un reloj, es más adecuado para un FPGA que para una CPU. El VHDL para ello es trivial.

Puede obtener placas de desarrollo FPGA baratas, por ejemplo, de Actel (Igloo Nano) que tienen todo el hardware a bordo que necesita. Solo necesita conectar un traductor de nivel para el controlador MIDI y de matriz de puntos, por ejemplo, los que se dan en otras respuestas. La placa de desarrollo tiene pines para hacer eso. En lugar de una placa de circuito impreso, incluso puede usar stripboard. He conectado una pantalla de matriz LCD de esta manera.

Manual del jabalí de desarrollo de iglú

Dos problemas con un FPGA en esta situación. Primero, es desalentador para una persona nueva en la electrónica. En segundo lugar, y más importante, la capacidad de conducción de cada pin probablemente sea demasiado pequeña para alimentar los LED directamente, lo que elimina las ventajas de usar la lógica en un FPGA.
El microcontrolador y un DAC externo deberían estar absolutamente bien, suponiendo que las tasas de muestreo sean aceptables para ese enfoque.
También es probable que una solución FPGA sea muchas veces más costosa.

Para lo que pides en los comentarios, una pantalla de nivel de 32 bits. Puede usar registros de desplazamiento con suficiente potencia para controlar los LED directamente, como http://www.ti.com/lit/ds/symlink/tpic6b595.pdf Estos pueden usar 1 micro pin para cada pantalla de 32 bits. 2 pines para relojes, uno para cambiar los valores y otro para cambiar a los nuevos valores. Esto requeriría una tonelada de chips y 34 pines.

Si está manejando tantos, probablemente quiera ver algo como el controlador Matrix http://datasheets.maximintegrated.com/en/ds/MAX6960-MAX6963.pdf . Esto puede hacer una matriz de 8x16 por chip. Ocho de estos chips harán su matriz de 32x32. Entonces solo necesita un micro con suficientes pines para hacer la conversión rs232 y la conducción digital. Necesita 8 pines para seleccionar el chip y luego los pines de datos.

Muchas gracias chicos por las recomendaciones y los enlaces... Todavía tengo mucho que estudiar e investigar con respecto a lo mencionado anteriormente. Voy a publicar de nuevo con cualquier pregunta adicional!
Joe, ¿hay algún micro que recomendarías para convertir el serial y controlar los MAX6960?
Yo iría con el más familiar para ti. Si no te sientes muy cómodo con los micros, podría ser bueno comenzar con Arduino. Incluso un Uno tendría suficientes pines para manejar esto, pero es posible que necesite espacio para el programa Mega, dependiendo de lo que necesite hacer. Puede pasar a código real, en lugar de Arduino, si necesita más velocidad.
Esta parece ser mi opción más sólida. Ahora tengo un Arduino Mega2560 y puedo usarlo para fines de prueba sin ningún problema. Usted menciona 8 pines para la selección de chips, ¿no necesitaría 8 pines para enviar datos a MAX6960 también?
Es una interfaz serie de 4 hilos, que incluye CS. Y parece que puede mapear múltiplos junto con ADDOUT, ADDIN y ADDCLK. La mejor configuración probablemente sea encadenar 4 conjuntos para una matriz de 32x16 con 4 pines. Luego 4 más, compartiendo las 3 líneas de datos del micro y 1 línea CS adicional.