miércoles, 25 de marzo de 2009

Unraveling the Mysteries...

Después de mucho trabajo, al fin tenemos una versión estable del programa de transmisión con la cual podemos trabajar. Hoy les traemos las primeras pruebas de comunicación entre la PC y el microcontrolador. Les recomendamos que se den una vuelta por las entradas anteriores de MIDI al desnudo para que estén al tanto de los avances que se tienen hasta ahora.

Protoboard con circuito de pruebas.

Bien, debido a la falta de drivers para Linux del conversor serial-usb que utilizamos para transmitir los datos desde la PC, trabajamos sobre una maquina virtual corriendo Windows XP. La aplicación esta desarrollada en Java y utilizamos NetBeans como ambiente de desarrollo (puedes descargar la versión mas nueva de este IDE con la nueva versión de java aquí).

El programa funciona de la siguiente manera:
  1. Abrir archivo MIDI.
  2. Decodificar.
  3. Discriminar propiedades de mensajes ON/OFF .
  4. Enviar mensajes al Microcontrolador vía RS232.

Utilizamos el microcontrolador PIC18F4550 como receptor de los datos, no tenemos ninguna razón en especial para utilizar ese modelo más que el número de pines libres que tiene, ademas contabamos ya con uno, talvez en el futuro sea sustituido por un microcontrolador un poco menos "sobrado".

Como mencionamos en las entradas anteriores de MIDI al desnudo, la transmisión de los datos se da de forma serial. Cuando cargamos los datos del MIDI al microcontrolador, la aplicación en la PC envía por el puerto serial un String con la nota a pulsar y la octava en la que esta se encuentra. Esta acción se repite cada determinado tiempo dependiendo de la estructura de la melodía cargada.

El microcontrolador trabaja voltaje TTL, es por eso que al comunicar serialmente la computadora con un micro se debe utilizar el circuito integrado MAX232, este circuito cambia los niveles TTL a los del estándar RS-232 en TX, y los niveles RS-232 a TTL en RX. El circuito típico se muestra en la siguiente figura:
Diagrama de conexiones del MAX232.

El formato en el que se envían los datos, es el siguiente
  • G4 : Nota Sol en la cuarta octava.
  • Y4 : Nota Fa sostenido en la cuarta octava.
  • Etc.
Transmision de datos desde la aplicación.

El microcontrolador compara el string recibido y ejecuta acciones convenientes dependiendo de la octava en la que se encuentra la nota recibida. Para estas pruebas preliminares declaramos un pin de salida por cada nota e ignoramos por ahora la información de octavas. En cada pin de salida conectamos un LED (en el robot serian los solenoides) que muestra si la nota esta o no siendo pulsada.


Video de las primeras pruebas. Nos alegra informar que fueron todas satisfactorias.

Niño: Oiga señor orco... ¿Por que no se esforzaron un poco más y comunicaron la PC y el micro vía USB?
Orco: Porque no.


lunes, 23 de marzo de 2009

Robot Blacksmith's Workshop

En esta entrada vamos a hablar un poco sobre la forma en la que el robot ejecutará una pieza musical. Para poder tocar cada nota del teclado utilizaremos 19 solenoides (7 en la armonía y 12 en la melodía), éstos van montados en soportes que se pueden mover a traves de todo el teclado (tal y como lo harían un par de manos). Esta semana dos orcos herreros cosecharon el mineral de la tierra media para traer al mundo dos soleras que harán el papel de dichos soportes.

Cortaron una lámina de acero inoxidable en dos partes de 187 mm y otras dos de 100mm, después hicieron unos pequeños cortes para facilitar el ensamble. El resultado fue el siguiente:

Vista de los soportes con los solenoides

Como se puede observar, los solenoides que corresponden a los tonos completos embonan perfectamente dentro del ensamble, tal es la habilidad práctica de los herreros que habitan en Minas Morgul.

Al principio, debido a su peso, dudabamos de si el acero inoxidable sería la mejor opción para fabricar los soportes, sin embargo una vez construido, el peso probó ser aceptable; además, ese peso nos puede ayudar a reducir el error de inercia que se podría presentar por la naturaleza de los motores.

Pendientes:
  • En los siguientes dias se realizará la perforación de las soleras que sostienen a los solenoides para que puedan ser atornillados a éstas.
  • Soldar toda la creación y dar un acabado superficial para eliminar imperfecciones.
  • Se seguirán los mismos pasos para el segundo conjunto de actuadores que servirán como armonía, esta otra mano será incluso mas liviana que la otra ya que se utilizarán menos solenoides(7 por octava, en vez de 12 por octava).

viernes, 20 de marzo de 2009

Standing by

Tengan paciencia punks... fue semana de examenes y entrega de algunos proyectos, sin embargo hemos estado trabajando duro en la construcción de la base y en las primeras pruebas de transmision del MIDI decodificado al microcontrolador maestro del robot... subiremos algunas imagenes y videos muy pronto !

Por el momento les dejamos este interesante video del himno nacional... en version jazz!



Mandamos un saludo a todos los dudes que nos visitan fuera de la república mexicana, en especial a los hermanos de MetalArgentum.

Gracias a todos por su apoyo!

martes, 10 de marzo de 2009

Avances del Segundo Parcial

View more presentations from orcobot.

lunes, 9 de marzo de 2009

The H-bridge Indeterminacy

Nuestra suerte cambia bastante conforme pasan los días y la fecha de entrega se acerca cada vez mas. Asi que para evitar esas sucias desventuras y jugarretas del destino que el universo tanto disfruta, hemos decidido dar marcha a ciertos planes de contingencia.

Uno de los problemas más importantes y aún no resueltos en la construccion del robot es el de los motores que darán movimiento a los actuadores. Como han visto en entradas anteriores, tenemos varias opciones:
  • Motores a Pasos.
  • Motores de DC
  • Motores de AC
Hemos estado considerando las ventajas y desventajas de cada uno, sin embargo aún quedan algunos cabos sueltos y algunas pruebas por hacer. Por lo pronto armamos y probamos en proto el circuito de un puente H con interfaz para Microcontrolador.

El circuito esta constituido por:
  • L293C
  • Optoacopladores
  • Resistencias
Es un circuito bastante simple y funcional, por el momento les dejamos el diagrama elaborado en MULTISIM y la plantilla del circuito elaborado en Ultiboard.

Diagrama de puente H en MULTISIM.

Plantilla del Circuito.

jueves, 5 de marzo de 2009

Comunicación Serial en JAVA


Hola pequeños druggies, en esta entrada vamos a hablar de un tema muy interesante que puede ser de bastante utilidad para muchos de ustedes. Nos referimos a la comunicación serial utilizando JAVA como lenguaje de programación.

En la entrada “MIDI al desnudo (parte 3)” definimos que la comunicación entre la interfaz y el microcontrolador maestro del robot se haría de manera serial. Esto principalmente debido a la facilidad y simplicidad de manejo en comparación al protocolo USB.

Es cierto que estamos usando un adaptador USB–Serial, sin embargo para la computadora esto es transparente, es decir, para la máquina el cable adaptador es un puerto COM común y corriente.

Una vez aclarado esto, vamos a la parte interesante. ¿Cómo manipulamos el flujo de datos a través de un puerto COM utilizando JAVA? Bien, primero que nada debemos instalar unas cuantas librerías que pueden encontrar en www.rxtx.org

Instalación de rxtxSerial (www.rxtx.org) en Linux

Baja el paquete “rxtx-2.1-7-bins-r2.zip (Final)”
copia librxtxSerial.so a /usr/lib
copia RXTXcomm.jar a [JDK-directory]/jre/lib/ext/

Instalación de rxtxSerial (www.rxtx.org) en Windows

Baja el paquete “rxtx-2.1-7-bins-r2.zip (Final)”
copia rxtxSerial.dll a [JDK-directory]\jre\bin\rxtxSerial.dll
copia RXTXcomm.jar a [JDK-directory]\jre\lib\ext\RXTXcomm.jar

Y eso es todo, ahora solo tienen que asegurarse de agregar los imports adecuados al principio de su programa. Les recomendamos visitar la wiki del proyecto RXTX, hay muchísima información con muchos ejemplos y proyectos para descargar.

Aqui esta el ejemplo en el que nos basamos para echar a andar nuestra interfaz de usuario. Este programa en Java nos muestra como escribir el clásico “Hello World" en el puerto serie. Recuerden que tanto un compilador de Java como las librerías RXTX deben estar instalados en su computadora para que esta aplicación funcione.

miércoles, 4 de marzo de 2009

Motores a pasos

Una opcion para controlar el movimiento de los actuadores a través del teclado es el uso de motores a pasos. La ventaja de usar motores a pasos es la alta precisión y repetitividad en cuanto a posicionamiento que estos poseen. Ademas, los dioses de la tierra media nos han bendecido con dos ejemplares de gran potencial.

Motor a pasos común.

Los motores de pasos son dispositivos electromecánicos que convierten una serie de impulsos eléctricos en desplazamientos angulares discretos, es decir son capaces de avanzar angularmente dependiendo de sus entradas de control (wiki) .

Estos motores cuentan con un torque de detención, característica que no se encuentra en un motor DC, esta cualidad permite que el motor de pasos se mantenga firmemente en su posición cuando no está girando, siempre y cuando este energizado.

En contraparte a un motor convencional de corriente directa, el control de un motor paso a paso no se realiza aplicando un voltaje en las bobinas. Estos motores cuentan con varias bobinas que, para producir el avance de un paso, necesitan ser alimentados en una secuencia determinada. De esta manera es como siguiendo una cierta secuencia se produce el giro del motor y aplicando lógica inversa se consigue que el motor gire en el sentido opuesto. En caso de que la secuencia de alimentación sea incorrecta el motor se moverá aleatoriamente sin obtener los resultados esperados.

Secuencia de un motor de pasos bipolar.

El MC3479 es un circuito integrado diseñado para manejar motores de pasos de dos fases en la modalidad bipolar. Este circuito integrado está formado por una serie de entradas lógicas, una sección de decodificación y secuenciación, dos apartados para el manejo las bobinas del motor, también cuenta con la terminal de salida fase A.

Diagrama del controlador MC3479 .

Las características de operación de este C. I. son las siguientes:
  • Alimentación: 7.2 a 16.5 V.
  • Soporta hasta 350 mA/bobina.
  • Se puede seleccionar el sentido de los pasos CW/CCW, además de controlar la secuencia de operacion Full/Half Step.
  • Entradas compatibles con las familias TTL y CMOS.
  • Se calientan como el infierno.

martes, 3 de marzo de 2009

MIDI al desnudo (parte 3)

Hola todo el mundo, este día les tenemos preparado un interesante update sobre la interfaz de usuario del robot.

Como ya mencionamos en entradas anteriores, el Orcobot va a ejecutar piezas musicales previamente “cargadas” en su memoria. Sin embargo, este proceso es mucho más complejo de lo que parece. Trataremos de ser muy claros para explicarlo.

Primeramente, un archivo MIDI es cargado en la interfaz de usuario, la interfaz se encarga de decodificar e interpretar los mensajes MIDI (Ver entrada MIDI al desnudo 1). Una vez hecho esto, los valores extraídos de cada mensaje (instrucción, nota, velocidad, etc.) son enviados de forma serial al microcontrolador maestro, que los almacena en su memoria FLASH.

El programa del maestro va a ejecutar las instrucciones almacenadas en memoria y buála!! Let’s Rock!!

¿Pero como diablos le vamos a hacer para entender y descifrar un archivo MIDI?

Afortunadamente, existe bastante documentación sobre este estándar y hemos trabajado mucho en comprenderlo. Además, encontramos en la red varios códigos de prueba que nos permiten hacer la decodificación e interpretación del protocolo (Ver entrada MIDI al desnudo 2).

Impresión de pantalla de la interfaz de usuario.

Hicimos nuestra interfaz de usuario utilizando dos de estos ejemplos como base (DumpReceiver.java y DumpSequence.java). Como pueden observar en la fotografía, los datos decodificados son mostrados en la interfaz, es decir, tenemos ya las notas de la canción y la velocidad a la que deben ser ejecutadas.

Programas base para la interfaz:

DumpSequence.java
DumpReceiver.java

Despliegan el contenido de un archivo MIDI decodificado
Uso: java DumpSequence midifile

Dejamos pendiente la transmisión serial de los datos para otra entrada.

Por último, agradecemos de manera muy especial a PiKoS_NaN. Su valiosa ayuda en el proceso de diseño y desarrollo de software hizo posible esta interfaz.

  ©Los Orcos - Robótica Aplicada. Theme by Dicas Blogger.

TOPO