3.08.2012

LabView, contratiempos y mas contratiempos...

   La semana pasada y la semana de carnavales estuvimos trabajando en lo referente al código de LabView, el cual es bastante extenso. Empezamos por recibir un comando desde el micro, y con éste controlar la reproducción de una nota, luego de lograr esto, pasamos a integrar los sensores al micro, de manera de recibir una señal desde los sensores por el micro, pasarla en forma de comando "midi" serial como explicamos previamente, y al ser recibida en LabView reproducir una nota. 


   El código en LabView utilizado para lo dicho previamente es algo parecido al que ven en la imagen:




   Luego de lograr lo anterior, vinieron los contratiempos... Cometimos el error de no tener en cuenta las limitaciones del micro en cuanto a interrupciones externas (Es importante destacar que se debe programar de esta manera tanto por petición de los profesores, como por buena implementación de la programación), nos encontramos con el inconveniente que sólo se puede implementar un módulo de interrupción externa por micro(Ext_int), lo cual se llevó nuestra utopía de tener 9 interrupciones para los canales de adquisición de interrupción láser (6 guitarra, 3 arpa).

   Leyendo las especificaciones del micro encontramos un módulo llamado KBI, el cual describen como interrupciones en conjunto, éstas se basan en direccionar todos los canales que queremos verificar (Máximo 8 canales por módulo y posee 2 módulos), de forma que al interrumpir cualquiera de los canales en cuestión, se activa el módulo provocando una interrupción externa, quedando únicamente verificar qué canales fueron los que causaron la interrupción y medir sus valores de entrada si es necesario.

   Una vez mas encontramos problemas ya que la versión de codewarrior que tenemos es 10.1 gratuita pero posee limitaciones que en nuestro caso, limitan el módulo de KBI a únicamente la recepción de la interrupción sin proveer la opción de obtener los valores de los canales para determinar cuáles son los responsables de la interrupción, siendo necesario no 9, sino 18 canales de entrada al micro que en realidad es un desperdicio.


   En vista de esto, ésta semana se trabajó en resolver el problema implementando la base de funcionamiento del KBI por medio de circuitería, es decir, se utilizaron dos "AND 7408N" lógicos como el de la figura, los cuales permiten la entrada de todos los canales (Actualmente estamos realizando pruebas con 4 canales únicamente), y la salida irá a la entrada del único módulo de interrupción externa utilizable en el micro.

   Nuestra lógica de interrupción es negada, siempre tenemos un nivel alto ó 1 lógico, cuando existe interrupción en algún láser, la circuitería arroja un bajo ó cero lógico, que causa un cero lógico a la salida del "AND" y a su vez un flanco de bajada que causa la interrupción en el micro. Al momento de la interrupción se activa una bandera que ordena al micro a leer el registro PTD de entrada implementado para dichos canales, verificando cuál de ellos es el responsable de la interrupción, realizando así una medición a los canales de adquisición de cables de nicromo respectivos y finalmente pasar los datos correctos de notas a la computadora donde será realizado el análisis frecuencial.

   Todo esto es bastante funcional, PERO!!! el circuito comparador que se utiliza tiene un rebote!, problema crítico ya que el micro puede detectar esos cambios de nivel, debido a que su frecuencia es aproximadamente 25MHz. Dicho error causa que por una interrupción del láser se detecten más de 2 interrupciones, lo que no permite el funcionamiento requerido de precisión a la hora de tocar notas (En la imagen vemos entre el paso de LOW ó 0, a HIGH ó 1, flancos que no deberían existir, ésto se conoce como rebote y sucede también en el caso contrario de HIGH a LOW).

   Actualmente se está buscando una solución que permita la eliminación de éste comportamiento, se ha probado con software pero hasta ahora persiste el problema, veremos si la implementación de circuitería es más efectiva.

   Hasta otra!

2.21.2012

Comunicación con Protocolo "MIDI" 2

   Hemos trabajado en nuestro protocolo de comunicación y ya se encuentra en un estado avanzado, podemos recibir datos del micro-controlador y procesarlo en Labview, para luego comenzar el manejo de sonidos (sintetizador).

   Nuestro código manda 5 bytes (Incio Trama / Status / Data 1 / Data2 / Fin Trama) el cual es recibido por LabView que no comenzará la recepción hasta no encontrarse con el byte "Inicio Trama". Los caracteres enviados serán responsables de especificar la acción a ejecutar, el instrumento,  la nota a exponer, en conjunto con algún efecto, bien sea volumen o en el caso de la guitarra el efecto producido por el "whammy bar".

   A continuación les mostramos un video de como será la comunicación serial con LabView utilizando el protocolo de comunicación descrito anteriormente.


Comunicación con Protocolo "MIDI"

   Esta semana estuvimos trabajando con lo que será el protocolo de comunicación, en especial el nuestro estará basado en el protocolo MIDI para dispositivos de audio, acercándonos a éste pero con nuestras propias especificaciones.

   Logramos comunicarnos a través de "serial" con el labview y mostrar a través de éste, los valores ubicados en el ADC de nuestro micro-controlador. Dicha operación nos permite evidenciar la nota que queremos implementar en el momento por parte de la guitarra, que finalmente reproducirá el sonido ayudada por la interrupción de los láser antes mencionados.

   Estuvimos trabajando además en el diseño e implementación de lo que será el detector de proximidad (parte esencial del arpa que construiremos), y además en lo que será el medidor de resistencia en el cable de nicromo como les mostramos a continuación:

   Cada cable resistivo hecho de nicromo será representación de una cuerda de la guitarra, e irá conectado con un regulador LM317, siendo R1 el cable nicromo en la figura abajo, de manera que las variaciones de voltaje den la posibilidad de diferenciar las notas a medida que la resistividad cambia. Luego se pasa por una etapa de ganancia 3, tanto para aumentar el voltaje aproximadamente a 3V, como para aislar corrientes no deseadas a la entrada del micro-controlador.













2.13.2012

Adquisición vía serial utilizando el puerto ADC del Micro

   Gracias a algunas indicaciones logramos instalar Codewarrior v10.1 en nuestras computadoras y comunicarnos por serial/USB ya que es una interfaz que trabaja con OS de 64-bit, por otro lado el lenguaje a utilizar en la parte del sintetizador será LabView, con lo cual tuvimos problemas al momento de leer serial ya que no teníamos los drivers necesarios del VISA (puerto de comunicación de LabView).

   Para comunicar el microcontrolador con la interfaz de LabView es necesario realizar un puerto virtual, esto se logró gracias a un Toolkit open source llamado com0com, el cual permite relacionar un par de puertos virtuales, lo que implica una buena comunicación entre el micro e interfaces como realterm, hyperlink, LabView, entre otras. Ademas de ello, es necesario una aplicación de P&E Microcomputers Systems que básicamente conecta la tarjeta DEMOQE128 al puerto virtual.

   Luego de ésto podemos decir que después de tener problemas con la instalación de casi TODOS los programas, logramos una excelente comunicación entre el micro y LabView, visualizando además el comportamiento del mismo por medio de Realterm.

   A continuación les dejamos un video donde representamos la comunicación serial entre el Micro y la PC por medio de Realterm.







2.08.2012

Detector Láser Analógico y Microcontrolador

   La idea de una guitarra láser surge básicamente de la presentación que nos dieron los profesores en el prelab, y  el hecho de que es bastante pro lograr que una guitarra suene por medio de lásers visibles si se pudiese, al igual que el arpa, pero... Cómo lograr que un láser sea el elemento clave a la hora del punteo o arpegio en tales instrumentos?, la respuesta está en las fotoresistencias (Con una circuitería asociada) ya que son dispositivos que actúan incluso con luz visible como la de los lásers rojos o verdes y poseen un precio bajo comparado con casi cualquier receptor óptico. 




   Sin embargo, a pesar de tener en mente la forma de implementar lásers en éstos instrumentos, estuvimos trabajando con el microcontrolador que nos ayudará a procesar todas las señales provenientes de nuestros sensores, dicho micro será el MC9S08QE128 (El cuadrado verde que ven en la imagen), que es un dispositivo desarrollado por la compañía Freescale de 8-bit y 64 pines, acompañado por una tarjeta DEMOQE128 (tarjeta de mayor tamaño negra en imagen a la izquierda), que servirá de mediador entre el micro y las señales necesarias para comunicarse con su entorno.


   El lenguaje de programación utilizado será C, que es bastante familiar para nosotros, sin embargo se inició con una rutina sencilla de prendido y apagado de un led, para comenzar a entender la forma de trabajo del nuevo microcontrolador. Veremos que se trata de un sistema embebido que trabaja por interrupciones, y que nos permitirá ver su correcto funcionamiento paso a paso a medida que se realiza el "debugging" directamente en el micro.

   La conexión se realizará mediante un puerto USB, y gracias a que nuestras computadoras poseen OS de 64-bit, cosa que las hace incompatibles con la plataforma codewarrior v6.3 utilizada para la programación del micro,  la primera corrida del led encendido/apagado se realizó en las computadoras del laboratorio de nuestra universidad. 

   Disfruten escuchando Voodoo Child de Jimmy Hendrix mientras leen el blog, nos vemos en otra...

1.23.2012

La Guitarra Eléctrica

    Sin tener mucho conocimiento sobre el tema me atrevo a decir que La Música es una de las primeras formas de expresión del ser humano, y para mí una de las mejores ideas que ha tenido la humanidad en lo que va de su existencia.

   Ésta es la primera entrada al blog, mi compañero y yo les estaremos hablando semanalmente sobre un par de instrumentos que han acompañado a los músicos a través de los años, como lo son el Arpa y La Guitarra. Construiremos ambos a partir de materiales de desecho, sensores electrónicos, canales de procesamiento de señales, micro-controladores y finalmente un sintetizador para reproducir las notas musicales.
  
   Confío sin duda que cualquier lector estará de acuerdo que la guitarra es uno de los instrumentos más importantes para el músico moderno, es muy versátil y las nuevas tendencias en electrónica le permiten al músico actual, control sobre una infinidad de instrumentos periféricos, así como infinidades de efectos para aumentar las posibilidades dentro y fuera del escenario, limitado únicamente por su creatividad.

   De lo anterior se deriva la idea de hacer una guitarra láser, la cual estará compuesta de hilos resistivos de nicromo para la parte de los trastes de la guitarra, Fototransistores y láser si se puede para la parte de "Sonido de las notas" y una Perilla/Palanca a modo de puente Floyd Rose para cambios de nivel en las frecuencias de la nota. 


   Para evidenciar lo anterior tenemos la imagen de la derecha:


1. Cejuela, unión entre la placa de tierra (voltaje de referencia cero) y el cable de nicromo.
2. Placa de tierra a lo largo del Mástil.
3. Cable de nicromo.
4. Unión nicromo-circuito, placa de tierra-circuito.
5. Dispositivo láser o en su defecto foto-diodo infrarrojo.
6. Puente, posee los foto-sensores (receptor de láser).
7. Perilla/Palanca del puente semejante a un Floyd Rose.
8. Cuerpo de la guitarra.
9. Mástil.
10. Haz de láser (intentaremos que sea visible).
   
   Es importante resaltar que el modelo y los componentes de la guitarra estarán sujetos a cambios durante el desarrollo del diseño, debido a factores de tiempo, dinero, y comodidad de implementación.


   Cualquier tipo de comentarios y ayuda para la realización del circuito es bien recibido, nos vemos en otra, estaremos bloggeando por ahí... xD!