PIC 18F4550 conversor AD para 8 canales |
|||
-
página modificada en septiembre del 2011 -
(English
version)
|
Descripción general |
El proyecto nuevo de captar audio y transformar los eventos en información de datos digitales es el sucesor del proyecto PAD to MIDI, que he realizado ya hace algunos años con un PIC16F877. El programa del PIC16F877 estaba escrito en código ASM (ufff …), pero funciona (todavía) súper rápido. El código actual para el 18F4550 está hecho en C (BoostC) y se puede descargar con todo lo demás (diagramas, descripción) abajo de esta página. En comparación del código para el 16F877 la simplificación del programa en C para el proyecto nuevo con el PIC184550 es profundo. Mientras en el proyecto el PIC16F877 lee 8 entradas analógicas y los transforma directamente en un protocolo de MIDI, en el proyecto nuevo el PIC18F4550 solo tiene la función de leer los señales de 8 entradas analógicas y enviarlas por el USART a un MAX232 (level shifter) que está conectada por cable al RS232 del ordenador. Con un simple adaptador , RS232/USB se puede conectar el PIC directo al USB del ordenador o se puede realizar un conversor de USRAT a USB con un FT232. See Link. Principalmente he elegido el PIC18F4550 por su habilidad de tener registros capaces de programar un puerto USB en el PIC mismo. Todavía no lo he aprovechado de este habilidad del PIC. Estoy utilizando Pure Data para manipular los datos enviados por el PIC. Incluido en ZIP que se puede bajar abajo de la página hay un patch de Pure Data. El Pd da mucha versatilidad en interpretar los datos entrantes. Les puedo transformar en datos de MIDI o OSC para manipular programas de audio o vídeo (Resolume por ejemplo) o enviarlos por el objeto [netsend] co destino a otros ordenadores . Con tablas [tablewrite], [tableread] los datos entrantes se convierten en notas agudas, luz brillante o todo al revés. Por supuesto sabiendo programar en Prozessing o SuperCollider se obtiene los mismos resultados. El programa del PIC es súper rápido. El patch de Pd permite realizar algunas cambios en la configuración del PIC18F4550, enviando comandos a través del objeto [comport]. Con un simple programa de eventos MIDI (MIDI_OX por ejemplo) se consuige “clusters” hasta 50 notas utilizando [makenote] en Pd. Eso es una “tormenta” de notas impresiónate. (cea Pure Data patch abajo) |
Diagrama de bloque de los circuitos |
El diagrama de bloque arriba muestra el conjunto de los circuitos de un canal. Por supuesto el PIC184550 y el “level shifter” con el MAX232 hay solo uno de cada. |
Los amplificadores diferenciales de las entradas |
visualizar el esquema electrónico del circuito
"amplificador diferencial"
|
El LF356 es un CI tipo JFET fácil de conseguir y bien de precio. Para amplificar eléctrico con un rango de frecuencia entre 100Hz y 6Khz absolutamente La configuración del circuito es hecho con una ganancia de 4,7 (G = Rf/ micrófono condensador o, como hago habitualmente, con un circuito buffer (FET preamp), el circuito tiene conectado a través de la resistencia la alimentación (+15V) y actúa de manera alimentación phantom. |
16 enchufes tipo canon con 8 amplificadores diferenciales. Con solo simples piezo eléctricos el sonido es muy bueno. |
Los seguidores de envolvente |
visualizar el esquema electrónico del circuito
"seguidor de envolvente"
|
El diagrama original del seguidor de envolvente es de aquí. He añadido
un potentiometer (R20) para ajustar el voltaje en la salida (pin 7) del
LM324. IC3C aprovecho para meter una LED (LED1) indicando los eventos
entrantes visualmente. El indicador se podría realizar bastante mas
sencillo (con una resistencia de 1K y una LED conectando al pin 8 del
IC3C). |
Las placas están enchufadas en una placa
“base”. Seguidor de envolventes con componentes SMD |
La placa del PIC184550 |
visualizar el esquema electrónico del circuito
"placa 18F4550"
|
Para tener una placa flexible he añadida algunos conectores demás. Se puede conectar un módulo xBee al RX & TX del 18F4550 y un LCD al I2C bus del PIC. Lo que hace falta para el funcionamiento el enchufe J6 para los señales entrantes , el J1 que es el conector para programar el PIC y al mejor, los 3 LEDs para tener algún control visual. Para programar el PIC utilizo un “clone” del ICD2 de Microchip. |
Unidad abierto (tipo Rack estándar) con 8 preamplificadores de audio, 8 seguidores de envolventes, 8 salidas de audio & un filtro de alimentación. |
Extracto de código del 18F4550 |
Cristal externo de 20MHz. Uff … pero no es tan complicado … La rutina arriba demuestra el envío de los datos de 10bits
del canal 3. El envío esta realizada con tres bytes: El byte de inicio (init), siempre 0x00 y los bytes “upper_3” y “lower_3”.
Los 6 bits no ocupados por los 10bits de la conversión
analógica/digital se utiliza para direccionar el envío. Así, en el
ejemplo de arriba, el “set_bit (upper_3, 4)” nos da la dirección para
que Pure Data (o Prozessing) puede distinguir del canal. |
16
enchufes tipo canon con 8 amplificadores diferenciales. Con solo
simples piezo eléctricos el sonido es muy bueno. La placa tiene
incorporado un zócalo para un módulo xBee.
|
Todo el conjunto montado en un “Rack” para facilitar el transporte. |
level shifter |
La pequeña placa que
transforma los datos del USART del PIC18F4550 a un formato RS232 esta
realizado con un MAX232. La placa con un MAX232 he reutilizado solo por tener la ya hecho. Es mejor utilizar el diseño electrónico con un CI FT232RL que se encuentra: FT232RL |
visualizar el esquema electrónico del circuito
"MAX232"
|
visualizar el esquema electrónico del circuito
"FT232RL_xBee"
|
audio preamplifier |
Un diagrama súper sencillo. El “gain” se ajusta con el potenciómetro de 10K entre 2,7 mínimum 57, que esta conectado a la entrada del IC2 (pin2) El LED 1 indica los eventos de la entrada. |
visualizar el esquema electrónico del circuito
"pre-amp"
|
Pure Data patch |
Con el programa de
Pd se puede configurar varios parametros del 18F4550. |
|