Innehållsförteckning:

Warhammer Sorcerer på skiva med magnetiskt kopplad motor och lysdioder: 4 steg
Warhammer Sorcerer på skiva med magnetiskt kopplad motor och lysdioder: 4 steg

Video: Warhammer Sorcerer på skiva med magnetiskt kopplad motor och lysdioder: 4 steg

Video: Warhammer Sorcerer på skiva med magnetiskt kopplad motor och lysdioder: 4 steg
Video: Возведение перегородок санузла из блоков. Все этапы. #4 2024, December
Anonim
Warhammer Sorcerer på skiva med magnetiskt kopplad motor och lysdioder
Warhammer Sorcerer på skiva med magnetiskt kopplad motor och lysdioder

Vill du lägga till lite PIZZAZZ i dina konstprojekt? Motorer och lysdioder är vägen att gå!

Är du en spelentusiast från Warhammer? Den här är till dig! Detta är min Tzeentch Sorcerer Lord on Disc, reviderad med 3 LED: er, en motor, ett mikro (PIC) och ett litet batteri. Denna instruerbara täcker det färdiga bygget och problem.

Steg 1: Krets

Krets
Krets

Först kanske du undrar vad det här är. Detta är min skräddarsydda miniatyr för bordsskiva, ett bordsskivspel som heter Warhammer. Killen högst upp är en vanlig modell från tillverkaren av spelet (Gamesworkshop), men disken och basen är alla mina. Byggnaden för honom är föremål för en annan instruerbar, så jag kommer inte att gå in på det här. Krets Grundtanken här var att ta en liten, 8 -stifts mikro för att styra 3 lysdioder och en motor, med så liten matning som möjligt. Att använda "hjälpande händer", som alltid, är en bra idé. Dessa saker har två klipp för att hålla vad du än arbetar med. Ingen schematisk behövdes, eftersom implementeringen är väldigt enkel; En 8 -stifts mikro (Microchip PIC) med 3 utgångsstift som går direkt till lysdioder och 2 utgångsstiften går till 1 motor. LED -lamporna som används är av blå, vit och röd ytmonterad typ. Motorn som använts slet från en trasig inomhusmikrohelikopter. Batteriet (lilla Lipo) slet också från heli, men jag planerar redan att använda en annan källa för mer En strömbrytare har lagts till för På/Av.

Steg 2: Kod

Koda
Koda

Koden för PIC gjordes för att optimera batteriets livslängd och använda många slumpmässiga "händelser". För att få batteriet att hålla så länge som möjligt, måste kretsen använda den minsta mängden ström jag kunde tänka, samtidigt som idén levde. Så jag bestämde mig för att minska den initiala aktiviteten till i genomsnitt 1 LED -blixt eller motorrörelse var 6: e sekund. Koden har 12 slumpmässiga "aktiviteter", allt från 1 lysdiod som tänds, motorn slås på under olika tidsperioder eller riktningar, till ett slumpmässigt väntetillstånd. Händelser varierar från 3sekunder till mer än 40 sekunders mellanrum, baserat på den slumpmässiga händelsen som genereras. CODE; ============================== =====================================================; Skivkontroller;; -----------; Vcc-> | 1 8 | <-Vss; MGPIO5 | 2 7 | GPIO0 -LED1; MGPIO4 | 3 6 | GPIO1 -LED2; GPIO3-> | 4 5 | GPIO2 -LED3; -----------;; ======================================== =============================================; Revisionshistorik och anteckningar:; V1.0 Initial Header, kod 5/19/09;;; (C) 5/2009; Denna kod kan användas för personlig inlärning/applikation/modifiering..; ------------------------------------------------ -------------------------------#inkluderar P12C672. INC; =============== ===================================================== ==================; Definierar; ------------------------------------------------- -------------------------------; ==================== ===================================================== ============; Data;------------------------------------------------ -------------------------------; Tidshållande variabler count1 equ 20 count2 equ 21 delay equ 22Randlo equ 23Randhi equ 24Wtemp equ 25Temp2 equ 26rand equ 27count3 equ 28; ============================ ===================================================== ===; Återställ vektorer;; KONTROLLERA KONFIG. BIT FÖR BRÄNNING !!!; INTOSC; MCLR: AKTIVERAT; PWRUP: AKTIVERAD; ALLA ANDRA: INAKTIV! !!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 org RESET_ADDR starta; ===== ===================================================== ===========================; Börja här!;---------------------------------------------- ---------------------------------Start; Config I/O -portar bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08 '; RA -utgångar, PGIO3 matar alltid in tris GPIO movlw h'07'; Ställ in GPIO på Digital mode movwf ADCON1; Ställ in intern timer movlw h'CF '; Tmr0 Intern källa, förskala TMR0 1: 256 movwf OPTION_REG movlw h'00 'movwf INTCON; Inaktivera TMR0 -avbrott, bcf STATUS, RP0; Initiera register clrf GPIO clrf count1 clrf count2 movlw 045h movwf Randlo movlw 030h movwf Randhi; vänta 1 sek. ringa debounce; 0,2 sek samtal debounce samtal debounce call debounce call debounce; ========================================= ==========================================; Main; ------------------------------------------------- ------------------------------- huvudsamtal två gånger; 2 sekunder min mellan varje åtgärd 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; strippa slumpmässigt 16 ner till 7 andlw 0x0F movwf rand; slumpmässigt rutinval xorlw 0x00; 0? btfsc STATUS, Z goto flash1; Ja. Ring 0: e movfw rand xorlw 0x01; 1? btfsc STATUS, Z goto flash2; Ja. Ring första movfw rand xorlw 0x02; 2? btfsc STATUS, Z goto flash3; Ja. Ring 2: a movfw rand xorlw 0x03; 3? btfsc STATUS, Z goto flashall; Ja. Ring 3: e movfw rand xorlw 0x04; 4? btfsc STATUS, Z goto movels; Ja. Ring 4: e movfw rand xorlw 0x05; 5? btfsc STATUS, Z goto movell; Ja. Ring 5th movfw rand xorlw 0x06; 6? btfsc STATUS, Z goto movers; Ja. Ring 6: e movfw rand xorlw 0x07; 7? btfsc STATUS, Z goto moverl; Ja. Ring 7: e movfw rand xorlw 0x08; 8? btfsc STATUS, Z goto moveburst; Ja. Ring 8: e movfw rand xorlw 0x09; 9? btfsc STATUS, Z gå till Wait1; Ja. Ring 9: e movfw rand xorlw 0x0A; A? btfsc STATUS, Z gå till Wait2; Ja. Ring Ath movfw rand xorlw 0x0B; B? btfsc STATUS, Z gå till Wait3; Ja. Ring Bth gå ingenting; 1/4 gånger, gör ingenting i 10 sekunder. Flash1 bsf GPIO, 0 call debounce bcf GPIO, 0 goto mainflash2 bsf GPIO, 1 call debounce bcf GPIO, 1 goto mainflash3 bsf GPIO, 2 call debounce bcf GPIO, 2 goto mainflashall bsf GPIO, 0 bsf GPIO, 1 bsf GPIO, 2 call debounce call debounce bcf GPIO, 0 bcf GPIO, 1 bcf GPIO, 2 goto mainmovels bsf GPIO, 4 bcf GPIO, 5 call debounce 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 bsf GPIO, 5 samtal debounce; flytta åt höger 3 gånger, korta skurar. bcf GPIO, 5 call debounce call debounce bsf GPIO, 5 call debounce call debounce bcf GPIO, 5 call debounce call debounce bsf GPIO, 5 call debounce bcf GPIO, 5 call debounce call debounce call debounce call debounce bsf GPIO, 4; flytta vänster 3 gånger, korta skurar. bcf GPIO, 5 call debounce call debounce bcf GPIO, 4 call debounce call debounce bsf GPIO, 4 call 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; Vänta 1 sekund movlw.255; Fördröjning för 2/10 sekunders debounce. movwf count2 ring pon_wait movlw.255; Fördröjning för 2/10 sekunders debounce. movwf count2 ring pon_wait movlw.255; Fördröjning för 2/10 sekunders debounce. movwf count2 ring pon_wait movlw.255; Fördröjning för 2/10 sekunders debounce. movwf count2 ring pon_wait movlw.255; Fördröjning för 2/10 sekunders debounce. movwf count2 ring pon_wait gå till mainWait2; Vänta 0,6 sekunder movlw.255; Fördröjning för 2/10 sekunders debounce. movwf count2 ring pon_wait movlw.255; Fördröjning för 2/10 sekunders debounce. movwf count2 ring pon_wait movlw.255; Fördröjning för 2/10 sekunders debounce. movwf count2 ring pon_wait gå till mainWait3; Vänta 4 sekunder samtal två gånger samtal två gånger gå till inget mer movlw.50; Fördröjning i 10 sekunder Totalt movwf count3nothing_loop movlw.255; Fördröjning för 2/10 sekunders debounce. movwf count2 ring pon_wait decfsz count3, F gå till ingenting_loop gå till main; ====================================== =============================================; 2 sekunders väntan; ---------------------------------------------- --------------------------------- twosec movlw.10; Fördröjning i 2 sekunder Totalt movwf count3twosec_loop movlw.255; Fördröjning för 2/10 sekunders debounce. movwf count2 call pon_wait decfsz count3, F goto twosec_loopreturn; ======================================== ==========================================; Avvisa signal; 4 cykler för att ladda och ringa, 2 cykler för att återvända.; 4Mhz Tc:: count2 = 255-> 0,2 sek; -------------------------------------- ----------------------------------------- debounce movlw.127; Fördröjning för 1/10 sekunders debounce. movwf count2 call pon_wait return; -------------------------------------------- -----------------------------------; count1 = 255d:: 775 cykler till 0, + 3 cykler för att återvända.; --------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend

Steg 3: Delar

Delar
Delar

Den här bilden visar hur liten jag var tvungen att få komponenterna att passa under den här killen. 1 8-polig mikrochip (PIC) 3 SMT LED (blå, röd, vit) 1 motor från ett inomhus mikro heli. 1 LIPO batteri från samma heli. 1 strömbrytare1 2,5 mm träspindel (2 lång) 2 1 mm sällsynta jordartsmagneter

Steg 4: Bygg

Bygga
Bygga

Först hittades ett masscentrum för det hela. Detta skulle vara motorfästområdet. Motorn monterades med hjälp av en goop som kallas Greenstuff (används i miniatyrvärlden). De 3 lysdioderna var förkopplade. Mikro var överlimmad i ett avlägset område, inte för nära kanten. Strömbrytaren och batteriet monterades för att kompensera mikroens (lilla) vikt för att hålla balansen. Ledningarna löddes på. Den riktigt coola delen är nästa. Superlim på spetsen på rotorhjulet på motorn (detta skulle vända nedåt senare) en sällsynt jordartsmagnet monterades. En kort (~ 2 ) längd av 2,5 -tums träpinne borrade ut (med hjälp av hand och bit) för ett 5 mm djupt hål med en diameter på 1 mm. I detta hål limmades ytterligare en 1 mm sällsynt jordartsmagnet. Nu är min bas för figuren magnetiskt kopplad till motorns rotor. När motorn snurrar, från balansens centrum, vrider den hela den övre delen av figuren. Ett rött halm klipptes för att täcka motorn och träpluggen. Detta mättes i förväg innan träpluggen monterad, för att säkerställa att den matchar. LIPO -batteriutgången läser för närvarande 3,4V utan laddning. Detta räcker för att snurra motorn och tända lysdioderna, men med figuren monterad på basen snurrar den inte själv. Min nästa version kommer använd ett 12V fjärrbatteri med 5V regulator för mer effekt!

Rekommenderad: