Sisällysluettelo:

Warhammer Sorcerer levyllä magneettikytketyllä moottorilla ja LEDeillä: 4 vaihetta
Warhammer Sorcerer levyllä magneettikytketyllä moottorilla ja LEDeillä: 4 vaihetta

Video: Warhammer Sorcerer levyllä magneettikytketyllä moottorilla ja LEDeillä: 4 vaihetta

Video: Warhammer Sorcerer levyllä magneettikytketyllä moottorilla ja LEDeillä: 4 vaihetta
Video: The Shadow Sorcerer: d4 #95 2024, Heinäkuu
Anonim
Warhammer Sorcerer levyllä magneettikytketyllä moottorilla ja LEDeillä
Warhammer Sorcerer levyllä magneettikytketyllä moottorilla ja LEDeillä

Haluatko lisätä PIZZAZZ -taideprojekteihisi? Moottorit ja LEDit ovat oikea tie!

Oletko Warhammer -pelien harrastaja? Tämä on sinulle! Tämä on minun Tzeentch Sorcerer Lord on Disc, jota on lisätty lisäämällä 3 LEDiä, moottori, mikro (PIC) ja pieni akku. Tämä ohje kattaa valmistetun rakenteen ja ongelmat.

Vaihe 1: Piiri

Piiri
Piiri

Ensin saatat ihmetellä, mikä tämä on. Tämä on mittatilaustyönä valmistettu miniatyyri pöytätasolle Warhammer-nimiseen sotapeliin. Huipulla oleva kaveri on pelin valmistajan (Gamesworkshop) tavallinen malli, mutta levy ja pohja ovat kaikki minun. Hänen rakenteensa on toinen opettavainen aihe, joten en mene siihen tässä. "Auttavien käsien" käyttö, kuten aina, on hyvä idea. Näissä asioissa on kaksi pidikettä, joilla voit pitää mitä tahansa töissäsi. Kaaviota ei tarvittu, koska käyttöönotto on hyvin yksinkertaista; 8 -nastainen mikro (Microchip PIC), jossa on 3 ulostulonappia suoraan LEDeihin ja 2 ulostulonappia yhdelle moottorille Käytetyt LEDit ovat sininen, valkoinen ja punainen pinta -asennustyyppi. Käytetty moottori revittiin rikkoutuneesta sisämikrohelikopterista. Akku (pieni Lipo) repäisi myös heliosta, mutta aion jo käyttää toista lähdettä lisää virtakytkin on lisätty päälle/pois.

Vaihe 2: Koodi

Koodi
Koodi

PIC: n koodi tehtiin akun käyttöiän optimoimiseksi ja useiden satunnaisten "tapahtumien" käyttämiseksi. Jotta akku kestäisi mahdollisimman pitkään, piirin oli käytettävä vähiten voimaa, jonka pystyin ymmärtämään, pitäen ajatuksen hengissä. Joten päätin vähentää alkuaktiivisuuden keskimäärin 1 LED -salamaan tai moottorin liikkeeseen 6 sekunnin välein. Koodissa on 12 satunnaista "toimintoa", jotka vaihtelevat 1 LED -valon syttymisestä, moottorin käynnistymisestä eri ajanjaksoina tai suuntiin satunnaiseen odotustilaan. Tapahtumat vaihtelevat 3 sekunnin ja yli 40 sekunnin välein sattumanvaraisen tapahtuman perusteella. KOODI; ============================= ==================================================; Levyn ohjain;; -----------; Vcc-> | 1 8 | <-Vss; MGPIO5 | 2 7 | GPIO0 -LED1; MGPIO4 | 3 6 | GPIO1 -LED2; GPIO3-> | 4 5 | GPIO2 -LED3; -----------;; ====================================== ==========================================; Versiohistoria ja huomautuksia:; V1.0 Alkuperäinen otsikko, koodi 5/19/09;;; (C) 5/2009; Tätä koodia voidaan käyttää henkilökohtaiseen oppimiseen/sovellukseen/muokkaamiseen.; Kaikenlainen tämän koodin käyttö kaupallisissa tuotteissa rikkoo tätä ilmaisversiota.; Jos sinulla on kysyttävää/kommentteja, ota yhteyttä dot mage -palveluun yahoo dot com.; ------------------------------------------------ -------------------------------#sisältää P12C672. INC; ============= ================================================== ================; Määrittää; ------------------------------------------------ -------------------------------; ================== ================================================== ===========; Tiedot; ------------------------------------------------ -------------------------------; Ajanpito -muuttujien määrä ================================================== ===; Nollaa vektorit;; TARKISTA MÄÄRITTELY BITS ENNEN POLTTOA !!!; INTOSC; MCLR: KÄYTÖSSÄ; PWRUP: KÄYTÖSSÄ; KAIKKI MUUT: POIS KÄYTÖSSÄ!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 org RESET_ADDR lähti; ===== ================================================== ========================; Aloita tästä!;---------------------------------------------- ---------------------------------alkaa; Määritä I/O -portit bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08 '; RA -lähdöt, PGIO3 syöttää aina tris GPIO movlw h'07'; Aseta GPIO digitaalitilaan movwf ADCON1; Aseta sisäinen ajastin movlw h'CF '; TMr0 Sisäinen lähde, esiasteikko TMR0 1: 256 movwf OPTION_REG movlw h'00 'movwf INTCON; Poista TMR0 -keskeytykset käytöstä, bcf STATUS, RP0; Alusta rekisterit clrf GPIO clrf count1 clrf count2 movlw 045h movwf Randlo movlw 030h movwf Randhi; odota 1 sek. puhelun katkaisu; 0,2 sekunnin puheluyhteyden katkaiseminen ========================================; Pää; ------------------------------------------------ ------------------------------- pääpuhelu twosec; 2 sekuntia min. Jokaisen toiminnan välillä 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; nauhan satunnainen 16 alas 7 ja ll 0x0F movwf rand; satunnainen rutiinivalinta xorlw 0x00; 0? btfsc TILA, Z goto flash1; Joo. Soita 0th movfw rand xorlw 0x01; 1? btfsc TILA, Z goto flash2; Joo. Soita 1. movfw rand xorlw 0x02; 2? btfsc -TILA, Z goto flash3; Joo. Soita 2. movfw rand xorlw 0x03; 3? btfsc -TILA, Z goto flashall; Joo. Soita 3. movfw rand xorlw 0x04; 4? btfsc TILA, Z goto movels; Joo. Soita 4. movfw rand xorlw 0x05; 5? btfsc TILA, Z goto movell; Joo. Soita 5. movfw rand xorlw 0x06; 6? btfsc STATUS, Z goto -muuttajat; Joo. Soita 6. movfw rand xorlw 0x07; 7? btfsc TILA, Z goto moverl; Joo. Soita 7. movfw rand xorlw 0x08; 8? btfsc TILA, Z goto moveburst; Joo. Soita 8. movfw rand xorlw 0x09; 9? btfsc TILA, Z goto Odota1; Joo. Soita 9. movfw rand xorlw 0x0A; A? btfsc TILA, Z goto Odota2; Joo. Soita Ath movfw rand xorlw 0x0B; B? btfsc -TILA, Z goto Wait3; Joo. Soita Bth: lle ei mitään; 1/4 ajasta, älä tee mitään 10 sekunnin ajan. Flash 1 bsf GPIO, 0 puhelun katkaisu bcf GPIO, 0 goto mainflash2 bsf GPIO, 1 puhelun katkaisu bcf GPIO, 1 goto mainflash3 bsf GPIO, 2 puhelun katkaisu bcf GPIO, 2 goto mainflashall bsf GPIO, 0 bsf GPIO, 1 bsf GPIO, 2 puhelun poistopuhelun poistuminen bcf GPIO, 0 bcf GPIO, 1 bcf GPIO, 2 goto mainmovels bsf GPIO, 4 bcf GPIO, 5 call boboce bcf GPIO, 4 goto mainmovell bsf GPIO, 4 bcf GPIO, 5 puhelun poistopuhelun poistuminen 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 b 4 bsf GPIO, 5 puhelun katkaisu; liikkua oikealle 3 kertaa, lyhyitä sarjoja. bcf GPIO, 5 puhelun keskeytyspuhelujen poistaminen bsf GPIO, 5 puhelun keskeytyspuhelujen poistaminen bcf GPIO, 5 puhelun keskeytyspuhelujen poistaminen bsf GPIO, 5 puhelun katkaisu bcf GPIO, 5 puhelun peruutuspuhelujen poistaminen käytöstä poistopuhelun poistaminen bsf GPIO, 4; siirry vasemmalle 3 kertaa, lyhyitä sarjoja. bcf GPIO, 5 puhelun keskeytyspuhelujen poistaminen bcf GPIO, 4 puhelun keskeytyspuhelujen poistaminen bsf GPIO, 4 puhelun poistopuhelun poistaminen bcf GPIO, 4 puhelun poistopuhelun poistaminen bsf GPIO, 4 puhelun poistopuhelun poistaminen bcf GPIO, 4 puhelun poistaminen käytöstä poistaminen; Odota 1 sekunti movlw.255; Viive 2/10 sekuntia. movwf count2 puhelu pon_wait movlw.255; Viive 2/10 sekuntia. movwf count2 puhelu pon_wait movlw.255; Viive 2/10 sekuntia. movwf count2 puhelu pon_wait movlw.255; Viive 2/10 sekuntia. movwf count2 puhelu pon_wait movlw.255; Viive 2/10 sekuntia. movwf count2 soita pon_wait goto mainWait2; Odota 0,6 sekuntia movlw.255; Viive 2/10 sekuntia. movwf count2 puhelu pon_wait movlw.255; Viive 2/10 sekuntia. movwf count2 puhelu pon_wait movlw.255; Viive 2/10 sekuntia. movwf count2 soita pon_wait goto mainWait3; Odota 4 sekuntia puhelu kahdelle sekunnille puhelu kahdelle sekunnille goto mainnothing movlw.50; Viive 10 sekuntia Yhteensä movwf count3nothing_loop movlw.255; Viive 2/10 sekuntia. movwf count2 puhelu pon_wait decfsz count3, F goto nothing_loop goto main; ===================================== ==========================================; 2 sekunnin odotus; ---------------------------------------------- --------------------------------- twosec movlw.10; Viive 2 sekuntia Yhteensä movwf count3twosec_loop movlw.255; Viive 2/10 sekuntia. movwf count2 puhelu pon_wait decfsz count3, F goto twosec_loopreturn; ======================================= ========================================; Palautumissignaali; 4 sykliä ladata ja soittaa, 2 sykliä palata.; 4Mhz Tc:: count2 = 255-> 0,2 s; -------------------------------------- ----------------------------------------- palautus movlw.127; Viive 1/10 sekuntia. movwf count2 puhelu pon_wait return; -------------------------------------------- -----------------------------------; count1 = 255d:: 775 sykliä 0, + 3 sykliä palata.; --------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loop

Vaihe 3: Osat

Osat
Osat

Tämä kuva osoittaa, kuinka pieniksi minun piti saada komponentit sopimaan tämän kaverin alle. 1 8-nastainen mikrosiru (PIC) 3 SMT-LEDiä (sininen, punainen, valkoinen) 1 Sisäisen mikro-heli moottori. 1 LIPO-akku samasta heliosta. 1 virtakytkin1 2,5 mm: n puinen tappi (2 pitkä) 2 1 mm: n harvinaisten maametallien magneettia

Vaihe 4: Rakenna

Rakentaa
Rakentaa

Ensin löydettiin koko massakeskus. Tämä olisi moottorin kiinnitysalue. Moottori asennettiin Greenstuff -nimisellä goopilla (jota käytetään pienoismallimaailmassa). 3 LEDiä oli esijohdotettu. Virtakytkin ja akku asennettiin tasapainottamaan mikro (pieni) paino. Johdot oli juotettu. Todella viileä osa on seuraava. Superliima moottorin roottorivaihteen kärjessä (tämä olisi myöhemmin alaspäin) harvinaisten maametallien magneetti. Lyhyt (~ 2 ) pituus 2,5 halkaisijaltaan oleva puinen tappi porattiin (kädellä ja terällä) 5 mm: n syvään 1 mm: n reikään. Tähän reikään liimattiin toinen 1 mm: n harvinaisten maametallien magneetti. Nyt kuvioni pohja on magneettisesti moottorin roottoriin. LIPO -akun teho on tällä hetkellä 3,4 V. käytä 12 V: n kaukoparistoa 5 V: n säätimellä saadaksesi enemmän virtaa!

Suositeltava: