Inhaltsverzeichnis:

Warhammer Sorcerer auf Disc mit magnetisch gekoppeltem Motor und LEDs - Gunook
Warhammer Sorcerer auf Disc mit magnetisch gekoppeltem Motor und LEDs - Gunook

Video: Warhammer Sorcerer auf Disc mit magnetisch gekoppeltem Motor und LEDs - Gunook

Video: Warhammer Sorcerer auf Disc mit magnetisch gekoppeltem Motor und LEDs - Gunook
Video: Дневник хранящий жуткие тайны. Переход. Джеральд Даррелл. Мистика. Ужасы 2024, Juli
Anonim
Warhammer Sorcerer auf Disc mit magnetisch gekoppeltem Motor und LEDs
Warhammer Sorcerer auf Disc mit magnetisch gekoppeltem Motor und LEDs

Möchten Sie Ihren Kunstprojekten PIZZAZZ hinzufügen? Motoren und LEDs sind der richtige Weg!

Bist du ein Warhammer-Gaming-Enthusiast? Das ist für dich! Dies ist mein Tzeentch Sorcerer Lord auf Disc, überarbeitet mit zusätzlichen 3 LEDs, einem Motor, einem Mikro (PIC) und einer kleinen Batterie. Dieses anweisbare deckt den abgeschlossenen Build und die Probleme ab.

Schritt 1: Schaltung

Schaltkreis
Schaltkreis

Zuerst fragen Sie sich vielleicht, was das ist. Dies ist meine maßgeschneiderte Miniatur für ein Tabletop-Kriegsspiel namens Warhammer. Der Typ an der Spitze ist ein normales Modell vom Hersteller des Spiels (Gamesworkshop), aber die Scheibe und die Basis gehören mir. Der Build für ihn ist das Thema eines anderen anweisbaren, also werde ich hier nicht darauf eingehen. Die Grundidee hier war, ein kleines 8-poliges Mikro zu nehmen, um 3 LEDs und einen Motor mit einer möglichst kleinen Versorgung zu steuern. Der Einsatz der "Helfenden Hände" ist wie immer eine gute Idee. Diese Dinge haben zwei Clips, um alles zu halten, woran Sie arbeiten. Es war kein Schaltplan erforderlich, da die Implementierung sehr einfach ist; Ein 8-Pin-Mikro (Microchip PIC) mit 3 Ausgangspins direkt zu LEDs und 2 Ausgangspins zu 1 Motor. Die verwendeten LEDs sind ein blauer, weißer und roter Oberflächenmontagetyp. Der verwendete Motor wurde von einem kaputten Indoor-Mikrohubschrauber gerissen. Der Akku (kleiner Lipo) wurde auch vom Heli gerissen, aber ich plane bereits, eine andere Quelle für mehr zu verwenden power. Ein Schalter für On/Off wurde hinzugefügt.

Schritt 2: Code

Code
Code

Der Code für den PIC wurde erstellt, um die Batterielebensdauer zu optimieren und viele zufällige "Ereignisse" zu verwenden. Damit die Batterie so lange wie möglich hält, musste die Schaltung so wenig Strom wie möglich verbrauchen, während die Idee am Leben blieb. Also beschloss ich, die anfängliche Aktivität auf durchschnittlich 1 LED-Blitz oder Motorbewegung alle 6 Sekunden zu reduzieren. Der Code hat 12 zufällige "Aktivitäten", die vom Einschalten einer LED über das Einschalten des Motors für verschiedene Zeiträume oder Richtungen bis hin zu einem zufälligen Wartezustand reichen. Ereignisse variieren zwischen 3 Sekunden und mehr als 40 Sekunden, basierend auf dem zufällig generierten Ereignis. CODE;============================ ================================================;Disc-Controller;; ------------; Vcc-> |1 8| <-Vss; MGPIO5 |2 7| GPIO0 -LED1; MGPIO4 |3 6| GPIO1 -LED2; GPIO3-> |4 5| GPIO2-LED3; ------------;;==================================== =========================================; Revisionshistorie & Hinweise:; V1.0 Initialer Header, Code 19.05.09;;;(C) 5/2009;Dieser Code darf zum persönlichen Lernen/Anwenden/Ändern verwendet werden.;Jede Verwendung dieses Codes in kommerziellen Produkten verstößt gegen diese Freeware-Version.;Bei Fragen/Kommentaren wenden Sie sich an Circuit dot mage at yahoo dot com.;------------------------------------------------ ------------------------------------------#include P12C672. INC;============= ================================================ ================; Definiert;------------------------------------------------ --------------------------------;================== ================================================ ===========; Daten;------------------------------------------------ ------------------------------------------; Zeitmessvariablencount1 equ 20 count2 equ 21 delay equ 22Randlo equ 23Randhi equ 24Wtemp equ 25Temp2 equ 26rand equ 27count3 equ 28;========================== ================================================ ===; Vektoren zurücksetzen;; KONFIG. PRÜFEN. BITS VOR DEM BRENNEN!!!; INTOSC; MCLR: AKTIVIERT; PWRUP: AKTIVIERT; ALLE ANDEREN: DEAKTIVIEREN!!;;------------------------------------------------------ -------------------------------------RESET_ADDR EQU 0x00 org RESET_ADDR zum Start;===== ================================================ ========================; Fang hier an!;---------------------------------------------- ---------------------------------Anfang; E/A-Ports konfigurieren bcf STATUS, RP1 bsf STATUS, RP0 movlw h'08';RA Ausgänge, PGIO3 immer Eingang tris GPIO movlw h'07'; GPIO auf Digitalmodus setzen movwf ADCON1; Setze internen Timer movlw h'CF'; Tmr0 Interne Quelle, Vorskalierung TMR0 1:256 movwf OPTION_REG movlw h'00' movwf INTCON; TMR0-Interrupts deaktivieren, bcf STATUS, RP0; Register initialisieren clrf GPIO clrf count1 clrf count2 movlw 045h movwf Randlo movlw 030h movwf Randhi;warte 1 Sek. Entprellung aufrufen; 0,2 Sek. Anrufentprellung Anrufentprellung Anrufentprellung Anrufentprellung;====================================== ========================================; Hauptsächlich;------------------------------------------------ ------------------------------------------Hauptaufruf zweisek; 2 Sek. min zwischen jeder Aktion 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 down to 7 andlw 0x0F movwf rand; zufällige Routineauswahl xorlw 0x00; 0? btfsc-STATUS, Z goto flash1; Jawohl. Aufruf 0. movfw rand xorlw 0x01; 1? btfsc-STATUS, Z goto flash2; Jawohl. 1. movfw rand xorlw 0x02 aufrufen; 2? btfsc-STATUS, Z goto flash3; Jawohl. 2. movfw rand xorlw 0x03 aufrufen; 3? btfsc STATUS, Z goto flashall; Jawohl. 3. movfw rand xorlw 0x04 aufrufen; 4? btfsc STATUS, Z goto movels; Jawohl. 4. movfw rand xorlw 0x05 aufrufen; 5? btfsc STATUS, Z goto movell; Jawohl. 5. movfw rand xorlw 0x06 aufrufen; 6? btfsc STATUS, Z Goto-Mover; Jawohl. 6. movfw rand xorlw 0x07 aufrufen; 7? btfsc STATUS, Z goto moverl; Jawohl. Aufruf 7. movfw rand xorlw 0x08; 8? btfsc STATUS, Z goto moveburst; Jawohl. 8. movfw rand xorlw 0x09 aufrufen; 9? btfsc-STATUS, Z goto Wait1; Jawohl. Rufen Sie 9. movfw rand xorlw 0x0A auf; EIN? btfsc STATUS, Z goto Wait2; Jawohl. Call Ath movfw rand xorlw 0x0B; B? btfsc STATUS, Z goto Wait3; Jawohl. Rufen Sie Bth an, um nichts zu erreichen; 1/4 der Zeit, 10 Sekunden lang nichts tun.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 Anrufentprellung Anrufentprellung bcf GPIO, 0 bcf GPIO, 1 bcf GPIO, 2 goto mainmovels bsf GPIO, 4 bcf GPIO, 5 Anrufentprellung bcf GPIO, 4 goto mainmovell bsf GPIO, 4 bcf GPIO, 5 Anrufentprellung Anrufentprellung bcf GPIO, 4 goto mainmover bcf GPIO, 4 bsf GPIO, 5 Anrufentprellung bcf GPIO, 5 goto mainmoverl bcf GPIO, 4 bsf GPIO, 5 Anrufentprellung Anrufentprellung bcf GPIO, 5 goto mainmoveburst bcf GPIO 4 bsf GPIO, 5 Call Debounce; 3 Mal nach rechts bewegen, kurze Stöße. bcf GPIO, 5 Anrufentprellung Anrufentprellung bsf GPIO, 5 Anrufentprellung Anrufentprellung bcf GPIO, 5 Anrufentprellung Anrufentprellung bsf GPIO, 5 Anrufentprellung bcf GPIO, 5 Anrufentprellung Anrufentprellung Anrufentprellung Anrufentprellung bsf GPIO, 4; 3 Mal nach links bewegen, kurze Stöße. bcf GPIO, 5 Anrufentprellung Anrufentprellung bcf GPIO, 4 Anrufentprellung Anrufentprellung bsf GPIO, 4 Anrufentprellung Anrufentprellung bcf GPIO, 4 Anrufentprellung Anrufentprellung bsf GPIO, 4 Anrufentprellung Anrufentprellung bcf GPIO, 4 Anrufentprellung Anrufentprellung goto mainWait1; Warte 1 Sekunden movlw.255; Verzögerung für 2/10 Sekunden Entprellung. movwf count2 call pon_wait movlw.255; Verzögerung für 2/10 Sekunden Entprellung. movwf count2 call pon_wait movlw.255; Verzögerung für 2/10 Sekunden Entprellung. movwf count2 call pon_wait movlw.255; Verzögerung für 2/10 Sekunden Entprellung. movwf count2 call pon_wait movlw.255; Verzögerung für 2/10 Sekunden Entprellung. movwf count2 call pon_wait goto mainWait2; Warten Sie 0,6 Sekunden movlw.255; Verzögerung für 2/10 Sekunden Entprellung. movwf count2 call pon_wait movlw.255; Verzögerung für 2/10 Sekunden Entprellung. movwf count2 call pon_wait movlw.255; Verzögerung für 2/10 Sekunden Entprellung. movwf count2 call pon_wait goto mainWait3; 4 Sekunden warten Zweisek aufrufen Zweisek aufrufen Gehe zu mainnothing movlw.50; Verzögerung für 10 Sekunden Gesamt movwf count3nothing_loop movlw.255; Verzögerung für 2/10 Sekunden Entprellung. movwf count2 call pon_wait decfsz count3, F goto nothing_loop goto main;==================================== =========================================; 2 Sekunden warten;---------------------------------------------------------- ---------------------------------twosec movlw.10; Verzögerung für 2 Sekunden Gesamt movwf count3twosec_loop movlw.255; Verzögerung für 2/10 Sekunden Entprellung. movwf count2 call pon_wait decfsz count3, F goto twosec_loopreturn;====================================== ========================================; Entprellsignal; 4 Zyklen zum Laden und Aufrufen, 2 Zyklen zum Zurückkehren.; 4Mhz Tc:: count2=255 -> 0,2 Sek;------------------------------------- ------------------------------------------entprellen movlw.127; Verzögerung für 1/10 Sekunde Entprellung. movwf count2 call pon_wait return;-------------------------------------------------------- -----------------------------------; count1=255d:: 775 Zyklen auf 0, + 3 Zyklen auf Rückgabe.;-------------------------------- ----------------------------------------------------------pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend

Schritt 3: Teile

Teile
Teile

Dieses Bild zeigt, wie klein ich die Komponenten bekommen musste, um unter diesen Kerl zu passen. 1 8-Pin-Mikrochip (PIC) 3 SMT-LEDs (Blau, Rot, Weiß) 1 Motor von einem Indoor-Mikroheli. 1 Netzschalter1 2,5-mm-Holzdübel (2 lang)2 1-mm-Seltenerdmagnete

Schritt 4: Erstellen

Bauen
Bauen

Zuerst wurde ein Massenschwerpunkt für das Ganze gefunden. Dies wäre der Bereich der Motorhalterung. Der Motor wurde mit Goop namens Greenstuff (verwendet in der Miniaturenwelt) montiert. Die 3 LEDs waren vorverdrahtet. Das Mikro wurde in einem abgelegenen Bereich, nicht zu nah am Rand, mit Sekundenkleber geklebt. Der Netzschalter und der Akku wurden montiert, um das (kleine) Gewicht des Mikros auszugleichen, um das Gleichgewicht zu halten. Die Drähte wurden angelötet. Der wirklich coole Teil kommt als nächstes. Sekundenkleber auf die Spitze des Rotorzahnrads am Motor (dies würde später nach unten zeigen) wurde ein Seltenerdmagnet montiert. Ein kurzer (~ 2 ) langer Holzdübel mit 2,5 Durchmesser wurde (mit Hand und Bohrer) für ein 5 mm tiefes Loch mit 1 mm Durchmesser ausgebohrt. In dieses Loch wurde ein weiterer 1 mm Seltenerdmagnet geklebt. Jetzt ist meine Basis für die Figur magnetisch an den Rotor des Motors gekoppelt. Wenn sich der Motor dreht, dreht er von seinem Schwerpunkt aus den gesamten oberen Teil der Figur. Ein roter Strohhalm wurde geschnitten, um den Motor und den Holzdübel zu bedecken. Dies wurde vorgemessen, bevor der Holzdübel war montiert, um sicherzustellen, dass es übereinstimmt. Der LIPO-Akkuausgang zeigt derzeit 3,4 V ohne Aufladen an. Dies reicht aus, um den Motor zu drehen und die LEDs zu beleuchten, aber mit der auf der Basis montierten Figur dreht er sich nicht selbst. Meine nächste Version wird Verwenden Sie eine 12V-Fernbatterie mit 5V-Regler für mehr Leistung!

Empfohlen: