Treiberstufe am C64-Userport mit Steppermotor ....
Suche
Index
FAQ
Kontakt
Zurück

Treiberstufe am C64-Userport

Der C64 verfügt über eine sehr flexible Schnittstelle zur Kommunikation mit der Außenwelt. In diesem kleinen Beispiel wird allerdings nur der biderektionale 8-Bit-Port zur Steuerung eines Verbrauchers verwendet.
Dieser besteht aus einem Stepper-Motor eines defekten 1541-Floppy-Laufwerks. Auf Basis der grundlegenden Schaltung könnten z.B. Relais geschaltet werden. Mit einem zusätzlichen 74LS574 und Hinzuziehen von 2 Steuerleitungen, sind leicht bis zu 16 Kanäle, also 16 Relais oder 4 unipolare Stepper-Motoren möglich.
Die Schaltung

Rechts im vergrößerbaren Bild sieht man die einfache und robuste Schaltung. Der Opto-Koppler trennt den Steuer- und Lastkreis. So kann dem steuernden Rechner nichts mehr passieren.
Die Treiberstufe besteht aus einem NPN-Transistor und einer Freilaufdiode. Letztere schützt den Transistor vor induktiven Lasten und muss bei Kleintransitoren eingesetzt werden ! - Bei vielen leistungsstarken Transistoren ist diese Diode integriert. Bitte immer das passende Datenblatt konsultieren.
Die Belastungsgrenzen von Transistor und Diode, sollten immer die des Verbrauchers deutlich überschreiten.


  1541-Steppermotor-Stecker

  Leitung            Userport (Beispiel)
  rot      -- 12V+  
  rot      -- 12V+
  gelb     -- Q0     PB0
  orange   -- Q1     PB1
  schwarz  -- Q2     PB2  
  braun    -- Q3     PB3 

  Die 12V+ (500mA reichen aus) werden aus einem externen Netzteil gespeist. 

  Stepper-Sequenzen

  1,4,2,8 und 9,5,6,10 für Vollschritt in beide Richtungen. Halbschritt: _1_,5,_4_,6,_2_,10,_8_,9

  Die im Halbschritt mit _ _ markierte Sequenz ist bei umgekehrter Richtung auszutauschen.




Ein erster Test mit einem kleinen Basic-Programm. Mit Assembler wäre es ein 2 Sekunden Video geworden.
!to"step.prg",cbm
;---------------------------------------------
; a short example for driving a stepper-motor
; with the C64-Userport ; 09.Mai.2010 
; http://www.cbmhardware.de 
; X-ASM: ACME
;---------------------------------------------

*=$1000
         lda #15
         sta 56579    ; DDR PB0-3 out
         ldy #00 
j1:      ldx #00
j0:      lda steps,x  ; get step-sequence
         sta 56577
         jsr delay    ; waste time
         inx   
         cpx #4       
         bne j0
         iny
         cpy #50       ; 200 steps * 1.8 = 360 degrees
         bne j1 
         lda #00
         sta 56577     ; power off
         rts  

steps:
!byte $01,$04,$02,$08  ;full step mode


delay:    txa           ; waste a lot of CPU-time
          pha           ; count to 768 
          tya 
          pha
          ldy #00        
j3:       ldx #00       ; here maybe some speed-optimization possible 
j2:       inx           ; but be warned: the step-motor will stuck
          bne j2        ; if the signal is switched to fast
          iny
          cpy #3
          bne j3  
          pla
          tay
          pla
          tax
          rts

 

 

Letzte Änderung: 2019-01-03 11:49:07
  Rubrik:  C64
Rubriken-Übersicht
 209 Besucher online 

Valid XHTML 1.0 Transitional Valid CSS!