Índice:

Warhammer Sorcerer a disco com motor acoplado magneticamente e LEDs: 4 etapas
Warhammer Sorcerer a disco com motor acoplado magneticamente e LEDs: 4 etapas

Vídeo: Warhammer Sorcerer a disco com motor acoplado magneticamente e LEDs: 4 etapas

Vídeo: Warhammer Sorcerer a disco com motor acoplado magneticamente e LEDs: 4 etapas
Vídeo: Blood and Shadow | Exandria Unlimited: Calamity | Episode 3 2024, Julho
Anonim
Warhammer Sorcerer a disco com motor acoplado magneticamente e LEDs
Warhammer Sorcerer a disco com motor acoplado magneticamente e LEDs

Quer adicionar algum PIZvalho aos seus projetos de arte? Motores e LEDs são o caminho a seguir!

Você é um entusiasta dos jogos Warhammer? Este é para você! Este é meu Tzeentch Sorcerer Lord on Disc, revisado com a adição de 3 LEDs, um motor, um micro (PIC) e uma pequena bateria. Este instrutível cobre a compilação concluída e os problemas.

Etapa 1: Circuito

O circuito
O circuito

Primeiro, você pode estar se perguntando o que é isso. Esta é minha miniatura feita sob medida para um jogo de guerra de mesa chamado Warhammer. O cara no topo é um modelo normal do criador do jogo (Gamesworkshop), mas o disco e a base são todos meus. A construção para ele é assunto de outro instrutível, então não vou entrar nisso aqui. Circuito A ideia básica aqui era pegar um pequeno micro de 8 pinos para controlar 3 LEDs e um motor, com a menor alimentação possível. Usar as "mãos que ajudam", como sempre, é uma boa ideia. Essas coisas têm dois clipes para segurar o que você está trabalhando. Nenhum esquema foi necessário, pois a implementação é muito simples; um micro de 8 pinos (Microchip PIC) com 3 pinos de saída indo direto para LEDs e 2 pinos de saída indo para 1 motor. Os LEDs usados são do tipo de montagem em superfície Azul, Branco e Vermelho. O motor usado foi extraído de um micro helecóptero interno quebrado. A bateria (pequeno Lipo) também foi extraída do heli, mas já pretendo usar outra fonte para mais power. A switch foi adicionado para On / Off.

Etapa 2: Código

Código
Código

O código para o PIC foi feito para otimizar a vida da bateria e usar muitos "eventos" aleatórios. Para que a bateria dure o máximo possível, o circuito teve que usar a menor quantidade de energia que eu poderia imaginar, mantendo a ideia viva. Portanto, decidi reduzir a atividade inicial para uma média de 1 flash de LED ou movimento do motor a cada 6 segundos. O código tem 12 "atividades" aleatórias, variando de 1 LED ligado, o motor ligado por diferentes períodos de tempo ou direções, a um estado de espera aleatório. Os eventos variam de 3 segundos a mais de 40 segundos, com base no evento aleatório gerado. CÓDIGO; ================================= ==========================================================; Controlador de disco;; -----------; Vcc-> | 1 8 | <-Vss; MGPIO5 | 2 7 | GPIO0 -LED1; MGPIO4 | 3 6 | GPIO1 -LED2; GPIO3-> | 4 5 | GPIO2 -LED3; -----------;; ===================================== ================================================; Histórico de revisão e notas:; Cabeçalho inicial V1.0, Código 19/05/09;;; (C) 5/2009; Este código pode ser usado para aprendizagem / aplicação / modificação pessoal.; Qualquer uso deste código em produtos comerciais viola esta versão do freeware.; Para perguntas / comentários, entre em contato com circuit dot mage em yahoo dot com.; ------------------------------------------------ ------------------------------- # include P12C672. INC; ============= ====================================================== ================; Define; ------------------------------------------------ -------------------------------; ================== ========================================================== ===========; Dados;------------------------------------------------ -------------------------------; Variáveis de manutenção do tempo contagem1 equ 20 contagem2 equ 21 atraso equ 22Randlo equ 23Randhi equ 24Wtemp equ 25Temp2 equ 26rand equ 27contagem3 equ 28; ========================== ========================================================== ===; Vetores de reset;; CHECK CONFIG. BITS ANTES DE QUEIMAR !!!; INTOSC; MCLR: ENABLED; PWRUP: ENABLED; TODOS OS OUTROS: DESATIVAR !!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 org RESET_ADDR goto start; ===== ========================================================== ==========================; Começa aqui!;---------------------------------------------- ---------------------------------começar; Portas de E / S de configuração bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08 '; Saídas RA, PGIO3 sempre entrada tris GPIO movlw h'07'; Defina o GPIO para o modo Digital movwf ADCON1; Definir temporizador interno movlw h'CF '; Tmr0 Fonte interna, pré-escala TMR0 1: 256 movwf OPTION_REG movlw h'00 'movwf INTCON; Desativar interrupções TMR0, bcf STATUS, RP0; Inicializar registros clrf GPIO clrf contagem1 clrf contagem2 movlw 045h movwf Randlo movlw 030h movwf Randhi; aguarde 1 seg. call debounce; 0,2 seg chamada debounce call debounce call debounce call debounce; =============================================== ==============================================; Principal;------------------------------------------------ ------------------------------- chamada principal dois segundos; 2 segundos min entre cada ação 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 16 aleatório para 7 andlw 0x0F movwf rand; seleção de rotina aleatória xorlw 0x00; 0? btfsc STATUS, Z goto flash1; sim. Chame 0º movfw rand xorlw 0x01; 1? btfsc STATUS, Z goto flash2; sim. Chame o primeiro movfw rand xorlw 0x02; 2? btfsc STATUS, Z goto flash3; sim. Chame o 2º movfw rand xorlw 0x03; 3? btfsc STATUS, Z goto flashall; sim. Chame o 3rd movfw rand xorlw 0x04; 4? btfsc STATUS, Z goto movels; sim. Chame o 4º movfw rand xorlw 0x05; 5? btfsc STATUS, Z goto movell; sim. Chame o 5º movfw rand xorlw 0x06; 6? btfsc STATUS, Z goto movers; sim. Chame o 6º movfw rand xorlw 0x07; 7? btfsc STATUS, Z goto moverl; sim. Chame o 7º movfw rand xorlw 0x08; 8? btfsc STATUS, Z goto moveburst; sim. Chame o 8º movfw rand xorlw 0x09; 9? btfsc STATUS, Z goto Wait1; sim. Chame o 9º movfw rand xorlw 0x0A; UMA? btfsc STATUS, Z goto Wait2; sim. Chame Ath movfw rand xorlw 0x0B; B? btfsc STATUS, Z goto Wait3; sim. Chame Bth não vá para nada; 1/4 das vezes, não faça nada por 10 segs.flash1 bsf GPIO, 0 chame debounce bcf GPIO, 0 goto mainflash2 bsf GPIO, 1 chame debounce bcf GPIO, 1 goto mainflash3 bsf GPIO, 2 chame debounce bcf GPIO, 2 goto mainflashall bsf GPIO, 0 bsf GPIO, 1 bsf GPIO, 2 chamar debounce bcf GPIO, 0 bcf GPIO, 1 bcf GPIO, 2 goto mainmovels bsf GPIO, 4 bcf GPIO, 5 chamar debounce bcf GPIO, 4 goto mainmovell bsf GPIO, 4 bcf GPIO, 5 chamadas debounce call debounce bcf GPIO, 4 goto mainmovers bcf GPIO, 4 bsf GPIO, 5 chamadas debounce bcf GPIO, 5 goto mainmoverl bcf GPIO, 4 bsf GPIO, 5 chamadas debounce call debounce bcf GPIO, 5 goto mainmoveburst bcf GPIO, 4 bsf GPIO, 5 chamadas debounce; mova para a direita 3 vezes, rajadas curtas. bcf GPIO, 5 chamadas debounce call debounce bsf GPIO, 5 chamadas debounce call debounce bcf GPIO, 5 chamadas debounce call debounce bsf GPIO, 5 chamadas debounce bcf GPIO, 5 chamadas debounce call debounce call debounce call debounce bsf GPIO, 4; mova para a esquerda 3 vezes, rajadas curtas. bcf GPIO, 5 chamadas debounce call debounce bcf GPIO, 4 chamadas debounce call debounce bsf GPIO, 4 chamadas debounce call debounce bcf GPIO, 4 chamadas debounce call debounce bsf GPIO, 4 chamadas debounce call debounce bcf GPIO, 4 chamadas debounce call debounce goto mainWait1; Aguarde 1 segundo movlw.255; Atraso para debounce de 2/10 segundos. movwf contagem2 chamada pon_wait movlw.255; Atraso para debounce de 2/10 segundos. movwf contagem2 chamada pon_wait movlw.255; Atraso para debounce de 2/10 segundos. movwf contagem2 chamada pon_wait movlw.255; Atraso para debounce de 2/10 segundos. movwf contagem2 chamada pon_wait movlw.255; Atraso para debounce de 2/10 segundos. movwf count2 chamar pon_wait goto mainWait2; Aguarde 0,6 segundos movlw 0,255; Atraso para debounce de 2/10 segundos. movwf contagem2 chamada pon_wait movlw.255; Atraso para debounce de 2/10 segundos. movwf contagem2 chamada pon_wait movlw.255; Atraso para debounce de 2/10 segundos. movwf count2 chamar pon_wait goto mainWait3; Aguarde 4 segundos chame dois segundos chame dois goto mainnothing movlw.50; Atraso de 10 segundos Total movwf count3nothing_loop movlw 0,255; Atraso para debounce de 2/10 segundos. movwf count2 chamar pon_wait decfsz count3, F goto nothing_loop goto main; ============================================= ================================================; 2 segundos de espera; ---------------------------------------------- --------------------------------- twosec movlw.10; Atraso de 2 segundos Total movwf count3twosec_loop movlw 0,255; Atraso para debounce de 2/10 segundos. movwf count2 chamar pon_wait decfsz count3, F goto twosec_loopreturn; =========================================== ============================================; Sinal de debounce; 4 ciclos para carregar e chamar, 2 ciclos para retornar.; 4Mhz Tc:: count2 = 255 -> 0,2 seg; -------------------------------------- ----------------------------------------- debounce movlw.127; Atraso para debounce de 1/10 de segundo. movwf count2 call pon_wait return; -------------------------------------------- -----------------------------------; contagem1 = 255d:: 775 ciclos a 0, + 3 ciclos para retornar.; --------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend

Etapa 3: peças

Peças
Peças

Esta imagem mostra o quão pequeno eu tive que fazer os componentes caberem sob este cara.1 Microchip de 8 pinos (PIC) 3 LEDs SMT (azul, vermelho, branco) 1 Motor de um micro heli interno.1 Bateria LIPO do mesmo heli. 1 interruptor de alimentação 1 cavilha de madeira de 2,5 mm (2 de comprimento) 2 ímãs de terras raras de 1 mm

Etapa 4: construir

Construir
Construir

Primeiro, foi encontrado um centro de massa para a coisa toda. Esta seria a área de montagem do motor. O motor foi montado usando goop chamado Greenstuff (usado no mundo das miniaturas). Os 3 LEDs foram pré-cabeados. O micro foi supercolado em uma área fora do caminho, não muito perto da borda. O interruptor de alimentação e a bateria foram montados para compensar o (pequeno) peso do micro, para manter o equilíbrio. Os fios foram soldados. A parte realmente legal é a próxima. Supercola na ponta da engrenagem do rotor do motor (esta seria voltada para baixo mais tarde) um ímã de terra rara foi montado. Um curto (~ 2 ) comprimento de um pino de madeira de 2,5 de diâmetro foi perfurado (usando a mão e uma broca) para um orifício de 5 mm de profundidade e 1 mm de diâmetro. Neste orifício outro ímã de terra rara de 1 mm foi colado. Agora, minha base para a figura é magneticamente acoplado ao rotor do motor. Quando o motor gira, a partir do seu centro de equilíbrio, gira toda a parte superior da figura. Um canudo vermelho foi cortado para cobrir o motor e o pino de madeira. Isso foi pré-medido antes do pino de madeira ser montado, para garantir que corresponda. A saída da bateria LIPO está atualmente lendo 3,4 V sem recarga. Isso é o suficiente para girar o motor e acender os LEDs, mas com a figura montada na base, ele não está girando sozinho. Minha próxima versão vai use uma bateria remota de 12V com regulador de 5V para obter mais energia!

Recomendado: