lunes, 18 de abril de 2011

Simple SO2R de Audio (notas)

Finalmente pude implementar el controlador SO2R de audio simple esbozado en entradas anteriores. El diseño lo ajusté ligeramente durante la implementación para tener mejor en cuenta las caracteristicas de mi estación. Por ejemplo el audio en lugar de tomarlo directamente de las radios (rig1 y rig2) lo tomo de las placas de sonido luego de ser procesadas en los filtros. Por su parte las dos placas de sonido ya tienen un arnés simple en "Y" que conducen canal derecho de una e izquierdo de la otra a sendos auriculares, por lo que el controlador basta que tenga una entrada con cada canal separado (otras configuraciones pueden ser adaptadas facilmente de ser necesario). Por otra parte eliminé los LEDs dado que representan un consumo no necesario de energía; inicialmente pensé que podía ser importante ver donde estaba la llave (en el diseño de Dani EA5FV previamente descripto se usa una llave mecánica donde visualmente se puede saber el "botón" de que canal está presionado). En este diseño es mas simple, en caso de dudas presionar el botón central (audio de rig1 y rig2 a oido izq y der respectivamente). Finalmente (y siempre me olvido!!!!) que GP3 en el 12F675 no se puede utilizar para input sin una consideración especial; por fortuna aún quedaba libre el GP5 por lo que hice el cambio y yá. El microcódigo es trivialmente simple, están disponibles el código en assembler (.asm) en caso que se lo quiera modificar y el código en binario (.hex) en caso que simplemente se quiera grabar un integrado y ya. El codigo es tan simple que solo toma unos pocos minutos escribirlo. El código tiene una rutina de inicialización que realmente es repetitiva en todos los programas que escribo; probablemente inicializa muchas variables que no serán utilizadas pero hé aprendido con una enorme cantidad de horas haciendo debug de comportamientos raros que es extremadamente importante el establecer un ambiente de operación del controlador que esté absolutamente definido; puedo usar las 4 cosas que este programa realmente necesita para luego invertir docenas de horas buscando una falla que termine ocurriendo porque hay algún aspecto de default que termina generando conflicto. Cosas como el estado de interrupciones, los registros de timer y el WDT (watchdog) del procesador deben estar "atados" bien firmes para que despues no produzcan comportamientos raros. Para dar una señal de vida (heartbeat) dado que no tiene ninguna indicación luminosa al inicializar ejercita ambos relays un par de veces. La rutina de funcionamiento simplemente revisa en secuencia el switch "A+B", el "A" y el "B" yendo en caso de detectarlo presionado (entrada en bajo) a sendas rutinas donde se activa el relay correspondiente y hace un pequeño "debouncing" antes de continuar revisando los switchs. El código se podría hacer mucho mas "elegante", por ejemplo las rutinas de cada switch son idénticas y podría usarse el mismo código para las tres pero como no tenía tiempo me pareció correcto aplicar el método de "fuerza bruta" y poner tres pedazos de código separados (la capacidad realmente minúscula del 12F675 se utiliza aún así en una fracción ínfima), el código es mas facil de entender además. Como en todo diseño siempre hay algún detallito mal soldado o conectado que hace que no arranque de entrada, pero realmente dio muy poco trabajo hacerlo andar. Como es costumbre en los diseños simples de mi estación uso una cajita metálica de pastillitas Altoids para implementarlo (luego de comerme las pastillitas, por supuesto), el dispositivo terminado puede verse tal como lo utilicé durante la operación. El resultado del uso práctico durante el CQ MM DX (Manchester Mineira) confirmó la utilidad del diseño, realmente un agregado muy util y muy barato de implementar. Durante el concurso tuve que intercambiar la conexión de pulsadores porque estaban invertidos respecto a los auriculares, y aunque parezca mentira me generaba bastante confusión, una vez alineados los pulsadores con los auriculares la operación es incluso natural.

2 comentarios:

  1. Hola Pedro la verdad me inquieta saber algo, el controlador es para el uso de dos radios, que hace el pic con su sofware asociado
    Miguel

    ResponderEliminar
  2. Acciona el relay de forma que el botón izq habilita ambos canales con una radio y el botón der ambos con la otra, el botón del medio activa el canal izq a una radio y el der a la otra. Se puede hacer con una llave, pero cuando lo hice tenía un pic y no la llave (y de hecho sale mas barato un pic que la llave).

    ResponderEliminar

Buscar este blog

Vistas de página en total