Katanafloor - Pedalera USB para Katana

lutop
#13 por lutop el 23/04/2020
Luego comento un poco mas sobre el hardware, pero respecto a la placa, lo que hice es montar el arduino+shield usb en una placa prototipo, y asi se ha quedado. Piensa que los componentes externos al arduino son minimos, creo que solo hay 4 o 5 resistencias y ya esta, con lo que tampoco se necesita gran cosa

La otra placa rara que veis en la foto es que decidi poner los leds en una pcb de tiras con 4 tiras en lugar de cablear para evitar la maraña de cables. Como utilizo charliplexing, es como un bus de datos con 4 vias para los LEDs.

Aunque luego ya comentare que no recomiendo utilizar charliplexing por los problemas que da junto con el parsing de los datos de usb.
Subir
OFERTASVer todas
  • -18%
    Warm Audio Foxy Tone Purple 70th Fuzz
    129 €
    Ver oferta
  • Kemper Profiler Stage
    1.429 €
    Ver oferta
  • Harley Benton TE-52 NA Vintage Series
    169 €
    Ver oferta
lutop
#14 por lutop el 23/04/2020
Mc escribió:
A mi tambien me interesa, tengo un Katana 50 Mk1 que no uso porque sin una pedalera no le saco partido.


Para el 50 habria que hacer una pequeña modificacion del software porque solo tiene 4 canales, pero es algo que se hace en 5 minutos.
Subir
lutop
#15 por lutop el 23/04/2020
Empiezo con el Hardware

Primero, la lista de la compra electronica:

Hay dos componentes electronicos principales:

-Arduino
-USB Host SPI

En mi caso yo he utilizado un Arduino pro Mini parecido a este:

https://www.amazon.es/AZDelivery-PRO-Mini-ATmega328-MHz/dp/B07RY894D5/ref=sr_1_2_sspa

Y un host usb como este:

https://www.amazon.es/HiLetgo%C2%AE-Herramienta-desarrollo-compatible-interfaz/dp/B0797MTDKZ/ref=sr_1_3?__mk_es_ES=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=usb+host+spi&qid=1587640426&s=industrial&sr=1-3

Ambos los podeis encontrar mas baratos en Aliexpress o similares.
(he intentado poner fotos pero no me funciona)
La gracia de estos dos juntos es que uno se pone encima del otro y ya tienes las conexiones hechas, y queda bastante pequeño. Pero en principio cualquier combinacion de Arduino con un USB host deberia funcionar. Por ejemplo, tengo otro proyecto donde utilizo un Arduino Uno+Uno shield USB Host. Tambien se puede con un Arduino nano y este host, pero necesitareis cablear las conexiones entre ellos.

Si os quedais con el Arduino pro mini, hay que tener en cuenta que no lleva integrado usb para programarlo, asi que necesitareis un conversor USB-Serial TTL tipo FTDI.
Si utilizais algun otro Arduino no sera necesario. (por ejemplo un Nano)

Otro hardware necesario:

-5 pulsadores momentaneos, normalmente abiertos. Yo los prefiero "clickless"
-9 LEDs. En mi caso yo utilicé 5 de un color (para los canales+panel), y 4 de otro (efectos). Pero es cuestion de gustos
-4 Resistencias de 100 Ohm. Tambien va a gustos, depende de la luminosidad y del color de los LEDs. Solo utilizo 4 porque hago charlieplexing de LEDs, si utilizais otra solucion debereis modificar.
-2 Jacks hembra stereo con switch. Se utilizan para poder detectar cuando hay un pedal conectado.
-Una caja. Yo utilice una Hammond 1590BX2, creo que la compre en Musikding. Es la parte mas cara de todo el proyecto...
-Un conector DC como los de los pedales
-Yo he usado un extensor de USB para sacar el puerto USB fuera de la caja. Si soys creativos en poner la pcb en el sitio adecuado, igual con un agujero es basta.
-Cables y una pcb de pruebas si lo considerais necesario

Creo que con esto teneis todo lo necesario.

Los arduinos y shields se pueden comprar en Amazon, Ebay, Aliexpress o similares. Los pulsadores, LEDs, resistencias y demas, yo acostumbro a comprarlos en una de estas tiendas:

https://www.musikding.de/
http://www.banzaimusic.com/home.php
Subir
1
lutop
#16 por lutop el 23/04/2020
frandelrio escribió:
En cuanto al hardware, en las fotos que pusiste se ve una placa de pruebas. Es interesante para probar el software antes de liarse con la caja y los pulsadores definitivos.


Perdona que antes no entendi la pregunta. Si, efectivamente al fondo de la foto se ve una "proto board" que utilice durante la fase de pruebas, con pulsadores tactile que todavia se ven en en la foto. No hay mucho que comentar aqui, basicamente solde el Arduino con el USB host y lo pinche en la protoboard. A partir de ahi es realizar las conexiones de LEDs y pulsadores.
Subir
frandelrio
#17 por frandelrio el 23/04/2020
Para empezar está genial, en la página de vguitarforums utilizan el teensy, pero es muy caro, y la conectividad es más engorrosa. Aunque la versión 4.0 parece que lleva implentado el usbhost.
De todas formas, con el nano + el usb shield creo que va genial.
También estoy barajando la posibilidad de meterle una pantalla lcd. ¿Tienes algún proyecto con pantalla?
Subir
lutop
#18 por lutop el 23/04/2020
El problema con el nano vs el teensy es lo que comento mas arriba, al tener que hacer "parsing" de todo el alud de datos que envia el Katana al hacer un cambio de canal, se queda un poco frito y entonces los LEDs hacen cosas raras. Yo recomendaria utilizar un IC externo para los LEDs. (un tipo I/O expander), o un simple shift register. Asi te ahorras estar multiplexando desde el arduino y te ahorras algun pin.
Otro problema es que en mi caso ya casi agote todas las entradas/salidas. Para añadir un LCD supongo que la mejor opcion seria utilizar un LCD I2C o SPI. Como el bus SPI es el que se utiliza para el USB, casi mejor utilizar I2C. Veo que el pro mini tiene los pins A4 y A5 (SDA y SCL para I2C) metidos "dentro" de la pcb, no estan en la tira de pins principales. La verdad es que no me habia dado cuenta que estaban alli. Parece una buena opcion

La ultima vez que me pelee con un LCD fue con un PIC programando en Assembler.... otros tiempos. Hoy en dia es mas facil, tienes librerias que funcionan muy bien y LCDs bien de precio con bus I2C o SPI.

Saludos
Subir
lutop
#19 por lutop el 23/04/2020
frandelrio escribió:
Para empezar está genial, en la página de vguitarforums utilizan el teensy, pero es muy caro


Esto es precisamente por lo que yo opte por portar el proyecto a un arduino barato. Pero la base y la libreria MS3 modificada la saque precisamente de vguitarforums.
Subir
lutop
#20 por lutop el 23/04/2020
Una puntualizacion importante respecto al Arduino + USB host que se ma paso y ahora no me deja editar....

Hay que ir con cuidado con los voltajes de alimentacion. El USB host que yo compre funciona con 3.3V, asi que el Arduino pro mini tambien tiene que ir a 3.3V. Hay versiones a 3.3V y versiones a 5V, hay que buscar la que funcione bien con el usb host.

Lo ideal seria un host que funcione a 5V y un Arduino tambien a 5V, porque asi puedes hacerlo correr a 16Mhz.

Y esto me lleva a otro tema. Si utilizas un USB host como el mio a 3.3V, significa que no vas a poder alimentar un dispositivo USB... no es relevante para este proyecto, pero por ejemplo si quieres montar algo como para utlizar un mouse en el arduino, no te va a funcionar sin hacer alguna modificacion al host para que alimente el usb con 5V. Avisados estais.
Subir
frandelrio
#21 por frandelrio el 23/04/2020
Entonces la mejor opción sería un arduino uno + usb host shield, no? ¿Qué diferencia hay aparte del voltaje, tamaño y precio entre el arduino uno y el nano?

En cuanto al software, da igual qué arduino usar, no?
Subir
lutop
#22 por lutop el 23/04/2020
El software funcionara igual. Seguramente mejor por la doble frecuencia de reloj.
Para mi la principal ventaja era el tamaño. No queria meter un nano con shield en la pedalera.
Subir
lutop
#23 por lutop el 08/05/2020
Esquematico

Aqui os dejo el esquema. Como veis no hay muchos componentes externos al Arduino, aparte de switches y LEDs.

No esta incluido en el esquema el shield USB que estara "pegado" al Arduino. en caso de utilizar un modulo que no sea apilable con el Arduino, tendreis que mirar las conexiones del bus SPI que se necesitan para conectar ambos.



463e39c9f5957f42170357f464252-2547512.jpg

En los siguientes posts comentare las diferentes secciones del esquema.
Subir
lutop
#24 por lutop el 08/05/2020
Esquema: LEDs

Los LEDs requieren un poco de explicacion. Debido a que el Arduino no tiene suficientes salidas para todos los LEDs necesarios (9), el proyecto utiliza una tecnica llamada CharliePlexing.

https://en.wikipedia.org/wiki/Charlieplexing

Charelieplexing es un tipo de multplexacion que aprovecha los tres estados que puede tener un pin del Arduino (HIGH, LOW y configurado como INPUT). Asi con N pins se consigue controlar Nx(N-1) LEDs. En nuestro caso, con 4 pins podemos controlar 12 LEDs, aunque solo utilizaremos 9.
Charlieplexing tiene algunas limitaciones importantes. Va muy bien cuando solo un LED esta encendido a la vez, pero cuando varios LEDs se tienen que encender a la vez...

-Las resistencias limitadoras son compartidas entre LEDs. Si son de colores diferentes o si varios LEDs estan activos al mismo tiempo, puede haber diferencias de luminosidad entre LEDs importantes
-No todas las combinaciones de LEDs son posibles. Asi que esto nos obliga ademas a hacer multiplexacion en el tiempo y utilizar el efecto POV para simular que los LEDs estan encencidos a la vez.

Para manejar todo esto, el codigo utiliza la libreria Chaplex incluida en el paquete. Esta libreria permite manejar facilmente todo el proceso, puesto que al principio hay que definir las conexiones de cada LED, y luego durante el codigo solo hay que cambiar el estado de cada LED con una funciona dedicada. Ejemplo:

myCharlie.ledWrite(myLeds[3], ON);


La multiplexacion de LEDs en este proyecto tiene algunos efectos negativos. El problema es que cada vez que cambiamos de canal, el KATANA manda un "dump" de parte de la memoria via USB, y esto lo utilizamos para analizar el preset y saber que efectos estan conectados/desconectados. Este proceso se come gran parte de la capacidad del Arduino, y tal y como esta montado el codigo, la prioridad la tiene el USB. Asi que durante este parsing de datos, los LEDs tienen baja prioridad y hacen su parpadeo demasiado lento, y se pierde el efecto POV. Algo parecido para al utilizar los pedales de expresion.

Quizas se podria mejorar el codigo con alguna interrupcion para evitar esto, pero de momento es un efecto negativo que hay.

Por eso, si tuviera que empezar ahora el proyeco de nuevo, no utilizaria Charlieplexing, y en su lugar utilizaria o bien un shift register, o bien un extender de E/S.
Subir
Hilos similares
Nuevo post

Regístrate o para poder postear en este hilo