Mündəricat:

Maqnitlə birləşdirilmiş mühərriki və LEDləri olan diskdə Warhammer Sehrbazı: 4 addım
Maqnitlə birləşdirilmiş mühərriki və LEDləri olan diskdə Warhammer Sehrbazı: 4 addım

Video: Maqnitlə birləşdirilmiş mühərriki və LEDləri olan diskdə Warhammer Sehrbazı: 4 addım

Video: Maqnitlə birləşdirilmiş mühərriki və LEDləri olan diskdə Warhammer Sehrbazı: 4 addım
Video: 40 полезных автотоваров с Aliexpress, которые упростят жизнь любому автовладельцу #7 2024, Noyabr
Anonim
Maqnitlə birləşdirilmiş mühərriki və LEDləri olan diskdə Warhammer sehrbazdır
Maqnitlə birləşdirilmiş mühərriki və LEDləri olan diskdə Warhammer sehrbazdır

Sənət layihələrinizə bir PIZZAZZ əlavə etmək istəyirsiniz? Motorlar və LED -lər getmək üçün bir yoldur!

Bir Warhammer oyun həvəskarısınız? Bu sizin üçündür! Bu, əlavə edilmiş 3 LED, bir motor, bir mikro (PIC) və kiçik bir batareya ilə yenidən işlənmiş diskdəki Tzeentch Sehrbaz Lordumdur. Bu təlimat tamamlanmış quruluşu və problemləri əhatə edir.

Addım 1: Dövrə

Dövrə
Dövrə

Əvvəlcə bunun nə olduğunu düşünə bilərsiniz. Bu, Warhammer adlı bir masa üstü döyüş oyunu üçün masa üstü üçün xüsusi hazırladığım miniatürdür. Yuxarıdakı adam, oyunun istehsalçısı olan adi bir modeldir (Gamesworkshop), ancaq disk və baza hamısı mənimdir. Onun üçün quruluş başqa bir təlimat mövzusudur, buna görə buraya girməyəcəyəm. Buradakı əsas fikir, mümkün olduğu qədər kiçik bir təchizatı olan 3 LED və bir motoru idarə etmək üçün kiçik, 8 pinli mikro götürmək idi. Həmişə olduğu kimi "kömək əllərindən" istifadə etmək yaxşı bir fikirdir. İşlədiklərinizi tutmaq üçün iki klip var, heç bir sxemə ehtiyac yox idi, çünki düzəltmə çox sadədir; LED -lərə gedən 3 çıxış pinli 8 pinli mikro (Microchip PIC) və 1 mühərrikə gedən 2 çıxış pimi İstifadə olunan LEDlər Mavi, Ağ və Qırmızı səth montaj tipidir. İstifadə olunan mühərrik qapalı mikro helikopterdən qoparıldı. Batareya (kiçik Lipo) də helidən yırtıldı, amma artıq başqa bir mənbədən istifadə etməyi planlaşdırıram. güc Açma/Kapama üçün bir keçid əlavə edildi.

Addım 2: Kod

Kod
Kod

PIC kodu, batareyanın ömrünü optimallaşdırmaq və bir çox təsadüfi "hadisələr" istifadə etmək üçün hazırlanmışdır. Batareyanın mümkün qədər uzun müddət dayanması üçün, fikri yaşatmaqla bərabər, dövrə görə biləcəyim ən az gücü istifadə etməli idi.. Beləliklə, hər 6 saniyədə bir başlanğıc fəaliyyətini orta hesabla 1 LED flaş və ya motor hərəkətinə endirmək qərarına gəldim. Kod, 1 LED -in yandırılmasından, motorun müxtəlif vaxtlarda və ya istiqamətlərdə açılmasından təsadüfi gözləmə vəziyyətinə qədər 12 təsadüfi "fəaliyyət" ə malikdir. Hadisələr, təsadüfi hadisəyə əsaslanaraq, 3 saniyədən 40 saniyəyə qədər dəyişir. CODE; =========================== ================================================= Disk nəzarətçisi; -----------; Vcc-> | 1 8 | <-Vss; MGPIO5 | 2 7 | GPIO0 -LED1; MGPIO4 | 3 6 | GPIO1 -LED2; GPIO3-> | 4 5 | GPIO2 -LED3; -----------;; =================================== =========================================; Revizyon Tarixi və Qeydlər:; V1.0 İlk Başlıq, Kod 5/19/09;;; (C) 5/2009; Bu kod şəxsi öyrənmə/tətbiq/modifikasiya üçün istifadə edilə bilər.; Ticarət məhsullarında bu koddan hər hansı bir istifadə edilməsi bu pulsuz proqramın versiyasını pozur..; ------------------------------------------------ -------------------------------#P12C672. INC daxildir; ============ ================================================= =================; Müəyyən edir; ------------------------------------------------ -------------------------------; ================== ================================================= ===========; Məlumat; ------------------------------------------------ -------------------------------; Zaman saxlayan dəyişənlərsayı1 bərabər 20 say2 bərabər 21 gecikmə bərabərliyi 22Randlo bərabərliyi 23Randhi bərabərliyi 24Wtemp bərabərliyi 25Temp2 bərabərliyi 26rand bərabərliyi 27sayı3 bərabərliyi 28; =========================== ================================================= ===; Vektorları sıfırlayın; Konfiqurasiyanı yoxlayın. YANMADAN ƏVVƏL BITS !!!; INTOSC; MCLR: ENABLED; PWRUP: ENABLED; BÜTÜN BAŞQALARI: Əlil! !!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 org RESET_ADDR başlamalıdır; ===== ================================================= =========================; Buradan Başlayın!; ---------------------------------------------- ---------------------------------başlamaq; G/Ç portlarını bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08 '; RA Çıxışları, PGIO3 həmişə GPIO movlw h'07' daxil edir; GPIO -nu rəqəmsal rejimə qoyun movwf ADCON1; Daxili timer movlw h'CF 'qurun; Tmr0 Daxili mənbə, əvvəlcədən ölçülmüş TMR0 1: 256 movwf OPTION_REG movlw h'00 'movwf INTCON; TMR0 kəsilmələrini, bcf STATUS, RP0 deaktiv edin; Qeydləri Başlat clrf GPIO clrf count1 clrf count2 movlw 045h movwf Randlo movlw 030h movwf Randhi; 1 saniyə gözləyin. zəng çıxarmaq; 0.2 saniyəlik zəng sıçrayışı zəngdən geri çəkilmə zəngdən geri çəkilmə; zəngdən geri çəkilmə; =======================================; Əsas; ------------------------------------------------ ------------------------------- əsas zəng twosec; 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; təsadüfi 16 -dan 7 -yə qədər və 0x0F movwf randına; təsadüfi rutin seçim xorlw 0x00; 0? btfsc STATUS, Z goto flash1; Bəli. 0th movfw rand xorlw 0x01 -ə zəng edin; 1? btfsc STATUS, Z goto flash2; Bəli. 1 -ci movfw rand xorlw 0x02; 2? btfsc STATUS, Z goto flash3; Bəli. 2 -ci movfw rand xorlw 0x03; 3? btfsc STATUS, Z goto flashall; Bəli. 3 -cü movfw rand xorlw 0x04; 4? btfsc STATUS, Z hərəkət etməli; Bəli. 4 -cü movfw rand xorlw 0x05 -ə zəng edin; 5? btfsc STATUS, Z hərəkət etməli; Bəli. 5 -ci movfw rand xorlw 0x06; 6? btfsc STATUS, Z goto hərəkət edənlər; Bəli. 6 -cı movfw rand xorlw 0x07; 7? btfsc STATUS, Z hərəkət etmək; Bəli. 7 -ci movfw rand xorlw 0x08; 8? btfsc DURUMU, Z hərəkət etməli; Bəli. 8 -ci movfw rand xorlw 0x09 -a zəng edin; 9? btfsc STATUS, Z goto Wait1; Bəli. 9 -cu movfw rand xorlw 0x0A -ya zəng edin; A? btfsc STATUS, Z goto Wait2; Bəli. Ath movfw rand xorlw 0x0B -ə zəng edin; B? btfsc STATUS, Z goto Wait3; Bəli. Bth got heç bir şey zəng edin; 1/4 dəfə 10 saniyə ərzində heç nə etməyin. Flash1 bsf GPIO, 0 bcf GPIO, 0 goto mainflash2 bsf GPIO, 1 call bcf GPIO, 1 goto mainflash3 bsf GPIO, 2 call 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 zəngdən imtina; 3 dəfə sağa hərəkət edin, qısa partlayışlar. bcf GPIO, 5 çağırışdan imtina çağırışı debs bsf GPIO, 5 zəngdən geri çəkilmə bcf GPIO, 5 zəngdən geri çəkilmə bsf GPIO, 5 zəngdən imtina bcf GPIO, 5 zəngdən geri çəkilmə zəngdən geri çəkilmə bsf GPIO, 4; 3 dəfə sola hərəkət edin, qısa partlayışlar. bcf GPIO, 5 zəng debounce zəng 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; 1 saniyə gözləyin movlw.255; 2/10 saniyəlik geri çəkilmə üçün gecikmə. movwf count2 zəng pon_wait movlw.255; 2/10 saniyəlik geri çəkilmə üçün gecikmə. movwf count2 zəng pon_wait movlw.255; 2/10 saniyəlik geri çəkilmə üçün gecikmə. movwf count2 zəng pon_wait movlw.255; 2/10 saniyəlik geri çəkilmə üçün gecikmə. movwf count2 zəng pon_wait movlw.255; 2/10 saniyəlik geri çəkilmə üçün gecikmə. movwf count2 zəng pon_wait goto mainWait2; 0.6 saniyə gözləyin. 255; 2/10 saniyəlik geri çəkilmə üçün gecikmə. movwf count2 zəng pon_wait movlw.255; 2/10 saniyəlik geri çəkilmə üçün gecikmə. movwf count2 zəng pon_wait movlw.255; 2/10 saniyəlik geri çəkilmə üçün gecikmə. movwf count2 zəng pon_wait goto mainWait3; 4 saniyə gözləyin twosec zəng twosec goto mainnothing movlw.50; 10 saniyə gecikmə Total movwf count3nothing_loop movlw.255; 2/10 saniyəlik geri çəkilmə üçün gecikmə. movwf count2 zəng pon_wait decfsz count3, F goto nothing_loop goto main; ================================= =========================================; 2 saniyə gözləyin; ---------------------------------------------- --------------------------------- twosec movlw.10; 2 saniyə gecikmə Total movwf count3twosec_loop movlw.255; 2/10 saniyəlik geri çəkilmə üçün gecikmə. movwf count2 zəng pon_wait decfsz count3, F goto twosec_loopreturn; ===================================== ========================================; Çıxış siqnalı; Yükləmək və çağırmaq üçün 4 dövr, geri dönmək üçün 2 dövr.; 4Mhz Tc:: count2 = 255-> 0.2 san; -------------------------------------- ----------------------------------------- movlw.127; 1/10 saniyəlik geri çəkilmə üçün gecikmə. movwf count2 zəng pon_wait qayıt; -------------------------------------------- -----------------------------------; count1 = 255d:: 0-775 dövr, geri dönmək üçün + 3 dövr.; --------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend

Addım 3: hissələr

Hissələri
Hissələri

Bu şəkil, komponentlərin bu adamın altına sığması üçün nə qədər kiçik olduğumu göstərir.1 8 pinli Mikroçip (PIC) 3 SMT LED (Mavi, Qırmızı, Ağ) 1 Daxili mikro helidən 1 Motor. Eyni helidən LIPO batareya. 1 güc açarı 1 2,5 mm taxta dübel (2 uzun) 2 1 mm nadir torpaq maqnitləri

Addım 4: Qurmaq

Qurmaq
Qurmaq

Əvvəlcə hər şey üçün bir kütlə mərkəzi tapıldı. Bu mühərrikin montaj sahəsi olacaq. Motor, miniatür dünyasında istifadə edilən Greenstuff adlı çuxurdan istifadə etməklə quraşdırılmışdır. 3 LED -in qabaqcası quraşdırılmışdır. Mikro kənarına çox yaxın olmayan, kənarda bir yerə yapışdırılmışdır. Güc açarı və batareya tarazlığı qorumaq üçün mikro (kiçik) çəkisini kompensasiya etmək üçün quraşdırılmışdır. Tellər lehimlənmişdi. Həqiqətən də sərin hissə motorun rotor dişli ucundakı super yapışdırıcıdır (bu daha sonra aşağıya baxacaq) nadir torpaq maqnitləri quraşdırılmışdır. 5 mm dərinliyində 1 mm diametrli çuxur üçün (əl və bit istifadə edərək) 2,5 diametrli qısa (~ 2 ) uzunluğunda taxta dübel qazıldı. Bu çuxurda başqa 1 mm nadir torpaq maqnit yapışdırıldı. İndi rəqəm üçün əsasım maqnitdir Motorun rotoruna bağlanır. Motor fırlandıqda, tarazlığın mərkəzindən, rəqəmin bütün yuxarı hissəsini çevirir. Motoru və taxta dübeli örtmək üçün qırmızı saman kəsildi. LIPO batareya çıxışı hazırda şarj etmədən 3.4V oxuyur. Bu, mühərriki fırlatmaq və LED -ləri yandırmaq üçün kifayətdir, ancaq bazaya quraşdırılmış rəqəmlə özünü fırlatmır. Növbəti versiyam daha çox güc üçün 5V tənzimləyicisi olan 12V uzaq bir batareyadan istifadə edin!

Tövsiyə: