Este proyecto es probablemente el mas ambicioso y con mejores resultados de los que he realizado. La idea era crear una pedalera MIDI generica aprovechando los conocimientos adquiridos con el LOOPIC y el "Whammy MIDI foot controller". El proyecto lo realizamos conjuntamente con el forero M5L de guitarramania, al igual que el "Whammy MIDI foot controller"
Las especificaciones de diseño son estas:
-2 pulsadores UP/DOWN para cambiar de banco
-4 pulsadores para seleccionar el preset en cada banco (4 presets por banco)
-Dos entradas para pedal de expresion externo, con CC configurable
-Cada pedal de expresion se puede calibrar, y invertir el sentido si es necesario.
-MIDI OUT (evidentemente)-Display LCD (16x2, chulisimo)
-"Touch mode": Es decir, al pulsar sobre el preset ya selecci
onado, vuelve al anterior.
-MIDI IN. Sirve para 2 cosas, para poder hacer backup de los presets al PC y restarurarlos si es necesario, y para hacer update del firmware utilizado un bootloader.
-Dos modos de funcionamiento, basico
y usuario. Me explico:
Modo basico: Se configura un canal MIDI, el numero de bancos (maximo 32) y el primer programa. Cada preset manda un cambio de programa. En el banco uno tendremos 4 presets cada uno con su programa empezando por el primero configurado y subiendo, y asi ir tirando.
Modo usuario: Para cada preset de cada banco (maximo 7 bancos=28 presets) podemos configurar dos cambios de programa (cada uno en un canal midi diferente) + 2 cambios de CC (cada uno con un canal midi diferente)
-Todos los parametros se pueden editar a traves de un sistema de menus utilizando el LCD y los pulsadores. -El cacharro guarda el ultimo preset activo, y al enchufarlo vuelve a el.
Para realizar el bicho hemos utilizado:
-PIC 16F88 -Display tipo HD44780 -Algun IC mas, y componentes varios (no muchos, no creas) el PIC esta programado en ASM.
El Hardware:
El procesador a utilizar es un PIC 16F88 que dispone de UART integrada (muy util para MIDI), una generosa memoria de programa (que casi hemos utilizado en su totalidad), y un ADC que nos ira de perlas para leer los pedales de expresion.
Es es el esquematico que preparo Carlos Best. No esta 100% verificado pero parece correcto.
Vista a traves de los componentes, para ver los cortes de pista y los puntos de soldadura.
Como podeis ver, la placa tiene un monton de jumpers, algunos de ellos muy largos.... la verdad es que si teneis maña, mejor hacerse una pcb como dios manda y insolarla
Vamos a comentar algunos puntos del esquematico:
Los LEDS
Como podeis ver, andabamos cortos de salidas del PIC asi que tuvimos que hacer algunos trucos. Primer truco..., para poder utilizar 4 LEDS con 3 salidas, utilizamos una tecnica llamada "charlieplexing", que permite utilizar hasta 6 LEDs con solo 3 salidas jugando con los 3 estados del PIC (5v, 0v, abierto).
el la Wikipedia podeis encontrar mas informacion sobre Charlieplexing
El LCD
Otro truco que tuvimos que utilizar para economizar entradas y salidas es montar una comunicacion serie con el LCD. Un LCD de este tipo necesita normalmente 6 pins minimo para controlarlo (4 para datos, RS y E), pero siguiendo la idea de esta web:
Que utiliza un "shift register", conseguimos gastar solo 2 pins de salida del PIC.
Los pedales de expresion
Los pedales de expresion merecen una mencion especial. Vamos a utilizar el conversor A/D del PIC para leer los pedales de expresion, asi que necesitamos meter en la entrada correspondiente del PIC un voltaje que vaya de 0 a 5v dependiendo de la posicion del pedal.
En el mercado hay dos tipos basicos de pedal de expresion, los de "dos cables" y los de "tres cables"
Los de "dos cables" actuan como una resistencia variable a secas, asi que para conseguir un voltaje de 0 a 5v tendremos que añadir una resitencia de "pull up" en la entrada del PIC, y que el pedal vaya conectado a tierra. El valor de la resistencia va a depender del pedal de expresion, es cuestion de probar. en el layout podeis ver las resistencias, son R9 y R10.
Los de "3 cables" funcionan como un pote, asi que normalmente se le envia 0 y 5v en dos de los cables, y devuelve el voltaje de control en el tercer cable. En este caso no hace falta "pull up", pero hay que enviar 5v al pedal. En este caso hay que quitar R9 y R10.
En mi caso yo he utilizado un Behringher FCV100 (tipo "3 cables"), que es barato y va de perlas.
Fotos del proceso
Aqui podeis ver unas fotos del proceso de fabricacion de PCB, caja y ensamblado:
Voilà, aqui la pcb lista para empezar a soldar.
Un consejo: Para verificar que los cortes de pista estan bien y que no queda ningun contacto indeseado entre pistas, va muy bien mirar la pcb a contraluz de una bombilla. Se ve muy claramente si te ha quedado algun hilillo de cobre que no deberia estar.
Despues de un poco de soldadura, asi ha quedado la pcb con sus componentes:
Como ya comente, la j*d*da tiene muuuuchos jumpers. Mas jumpers que componentes. Aunque me pese (soy un gran amante de las placas de tiras), tengo que decir que creo que es mejor hacer una pcb como dios manda. Os ahorrareis espacio y mucho tiempo de soldar jumpers. Eso si, este diseño esta al alcance de cualquiera sin saber insolar placas.
Aqui veis el LCD cobrando vida, despues de conectarlo a la PCB.
Despues de muchos sudores, la caja agujereada. Aqui la podeis ver, con sus 20 (!!) agujeros.
-6 agujeros para los pulsadores -4 agujeros para los leds -2 agujeros para MIDI -1 agujero para power -2 agujeros para pedales de expresion -1 agujero para LCD -4 agujeros para tornillos de fijacion del LCD.
tela! Si tienes las herramientas adecuadas, no es un problema, pero en mi caso, he tirado mucho de lima porque no tengo todas las brocas necesarias. La parte mas "especial" es el agujero del LCD. Para ello he hecho un porron de agujeritos de 3 mm siguiendo el contorno:
Y despues a base de lima plana, lo he dejado lo mejor que he podido:
Aqui podeis ver el LCD en la parte de dentro (probando el alineamiento):
Y por arriba, con el LCD montado:
Despues de 2 dias de cablear como loco...
Asi ha quedado desde fuera con todo puesto:
Y aqui la veis en mitad de la primera prueba de verdad:
Aqui un render de como quedara con serigrafia:
Serigrafía
Fichero Powerpoint con la serigrafía que he utilizado para una Hammond 1444-14:
Esta programado en ASM. No voy a comentar el codigo puesto que es bastante largo (ocupa practicamente toda la memoria disponible del PIC), pero si necesitais alguna ayuda para adaptarlo a vuestras necesidades no dudeis en preguntar.
Tengo que decir que la parte mas larga y que mas quebraderos de cabeza me ha dado es todo el interface con el usuario, menus, display, botones, configuracion, etc..., mientras que la parte de enviar mensajes MIDI es mas trivial.
Una caracteristica interesante es que podemos hacer backup de nuestros presets en forma de mensajes SYSEX, guardarlos en el PC e incluso editarlos con una pequeña aplicacion que M5L se ha currado:
Es un fichero html que te permite configurar los presets y generar un mensaje SYSEX.
Para bajar los presets existentes, desde el menu de configuracion seleccionamos enviar sysex, y con el PC y utilizado un software como el MIDIOX recibimos el mensaje con el volcado. Este lo podemos editar con la aplicacion, y luego subirlo otra vez al MIDIFOOT.
Para subirlo al MIDIFOOT, tenemos que acceder al menu de configuracion y seleccionar la opcion de recibir sysex. Le mandamos el mensaje con el MIDIOX , y ya lo tenemos en el PIC.
El Bootloader
Un desarrollo del que me siento particularmente orgulloso es el bootloader MIDI. Basicamente se trata de un pequeño programa que añadido al PIC permite que podamos hacer update del firmware via MIDI, sin tener que abrir siquiera el MIDIFOOT.
El concepto es simple, un sofware que monitoriza los botones del MIDIFOOT al arrancar. Si tenemos pulsado un boton en concreto arranca en modo update, y si no pues salta al programa normal. En modo update, se queda esperando recibir mensajes sysex por el cable MIDI. El PC tiene que mandar el nuevo firmware codificado dentro de mensajes sysex, y el bootloader se encarga de grabar el nuevo firmware en la memoria del PIC. Al terminar y hacer reset, tenemos el nuevo firmware grabado.
La idea es tener un software en el PC que haga todo el proceso, pero mientras, el proceso es el siguiente:
-Quemar el PIC con el bootloader. Aqui lo podeis descargar, en formato HEX
-Utilizar un software llamado MIDI-OX para enviar los mensajes sysex al PIC cuando esta en modo "update".
Una nota importante es que para permitir al PIC suficiente tiempo para grabar el firmware enter mensaje y mensaje, hay que configurar el midi-ox para que ponga una pausa entre sysex y sysex.
Manual de usuario
De momento no hay.... Si algun dia tengo tiempo me currare un manual de Usuario. Si alguien se lo fabrica y necesita saber como funciona, que me mande un mensaje y me pondre manos a la obra.
Videos demostrativos
Y aqui unos videos demostrativos de como funciona: