Съдържание:

Warhammer Sorcerer на диск с магнитно свързан двигател и светодиоди: 4 стъпки
Warhammer Sorcerer на диск с магнитно свързан двигател и светодиоди: 4 стъпки

Видео: Warhammer Sorcerer на диск с магнитно свързан двигател и светодиоди: 4 стъпки

Видео: Warhammer Sorcerer на диск с магнитно свързан двигател и светодиоди: 4 стъпки
Видео: Тысяча Сыновей Космические Десантники Хаоса ПОЛНАЯ АРМИЯ Warhammer 40K, 9-е издание, 2000 очков 2024, Юли
Anonim
Warhammer Sorcerer на диск с магнитно свързан двигател и светодиоди
Warhammer Sorcerer на диск с магнитно свързан двигател и светодиоди

Искате ли да добавите малко PIZZAZZ към вашите арт проекти? Моторите и светодиодите са пътят!

Вие сте ентусиаст на Warhammer игри? Това е за вас! Това е моят Tzeentch Sorcerer Lord на диска, преработен с добавени 3 светодиода, мотор, микро (PIC) и малка батерия. Тази инструкция обхваща завършената компилация и проблеми.

Стъпка 1: Схема

Верига
Верига

Първо, може би се чудите какво е това. Това е моята по поръчка миниатюра за настолна настолна военна игра, наречена Warhammer. Човекът отгоре е обикновен модел от производителя на играта (Gamesworkshop), но дискът и основата са мои. Сградата за него е предмет на друга инструкция, така че няма да навлизам в това тук. Схема Основната идея тук беше да се вземе малък, 8 -пинов микро, за да се управляват 3 светодиода и двигател, с възможно най -малък източник. Използването на „ръцете за помощ“, както винаги, е добра идея. Тези неща имат две скоби, за да държат каквото и да работите. Не е необходима схема, тъй като импементацията е много проста; 8 -пинов микро (Microchip PIC) с 3 изходни щифта, насочени директно към светодиоди, и 2 изходни щифта, отиващи към 1 двигател. Използваните светодиоди са със син, бял и червен тип повърхностен монтаж. Използваният двигател беше изтръгнат от счупен микро хеликоптер на закрито. Батерията (малка Lipo) също беше изтръгната от хеликоптера, но вече планирам да използвам друг източник за повече захранване. Добавен е превключвател за включване/изключване.

Стъпка 2: Код

Код
Код

Кодът за PIC е направен, за да оптимизира живота на батерията и да използва много случайни "събития". За да може батерията да издържи възможно най -дълго, веригата трябваше да използва най -малкото количество енергия, което мога да разбера, като същевременно поддържа идеята жива. Така че реших да намаля първоначалната активност до средно 1 LED светкавица или движение на двигателя на всеки 6 секунди. Кодът има 12 произволни „дейности“, вариращи от 1 включване на светодиода, включване на двигателя за различни периоди от време или посоки до състояние на произволно изчакване. Събитията варират от 3 секунди на разстояние до повече от 40 секунди, в зависимост от генерираното случайно събитие. CODE; ============================= ==================================================; Контролер на диска;; -----------; Vcc-> | 1 8 | <-Vss; MGPIO5 | 2 7 | GPIO0 -LED1; MGPIO4 | 3 6 | GPIO1 -LED2; GPIO3-> | 4 5 | GPIO2 -LED3; -----------;; ======================================= ==========================================; История на ревизиите и бележки:; V1.0 Начална заглавка, код 5/19/09;;; (C) 5/2009; Този код може да се използва за лично обучение/приложение/промяна.; Всяко използване на този код в търговски продукти нарушава тази безплатна версия.;.; ------------------------------------------------ -------------------------------#включва P12C672. INC; ============= ================================================== ================; Определя; ------------------------------------------------ -------------------------------; ================== ================================================== ===========; Данни;------------------------------------------------ -------------------------------; Променливи за водене на време count1 equ 20 count2 equ 21 delay equ 22Randlo equ 23Randhi equ 24Wtemp equ 25Temp2 equ 26rand equ 27count3 equ 28; ========================== ================================================== ===; Нулиране на вектори;; ПРОВЕРЕТЕ КОНФИГ. БИТОВЕ ПРЕДИ ГОРЕНЕ !!!; INTOSC; MCLR: Активирано; PWRUP: АКТИВИРАНО; ВСИЧКИ ДРУГИ: ИЗКЛЮЧВАНЕ !!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 org RESET_ADDR goto start; ===== ================================================== ========================; Започни тук!;---------------------------------------------- --------------------------------- начало; Конфигуриране на I/O портове bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08 '; RA изходи, PGIO3 винаги въвеждат tris GPIO movlw h'07'; Задайте GPIO на Цифров режим movwf ADCON1; Задайте вътрешен таймер movlw h'CF '; Tmr0 Вътрешен източник, премащаб TMR0 1: 256 movwf OPTION_REG movlw h'00 'movwf INTCON; Деактивиране на TMR0 прекъсвания, bcf STATUS, RP0; Инициализиране на регистри clrf GPIO clrf count1 clrf count2 movlw 045h movwf Randlo movlw 030h movwf Randhi; изчакайте 1 сек. обаждане debounce; 0,2 сек. ======================================; Основен; ------------------------------------------------ ------------------------------- основно обаждане twosec; 2 секунди мин. Между всяко действие 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; лента на случаен принцип 16 до 7 иlw 0x0F movwf rand; произволен рутинен избор xorlw 0x00; 0? btfsc СТАТУТ, Z goto flash1; Да. Обадете се на 0 -ви movfw rand xorlw 0x01; 1? btfsc СТАТУС, Z goto flash2; Да. Обадете се на 1 -ви movfw rand xorlw 0x02; 2? btfsc СТАТУС, Z goto flash3; Да. Обадете се на 2 -ри movfw rand xorlw 0x03; 3? btfsc СТАТУС, Z goto flashhall; Да. Обадете се на 3 -ти movfw rand xorlw 0x04; 4? btfsc СТАТУТ, Z goto movels; Да. Обадете се на 4 -ти movfw rand xorlw 0x05; 5? btfsc СТАТУС, Z goto movell; Да. Обадете се на 5 -ти movfw rand xorlw 0x06; 6? btfsc СТАТУТ, Z goto хамали; Да. Обадете се на 6 -ти movfw rand xorlw 0x07; 7? btfsc СТАТУТ, Z goto moverl; Да. Обадете се 7 -ми movfw rand xorlw 0x08; 8? btfsc СТАТУТ, Z goto moveburst; Да. Обадете се на 8 -ми movfw rand xorlw 0x09; 9? btfsc СТАТУС, Z goto Wait1; Да. Обадете се на 9 -ти movfw rand xorlw 0x0A; А? btfsc СТАТУС, Z goto Wait2; Да. Обадете се на Ath movfw rand xorlw 0x0B; Б? btfsc СТАТУС, Z goto Wait3; Да. Обадете се на Bth, за да отидете на нищо; 1/4 от времето, не правете нищо за 10 секунди. Flash1 bsf GPIO, 0 обаждания 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 повиквания за прекъсване на повикване 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 разговора за прекъсване на повикване 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, 5 4 bsf GPIO, 5 прекъсване на повикване; придвижете се надясно 3 пъти, кратки серии. bcf GPIO, 5 обаждания 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; преместете се наляво 3 пъти, кратки серии. bcf GPIO, 5 обаждания 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; Изчакайте 1 секунди movlw.255; Забавяне за 2/10 секунди. movwf count2 повикване pon_wait movlw.255; Забавяне за 2/10 секунди. movwf count2 повикване pon_wait movlw.255; Забавяне за 2/10 секунди. movwf count2 повикване pon_wait movlw.255; Забавяне за 2/10 секунди. movwf count2 повикване pon_wait movlw.255; Забавяне за 2/10 секунди. movwf count2 повикване pon_wait goto mainWait2; Изчакайте 0,6 секунди movlw.255; Забавяне за 2/10 секунди. movwf count2 повикване pon_wait movlw.255; Забавяне за 2/10 секунди. movwf count2 повикване pon_wait movlw.255; Забавяне за 2/10 секунди. movwf count2 повикване pon_wait goto mainWait3; Изчакайте 4 секунди обаждане twosec обаждане twosec goto mainnothing movlw.50; Забавяне за 10 секунди Общо movwf count3nothing_loop movlw.255; Забавяне за 2/10 секунди. movwf count2 повикване pon_wait decfsz count3, F отидете на nothing_loop goto main; ===================================== ==========================================; 2 секунди изчакване; ---------------------------------------------- --------------------------------- две секунди movlw.10; Забавяне за 2 секунди Общо movwf count3twosec_loop movlw.255; Забавяне за 2/10 секунди. movwf count2 повикване pon_wait decfsz count3, F отидете на twosec_loopreturn; ======================================= ======================================; Сигнал за отстраняване; 4 цикъла за зареждане и повикване, 2 цикъла за връщане.; 4Mhz Tc:: count2 = 255-> 0,2 сек; -------------------------------------- ----------------------------------------- debounce movlw.127; Забавяне за 1/10 секунда. movwf count2 повикване pon_wait връщане; -------------------------------------------- -----------------------------------; count1 = 255d:: 775 цикъла до 0, + 3 цикъла за връщане.; --------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend

Стъпка 3: Части

Части
Части

Тази снимка показва колко малък трябваше да накарам компонентите да се поберат под този човек. 1 превключвател за захранване 1 2,5 мм дървен дюбел (2 дълъг) 2 1 мм редкоземни магнити

Стъпка 4: Изградете

Изграждане
Изграждане

Първо беше открит център на маса за цялото нещо. Това ще бъде зоната за монтиране на двигателя. Двигателят беше монтиран с помощта на обръч, наречен Greenstuff (използван в света на миниатюрите). 3 -те светодиода бяха предварително свързани. Превключвателят на захранването и батерията бяха монтирани, за да компенсират (малкото) тегло на микро, за да поддържат баланс. Проводниците бяха запоени. Наистина готината част е следващата. Суперлепилото на върха на роторното зъбно колело на двигателя (това ще бъде обърнато по -късно) е монтиран магнит от рядка земя. Кратък (~ 2 ) дълъг дървен дюбел с диаметър 2,5 беше пробит (с помощта на ръка и накрайник) за отвор с диаметър 5 мм с дълбочина 1 мм. В този отвор беше залепен друг магнит от редкоземни 1 мм. Сега моята основа за фигурата е магнитно свързан с ротора на двигателя. Когато моторът се завърти, от центъра на баланса, той завърта цялата горна част на фигурата. Червена слама беше нарязана, за да покрие двигателя и дървения дюбел. Това беше предварително измерено преди дървеният дюбел да бъде монтиран, за да се гарантира съвпадението му. Изходът на батерията LIPO в момента отчита 3,4V без презареждане. Това е достатъчно, за да завърти двигателя и да запали светодиодите, но с фигурата, монтирана на основата, тя не се върти сама. Следващата ми версия ще използвайте 12V дистанционна батерия с 5V регулатор за повече мощност!

Препоръчано: