Sommario:

Warhammer Sorcerer su disco con motore ad accoppiamento magnetico e LED: 4 passaggi
Warhammer Sorcerer su disco con motore ad accoppiamento magnetico e LED: 4 passaggi

Video: Warhammer Sorcerer su disco con motore ad accoppiamento magnetico e LED: 4 passaggi

Video: Warhammer Sorcerer su disco con motore ad accoppiamento magnetico e LED: 4 passaggi
Video: Things Mr. Welch is No Longer Allowed to do in a RPG #1-2450 Reading Compilation 2024, Dicembre
Anonim
Stregone di Warhammer su disco con motore ad accoppiamento magnetico e LED
Stregone di Warhammer su disco con motore ad accoppiamento magnetico e LED

Vuoi aggiungere un po' di PIZZAZZ ai tuoi progetti artistici? Motori e LED sono la strada da percorrere!

Sei un appassionato di giochi di Warhammer? Questo è per te! Questo è il mio Tzeentch Sorcerer Lord on Disc, revisionato con l'aggiunta di 3 LED, un motore, un micro (PIC) e una piccola batteria. Questa istruzione copre la build completata e i problemi.

Passaggio 1: circuito

Circuito
Circuito

Innanzitutto, potresti chiederti di cosa si tratta. Questa è la mia miniatura su misura per un wargame da tavolo chiamato Warhammer. Il ragazzo in cima è un modello normale del creatore del gioco (Gamesworkshop), ma il disco e la base sono tutti miei. La build per lui è oggetto di un'altra istruzione, quindi non ne parlerò qui. Circuito L'idea di base qui era di prendere un piccolo micro a 8 pin per controllare 3 LED e un motore, con un'alimentazione il più piccola possibile. L'uso delle "mani che aiutano", come sempre, è una buona idea. Queste cose hanno due clip per contenere tutto ciò su cui stai lavorando. Non è stato necessario alcuno schema, poiché l'impementazione è molto semplice; un micro a 8 pin (Microchip PIC) con 3 pin di uscita che vanno direttamente ai LED e 2 pin di uscita che vanno a 1 motore. I LED utilizzati sono di tipo blu, bianco e rosso a montaggio superficiale. Il motore utilizzato è stato strappato da un micro elicottero da interno rotto. Anche la batteria (piccolo Lipo) è stata strappata dall'elicottero, ma ho già intenzione di utilizzare un'altra fonte per altro power. Un interruttore è stato aggiunto per On/Off.

Passaggio 2: codice

Codice
Codice

Il codice per il PIC è stato creato per ottimizzare la durata della batteria e utilizzare molti "eventi" casuali. Per far durare la batteria il più a lungo possibile, il circuito doveva utilizzare la minor quantità di energia che potessi immaginare, mantenendo viva l'idea. Quindi, ho deciso di ridurre l'attività iniziale a una media di 1 flash LED o movimento del motore ogni 6 secondi. Il codice ha 12 "attività" casuali, che vanno dall'accensione di 1 LED, all'accensione del motore per periodi di tempo o direzioni differenti, a uno stato di attesa casuale. Gli eventi variano da 3 secondi di distanza a più di 40 secondi di distanza, in base all'evento casuale generato. CODE;============================= ==================================================;Controllore del disco;; -----------; Vcc-> |1 8| <-Vss; MGPIO5 |2 7| GPIO0 -LED1; MGPIO4 |3 6| GPIO1 -LED2; GPIO3-> |4 5| GPIO2 -LED3; -----------;;===================================== ==========================================; Cronologia e note delle revisioni:; Intestazione iniziale V1.0, codice 19/05/09;;;(C) 5/2009;Questo codice può essere utilizzato per apprendimento/applicazione/modifica personali.;Qualsiasi utilizzo di questo codice in prodotti commerciali viola questa versione freeware.;Per domande/commenti, contattare circuit dot mage at yahoo dot com.;------------------------------------------------ -----------------#include P12C672. INC;============= ================================================== ================; Definisce;------------------------------------------------ -----------------;================== ================================================== ===========; Dati;------------------------------------------------ -----------------; Variabili cronometraggiocount1 equ 20 count2 equ 21 delay equ 22Randlo equ 23Randhi equ 24Wtemp equ 25Temp2 equ 26rand equ 27count3 equ 28;========================== ================================================== ===; Ripristina vettori;; VERIFICA CONFIG. PUNTE PRIMA DI BRUCIARE!!!; INTOSC; MCLR: ABILITATO; PWRUP: ABILITATO; TUTTI GLI ALTRI: DISABILITA!!;;------------------------------------------ -------------------------------------RESET_ADDR EQU 0x00 org RESET_ADDR goto start;===== ================================================== ========================; Comincia qui!;---------------------------------------------- ---------------------------------cominciare; Configurazione porte I/O bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08';Uscite RA, ingresso PGIO3 sempre tris GPIO movlw h'07'; Imposta GPIO in modalità digitale movwf ADCON1; Imposta timer interno movlw h'CF'; Tmr0 Sorgente interna, prescala TMR0 1:256 movwf OPTION_REG movlw h'00' movwf INTCON; Disabilita gli interrupt TMR0, bcf STATUS, RP0; Inizializza Registri clrf GPIO clrf count1 clrf count2 movlw 045h movwf Randlo movlw 030h movwf Randhi;attendere 1 sec. chiamata antirimbalzo; 0.2 sec chiamata antirimbalzo chiamata antirimbalzo chiamata antirimbalzo chiamata antirimbalzo;======================================= ========================================; Principale;------------------------------------------------ ----------------chiamata principale due sec; 2 sec min tra ogni azione 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;strip random da 16 a 7 elw 0x0F movwf rand; selezione casuale di routine xorlw 0x00; 0? btfsc STATUS, Z goto flash1; Sì. Chiama 0th movfw rand xorlw 0x01; 1? btfsc STATUS, Z goto flash2; Sì. Chiama 1st movfw rand xorlw 0x02; 2? btfsc STATUS, Z goto flash3; Sì. Chiama 2nd movfw rand xorlw 0x03; 3? btfsc STATUS, Z goto flashall; Sì. Chiama 3° movfw rand xorlw 0x04; 4? btfsc STATUS, Z goto movels; Sì. Chiama 4th movfw rand xorlw 0x05; 5? btfsc STATUS, Z goto movell; Sì. Chiama 5th movfw rand xorlw 0x06; 6? btfsc STATUS, Z goto movers; Sì. Chiama 6th movfw rand xorlw 0x07; 7? btfsc STATUS, Z goto moverl; Sì. Chiama 7th movfw rand xorlw 0x08; 8? btfsc STATUS, Z goto moveburst; Sì. Chiama 8th movfw rand xorlw 0x09; 9? btfsc STATUS, Z goto Wait1; Sì. Chiama 9th movfw rand xorlw 0x0A; UN? btfsc STATUS, Z goto Wait2; Sì. Chiama Ath movfw rand xorlw 0x0B; B? btfsc STATUS, Z goto Wait3; Sì. Chiama Bth goto niente; 1/4 del tempo, non fare nulla per 10 secondi.flash1 bsf GPIO, 0 call antirimbalzo bcf GPIO, 0 goto mainflash2 bsf GPIO, 1 call antirimbalzo bcf GPIO, 1 goto mainflash3 bsf GPIO, 2 call antirimbalzo bcf GPIO, 2 goto mainflashall bsf GPIO, 0 bsf GPIO, 1 bsf GPIO, 2 chiamate antirimbalzo chiamate antirimbalzo bcf GPIO, 0 bcf GPIO, 1 bcf GPIO, 2 vai a movimenti principali bsf GPIO, 4 bcf GPIO, 5 chiamate antirimbalzo bcf GPIO, 4 vai a movimento principale bsf GPIO, 4 bcf GPIO, 5 chiamate antirimbalzo chiamata antirimbalzo bcf GPIO, 4 chiamate antirimbalzo bcf GPIO, 4 bsf GPIO, 5 chiamate antirimbalzo bcf GPIO, 5 chiamate antirimbalzo bcf GPIO, 4 bsf GPIO, 5 chiamate antirimbalzo chiamate antirimbalzo bcf GPIO, 5 chiamate antirimbalzo bcf GPIO, 4 bsf GPIO, 5 chiamate antirimbalzo; muovi a destra 3 volte, brevi raffiche. bcf GPIO, 5 chiamata antirimbalzo chiamata antirimbalzo bsf GPIO, 5 chiamate antirimbalzo chiamata antirimbalzo bcf GPIO, 5 chiamate antirimbalzo chiamata antirimbalzo bsf GPIO, 5 chiamate antirimbalzo bcf GPIO, 5 chiamate antirimbalzo chiamata antirimbalzo chiamata antirimbalzo chiamata antirimbalzo bsf GPIO, 4; muovi a sinistra 3 volte, brevi raffiche. bcf GPIO, 5 chiamate antirimbalzo chiamate antirimbalzo bcf GPIO, 4 chiamate antirimbalzo chiamate antirimbalzo bsf GPIO, 4 chiamate antirimbalzo chiamate antirimbalzo bcf GPIO, 4 chiamate antirimbalzo chiamate antirimbalzo bsf GPIO, 4 chiamate antirimbalzo chiamate antirimbalzo bcf GPIO, 4 chiamate antirimbalzo chiamate antirimbalzo goto mainWait1; Attendi 1 secondo movlw.255; Ritardo per antirimbalzo di 2/10 di secondo. movwf count2 chiama pon_wait movlw.255; Ritardo per antirimbalzo di 2/10 di secondo. movwf count2 chiama pon_wait movlw.255; Ritardo per antirimbalzo di 2/10 di secondo. movwf count2 chiama pon_wait movlw.255; Ritardo per antirimbalzo di 2/10 di secondo. movwf count2 chiama pon_wait movlw.255; Ritardo per antirimbalzo di 2/10 di secondo. movwf count2 call pon_wait goto mainWait2; Attendi 0,6 secondi movlw.255; Ritardo per antirimbalzo di 2/10 di secondo. movwf count2 chiama pon_wait movlw.255; Ritardo per antirimbalzo di 2/10 di secondo. movwf count2 chiama pon_wait movlw.255; Ritardo per antirimbalzo di 2/10 di secondo. movwf count2 call pon_wait goto mainWait3; Attendi 4 secondi chiama twosec chiama twosec goto mainnothing movlw.50; Ritardo per 10 secondi Totale movwf count3nothing_loop movlw.255; Ritardo per antirimbalzo di 2/10 di secondo. movwf count2 call pon_wait decfsz count3, F goto nothing_loop goto main;===================================== ==========================================; 2 secondi di attesa; ----------------------------------------------- ---------------------------------- due secondi movlw.10; Ritardo per 2 secondi Totale movwf count3twosec_loop movlw.255; Ritardo per antirimbalzo di 2/10 di secondo. movwf count2 call pon_wait decfsz count3, F goto twosec_loopreturn;======================================= ========================================; Segnale antirimbalzo; 4 cicli per caricare e chiamare, 2 cicli per tornare.; 4Mhz Tc:: conteggio2=255 -> 0,2 sec;-------------------------------------- ------------------------------------------debounce movlw.127; Ritardo per antirimbalzo di 1/10 di secondo. movwf count2 call pon_wait return;---------------------------------------------------------- -----------------------------------; count1=255d:: 775 cicli a 0, + 3 cicli per tornare.;--------------------------------- ------------------pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend

Passaggio 3: parti

Parti
Parti

Questa immagine mostra quanto piccolo dovevo far entrare i componenti sotto questo ragazzo.1 Microchip a 8 pin (PIC)3 LED SMT (blu, rosso, bianco)1 Motore da un micro elicottero da interno.1 Batteria LIPO dallo stesso elicottero. 1 interruttore di alimentazione1 tassello in legno da 2,5 mm (2 pollici di lunghezza)2 magneti in terre rare da 1 mm

Passaggio 4: costruire

Costruire
Costruire

Per prima cosa è stato trovato un centro di massa per l'intera cosa. Questa sarebbe l'area di montaggio del motore. Il motore è stato montato utilizzando un goop chiamato Greenstuff (usato nel mondo delle miniature). I 3 LED erano precablati. Il micro era super incollato in una zona fuori mano, non troppo vicino al bordo. L'interruttore di alimentazione e la batteria sono stati montati per compensare il (piccolo) peso del micro, per mantenere l'equilibrio. I fili sono stati saldati. La parte davvero interessante è la prossima. È stato montato un magnete di terre rare sulla punta dell'ingranaggio del rotore sul motore (questo sarebbe rivolto verso il basso). Una breve (~2 ) di tassello di legno del diametro di 2,5 è stata perforata (usando la mano e la punta) per un foro di 5 mm di profondità di 1 mm di diametro. In questo foro è stato incollato un altro magnete di terre rare da 1 mm. Ora, la mia base per la figura è magneticamente accoppiato al rotore del motore. Quando il motore gira, dal suo centro di equilibrio, fa girare tutta la parte superiore della figura. Una cannuccia rossa è stata tagliata per coprire il motore e il tassello di legno. Questo è stato premisurato prima che il tassello di legno fosse montato, per assicurarsi che corrisponda. L'uscita della batteria LIPO attualmente sta leggendo 3,4V senza ricarica. Questo è sufficiente per far girare il motore e accendere i LED, ma con la figura montata sulla base, non gira da solo. La mia prossima versione lo farà usa una batteria remota da 12 V con regolatore da 5 V per una maggiore potenza!

Consigliato: