Archivo por meses: abril 2007
Laser Game III
Esta es la parte más vistosa del proyecto: el arma. Yo he construido una con lo que tenía a mano, el resultado final depende de la imaginación de cada uno. Esto es un ejemplo de lo que se puede hacer.
Aquí se ve la pieza que me sirve de base, marcada y a medio cortar. Es un material similar a la espuma de poliuretano, pero moldeado. Puede usarse también madera o corcho. Lo importante es que sea suficientemente rígido pero fácil de mecanizar.
Aquí ya he cortado la base y he mecanizado los alojamientos de los pulsadores. Como cañón utilizo una pieza de PVC de fontanería. Las piezas de aluminio con muchos taladros son perfiles estándar para montar bastidores, pueden usarse perfiles de carpintería metálica o cualquier otra cosa que se tenga a mano. La pieza de aluminio liso cuadrada que se ve abajo formará la corredera (que actuará el pulsador del «cerrojo, para cargar la recámara), es aluminio de 1mm de calorifugar tuberías.
Este es un detalle de los 4 pulsadores en sus alojamientos. Luego los fijaré con pegamento térmico.
Los elementos son:
1. Pulsador de «gatillo» o disparo. He usado un microinterruptor Omron que tiene un tacto muy bueno.
2. Pulsador de «puntero». Se actúa con el dedo gordo. Es un pulsador de un teclado. Tiene que ser cómodo de actuar porque sirve para los cambios de modo, además de puntero.
3. Pulsador de «cerrojo» lo actúa la corredera de aluminio, sirve para cargar la recámara. La corredera de aluminio lleva un muelle para que retorne a su posición original al soltarla. He usado otro micro Omron, pero más pequeño.
4. Pulsador de «cargador». Alojado en la empuñadura, aquí se ve saliente pero después de pegarlo quedará hundido de forma que no se pueda actuar por accidente.
5. Conector CANNON de 9 pines macho, sirve para conectar con la parte electrónica.
En la siguiente foto pueden verse los cables que pasan a través de unos taladros hechos en el material base y una ranura para alojarlos
En esta otra foto pueden verse los pulsadores ya pegados en su posición definitiva y la empuñadura forrada, lo mejor es cinta engomada como la que se usa para los mangos de las raquetas. A la izquierda del pulsador de «puntero» he colocado un pequeño altavoz para reproducir los sonidos del programa.
Aquí puede verse la corredera y la pieza de aluminio que actúa sobre el pulsador de «cerrojo».
Aquí se ve el conector CANNON y los cables de conexión. Es importante que el conector esté bien atornillado a algo sólido, para que no se suelte de un tirón y arranque todos los cables. Yo lo he sujetado a unas piezas de aluminio mediante unas escuadras y tornillos de 3 mm.
Así es como queda el arma, junto con la electrónica. El cable de conexión que he usado es UTP categoría 5, de ethernet que tiene 8 hilos, justo los que hacen falta.
Eso es todo. Cada uno que le eche imaginación, hay muchos modelos y materiales para construir el arma. Yo he decidido construir un arma tipo «subfusil», sin culata, pero cada uno puede escoger el diseño que más le guste….
Aunque no lo he dicho antes supongo que todo el mundo es consciente de la peligrosidad de esta la luz láser para los ojos. Aunque la potencia emitida es muy baja, menos de 1mW, y la luz es visible hay que tomar las precauciones adecuadas:
No mirar nunca directamente al emisor láser, ni al punto reflejado en superficies pulidas. Llevar gafas de protección adecuadas, sobre todo durante el juego. No apuntar a los ojos (accidentalmente es normal que ocurra, si hay detectores en el casco, por eso son imprescindibles las gafas). No usar las armas en zonas donde haya personas sin gafas de protección etc.
Creo que son indicaciones de sentido común. Este tipo de láser solo puede ser peligroso para la vista. El nivel de potencia y la concentración del haz no puede quemar la piel, pero sí dañar la retina por una exposición prolongada. En circunstancias normales, por ser láser visible, al recibir la luz láser en los ojos los párpados se cierran de forma refleja en menos de 200 ms. Debido a la poca potencia (láser categoría 2) durante esa exposición no debería haber peligro, pero lo correcto es usar gafas de protección.
Puerto serie en PDA HP iPAQ 6515
Programador Pablin 2 Reloaded
Hasta ahora he estado usando un grabador de PIC comercial. Eso no tiene ningún interés, voy a construir uno casero. Me ha gustado el Pablin II, parece bastante bueno.
He visitado http://personales.ya.com/cepalacios/ProgramadorMarco.htm y he copiado el esquema del programador. El funcionamiento y configuración del Icprog105D están también explicados en esa misma página. Sin embargo he visto el foro de ARDE posts de gente quejándose de problemas con la alimentación y el funcionamiento del circuito. Efectivamente, este programador se alimenta a 13,5 Voltios y eso complica un poco encontrar un alimentador adecuado.
Analizando un poco el circuito se ve la razón de esa tensión de alimentación tan rara. Los PIC necesitan entre 11 y 13,5 V para MCLR/VPP durante la lectura o la grabación de su memoria interna. En el Pablin 2 del esquema de abajo esta tensión se consigue cuando cualquiera de las salidas D3 o D4 del puerto LPt están a 1. Entonces Q2 está saturado y corta a Q1 al poner R7 a masa (si no Q1 se se satura a gracias a +13,5 V a través de R6 y R7). Con Q1 cortado en la pata VPP aparecen los 13,5 V a través de R4 de 1K (que actúa de limitadora de corriente) y ¡el diodo led D4!. El diodo led D4, que no luce durante la programación porque la corriente que absorbe VPP es muy pequeña) tiene una caída de tensión típica de 1,5 V (si es rojo). Entonces tenemos que 13,5 V – 1,5 V = 12 V que es la tensión adecuada para VPP. Si usamos 12 V de alimentación en VPP solo tendremos 10,5 V, que está por debajo de las recomendaciones de MICROCHIP. Si alguien pone un LED verde en D4 (2 V de caída) o de otro color verá que el programador funciona cuando le da la gana porque la tensión que le llega a VPP no llega a 11 V..
Con esta pequeña modificación conseguimos los 12 V a partir de una alimentación de 12 V. Ya podemos reciclar los alimentadores de los móviles viejos o los del módem de 33K. Este es el esquema de la modificación:
Se trata de quitar el LED D4 del colector de Q1 de forma que la alimentación pasa sólo por R4 y va a VPP sin más caídas de tensión (excepto la caída en R4, pero como la corriente por R4 y VPP es muy pequeña no es apreciable). Para seguir teniendo señalización del estado de la grabación pongo en LED D4 en el colector de Q2 con una resistencia en paralelo de 1K (el único componente que hay que añadir). De esta forma el LED D4 se enciende DURANTE LA LECTURA o PROGRAMACIÓN, al contrario que en el Pablin 2 original. Me parece más lógico: LED rojo encendido PELIGRO no toques nada!! EL diodo en esta situación no interfiere para nada en el corte o la saturación de Q1 (resta 1,5 V pero la corriente sigue siendo suficientemente alta para saturarlo). La nueva resistencia R8 en paralelo con el LED sirve para evitar que la pequeña corriente que circula por D4, R6, R7 y base emisor de Q1 encienda débilmente el LED cuando no se está programando (Q2 cortado). Hace que la tensión en los extremos de D4, con esta pequeña corriente, baje de 1,5 V y ya no puede encenderse. Cuando Q2 conduce la corriente es mucho mas alta y se enciende sin problemas.
También he puesto un jack para aprovechar un alimentador viejo y un interruptor de encendido – apagado (ON/OFF) para evitar tener que poner y quitar el PIC con tensión.
Esta es una foto de mi versión del Pablin 2 con un 16F876A pinchado y listo para ser programado:
He utilizado placa protoboard (de «topos») e hilo de 2 décimas aislado en teflón, creo que es la forma más rápida y segura de hacer prototipos. Pueden verse unos jumpers de colores y un 7812, modificación de última hora, para poner o quitar diodos serie a la pata de masa del 7812, y poder variar la tensión de salida a 12,7 V ó 13,4 V. De esta forma puedo alimentar con 15V o más sin problemas.
Probado satisfactoriamente con: PIC18F252, PIC16F877A, PIC16F876A, PIC16F628A, PIC16F84, PIC16F84A
Fallos conocidos:
NO es posible programar los PIC16F628 si se configura la pata MCLR como I/O (casilla MCLR desactivada). Parece ser que el algoritmo de programación que usan tanto Icprog105D como WinPic800 NECESITAN resetear el PIC poniendo MCLR/VPP a 0. Si se pone el bit MCLR a 0 la pata MCLR/VPP no resetea el micro y la grabación falla siempre.
Laser Game II
Por fin tengo un programa para las pistolas del Laser Game 100% operativo. Es mejorable pero ya se puede usar con toda las funciones operativas.
Este es esquema del hardware que estoy usando, lo he llamado versión V1.1, y funciona muy bien:
No tiene muchas diferencias con la ultima versión, algunos valores modificados y poco más.
Estos son los dos prototipos con los que estoy trabajando, ya terminados y cargados con el mismo programa totalmente operativo:
Como ya comenté solo es necesario ajustar la frecuencia de la portadora, (al final he usado 80Khz en vez de 100Khz) en todos los circuitos mediante el potenciómetro R8. El problema que observé para grabar el PIC16F628A con MCLR inactivo ya está solucionado, es problema de mi grabador Pablin2R. Lo he solucionado pero no lo he documentado todavía (se trata de controlar VDD mediante un par de transistores NPN-PNP y el dato 2 del puerto paralelo)
He actualizado el código fuente operativo: Fuentes CCS para LaserGame. El programa para configurar las pistolas LaserGame mediante el PC es este: Builder2. Tras cargar el programa en el PIC en necesario inicializar las variables internas en EEPROM. Hay que conectar la pistola al PC (mediante un conversor RS232 a TTL en el conector SV1) y mediante LaserGame.exe seleccionar los valores adecuados para cada parámetro y pulsar «Transmitir» si contesta «TX-RX ALL OK» pulsar «Transmitir Sonidos», si la contestación también es «TX-RX ALL OK» pulsar «Salvar en FLASH». Si la contestación es «TX-RX ALL OK» ya está. A partir de ahora siempre que se encienda el LaserGame usará los parámetros cargados, ya no es necesario el PC más (a no ser que se quiera cambiar algo…). Si se produce algún error en la transmisión reintentarlo después de apagar y encender el LaserGame.
Sensores: cada uno tiene que ingeniárselas con lo que tiene a mano. yo uso dos, uno cuadrado de 5×5 en metacrilato transparente con 2 fototransistores y otro circular de 10cm de diámetro con 3 fototransistores. Los fototransistores se conectan en paralelo y con cable apantallado hasta el circuito del receptor. He marcado en rojo la situación de los fototransistores:
El mejor resultado lo consigo con el cuadrado de 5×5, el circular quizás necesite más fototransistores. Los fototransistores son de unos detectores de herradura de unas HP690C, pero pueden servir otros modelos. Es importante que sean claros, sin filtro de IR.
El difusor circular (en realidad tiene forma de casquete esférico) lo he conseguido por un euro en Carrefour:
Los láser que he usado son los de los punteros «de los chinos». Es posible encontrar láser de más calidad, pero mucho más caros. Es posible comprar este «Cubo Láser» en Leroy Merlin por unos 8 Euros. Es de mucha más calidad que los que he mencionado antes, y mucho más fiable, pero bastante más caro. Este dispositivo emite una línea, no un punto. Quitando el elemento marcado con 1 (una especie de prisma) emite un punto como cualquier láser. Además este contiene un circuito de realimentación mediante dos transistores para compensar la emisión del láser leyendo la intensidad emitida con el diodo de realimentación. Los láser son muy sensibles a la temperatura, si se calientan emiten menos, es necesario compensarlos.
Este es el manual de funcionamiento de los prototipos, de hardware V0.1 y software V0.9:
Al pulsar «encendido» se alimenta el circuito. Todos los LED parpadean y el display muestra un valor de 3 cifras, es el programado en «Retardo al inicio». En este estado y durante la cuenta atrás el arma está inactiva. Al pulsar «Puntero» comienza la cuenta atrás, al llegar a cero se pasa a modo de visualización «u» y se activa el arma. La intención de esta cuenta atrás es que todos la inicien a la vez y de tiempo para alcanzar las posiciones de inicio del juego, con las armas inactivas.
El pulsador P0, manteniéndolo pulsado y pulsando «puntero» se activa el modo «petición» y parpadea el LED verde L6. En este modo, al pulsar «gatillo», se pide un servicio. Puede ser recarga de vida, cargadores etc, dependiendo a qué disparemos. También sirve para cambiar el modo de visualización en el display. Los modos del display son:
* «u», Vida: Es el modo inicial y muestra el nivel de vida restante. En el comienzo toma el valor programado en «nivel de vida inicial». Cada impacto descuenta proporcionalmente al valor programado en «Potencia de Disparo» del arma que ha hecho el disparo. Al llegar a cero parpadea el LED L4 y el arma queda inactiva. El nivel de vida puede aumentarse recibiendo el código adecuado, normalmente al pedirlo mediante el modo «petición» a un botiquín. Sin vida el arma solo acepta comandos de configuración y petición de transferencia de cargadores, de forma que es posible transferir los cargadores de un «muerto» a nuestra arma.
* «t», Tiempo: Muestra el tiempo restante de juego, inicialmente es el programado en «Duración del Juego». Al terminar el tiempo programado se enciende el LED L4 y el arma se desactiva, solo acepta comandos de configuración.
* «r», Ráfaga: Muestra el valor programado en «Disparos por ráfaga». Puede modificarse pulsando durante 4 segundos el pulsador «P0». Luego se incrementa o decrementa con «P1» y «P2». Para salvar el valor se pulsa de nuevo «P0». Esto solo tiene utilidad si el arma está programada en «Automática con ráfagas», que se programa en «Tipo de arma».
* «n», Munición: Muestra la cantidad de munición disponible en el cargador actual. Si no hay cargador puesto muestra 0. El número de disparos disponibles es este más el que pudiera haber en la recámara. Si hay munición en el cargador se enciende el LED verde L2.
* «c» Cargadores: Muestra el número de cargadores disponibles. Cuando no quedan cargadores se enciende el LED ámbar L1, pero todavía puede quedar por consumir el actual.
El pulsador P1 sirve para incrementar el valor del display al editar el valor de ráfaga.
El pulsador P2, manteniéndolo pulsado y pulsando «puntero» se activa el modo «transferir» y parpadea el LED verde L2. En este modo, al pulsar «gatillo», se transfiere un cargador a otro jugador. Hay que apuntar bien, si no se acierta en los sensores del otro jugador el cargador se descuenta, pero no se incrementa en el otro jugador, se pierde. Tambien sirve para decrementar el valor del display al editar el valor de ráfaga.
El pulsador P3, manteniéndolo pulsado y pulsando «puntero» se cambia el modo de disparo del arma. Hay 4 modos, en «tipo de arma» se programa el modo más alto que se puede seleccionar. Los modos son:
* Manual. Leds L5 y L6 apagados. El arma se inicia siempre en este modo. Hay que poner un cargador pulsando «cargador» se enciende L2, cargar la recámara pulsando «cerrojo» y se enciende L3. Una vez realizado el disparo se apaga L3 y hay que cargar la recámara manualmente pulsando de nuevo «cerrojo». Atención, si se pulsa «cerrojo» y la recámara está llena se introduce nueva munición, pero se pierde la que había.
* Semi-automático: Led L5 ámbar encendido. Se prepara el arma como en manual, pero tras cada disparo la recámara se carga sola de nuevo. Es necesario soltar y pulsar de nuevo el «gatillo» para hacer cada disparo. Cuando se queda la recámara vacía al agotar un cargador es necesario usar «cerrojo» para cargarla.
* Automático. Led L6 verde encendido. Como en Semi-automático, pero sin necesidad de soltar el «gatillo» entre disparos. La cadencia de disparo está determinada por «Duración del disparo» y «Retardo entre disparos».
* Automático a ráfagas. Leds L5 ámbar y L6 verde encendidos. Como en automático, pero solo se realizan «disparos por ráfaga» disparos seguidos. Luego hay que soltar el gatillo para disparar otra ráfaga de nuevo.
Los pulsadores del arma son:
* «Disparo»: Este pulsador es el que se actúa con el gatillo del arma, según el modo seleccionado sirve para disparar (normalmente) o bien para transferir cargadores o pedir servicios (si estos modos están activos). El disparo dura «Duración del disparo» décimas de segundo. Alargando este parámetro se puede hacer que sea más fácil acertar en el blanco, porque hay más tiempo para corregir la puntería. Después hay que esperar «retardo entre disparos» a que el arma pueda disparar de nuevo. Esto determina la cadencia de disparo del arma. La potencia de disparo, que es el número de unidades de vida que le resta al que recibe el disparo.
* «Puntero»: Sirve para actuar el láser pero sin disparar, para usarlo como puntero y coger puntería. Solo está activo «Duración del puntero» décimas de segundo, luego hay que esperar «Retardo entre punteros» décimas para que funcione de nuevo. Variando estos parámetros se puede hacer que sea más fácil o más difícil coger puntería. También sirve, junto con los pulsadores del display, para seleccionar los distintos modos: si se acciona mientras está pulsado P3 se cambia el modo de disparo, con P2 se activa el modo de transferir cargador y con P0 el modo de petición de servicios.
* «Cerrojo»: Sirve para cargar la recámara. Se acciona con el mecanismo de la corredera que – en un arma real – introduciría el cartucho en la recámara. Hay que pulsarlo siempre que la recámara esté vacía para llenarla, cada vez que se dispara en modo manual, al agotarse la munición en modo semi o automático etc. Si se pulsa cuando la recámara esta llena se expulsa el cartucho actual y se mete otro (es decir, perdemos un disparo, hay que estar atento!!).
* «Cargador»: Sirve para cambiar el cargador. Al pulsarlo se deshecha el cargador actual y se pone uno nuevo. Si el cargador actual no está vacío se pierden sus disparos (también hay que estar atento!).
Este es el significado de los LED, los he situado de decha a izquierda LED0 a LED6:
* LED0: Es rojo, encendido indica que no queda nada de munición, ni en cargadores ni recámara…
* LED1: Es ámbar, encendido indica que no quedan cargadores, sólo queda el que se está usando.
* LED2: Es verde, encendido indica que se existe munición en el cargador actual. Parpadeando indica que se ha seleccionado el modo de transferir cargador, el próximo disparo lo transfiere y pasa al modo normal.
* LED3: Es verde, encendido indica que la recámara está cargada, esta todo dispuesto para disparar.
* LED4: Es rojo. Se enciende al acabar el tiempo de juego. Si parpadea indica que se ha agotado la vida. En cualquiera de los dos casos el arma queda inactiva y el juego ha terminado para este jugador.
* LED5: Es ámbar. Encendido indica que se ha seleccionado el modo de disparo semiautomático. Si está encendido junto con LED6 indica que se ha activado el modo de ráfagas.
* LED6: Es verde. Encendido indica que se ha seleccionado el modo de disparo automático. Junto con LED5, indica que se ha activado el modo de ráfagas. Parpadeando indica que se ha activado el modo de petición de servicios. El siguiente disparo pide un servicio (vida, munición etc, dependiendo de los servicios que preste el blanco) y retorna al modo normal de disparo.
El número de disparos que proporciona cada cargador se configura en «Capacidad del cargador». La cantidad de cargadores con que se inicia el juego se programa en «Numero de cargadores» y durante el mismo no se pueden acumular más que los que se programen en «Máximos cargadores».
Al inicio del juego se cuenta con «Nivel de vida inicial», que se va decrementando a cada impacto recibido. Si se «recarga» vida nunca puede sobrepasarse «Máxima vida acumulable». Tras un impacto el arma queda inactiva «Inhibición tras impacto» décimas de segundo. Variando este parámetro pueden hacerse los tiroteos más rápidos o más tranquilos, valores altos obligan a los «heridos» a ponerse a cubierto hasta que sus armas se reactivan.
Al encender los juegos todas las armas se configuran para «Grupo de juego» 1. De esta forma es posible jugar usando los últimos parámetros que se configuraron con LaserGame.exe sin tener que reprogramarlos con el ordenador. Al configurar las armas siempre se cambia el grupo a otro distinto seleccionado en «Grupo de juego». De esta forma si alguien apaga y enciende el juego se borra este parámetro, se retorna a grupo 1, y ya no puede seguir jugando con los demás que tienen otro grupo configurado. Esto es así a propósito para evitar que los jugadores apaguen los LaserGame para evitar que corra el tiempo o que se reciban los impactos.
Para transferir un cargador a otro jugador se pone el arma en modo «transferencia» (LED verde LED2 parpadeando) y se apunta al receptor del cargador. Al realizar el disparo se descuenta un cargador del arma que dispara y, si se da en el receptor del compañero, se incrementa un cargador en su arma. Si se falla el disparo el cargador se pierde!!
Cuando un jugador ha «muerto», su vida es cero, el arma queda inactiva pero pasa al un modo especial en el que mediante el que otro jugador, mediante el modo petición de servicios, puede transferirse los cargadores que le queden. El proceso es el siguiente: un jugador localiza a un compañero «muerto», pone su propia arma en modo «petición de servicios» y los dos jugadores se apuntan mutuamente. Al activar el disparo en modo petición de servicios el arma del «muerto» entrega un cargador al arma del otro jugador. Esto puede repetirse hasta que se agoten los cargadores o no quepan más en el arma receptora. Es evidente que para realizar este proceso es necesaria la colaboración de los dos jugadores.