Guten Morgen,
wie die überschrift schon sagt , würde ich gerne eine einfache ansteuerung realisieren.
hab mich also für das l297 ic entschieden und die vorgefertigte platine dazu "rn-stepp 297"
Also aufgebaut mit spannung versorgt, referenzspannung eingestellt und einen sy42sth47-1206A an die schaltung gebracht. ( http://www.robotikhardware.de/download/schrittmotor_po1206a.pdf ) - Datenblatt.
Er baut auch direkt haltekraft auf. ich bekomme ihn nur nicht zum drehen..
Also die Pinbelegung sieht wie folgt aus :
Pinbelegung
Pin 1 Clock/Takt (bei GND Flanke bewegt sich Motor einen Schritt)
Pin 2 CW/CCW (Drehrichtung, Pullup vorhanden)
Pin 3 RESET (Pullup vorhanden)
Pin 4 CNTL
Pin 5 H/F (Halb- oder Vollschritt, Pullup vorhanden)
Pin 6 Enable (Motor wird durch GND ausgeschaltet, Pullup vorhanden)
Pin 7 SYNC
Pin 8 HOME
Pin 9 GND / Masse
Pin10 Logikspannung +5V (dient zur Versorgung der Schaltung)
wenn ich nun also pin 1 "toggel" müsste sich doch die achse jeweils um einen schritt drehen, oder ?
habe also ein Motorinit2 prog geschreibselt dass das versucht.
ich höre leider nur gefiepse vom motor... :/
wie die überschrift schon sagt , würde ich gerne eine einfache ansteuerung realisieren.
hab mich also für das l297 ic entschieden und die vorgefertigte platine dazu "rn-stepp 297"
Also aufgebaut mit spannung versorgt, referenzspannung eingestellt und einen sy42sth47-1206A an die schaltung gebracht. ( http://www.robotikhardware.de/download/schrittmotor_po1206a.pdf ) - Datenblatt.
Er baut auch direkt haltekraft auf. ich bekomme ihn nur nicht zum drehen..
Also die Pinbelegung sieht wie folgt aus :
Pinbelegung
Pin 1 Clock/Takt (bei GND Flanke bewegt sich Motor einen Schritt)
Pin 2 CW/CCW (Drehrichtung, Pullup vorhanden)
Pin 3 RESET (Pullup vorhanden)
Pin 4 CNTL
Pin 5 H/F (Halb- oder Vollschritt, Pullup vorhanden)
Pin 6 Enable (Motor wird durch GND ausgeschaltet, Pullup vorhanden)
Pin 7 SYNC
Pin 8 HOME
Pin 9 GND / Masse
Pin10 Logikspannung +5V (dient zur Versorgung der Schaltung)
wenn ich nun also pin 1 "toggel" müsste sich doch die achse jeweils um einen schritt drehen, oder ?
habe also ein Motorinit2 prog geschreibselt dass das versucht.
Code:
; Musterprogramm
.nolist ;include-file nicht in Listing
.include "m32def.inc" ;Definitionen für ATmega einbinden
.list ;Listing erstellen
.equ NurMuster = 10
.equ LEDPort = PortB ;.equ für Variablenzuweisungen
.equ LEDPortDirection = DDRB ;.def für Registerzuweisungen
.equ LED_On_Off_Bit = 7
.equ LED_R_L_Bit = 6
.equ LED_Cont_Step_Bit = 5
.equ LED_ADC_Tast_Bit = 4
.equ LED_V1_Bit = 3
.equ LED_V2_Bit = 2
.equ LED_Unused1_Bit = 1
.equ LED_DoStep_Bit = 0
.equ MotorPort = PortC
.equ MotorPortDirection = DDRC
.def akku = r16 ;r16 als Arbeitsregister "akku"
.equ MyCount_A = 255
.equ MyCount_i = 255
.equ CyBitNr = 0
.equ ZBitNr = 1
;********************************************************************************************************************
; Macros
.macro PinTog
sbis @0,@1 ;Pin toggeln
rjmp SetPin ;I/O-Adresse und Pin-Nr. werden
ClrPin: cbi @0,@1 ;an das Macro übergeben
rjmp PinTogX
SetPin: sbi @0,@1
PinTogX:
.endmacro
.macro push_sreg ;SREG auf Stack sichern
in akku,sreg
push akku
.endmacro
.macro pop_sreg ;SREG vom Stack zurückholen
pop akku
out sreg,akku
.endmacro
;********************************************************************************************************************
.cseg ;Beginn des Code-Segmentes
.org 0x0000 ;Interrupt-Vektor für RESET
rjmp Progstart
.org 0x0045 ;Ende der Interrupt-Vektor-Tabelle
;********************************************************************************************************************
;Beginn des Hauptprogrammes
progstart:
ldi akku,LOW(RAMEND) ;Stack initialisieren
out SPL,akku ;Wichtig: Immer Low-Byte zuerst
ldi akku,HIGH(RAMEND)
out SPH,akku
call MotorInit2
call SysInit
loop: ldi akku,NurMuster
loop1: dec akku
brbc ZBitNr,loop1 ; Zu Loop1, wenn Z-Bit nicht gesetzt
PinTog MotorPort,0 ;motorpuls
call delay
jmp loop
;********************************************************************************************************************
Delay:
ldi r20,MyCount_i
ldi r21,MyCount_A
loopa:
loopi:
NOP
NOP
DEC r20
brne loopi
dec r21
brne loopa
ret
;********************************************************************************************************************
;für rn297 stepper und atmega32
;
Motorinit2:
push akku
ldi akku,0xfe
out MotorPortDirection,akku
sbi Motorport, 5 ;enable
sbi Motorport, 1 ;drehrichtung
cbi Motorport, 2 ;reset
nop
nop
nop
sbi MotorPort,2 ;reset
pop akku
ret
;*********************************************************************
;********************************************************************************************************************
;
;SysInit:
; Aufgaben: - LED-Port als Ausgang
; - Alle LEDs aus
; Eingangsgrößen: keine
; Ausgangsgrößen: keine
SysInit:push akku ;Akku nicht zerstören
ser akku ;Alle Bits in akku setzen
out LEDPortDirection,akku ;LED-Port als Ausgang
out LEDPort,akku ;LED "an" würde durch Ausgabe einer Null erreicht.
pop akku
ret
ich höre leider nur gefiepse vom motor... :/