Inhoudsopgave:

Warhammer Sorcerer op schijf met magnetisch gekoppelde motor en LED's - Ajarnpa
Warhammer Sorcerer op schijf met magnetisch gekoppelde motor en LED's - Ajarnpa

Video: Warhammer Sorcerer op schijf met magnetisch gekoppelde motor en LED's - Ajarnpa

Video: Warhammer Sorcerer op schijf met magnetisch gekoppelde motor en LED's - Ajarnpa
Video: Sorcerer is Broken | Dungeons and Dragons 5e Guide 2024, November
Anonim
Warhammer Sorcerer op schijf met magnetisch gekoppelde motor en LED's
Warhammer Sorcerer op schijf met magnetisch gekoppelde motor en LED's

Wil je wat PIZZAZZ toevoegen aan je kunstprojecten? Motoren en LED's zijn de juiste keuze!

Ben je een Warhammer-gamingliefhebber? Deze is voor jou! Dit is mijn Tzeentch Sorcerer Lord op Disc, gereviseerd met toegevoegde 3 LED's, een motor, een micro (PIC) en een kleine batterij. Dit instructable behandelt de voltooide build en problemen.

Stap 1: Circuit

Stroomkring
Stroomkring

Ten eerste vraag je je misschien af wat dit is. Dit is mijn op maat gemaakte miniatuur voor een tafelblad wargame genaamd Warhammer. De man bovenaan is een normaal model van de maker van het spel (Gamesworkshop), maar de schijf en de basis zijn allemaal van mij. De build voor hem is het onderwerp van een andere instructable, dus daar ga ik hier niet op in. Circuit Het basisidee hier was om een kleine 8-pins micro te nemen om 3 LED's en een motor te besturen, met een zo klein mogelijke voeding. Het gebruik van de "helpende handen", zoals altijd, is een goed idee. Deze dingen hebben twee clips om alles waar je aan werkt vast te houden. Er was geen schema nodig, omdat de implementatie heel eenvoudig is; een 8-pins micro (Microchip PIC) met 3 uitgangspinnen die rechtstreeks naar LED's gaan en 2 uitgangspinnen die naar 1 motor gaan De gebruikte LED's zijn van het blauwe, witte en rode oppervlaktemontagetype. De gebruikte motor is uit een kapotte micro-helcopter voor binnenshuis gescheurd. power. Er is een schakelaar toegevoegd voor Aan/Uit.

Stap 2: Coderen

Code
Code

De code voor de PIC is gemaakt om de levensduur van de batterij te optimaliseren en veel willekeurige "gebeurtenissen" te gebruiken. Om de batterij zo lang mogelijk mee te laten gaan, moest het circuit de minste hoeveelheid stroom gebruiken die ik kon bedenken, terwijl het idee levend bleef. Dus besloot ik de initiële activiteit te verminderen tot gemiddeld 1 LED-flitser of motorbeweging elke 6 seconden. De code heeft 12 willekeurige "activiteiten", variërend van 1 LED die aangaat, de motor die aangaat voor verschillende tijdsperioden of richtingen, tot een willekeurige wachtstatus. Gebeurtenissen variëren van 3 seconden tot meer dan 40 seconden, gebaseerd op de gegenereerde willekeurige gebeurtenis. CODE;============================= ==================================================;Disc-controller;; -----------; Vcc-> |1 8| <-Vss; MGPIO5 |2 7| GPIO0-LED1; MGPIO4 |3 6| GPIO1-LED2; GPIO3-> |4 5| GPIO2-LED3; -----------;;===================================== ==========================================; Revisiegeschiedenis en opmerkingen:; V1.0 Initiële koptekst, code 19-05-09;;;(C) 5/2009;Deze code kan worden gebruikt voor persoonlijk leren/toepassing/aanpassing.;Elk gebruik van deze code in commerciële producten is in strijd met deze freeware-release.;Voor vragen/opmerkingen, neem contact op met circuit dot mage op yahoo dot com.;------------------------------------------------ -------------------------------#include P12C672. INC;============= ================================================== ================; Definieert;------------------------------------------------ -------------------------------;================== ================================================== ===========; Gegevens;------------------------------------------------ -------------------------------; Tijdwaarnemingsvariabelencount1 equ 20 count2 equ 21 delay equ 22Randlo equ 23Randhi equ 24Wtemp equ 25Temp2 equ 26rand equ 27count3 equ 28;========================== ================================================== ===; Reset vectoren;; CONTROLEER CONFIG. BITS VOOR HET VERBRANDEN!!!; INTOSC; MCLR: INGESCHAKELD; PWRUP: INGESCHAKELD; ALLE ANDERE: UITSCHAKELEN!!;;------------------------------------------ -------------------------------------RESET_ADDR EQU 0x00 org RESET_ADDR ga naar start;===== ================================================== ========================; Begin hier!;---------------------------------------------- ---------------------------------begin; Config I/O-poorten bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08';RA-uitgangen, PGIO3 voert altijd tris GPIO movlw h'07' in; Stel GPIO in op digitale modus movwf ADCON1; Stel interne timer movlw h'CF' in; Tmr0 Interne bron, voorschaal TMR0 1:256 movwf OPTION_REG movlw h'00' movwf INTCON; Schakel TMR0-interrupts, bcf STATUS, RP0 uit; Registers initialiseren clrf GPIO clrf count1 clrf count2 movlw 045h movwf Randlo movlw 030h movwf Randhi;wacht 1 sec. oproep debounce; 0,2 sec oproep debounce oproep debounce oproep debounce;======================================= ========================================; Hoofd;------------------------------------------------ -------------------------------hoofdgesprek twee seconden; 2 seconden min tussen elke actie 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 willekeurige 16 tot 7 andlw 0x0F movwf rand; willekeurige routine selectie xorlw 0x00; 0? btfsc STATUS, Z ga naar flash1; Ja. Bel 0e movfw rand xorlw 0x01; 1? btfsc STATUS, Z ga naar flash2; Ja. Bel 1e movfw rand xorlw 0x02; 2? btfsc STATUS, Z ga naar flash3; Ja. Bel 2e movfw rand xorlw 0x03; 3? btfsc STATUS, Z ga naar flashall; Ja. Bel 3e movfw rand xorlw 0x04; 4? btfsc STATUS, Z ga naar bewegingen; Ja. Bel 4e movfw rand xorlw 0x05; 5? btfsc STATUS, Z ga naar movell; Ja. Bel 5e movfw rand xorlw 0x06; 6? btfsc STATUS, Z ga naar verhuizers; Ja. Bel 6e movfw rand xorlw 0x07; 7? btfsc STATUS, Z ga naar moverl; Ja. Bel 7e movfw rand xorlw 0x08; 8? btfsc STATUS, Z ga naar moveburst; Ja. Bel 8e movfw rand xorlw 0x09; 9? btfsc STATUS, Z ga naar Wacht1; Ja. Bel 9e movfw rand xorlw 0x0A; EEN? btfsc STATUS, Z ga naar Wacht2; Ja. Bel Ath movfw rand xorlw 0x0B; B? btfsc STATUS, Z ga naar Wacht3; Ja. Bel Bth, ga naar niets; 1/4 van de tijd, doe 10 seconden niets.flash1 bsf GPIO, 0 call debounce bcf GPIO, 0 goto mainflash2 bsf GPIO, 1 call debounce bcf GPIO, 1 ga naar mainflash3 bsf GPIO, 2 call debounce bcf GPIO, 2 goto mainflashall bsf GPIO, 0 bsf GPIO, 1 bsf GPIO, 2 oproep debounce oproep 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 oproep debounce oproep debounce bcf GPIO, 4 ga naar mainmovers bcf GPIO, 4 bsf GPIO, 5 ga naar mainmoveburst bcf GPIO, 5 ga naar mainmoverl bcf GPIO, 4 bsf GPIO, 5 oproep debounce oproep debounce bcf GPIO, 5 ga naar mainmoveburst bcf GPIO, 4 bsf GPIO, 5 oproep debounce; beweeg 3 keer naar rechts, korte uitbarstingen. bcf GPIO, 5 oproep debounce oproep debounce bsf GPIO, 5 oproep debounce oproep debounce bcf GPIO, 5 oproep debounce oproep debounce bsf GPIO, 5 oproep debounce bcf GPIO, 5 oproep debounce oproep debounce oproep debounce oproep debounce bsf GPIO, 4; beweeg 3 keer naar links, korte uitbarstingen. bcf GPIO, 5 oproep debounce oproep debounce bcf GPIO, 4 oproep debounce oproep debounce bsf GPIO, 4 oproep debounce oproep debounce bcf GPIO, 4 oproep debounce oproep debounce bsf GPIO, 4 oproep debounce oproep debounce bcf GPIO, 4 oproep debounce oproep debounce goto mainWait1; Wacht 1 seconden movlw.255; Vertraging voor 2/10 seconde debounce. movwf count2 call pon_wait movlw.255; Vertraging voor 2/10 seconde debounce. movwf count2 call pon_wait movlw.255; Vertraging voor 2/10 seconde debounce. movwf count2 call pon_wait movlw.255; Vertraging voor 2/10 seconde debounce. movwf count2 call pon_wait movlw.255; Vertraging voor 2/10 seconde debounce. movwf count2 bel pon_wait ga naar mainWait2; Wacht 0,6 seconden movlw.255; Vertraging voor 2/10 seconde debounce. movwf count2 call pon_wait movlw.255; Vertraging voor 2/10 seconde debounce. movwf count2 call pon_wait movlw.255; Vertraging voor 2/10 seconde debounce. movwf count2 bel pon_wait ga naar mainWait3; Wacht 4 seconden bel tweesec bel tweesec ga naar hoofdniets movlw.50; Vertraging voor 10 seconden Totale movwf count3nothing_loop movlw.255; Vertraging voor 2/10 seconde debounce. movwf count2 call pon_wait decfsz count3, F goto nothing_loop goto main;===================================== ==========================================; 2 seconden wachten;---------------------------------------------- ---------------------------------twee seconden movlw.10; Vertraging van 2 seconden Totale movwf count3twosec_loop movlw.255; Vertraging voor 2/10 seconde debounce. movwf count2 call pon_wait decfsz count3, F goto twosec_loopreturn;======================================= ========================================; Debounce signaal; 4 cycli om te laden en te bellen, 2 cycli om terug te keren.; 4Mhz Tc:: count2=255 -> 0.2 sec;-------------------------------------- ----------------------------------------- debounce movlw.127; Vertraging voor 1/10 seconde debounce. movwf count2 call pon_wait return;-------------------------------------------- -----------------------------------; count1=255d:: 775 cycli naar 0, + 3 cycli om terug te keren.;--------------------------------- ----------------------------------------------pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend

Stap 3: Onderdelen

Onderdelen
Onderdelen

Deze foto laat zien hoe klein ik de componenten moest krijgen om onder deze man te passen.1 8-pins Microchip (PIC)3 SMT LED's (Blauw, Rood, Wit)1 Motor van een indoor micro heli.1 LIPO batterij van dezelfde heli. 1 aan/uit-schakelaar1 2,5 mm houten plug (2 lang)2 zeldzame-aardemagneten van 1 mm

Stap 4: Bouwen

Bouwen
Bouwen

Eerst werd een zwaartepunt voor het geheel gevonden. Dit zou het gebied van de motormontage zijn. De motor was gemonteerd met behulp van goop genaamd Greenstuff (gebruikt in de miniaturenwereld). De 3 LED's waren voorbedraad. De micro was supergelijmd in een afgelegen gebied, niet te dicht bij de rand. De aan/uit-schakelaar en batterij waren gemonteerd om het (kleine) gewicht van de micro te compenseren, om het evenwicht te bewaren. De draden werden erop gesoldeerd. Het echt coole deel is het volgende. Superlijm op de punt van het rotortandwiel op de motor (dit zou later naar beneden wijzen) een zeldzame-aardmagneet werd gemonteerd. Een korte (~ 2 ) lengte van 2,5 diameter houten deuvel werd uitgeboord (met hand en bit) voor een 5 mm diep gat met een diameter van 1 mm. In dit gat werd nog een 1 mm zeldzame-aardmagneet gelijmd. Nu is mijn basis voor de figuur magnetisch gekoppeld aan de rotor van de motor. Wanneer de motor draait, vanuit het midden van het evenwicht, draait het hele bovenste gedeelte van de figuur. Er werd een rood rietje gesneden om de motor en de houten deuvel te bedekken. Dit werd voorgemeten voordat de houten deuvel werd gemonteerd, om ervoor te zorgen dat deze overeenkomt. De LIPO-batterijuitgang leest momenteel 3,4V zonder opladen. Dit is genoeg om de motor te laten draaien en de LED's te verlichten, maar met het figuur op de basis gemonteerd, draait het niet zelf. Mijn volgende versie zal gebruik een 12V-afstandsbedieningsbatterij met 5V-regelaar voor meer vermogen!

Aanbevolen: