Оглавление:

Warhammer Sorcerer на диске с магнитным двигателем и светодиодами: 4 шага
Warhammer Sorcerer на диске с магнитным двигателем и светодиодами: 4 шага

Видео: Warhammer Sorcerer на диске с магнитным двигателем и светодиодами: 4 шага

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

Хотите добавить пиццу в свои арт-проекты? Двигатели и светодиоды - это то, что вам нужно!

Вы энтузиаст игр Warhammer? Это для тебя! Это мой Tzeentch Sorcerer Lord на диске, переработанный с добавленными 3 светодиодами, мотором, микро (PIC) и маленькой батареей. Это руководство охватывает завершенную сборку и проблемы.

Шаг 1: Схема

Схема
Схема

Во-первых, вам может быть интересно, что это такое. Это моя заказная миниатюра для настольной варгейма под названием Warhammer. Парень наверху - обычная модель от производителя игры (Gamesworkshop), но диск и база все мои. Его сборка является предметом другого руководства, поэтому я не буду здесь вдаваться в подробности. Схема Основная идея здесь заключалась в том, чтобы взять небольшой 8-контактный микроконтроллер для управления 3 светодиодами и двигателем с как можно меньшим источником питания. Использование «рук помощи», как всегда, - хорошая идея. У этих вещей есть два зажима, чтобы удерживать то, над чем вы работаете. Никакой схемы не требовалось, так как реализация очень проста; 8-контактный микроконтроллер (Microchip PIC) с 3 выходными контактами, идущими прямо к светодиодам, и 2 выходными контактами, идущими к 1 двигателю.. Используемые светодиоды представляют собой синий, белый и красный тип для поверхностного монтажа. Используемый мотор был оторван от сломанного внутреннего микрогелекоптера. Аккумулятор (маленький Lipo) также был оторван от вертолета, но я уже планирую использовать другой источник для большего был добавлен переключатель для включения / выключения.

Шаг 2: Код

Код
Код

Код для PIC был создан для оптимизации срока службы батареи и использования множества случайных «событий». Для того, чтобы батарея прослужила как можно дольше, схема должна была использовать наименьшее количество энергии, которое я мог себе представить, сохраняя при этом живую идею.. Итак, я решил уменьшить начальную активность до 1 светодиодной вспышки или движения двигателя каждые 6 секунд. Код имеет 12 случайных «действий», от включения 1 светодиода, включения двигателя на разные периоды времени или направления до случайного состояния ожидания. События различаются от 3 до более 40 секунд в зависимости от сгенерированного случайного события. КОД; ============================= ==================================================; Контроллер диска;; -----------; Vcc-> | 1 8 | <-Vss; MGPIO5 | 2 7 | GPIO0 -LED1; MGPIO4 | 3 6 | GPIO1 -LED2; GPIO3-> | 4 5 | GPIO2 -LED3; -----------;; ===================================== ==========================================; История изменений и примечания:; Начальный заголовок V1.0, код 19.05.09;;; (C) 5/2009; Этот код может использоваться для личного обучения / применения / модификации.; Любое использование этого кода в коммерческих продуктах нарушает данный выпуск бесплатного программного обеспечения.; По вопросам / комментариям обращайтесь к магу схемы dot на yahoo dot com.; ------------------------------------------------ ------------------------------- # include P12C672. INC; ============= ================================================== ================; Определяет; ------------------------------------------------ -------------------------------; ================== ================================================== ===========; Данные;------------------------------------------------ -------------------------------; Переменная хранения времениscount1 equ 20 count2 equ 21 delay equ 22Randlo equ 23Randhi equ 24Wtemp equ 25Temp2 equ 26rand equ 27count3 equ 28; ========================== ================================================== ===; Сбросить векторы;; ПРОВЕРИТЬ КОНФИГУРАЦИЮ. БИТЫ ПЕРЕД ГОРЕНИЕМ !!!; ИНТОСК; MCLR: ВКЛЮЧЕНО; PWRUP: ВКЛЮЧЕНО; ВСЕ ДРУГИЕ: ОТКЛЮЧЕНО !!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 org RESET_ADDR goto start; ===== ================================================== ========================; Начните здесь!;---------------------------------------------- ---------------------------------Начните; Настроить порты ввода / вывода bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08 '; RA Outputs, 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 сек. вызов дебаунса; Устранение неполадок при вызове за 0,2 секунды; устранение неполадок при вызове при вызове; ========================================; Главный;------------------------------------------------ ------------------------------- основной вызов две секунды; 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 STATUS, Z goto flash1; да. Вызов 0-го movfw rand xorlw 0x01; 1? btfsc STATUS, Z goto flash2; да. Вызов 1-го movfw rand xorlw 0x02; 2? btfsc STATUS, Z goto flash3; да. Вызов 2-го movfw rand xorlw 0x03; 3? btfsc STATUS, Z goto flashall; да. Вызов 3-го movfw rand xorlw 0x04; 4? btfsc STATUS, Z goto movels; да. Вызов 4-го movfw rand xorlw 0x05; 5? btfsc STATUS, Z goto movell; да. Вызов 5-го movfw rand xorlw 0x06; 6? btfsc STATUS, Z goto movers; да. Вызов 6-го movfw rand xorlw 0x07; 7? btfsc STATUS, Z goto moverl; да. Вызов 7-го movfw rand xorlw 0x08; 8? btfsc STATUS, Z goto moveburst; да. Вызов 8-го movfw rand xorlw 0x09; 9? btfsc STATUS, Z goto Wait1; да. Вызов 9-го movfw rand xorlw 0x0A; А? btfsc STATUS, Z goto Wait2; да. Вызов Ath movfw rand xorlw 0x0B; Б? btfsc STATUS, Z goto Wait3; да. Bth goto ничего не называть; 1/4 времени, ничего не делать в течение 10 секунд. 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 вызова 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 вызовов debounce call debounce bcf GPIO, 4 goto mainmoverbcf 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 дребезга вызовов; двигаться вправо 3 раза короткими очередями. bcf GPIO, 5 противодействовать вызову, отзвонить от звонка, bsf GPIO, 5 отзвонить, отзвонить, отзвонить, bcf GPIO, 5, отзвонить, отзвать, позвонить, дребезг, bsf GPIO, 5, отзвонить, вызовить, bcf GPIO, 5, отзвонить, отзвонить, отзвать, вызвать дребезг, вызвать дребезг, bsf GPIO, 4; двигаться влево 3 раза короткими очередями. bcf GPIO, 5 противодействующих вызовов, дребезга вызовов, bcf GPIO, 4 дребезга вызовов, дребезга вызовов, bsf GPIO, 4 дребезга вызовов, дребезга вызовов, bcf GPIO, 4 дребезга вызовов, дребезга вызовов, bsf GPIO, 4 дребезга вызовов, дребезга вызовов, bcf GPIO, 4 дребезга вызовов, дребезгов вызовов, 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 call 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 call pon_wait goto mainWait3; Подождите 4 секунды вызов twosec call twosec goto mainnothing movlw.50; Задержка на 10 секунд Всего movwf count3nothing_loop movlw.255; Задержка на 2/10 секундный дребезг. movwf count2 call pon_wait decfsz count3, F goto nothing_loop goto main; ===================================== ==========================================; 2 секунды ожидания; ---------------------------------------------- --------------------------------- двухсекундный movlw.10; Задержка на 2 секунды Всего movwf count3twosec_loop movlw.255; Задержка на 2/10 секундный дребезг. movwf count2 вызов pon_wait decfsz count3, F goto twosec_loopreturn; ======================================= ========================================; Сигнал устранения дребезга; 4 цикла на загрузку и вызов, 2 цикла на возврат.; 4 МГц Tc:: count2 = 255 -> 0,2 с; -------------------------------------- ----------------------------------------- debounce movlw.127; Задержка на 1/10 секунды дребезга. movwf count2 call pon_wait return; -------------------------------------------- -----------------------------------; 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 8-контактный микрочип (PIC) 3 светодиода SMT (синий, красный, белый) 1 Двигатель от микровертолета внутри помещения 1 Батарея LIPO от того же вертолета. 1 выключатель питания 1 деревянный дюбель 2,5 мм (длиной 2 дюйма) 2 редкоземельных магнита 1 мм

Шаг 4: сборка

Строить
Строить

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

Рекомендуемые: