Controlador MIDI por USB con PIC para Virtual Dj

Bueno wow por ahora me resultando relativamente facil sacando algunas complicaciones que tuve. ya logre detectar un pote de 5k y que lo mande por midi logrando modificar algún parámetro en el traktor.
todavía lo de los mappers y devices para el vdj no me puse a verlo ya que estoy conforme con el traktor seguramente lo haga mas adelante.

Supongo que el próximo paso sera hacer lo de los jog wheel.
tengo en casa un disco rigido desarmado que lo desarme hace mil para ver que tenia adentro por curiosidad y nunca logre hacer nada con el.

Vi anteriormente que rachelies había publicado como conectar el disco. pero no entiendo muy bien haber si me ayudan. en la foto que esta adjuntada:
-los pines 3 pines que están a la izquierda son los que se conectan al disco? en ese orden?
-el LM358 que función cumpliría?
-y a que se refieren con canal A y canal B? cada uno va a un pin de entrada digital al micro?
espero no molestar con tantas preguntas. pero me gusto mucho la idea del controlador dj.

muchas gracias por la ayuda y la paciencia :)
 

Adjuntos

  • Encoder.jpg
    Encoder.jpg
    101.2 KB · Visitas: 35
Hola amigo!!
Yo te explico. Los 3 pines son del disco. El que yo desmonté, tenía 4 pines en una lámina flexible que va conectada al motor. En ella veían marcados los pines como "A" "B" "C" y "COM". El del medio del esquema lo conecté al COM, y luego utilicé el A, que puede ser el de arriba, y el B, abajo. Tuve suerte y me funcionó a la primera. Si los tuyos no vienen marcados, prueba esto a ver si coincide:
Viendo el motor desde los pines, y con el motor en la parte de arriba y los pines abajo, el mio lleva A B C y Com de derecha a izquierda.

Después, el LM358 lo que hace es transformar la señal del disco a una onda cuadrada que entienda el micro. El LM lo alimentas a 5V, y lo conectas como en el esquema. Cuando "vea" algo en la entrada, se saturará y se podrá a 5V, y si no hay nada, a 0V. Así hacemos la onda cuadrada.

Y se usan dos canales para poder saber el sentido de giro. El disco lleva 3 bobinas, y nosotros utilizamos 2. De esta forma tendremos 2 señales que van desfasadas 120º, y así puedes saber hacia que lado estas moviendo el jog.
Estos 2 canales se conectan al pic para poder leerlas.

Haz la prueba y comenta los resultados. A mí me funcionó a la primera, y me dejó bastante sorprendido porque funcionaba bastante bien.

Un saludo
 
hola rachelies.
Me sirvió mucho la explicación que diste.
mi disco tiene 3 pines pude detectar cual era el com y los otros dos (A y B)
resulta que lo conecto y cuando giro el disco un poco la cancion se avanza bastante y no me detecta para que lado giro. a veces anda bien y a veces no. es como que se vuelve "loco".

estoy pensando si el disco anda mal o este quemado o algo ya que en los 3 pines si mido continuidad entre cualquiera de los pines me da que el circuito esta cerrado. sin conectar a nada.
y si lo conecto al LM y giro el disco las salidas A y B se ponen en 3v aprox independientemente para que lado gire y si no lo giro las 2 salidas se ponen en 0v. (se modifican simultáneamente)

Como funciona el sistema? ejempo si giro para un lado el A se pone en "1" y el B en "0", y si giro para el otro lado el A se ponen en "0" y el B en "1"? o funciona de otra manera?

Que disco usaron? ya que estoy pensando en comprarme un disco menor a 10gb en mercadolibre que son los mas baratos usados y con algunos defectos (mientras ande el motor supongo que me sirve).

muchas gracias
 
mi disco tiene 3 pines pude detectar cual era el com y los otros dos (A y B)
Si es de 3 cables no tiene un "comun", es lo mismo cualquiera de los tres porque esta en triangulo.

estrella-triangulo.jpg

estoy pensando si el disco anda mal o este quemado o algo ya que en los 3 pines si mido continuidad entre cualquiera de los pines me da que el circuito esta cerrado.
Puede ser eso o que tengan una resistencia muy baja y estes midiendo mal ;)



Como funciona el sistema? ejempo si giro para un lado el A se pone en "1" y el B en "0", y si giro para el otro lado el A se ponen en "0" y el B en "1"? o funciona de otra manera?
Busca en google "encoder optico" y ahi vas a tener una idea de como funciona, y sino ponele leds a la salida y tiene que hacer algo como lo de mi video

 
Última edición:
Busca un disco estropeado. Lo más normal es que tenga el motor bien. Seguro que en alguna tienda donde reparen pcs te lo pueden regalar.

A la salida del LM tienes que tener 2 trenes de pulsos, pero uno adelantado respecto al otro. Si giras hacia un lado va por delante uno, y si giras hacia el otro, va delante el otro. Te hice un dibujo con paint a ver si se entiende mas o menos, jejejej.

No te desanimes y busca otro disco. Seguro que con ese disco no funcionaba bien o tienes algo mal en el código.

Según el dibujo que hice, puedes detectar el sentido de la siguiente manera. Si tienes el canal A a 1, y se pone a cero, si el B está a 0 estás girando a izquierda, y si está a 1 estás girando a derecha.
Una opción es hacerlo con una interrupción cuando cambia el canal A, miro si el cambio fue de subida o bajada, y luego escaneo como está el B.
Un saludo.
 

Adjuntos

  • Sin título.jpg
    Sin título.jpg
    53.3 KB · Visitas: 6
Última edición:
Buen ya entendí bien como funciona y todo. el código que tengo funciona por interrupciones,
funciona pero tengo un problema que es que no siempre me detecta el mismo sentido seguido. ej: giro el disco para un lado. y en el miditrace me tira que el pic manda 10 veces que gira para el lado correcto y un par de veces entre esas diez que gira para el lado incorrecto. como que me detecta mal el disco.

Encontré un problema que puede ser que el pic no me detecta bien los 1 y 0 en los pines de entrada ya que en la salida del LM358 cuando estoy girando el disco me figura que circulan 1,3v aprox y cuando no giro el disco 0v.
las conecciones las hice igual que el circuito que figura en el post anterior con las resistencias de 10k.

cual podría ser el problema?
todavía no pude ir a buscar otro disco rígido para probar. supongo que sera eso.
En estos días pruebo con otro disco y comento los resultados.
muchas gracias
 
Prueba esto. Algún día lo vi no se donde cuando miraba esto del encoder con un disco duro. Yo no lo he montado, pero bueno, prueba que es fácil.
Y perdón por el dibujo, que lo hice con el paint ahora en un momento, jejeje
 

Adjuntos

  • Sin título.jpg
    Sin título.jpg
    20.3 KB · Visitas: 23
Buen después de mucha lucha, idas y vueltas pude hacer que funcione con el circuito que tenia antes(el ultimo que publico rachelies no me sirvió ) con el codigo que subio rachelies anteriormente, uno que no usaba interrupciones. pude hacer que funcione perfectamente el jog wheel.
no se dan una idea lo feliz que estoy.
voy a seguir avanzando con lo que ya tengo echo y posiblemente suba algo cuando lo tenga todo terminado.
Muchas Gracias a todos por la ayuda.
 
Gente no pude sacarle fotos a mi invento!!!! :( me trajeron una consola para reparar y como estaba dañada una de las placas agarre un pic y la converti a midi (en realidad hid), el cliente chocho :) asi que dijo que me iba a traer algunas mas para ver que se podia hacer, de estas si voy a sacar fotos para compartirlas...
gmazz me alegro mucho que te funcione! saludos.
 
Hola gente tengo un gran problema...
Todo lo que hice funciona en traktor pero cuando lo quiero hacer funcionar en VDJ no funciona porque se tilda cuando conecto mi dispositivo y cuando lo desconecto vuelve a la normalidad.
me estoy volviendo loco porque no anda
Puse el archivo devices y el mapper pero no funciona.
como que no se identifica el dispositivo o algo.
al final de la pagina 3 de este tema fernandoae tuvo el mismo problema...
pero no figura como lo resolvió :(

en el mapper tengo:
<?xml version="1.0" encoding="UTF-8"?>
<mapper device="SPV">
<map value="JOG" action="jogwheel+1.0" />
</mapper>

En el device tengo:
<?xml version="1.0" encoding="UTF-8"?>
<device name="SPV" type="MIDI" decks="1" >
<jog cc="0x01" name="JOG" channel="1" deck="1" />
</device>
 
Última edición:
La verdad yo tampoco me acuerdo como lo solucioné! pero... bajate la ultima versión del vdj, desconectate de internet y ejecutalo como administrador (boton derecho, ejecutar como admin)... con eso capaz que se soluciona.
 
hola gente, me estado leyendo este tema bastante rato lo que pasa es que estoy bastante ocupado últimamente y quería pedirles ayuda.
necesito ayuda para construir un controlador para VDJ ya que lo he intentado con un teclado viejo sin éxito
agradecería mucho la ayuda,
he estado leyendo el foro pero por motivos varios no he podido prestarle la atención que me hubiera gustado
Muchas Gracias :)
 
Hola ;) con un teclado podes manejar botones unicamente, si lo haces con un microcontrolador pic ya podes hacer lo que se te ocurra... en que necesitas ayuda? porque si lees el tema ya está todo resuelto practicamente...
 
hola fernandoae y gracias por la rapidez de respuesta :)
necesito ayuda con la placa para el microcontrolador pic toda la posible ya que yo de pic's no entiendo casi nada.... ya he visto alguna foto pero me hago bastante lío a la hora de detectar cuales son los componentes que lleva o los que se necesitan
Muchas Gracias otra vez :)
 
bueno lo de los pic tengo un amigo que lo sabe hacer, porque otra manera no hay no? u.u'
de todas necesito algo por donde empezar el proyecto
peron por mi insistencia. :p
Muchas Gracias fernandoae. :)
 
Hola Eloy94. Más atrás hay un esquema hecho a mano. Búscalo, échale un vistazo y comenta lo que no entiendas. Pero bueno, necesitas saber de PICs, porque si no te va a sonar todo a chino, jejeje
Un saludo
 
En realidad no es nada dificil esto de los pic una vez que lo estudias, pero lleva su tiempo ;) yo de a poco fui aprendiendo... y una vez que decidi aprender sobre el puerto USB en pics a los dos dias ya tenia mi primer programa funcionando...
Yo te puedo dar una mano si especificas mejor que es lo que queres hacer, por ejemplo la cantidad de botones, cuantos potenciometros (incluidos los faders y demas), salidas con led...
 
Atrás
Arriba