Innholdsfortegnelse:

Warhammer Sorcerer på plate med magnetisk koblet motor og lysdioder: 4 trinn
Warhammer Sorcerer på plate med magnetisk koblet motor og lysdioder: 4 trinn

Video: Warhammer Sorcerer på plate med magnetisk koblet motor og lysdioder: 4 trinn

Video: Warhammer Sorcerer på plate med magnetisk koblet motor og lysdioder: 4 trinn
Video: LEGIONES ASTARTES - The Emperor's Angels | Warhammer 40k Lore 2024, Juli
Anonim
Warhammer Sorcerer på plate med magnetisk koblet motor og lysdioder
Warhammer Sorcerer på plate med magnetisk koblet motor og lysdioder

Vil du legge til noen PIZZAZZ i kunstprosjektene dine? Motorer og lysdioder er veien å gå!

Er du en Warhammer -spillentusiast? Denne er til deg! Dette er min Tzeentch Sorcerer Lord on Disc, revidert med 3 LED -er, en motor, en mikro (PIC) og et lite batteri. Denne instruksen dekker den ferdige konstruksjonen og problemene.

Trinn 1: Krets

Krets
Krets

Først lurer du kanskje på hva dette er. Dette er min skreddersydde miniatyr for bordplaten, et krigsspill som heter Warhammer. Fyren på toppen er en vanlig modell fra produsenten av spillet (Gamesworkshop), men disken og basen er alle mine. Bygget for ham er gjenstand for en annen instruerbar, så jeg vil ikke gå inn på det her. Krets Grunnideen her var å ta en liten 8 -pinners mikro for å kontrollere 3 lysdioder og en motor, med så liten forsyning som mulig. Bruk av "hjelpende hender", som alltid, er en god idé. Disse tingene har to klipp for å holde det du jobber med. Ingen skjematisk var nødvendig, ettersom implementeringen er veldig enkel; En 8 -pinners mikro (Microchip PIC) med 3 utgangspinner som går rett til lysdioder, og 2 utgangspinner som går til 1 motor. LED -lampene som brukes er av en blå, hvit og rød overflatemonteringstype. Motoren som ble brukt ble revet fra et ødelagt innendørs mikrohelikopter. Batteriet (lille Lipo) ble også dratt fra helien, men jeg planlegger allerede å bruke en annen kilde for mer En bryter ble lagt til for På/Av.

Trinn 2: Kode

Kode
Kode

Koden for PIC ble laget for å optimalisere batterilevetiden og bruke mange tilfeldige "hendelser". For å få batteriet til å vare så lenge som mulig, måtte kretsen bruke minst mulig strøm mens jeg kunne holde ideen levende. Så jeg bestemte meg for å redusere den første aktiviteten til et gjennomsnitt på 1 LED -blits eller motorbevegelse hvert 6. sekund. Koden har 12 tilfeldige "aktiviteter", alt fra 1 LED som slås på, motoren slås på i forskjellige tidsperioder eller retninger, til en tilfeldig ventetilstand. Hendelser varierer fra 3 sekunders mellomrom til mer enn 40 sekunder fra hverandre, basert på den tilfeldige hendelsen som genereres. KODE; ============================= =====================================================; Diskkontroller;; -----------; Vcc-> | 1 8 | <-Vss; MGPIO5 | 2 7 | GPIO0 -LED1; MGPIO4 | 3 6 | GPIO1 -LED2; GPIO3-> | 4 5 | GPIO2 -LED3; -----------;; ======================================== =============================================; Revisjonshistorikk og notater:; V1.0 Initial Header, kode 5/19/09;;; (C) 5/2009; Denne koden kan brukes til personlig læring/applikasjon/modifikasjon.; Enhver bruk av denne koden i kommersielle produkter bryter denne freeware -utgivelsen.; For spørsmål/kommentarer, kontakt circuit dot mage på yahoo dot com.; ------------------------------------------------ -------------------------------#inkluderer P12C672. INC; =============== ====================================================== ==================; Definerer ------------------------------------------------ -------------------------------; ==================== ===================================================== ============; Data;------------------------------------------------ -------------------------------; Tidsholdbare variabler count1 equ 20 count2 equ 21 delay equ 22Randlo equ 23Randhi equ 24Wtemp equ 25Temp2 equ 26rand equ 27count3 equ 28; ============================ ===================================================== ===; Tilbakestill vektorer;; SJEKK KONFIG. BITS FØR BRENN !!!; INTOSC; MCLR: AKTIVERT; PWRUP: AKTIVERT; ALLE ANDRE: HÅNDBAR !!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 org RESET_ADDR start; ===== ====================================================== ==========================; Start her!;---------------------------------------------- ---------------------------------start; Config I/O -porter bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08 '; RA -utganger, PGIO3 input alltid tris GPIO movlw h'07'; Sett GPIO til Digital mode movwf ADCON1; Still intern timer movlw h'CF '; Tmr0 Intern kilde, forhåndsskala TMR0 1: 256 movwf OPTION_REG movlw h'00 'movwf INTCON; Deaktiver TMR0 -avbrudd, bcf STATUS, RP0; Initialiser registre clrf GPIO clrf count1 clrf count2 movlw 045h movwf Randlo movlw 030h movwf Randhi; vent 1 sek. ringe debounce; 0.2 sek. Samtale debounce samtale debounce samtale debounce samtale debounce ==========================================; Hoved;------------------------------------------------ ------------------------------- hovedanrop to ganger; 2 sekunder min mellom hver handling 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 16 ned til 7 andlw 0x0F movwf rand; tilfeldig rutinemessig valg xorlw 0x00; 0? btfsc STATUS, Z gå til flash1; Ja. Ring 0th movfw rand xorlw 0x01; 1? btfsc STATUS, Z goto flash2; Ja. Ring 1. movfw rand xorlw 0x02; 2? btfsc STATUS, Z gå til flash3; Ja. Ring 2. movfw rand xorlw 0x03; 3? btfsc STATUS, Z goto flashall; Ja. Ring 3. movfw rand xorlw 0x04; 4? btfsc STATUS, Z gå til bevegelser; Ja. Ring 4. 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. movfw rand xorlw 0x07; 7? btfsc STATUS, Z goto moverl; Ja. Ring 7. movfw rand xorlw 0x08; 8? btfsc STATUS, Z goto moveburst; Ja. Ring 8. movfw rand xorlw 0x09; 9? btfsc STATUS, Z goto Wait1; Ja. Ring 9. movfw rand xorlw 0x0A; EN? btfsc STATUS, Z gå til Wait2; Ja. Ring Ath movfw rand xorlw 0x0B; B? btfsc STATUS, Z gå til Wait3; Ja. Ring Bth gå ingenting; 1/4 gang, ikke gjør noe 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 gå til hovedfilmer bsf GPIO, 4 bcf GPIO, 5 call debounce bcf GPIO, 4 gå til 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 samtale debounce; flytt til høyre 3 ganger, korte utbrudd. 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; flytt til venstre 3 ganger, korte utbrudd. 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; Vent 1 sekund movlw.255; Forsinkelse for 2/10 sekunders tilbakeslag. movwf count2 call pon_wait movlw.255; Forsinkelse for 2/10 sekunders tilbakeslag. movwf count2 call pon_wait movlw.255; Forsinkelse for 2/10 sekunders tilbakeslag. movwf count2 call pon_wait movlw.255; Forsinkelse for 2/10 sekunders tilbakeslag. movwf count2 call pon_wait movlw.255; Forsinkelse for 2/10 sekunders tilbakeslag. movwf count2 ring pon_wait gå til mainWait2; Vent 0,6 sekunder movlw.255; Forsinkelse for 2/10 sekunders tilbakeslag. movwf count2 call pon_wait movlw.255; Forsinkelse for 2/10 sekunders tilbakeslag. movwf count2 call pon_wait movlw.255; Forsinkelse for 2/10 sekunders tilbakeslag. movwf count2 ring pon_wait gå til mainWait3; Vent 4 sekunder ringe to ganger ringe to to gå ikke til noe movlw.50; Forsinkelse i 10 sekunder Total movwf count3nothing_loop movlw.255; Forsinkelse for 2/10 sekunders tilbakeslag. movwf count2 call pon_wait decfsz count3, F gå til noe_loop gå til main; ====================================== =============================================; 2 sekunders ventetid; ---------------------------------------------- -------------------------------- twosec movlw.10; Forsinkelse i 2 sekunder Total movwf count3twosec_loop movlw.255; Forsinkelse for 2/10 sekunders tilbakeslag. movwf count2 call pon_wait decfsz count3, F gå til twosec_loopreturn; ======================================== ==========================================; Avbryte signal; 4 sykluser for å laste og ringe, 2 sykluser for å returnere.; 4Mhz Tc:: count2 = 255-> 0,2 sek; -------------------------------------- ----------------------------------------- debounce movlw.127; Forsinkelse for 1/10 sekund debounce. movwf count2 call pon_wait return; -------------------------------------------- -----------------------------------; count1 = 255d:: 775 sykluser til 0, + 3 sykluser for å returnere.; --------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend

Trinn 3: Deler

Deler
Deler

Dette bildet viser hvor liten jeg måtte få komponentene til å passe under denne fyren. 1 8-pinners Microchip (PIC) 3 SMT LED-er (blå, rød, hvit) 1 motor fra et innendørs micro heli. 1 LIPO-batteri fra samme heli. 1 strømbryter 1 2,5 mm tredobbel (2 lang) 2 1 mm sjeldne jordartsmagneter

Trinn 4: Bygg

Bygge
Bygge

Først ble det funnet et massesenter for det hele. Dette vil være motorfesteområdet. Motoren ble montert ved hjelp av goop kalt Greenstuff (brukt i miniatyrverdenen). De 3 lysdiodene var forhåndsledede. Mikroen ble limt inn i et avvikende område, ikke for nær kanten. Strømbryteren og batteriet ble montert for å oppveie (liten) vekt på mikro, for å holde balansen. Ledningene ble loddet på. Den virkelig kule delen er neste. Superlim på spissen av rotorgiret på motoren (dette skulle vende nedover senere) en sjelden jordmagnet ble montert. Det ble boret ut en kort (~ 2 ) lengde på 2,5 dl diameter (ved hjelp av hånd og bit) for et 5 mm dypt hull på 1 mm diameter. I dette hullet ble ytterligere en 1 mm sjelden jordmagnet limt. Nå er min base for figuren magnetisk koblet til rotoren på motoren. Når motoren spinner, fra den er i balanse, snur den hele den øverste delen av figuren. Et rødt halm ble kuttet for å dekke motoren og tredobbel. Dette ble forhåndsmålt før trepluggen ble montert, for å sikre at den matcher. LIPO -batteriutgangen leser for tiden 3,4V uten oppladning. Dette er nok til å snurre motoren og tenne lysdiodene, men med figuren montert på basen snurrer den ikke seg selv. Min neste versjon vil bruk et 12V fjernbatteri med 5V regulator for mer strøm!

Anbefalt: