Table des matières:

Warhammer Sorcerer on Disc avec moteur à couplage magnétique et LED : 4 étapes
Warhammer Sorcerer on Disc avec moteur à couplage magnétique et LED : 4 étapes

Vidéo: Warhammer Sorcerer on Disc avec moteur à couplage magnétique et LED : 4 étapes

Vidéo: Warhammer Sorcerer on Disc avec moteur à couplage magnétique et LED : 4 étapes
Vidéo: Il tire les taupes au fusil de chasse et c'est l'accident 2024, Juillet
Anonim
Warhammer Sorcerer sur disque avec moteur à couplage magnétique et LED
Warhammer Sorcerer sur disque avec moteur à couplage magnétique et LED

Envie d'ajouter de la PIZZAZZ à vos projets artistiques ? Les moteurs et les LED sont la voie à suivre!

Êtes-vous un passionné de jeux Warhammer? Celui-ci est pour toi! C'est mon Tzeentch Sorcerer Lord on Disc, révisé avec 3 LED ajoutées, un moteur, un micro (PIC) et une petite batterie. Cette instructable couvre la version terminée et les problèmes.

Étape 1: Circuit

Circuit
Circuit

Tout d'abord, vous vous demandez peut-être ce que c'est. Il s'agit de ma miniature sur mesure pour un jeu de guerre sur table appelé Warhammer. Le gars en haut est un modèle régulier du fabricant du jeu (Gamesworkshop), mais le disque et la base sont tous à moi. La construction pour lui fait l'objet d'un autre instructable, donc je n'entrerai pas dans cela ici. CircuitL'idée de base ici était de prendre un petit micro à 8 broches pour contrôler 3 LED et un moteur, avec une alimentation aussi petite que possible. L'utilisation des "coups de main", comme toujours, est une bonne idée. Ces choses ont deux clips pour contenir tout ce sur quoi vous travaillez. Aucun schéma n'était nécessaire, car l'implémentation est très simple; Un micro à 8 broches (Microchip PIC) avec 3 broches de sortie allant directement aux LED et 2 broches de sortie allant à 1 moteur. Les LED utilisées sont de type bleu, blanc et rouge. Le moteur utilisé a été arraché d'un micro-hélicoptère d'intérieur cassé. La batterie (petite Lipo) a également été arrachée de l'hélicoptère, mais je prévois déjà d'utiliser une autre source pour plus power. Un interrupteur a été ajouté pour On/Off.

Étape 2: Coder

Code
Code

Le code du PIC a été conçu pour optimiser la durée de vie de la batterie et utiliser de nombreux "événements" aléatoires. Afin que la batterie dure le plus longtemps possible, le circuit devait utiliser le moins d'énergie possible, tout en gardant l'idée vivante. J'ai donc décidé de réduire l'activité initiale à une moyenne de 1 flash LED ou mouvement moteur toutes les 6 secondes. Le code a 12 "activités" aléatoires, allant de 1 LED allumée, le moteur s'allumant pour différentes périodes ou directions, à un état d'attente aléatoire. Les événements varient de 3 secondes à plus de 40 secondes, en fonction de l'événement aléatoire généré. CODE;============================== ==================================================;Contrôleur de disque;; -----------; Vcc-> |1 8| <-Vss; MGPIO5 |2 7| GPIO0 -LED1; MGPIO4 |3 6| GPIO1 -LED2; GPIO3-> |4 5| GPIO2 -LED3; -----------;;===================================== ===========================================; Historique des révisions et notes:; En-tête initial V1.0, code 2009-05-19;;;(C) 5/2009;Ce code peut être utilisé pour un apprentissage/application/modification personnel.;Toute utilisation de ce code dans des produits commerciaux viole cette version du logiciel gratuit.;Pour des questions/commentaires, contactez circuit dot mage à yahoo dot com.;------------------------------------------------ -------------------------------#include P12C672. INC;============= ================================================== =================; Définit;------------------------------------------------ -------------------------------;=================== ================================================== ============; Données;------------------------------------------------ -------------------------------; Temps de maintien des variablescount1 equ 20 count2 equ 21 delay equ 22Randlo equ 23Randhi equ 24Wtemp equ 25Temp2 equ 26rand equ 27count3 equ 28;=========================== ================================================== ===; Réinitialiser les vecteurs;; VÉRIFIEZ LA CONFIGURATION. BITS AVANT DE BRLER !!!; INTOSC; MCLR: ACTIVÉ; PWRUP: ACTIVÉ; TOUS LES AUTRES: DÉSACTIVER !!;;------------------------------------------ -------------------------------------RESET_ADDR EQU 0x00 org RESET_ADDR aller au début;===== ================================================== =========================; Commencer ici!;---------------------------------------------- ---------------------------------début; Config I/O ports bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08'; RA Outputs, PGIO3 toujours entrée tris GPIO movlw h'07'; Réglez GPIO sur le mode numérique movwf ADCON1; Régler le temporisateur interne movlw h'CF'; Tmr0 Source interne, pré-échelle TMR0 1:256 movwf OPTION_REG movlw h'00' movwf INTCON; Désactiver les interruptions TMR0, bcf STATUS, RP0; Initialiser les registres clrf GPIO clrf count1 clrf count2 movlw 045h movwf Randlo movlw 030h movwf Randhi; attendre 1 sec. appel anti-rebond; 0,2 sec anti-rebond d'appel anti-rebond d'appel anti-rebond d'appel;======================================= ========================================; Principale;------------------------------------------------ -------------------------------appel principal twosec; 2 secondes min entre chaque action 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; bande aléatoire 16 à 7 et lw 0x0F movwf rand; sélection de routine aléatoire xorlw 0x00; 0 ? btfsc STATUS, Z goto flash1; Oui. Appelez le 0e movfw rand xorlw 0x01; 1? btfsc STATUS, Z goto flash2; Oui. Appelez le 1er movfw rand xorlw 0x02; 2 ? btfsc STATUS, Z goto flash3; Oui. Appeler le 2e movfw rand xorlw 0x03; 3 ? btfsc STATUS, Z goto flashall; Oui. Appeler le 3e movfw rand xorlw 0x04; 4 ? btfsc STATUS, Z goto movels; Oui. Appelez le 4e movfw rand xorlw 0x05; 5 ? btfsc STATUS, Z goto movell; Oui. Appelez le 5e movfw rand xorlw 0x06; 6 ? btfsc STATUS, Z goto movers; Oui. Appelez le 6ème movfw rand xorlw 0x07; 7? btfsc STATUS, Z goto moverl; Oui. Appelez le 7e movfw rand xorlw 0x08; 8 ? btfsc STATUS, Z goto moveburst; Oui. Appelez le 8e movfw rand xorlw 0x09; 9 ? btfsc STATUS, Z goto Wait1; Oui. Appelez le 9e movfw rand xorlw 0x0A; UNE? btfsc STATUS, Z goto Wait2; Oui. Appeler Ath movfw rand xorlw 0x0B; B? btfsc STATUS, Z goto Wait3; Oui. Appelez Bth goto rien; 1/4 du temps, ne rien faire pendant 10 secondes.flash1 bsf GPIO, 0 appel anti-rebond bcf GPIO, 0 aller vers mainflash2 bsf GPIO, 1 appel anti-rebond bcf GPIO, 1 aller vers mainflash3 bsf GPIO, 2 appels anti-rebond bcf GPIO, 2 aller vers mainflashall bsf GPIO, 0 bsf GPIO, 1 bsf GPIO, 2 appels anti-rebond appel bcf GPIO, 0 bcf GPIO, 1 bcf GPIO, 2 goto mainmovels bsf GPIO, 4 bcf GPIO, 5 appel anti-rebond bcf GPIO, 4 goto mainmovell bsf GPIO, 4 bcf GPIO, 5 call debounce call debounce bcf GPIO, 4 goto mainmovers bcf GPIO, 4 bsf GPIO, 5 call debounce bcf GPIO, 5 goto mainmoverl bcf GPIO, 4 bsf GPIO, 5 call debounce call debounce bcf GPIO, 5 goto mainmoveburst bcf GPIO, 4 GPIO bsf, 5 anti-rebond d'appel; déplacer à droite 3 fois, de courtes rafales. bcf GPIO, 5 appels anti-rebond appel bsf GPIO, 5 appels anti-rebond appel anti-rebond bcf GPIO, 5 appels anti-rebond appel anti-rebond bsf GPIO, 5 appels anti-rebond bcf GPIO, 5 appels anti-rebond appel anti-rebond appel anti-rebond appel anti-rebond bsf GPIO, 4; déplacer à gauche 3 fois, de courtes rafales. bcf GPIO, 5 appels anti-rebond appel anti-rebond bcf GPIO, 4 appels anti-rebond appel anti-rebond bsf GPIO, 4 appels anti-rebond appel anti-rebond bcf GPIO, 4 appels anti-rebond appel anti-rebond bsf GPIO, 4 appels anti-rebond appel anti-rebond bcf GPIO, 4 appels anti-rebond appel anti-rebond goto mainWait1; Attendez 1 secondes movlw.255; Délai pour le rebond de 2/10 secondes. movwf count2 appel pon_wait movlw.255; Délai pour le rebond de 2/10 secondes. movwf count2 appel pon_wait movlw.255; Délai pour le rebond de 2/10 secondes. movwf count2 appel pon_wait movlw.255; Délai pour le rebond de 2/10 secondes. movwf count2 appel pon_wait movlw.255; Délai pour le rebond de 2/10 secondes. movwf count2 call pon_wait goto mainWait2; Attendre 0,6 secondes movlw.255; Délai pour le rebond de 2/10 secondes. movwf count2 appel pon_wait movlw.255; Délai pour le rebond de 2/10 secondes. movwf count2 appel pon_wait movlw.255; Délai pour le rebond de 2/10 secondes. movwf count2 call pon_wait goto mainWait3; Attendre 4 secondes appeler twosec appeler twosec goto mainnothing movlw.50; Délai de 10 secondes Total movwf count3nothing_loop movlw.255; Délai pour le rebond de 2/10 secondes. movwf count2 appel pon_wait decfsz count3, F goto Nothing_loop goto main;===================================== ===========================================; 2 secondes d'attente;------------------------------------------- ---------------------------------deuxsec movlw.10; Délai de 2 secondes Total movwf count3twosec_loop movlw.255; Délai pour le rebond de 2/10 secondes. movwf count2 appel pon_wait decfsz count3, F goto twosec_loopreturn;======================================= ========================================; Signal anti-rebond; 4 cycles pour charger et appeler, 2 cycles pour revenir.; 4Mhz Tc:: count2=255 -> 0.2 sec;-------------------------------------- -----------------------------------------debounce movlw.127; Retard pour 1/10 de seconde anti-rebond. movwf count2 appel pon_wait return;---------------------------------------------- -----------------------------------; count1=255d:: 775 cycles à 0, + 3 cycles à retourner.;-------------------------------- ------------------------------------------------pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend

Étape 3: Pièces

les pièces
les pièces

Cette image montre à quel point je devais faire passer les composants sous ce type.1 Micropuce à 8 broches (PIC)3 LED SMT (bleu, rouge, blanc)1 Moteur d'un micro hélico d'intérieur.1 Batterie LIPO du même hélico. 1 interrupteur d'alimentation1 cheville en bois de 2,5 mm (2 de long)2 aimants de terres rares de 1 mm

Étape 4: Construire

Construire
Construire

D'abord, un centre de masse pour l'ensemble a été trouvé. Ce serait la zone de montage du moteur. Le moteur était monté à l'aide de goop appelé Greenstuff (utilisé dans le monde des miniatures). Les 3 LED étaient précâblées. Le micro était super collé dans une zone à l'écart, pas trop près du bord. L'interrupteur d'alimentation et la batterie ont été montés pour compenser le (petit) poids du micro, pour garder l'équilibre. Les fils ont été soudés. La partie vraiment cool est la suivante. De la superglue sur la pointe de l'engrenage du rotor sur le moteur (ce serait vers le bas plus tard) un aimant de terre rare a été monté. Une courte longueur (~ 2 ) d'une cheville en bois de 2,5 diamètre a été percée (à l'aide d'une main et d'un foret) pour un trou de 5 mm de profondeur et de 1 mm de diamètre. Dans ce trou, un autre aimant de terre rare de 1 mm a été collé. Maintenant, ma base pour la figurine est magnétique couplé au rotor du moteur. Lorsque le moteur tourne, à partir de son centre d'équilibre, il tourne toute la partie supérieure de la figure. Une paille rouge a été coupée pour couvrir le moteur et le goujon en bois. Cela a été pré-mesuré avant que le goujon en bois ne soit monté, pour s'assurer qu'il correspond. La sortie de la batterie LIPO lit actuellement 3,4 V sans recharge. C'est suffisant pour faire tourner le moteur et allumer les LED, mais avec le chiffre monté sur la base, il ne tourne pas tout seul. Ma prochaine version sera utilisez une batterie distante 12V avec régulateur 5V pour plus de puissance !

Conseillé: