Tabla de contenido:

Warhammer Sorcerer en disco con LED y motor acoplado magnéticamente: 4 pasos
Warhammer Sorcerer en disco con LED y motor acoplado magnéticamente: 4 pasos

Video: Warhammer Sorcerer en disco con LED y motor acoplado magnéticamente: 4 pasos

Video: Warhammer Sorcerer en disco con LED y motor acoplado magnéticamente: 4 pasos
Video: Best Cosplay at Dragon Con 2022 2024, Mes de julio
Anonim
Warhammer Sorcerer en disco con LED y motor acoplado magnéticamente
Warhammer Sorcerer en disco con LED y motor acoplado magnéticamente

¿Quieres agregar algo de PIZZAZZ a tus proyectos de arte? ¡Los motores y los LED son el camino a seguir!

¿Eres un entusiasta de los juegos de Warhammer? ¡Este es para ti! Este es mi Tzeentch Sorcerer Lord on Disc, revisado con 3 LED adicionales, un motor, un micro (PIC) y una pequeña batería. Este instructivo cubre la compilación completa y los problemas.

Paso 1: circuito

Circuito
Circuito

En primer lugar, es posible que se esté preguntando qué es esto. Esta es mi miniatura hecha a medida para la mesa de un juego de guerra de mesa llamado Warhammer. El chico de arriba es un modelo regular del creador del juego (Gamesworkshop), pero el disco y la base son todos míos. La construcción para él es el tema de otro instructable, así que no entraré en eso aquí. Circuito La idea básica aquí era tomar un pequeño micro de 8 pines para controlar 3 LED y un motor, con el menor suministro posible. El uso de las "manos amigas", como siempre, es una buena idea. Estas cosas tienen dos clips para sujetar lo que sea en lo que esté trabajando. No se necesitaba un esquema, ya que la impementación es muy simple; Un micro de 8 pines (Microchip PIC) con 3 pines de salida que van directamente a los LED y 2 pines de salida que van a 1 motor. Los LED utilizados son del tipo de montaje en superficie azul, blanco y rojo. El motor utilizado se arrancó de un microhelecopter interior roto. La batería (Lipo pequeña) también se arrancó del helicóptero, pero ya planeo usar otra fuente para más Se agregó un interruptor para encendido / apagado.

Paso 2: Código

Código
Código

El código para el PIC se hizo para optimizar la duración de la batería y usar muchos "eventos" aleatorios. Para que la batería dure el mayor tiempo posible, el circuito tenía que usar la menor cantidad de energía que pudiera imaginar, manteniendo viva la idea.. Entonces, decidí reducir la actividad inicial a un promedio de 1 flash LED o movimiento del motor cada 6 segundos. El código tiene 12 "actividades" aleatorias, que van desde 1 LED encendido, el motor encendido por diferentes períodos de tiempo o direcciones, hasta un estado de espera aleatorio. Los eventos varían desde 3 segundos hasta más de 40 segundos, según el evento aleatorio generado. CÓDIGO; ============================= ================================================; Controlador de disco;; -----------; Vcc-> | 1 8 | <-Vss; MGPIO5 | 2 7 | GPIO0 -LED1; MGPIO4 | 3 6 | GPIO1 -LED2; GPIO3-> | 4 5 | GPIO2 -LED3; -----------;; ===================================== ========================================; Historial de revisiones y notas:; Encabezado inicial V1.0, código 5/19/09;;; (C) 5/2009; Este código puede usarse para aprendizaje / aplicación / modificación personal.; Cualquier uso de este código en productos comerciales viola esta versión de software gratuito.; Para preguntas / comentarios, comuníquese con circuit dot mage en yahoo dot com.; ------------------------------------------------ ------------------------------- # incluye P12C672. INC; ============= ================================================ ================; Define; ------------------------------------------------ -------------------------------; ================== ================================================ ===========; Datos;------------------------------------------------ -------------------------------; Variables de mantenimiento del tiempo count1 equ 20 count2 equ 21 delay equ 22Randlo equ 23Randhi equ 24Wtemp equ 25Temp2 equ 26and equ 27count3 equ 28; ========================== ================================================ ===; Restablecer vectores;; VERIFICAR CONFIG. BITS ANTES DE QUEMAR !!!; INTOSC; MCLR: HABILITADO; PWRUP: HABILITADO; TODOS LOS DEMÁS: DESACTIVAR !!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 org RESET_ADDR ir al inicio; ===== ================================================ ========================; ¡Empieza aqui!;---------------------------------------------- ---------------------------------comienzo; Configurar puertos de E / S bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08 '; Salidas RA, PGIO3 siempre ingresan tris GPIO movlw h'07'; Configure GPIO en modo digital movwf ADCON1; Establecer el temporizador interno movlw h'CF '; Tmr0 Fuente interna, preescala TMR0 1: 256 movwf OPTION_REG movlw h'00 'movwf INTCON; Deshabilitar interrupciones TMR0, bcf STATUS, RP0; Inicializar registros clrf GPIO clrf count1 clrf count2 movlw 045h movwf Randlo movlw 030h movwf Randhi; espere 1 seg. llamar a debounce; Llamada de 0,2 segundos llamada antirrebote llamada antirrebote llamada antirrebote ========================================; Principal;------------------------------------------------ ------------------------------- llamada principal twosec; 2 segundos como mínimo entre cada acción rrf Randhi, W xorwf Randlo, W movwf Wtemp swapf Wtemp rlf Randhi, W xorwf Randhi, W; LSB = xorwf (Q12, Q3) xorwf Wtemp rlf Wtemp rlf Randlo rlf Randhi movfw Wtemp; tira al azar de 16 a 7 y lw 0x0F movwf rand; selección de rutina aleatoria xorlw 0x00; 0? btfsc STATUS, Z goto flash1; Si. Llame 0th movfw rand xorlw 0x01; 1? btfsc STATUS, Z goto flash2; Si. Llame al primer movfw rand xorlw 0x02; 2? btfsc STATUS, Z goto flash3; Si. Llame al segundo movfw rand xorlw 0x03; 3? btfsc STATUS, Z goto flashall; Si. Llame al tercer movfw rand xorlw 0x04; 4? btfsc STATUS, Z goto movels; Si. Llame al cuarto movfw rand xorlw 0x05; 5? btfsc STATUS, Z goto movell; Si. Llame al quinto movfw rand xorlw 0x06; 6? btfsc STATUS, Z goto movers; Si. Llame al sexto movfw rand xorlw 0x07; 7? btfsc STATUS, Z goto moverl; Si. Llame al séptimo movfw rand xorlw 0x08; 8? btfsc STATUS, Z goto moveburst; Si. Llame al octavo movfw rand xorlw 0x09; 9? btfsc STATUS, Z va a Wait1; Si. Llame al noveno movfw rand xorlw 0x0A; ¿A? btfsc STATUS, Z va a Wait2; Si. Llame a Ath movfw rand xorlw 0x0B; ¿B? btfsc STATUS, Z goto Wait3; Si. Llame a Bth goto nada; 1/4 del tiempo, no hacer nada durante 10 segundos. Flash1 bsf GPIO, 0 llamadas antirrebote bcf GPIO, 0 goto mainflash2 bsf GPIO, 1 llamada debounce bcf GPIO, 1 goto mainflash3 bsf GPIO, 2 llamadas debounce bcf GPIO, 2 goto mainflashall bsf GPIO, 0 bsf GPIO, 1 bsf GPIO, 2 llamadas antirrebote de llamadas antirrebote bcf GPIO, 0 bcf GPIO, 1 bcf GPIO, 2 goto mainmovels bsf GPIO, 4 bcf GPIO, 5 llamadas antirrebote bcf GPIO, 4 goto mainmovell bsf GPIO, 4 bcf GPIO, 5 llamadas antirrebote antirrebote bcf GPIO, 4 goto mainmovers bcf GPIO, 4 bsf GPIO, 5 llamadas antirrebote bcf GPIO, 5 goto mainmoverl bcf GPIO, 4 bsf GPIO, 5 llamadas antirrebote antirrebote bcf GPIO, 5 goto mainmoveburst bcf GPIO, 4 bsf GPIO, 5 antirrebote de llamadas; muévase a la derecha 3 veces, ráfagas cortas. bcf GPIO, 5 llamadas antirrebote antirrebote bsf GPIO, 5 llamadas antirrebote antirrebote bcf GPIO, 5 llamadas antirrebote antirrebote antirrebote bsf GPIO, 5 llamadas antirrebote bcf GPIO, 5 llamadas antirrebote antirrebote antirrebote antirrebote antirrebote bsf GPIO, 4; muévase a la izquierda 3 veces, ráfagas cortas. bcf GPIO, 5 llamadas debounce call debounce bcf GPIO, 4 llamadas debounce call debounce bsf GPIO, 4 llamadas debounce call debounce bcf GPIO, 4 call debounce call debounce bsf GPIO, 4 call debounce call debounce bcf GPIO, 4 call debounce call debounce goto mainWait1; Espere 1 segundo movlw.255; Retraso para antirrebote de 2/10 segundos. movwf count2 call pon_wait movlw.255; Retraso para antirrebote de 2/10 segundos. movwf count2 call pon_wait movlw.255; Retraso para antirrebote de 2/10 segundos. movwf count2 call pon_wait movlw.255; Retraso para antirrebote de 2/10 segundos. movwf count2 call pon_wait movlw.255; Retraso para antirrebote de 2/10 segundos. movwf count2 call pon_wait goto mainWait2; Espere 0,6 segundos movlw.255; Retraso para antirrebote de 2/10 segundos. movwf count2 call pon_wait movlw.255; Retraso para antirrebote de 2/10 segundos. movwf count2 call pon_wait movlw.255; Retraso para antirrebote de 2/10 segundos. movwf count2 call pon_wait goto mainWait3; Espere 4 segundos llame a twosec llame a twosec goto mainnothing movlw.50; Retraso de 10 segundos Total movwf count3nothing_loop movlw.255; Retraso para antirrebote de 2/10 segundos. movwf count2 llamar pon_wait decfsz count3, F goto nothing_loop goto main; ===================================== ========================================; 2 segundos de espera; ---------------------------------------------- --------------------------------- twosec movlw.10; Retraso de 2 segundos Total movwf count3twosec_loop movlw.255; Retraso para antirrebote de 2/10 segundos. movwf count2 llamada pon_wait decfsz count3, F goto twosec_loopreturn; ======================================= ========================================; Señal de rebote; 4 ciclos para cargar y llamar, 2 ciclos para regresar.; 4Mhz Tc:: count2 = 255 -> 0.2 seg; -------------------------------------- ----------------------------------------- movlw antirrebote.127; Retraso para antirrebote de 1/10 de segundo. movwf count2 llamar pon_wait return; -------------------------------------------- -----------------------------------; count1 = 255d:: 775 ciclos a 0, + 3 ciclos para regresar.; --------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend

Paso 3: Partes

Partes
Partes

Esta imagen muestra lo pequeño que tenía que hacer que los componentes encajaran debajo de este tipo.1 Microchip de 8 pines (PIC) 3 LED SMT (azul, rojo, blanco) 1 Motor de un micro heli interior.1 Batería LIPO del mismo heli. 1 interruptor de encendido 1 clavija de madera de 2,5 mm (2 de largo) 2 imanes de tierras raras de 1 mm

Paso 4: construir

Construir
Construir

Primero se encontró un centro de masa para todo el conjunto. Esta sería el área de montaje del motor. El motor se montó utilizando una sustancia pegajosa llamada Greenstuff (utilizada en el mundo de las miniaturas). Los 3 LED estaban precableados. El micro se superpuso en un área apartada, no demasiado cerca del borde. El interruptor de encendido y la batería se montaron para compensar el (pequeño) peso del micro, para mantener el equilibrio. Se soldaron los cables. La parte realmente genial es la siguiente. Se montó un imán de tierras raras con pegamento en la punta del engranaje del rotor en el motor (esto estaría boca abajo más adelante). Se perforó una clavija de madera corta (~ 2 ) de 2,5 de diámetro (con la mano y una broca) para un orificio de 5 mm de profundidad y 1 mm de diámetro. En este orificio se pegó otro imán de tierras raras de 1 mm. Ahora, mi base para la figura está magnéticamente acoplado al rotor del motor. Cuando el motor gira, desde su centro de equilibrio, gira toda la parte superior de la figura. Se cortó una pajita roja para cubrir el motor y la clavija de madera. Esto se midió previamente antes de que la clavija de madera fuera montado, para asegurar que coincida. La salida de la batería de LIPO está leyendo 3.4 V sin recarga. Esto es suficiente para hacer girar el motor y encender los LED, pero con la figura montada en la base, no gira. Mi próxima versión lo hará ¡Utilice una batería remota de 12V con regulador de 5V para obtener más potencia!

Recomendado: