PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : schrittmotor mit atmega ansteuern



sahra
31.03.2010, 12:55
hallo,
ich habe 2 Platinen gebastelt, eine mit atmega88 und die andere mit L297/L298 und möchte einen Schrittmotor zu laufen bringen, aber ich weiss nicht wo ic anfangen soll:
ich habe CW/CCW mit 5 V angeschloßen und für enable habe ich 1 gegeben, und ich habe den Takt mit Ppin1(OC1A) angeschloßen, und das habe ich mit pwm timer progrmmiert.
aber das hat nicht funktionniert...

Bääääär
31.03.2010, 13:40
Hmm, vllt. ein paar mehr Informationen? Dann könnte man mehr sagen.

Unter Umständen ist der Takt zu schnell?! Also mal manuell einen Takt geben.
Was passiert denn überhaupt? Wenn du den Motor nicht bewegst (also keinen Takt anlegst), dann sollte er dennoch "fest" sein, sprich: Du musst merken, dass da Saft auf den Spulen ist und es schwerer ist, den Motor von Hand zu drehen. Wenn das nicht geht, dass liegt dein Fehler schon irgendwo im Aufbau deiner Schaltung.

Wie gesagt, ein paar Infos wären hilfreich, sonst kann man nur raten. Bilder?! Quellcode?! Welcher uC/Motor?

Bääääär

sahra
01.04.2010, 09:04
Wie gesagt, ein paar Infos wären hilfreich, sonst kann man nur raten. Bilder?! Quellcode?! Welcher uC/Motor?

guten Morgen,
ich habe einen Schrittmotor von Nanotec:
Type 4H4018L0502, 2,9V und 1,7A, und habe ihn mit L297/L298 angeschloßen, und wöllt ihn mit atmega88 ansteueren, jetzt bekomme ich einen Kurzschluß wenn ich den Motor mit L298 anschließe.

MFG sahra

ThomasD
01.04.2010, 09:24
Hallo,

hast du ein Ohmmeter zur Hand, dann versuche mal die Wicklungen durch zu messen. Leider finde ich bei Nanotec kein Datenblatt zu deinen Motor, wie viele Drähte kommen den aus dem Motor?
Woran erkennst du das du einen Kurzschluss hast, wird etwas warm oder geht eine Sicherung kaputt?
Ich habe hier ein Testprogramm für den ATMega8, ist zwar recht unschön Programmiert, läuft aber für einen Test.

Schöne Grüße
Thomas

sahra
01.04.2010, 09:33
[quote="ThomasD"]Hallo,

hast du ein Ohmmeter zur Hand, dann versuche mal die Wicklungen durch zu messen.
wie viele Drähte kommen den aus dem Motor?
4, also Bipolar
Woran erkennst du das du einen Kurzschluss hast, wird etwas warm oder geht eine Sicherung kaputt?
mein Netz Gerät verliert die Spg, der geht von 36V auf 0V und bipt es.

ThomasD
01.04.2010, 09:52
Hallo,

durch falsches anschließen des Motors kann man eigentlich keinen Kurzschluss verursachen, der Fehler muss also wo anders liegen, mit wenige Spannung hast du es sicher schon mal probiert.
Ich habe bei meiner Steuerung an die Pins wo der Motor angeschlossen wird noch 4 LED's angebaut damit ich kontrollieren kann ob die Schritte richtig ausgegeben werden.

Schöne Grüße
Thomas

sahra
01.04.2010, 09:57
ich habe jetzt keinen Kurzschluß, sondern nur schrikliches Bip, der Motor bipt sehr laut.
Ich habe hier ein Testprogramm für den ATMega8, ist zwar recht unschön Programmiert, läuft aber für einen Test.
kannst du mir das Testprogramm schicken.
danke
MFG
Sahra

sahra
01.04.2010, 09:59
ich habe jetzt keinen Kurzschluß, sondern nur schrikliches Bip, der Motor bipt sehr laut.
Ich habe hier ein Testprogramm für den ATMega8, ist zwar recht unschön Programmiert, läuft aber für einen Test.
kannst du mir das Testprogramm schicken.
danke
MFG
Sahra
sorry nicht das Motor,der bipt sondern mein Netz Gerät

ThomasD
01.04.2010, 10:10
Hallo
hier mal der Code.



.include "m8def.inc"
; Motor dreht abwechselnt vorwärts und rückwärts
; Anschlüße Port B
; PB0 Takt
; PB1 Drehrichtung
; PB2 Enable
; PB3 H/F
; Alle Anderen nicht belegt.

.def temp0 = r16
.def temp1 = r17
.def temp2 = r18
.def temp3 = r19
.def temp4 = r20
.def temp5 = r21

.org 0x0000

rjmp start ; Reset Handler

start:
ldi temp0, 0xFF
ldi temp1, 0x00
ldi temp2, 0x00
ldi temp3, 0x00
ldi temp4, 0x00
ldi temp5, 0x00
out DDRB, temp0
ldi temp0, 0xFE
out PORTB, temp0
; cbi PortB, 3 ; Halb oder Voll Schritt


output:
sbic PortB, 0 ; Überspringe den nächsten Befehl, wenn das Bit 0 im Port gelöscht ist
rjmp ClrBitNow ; Springe zu ClrBitNow
sbi PortB, 0 ; Setze Bit 0 in PortB
rjmp Delay ; Springe BitReady
ClrBitNow:
cbi PortB, 0
Delay:
inc temp1
cpi temp1, 250 ; Drehgeschwindigkeit; größerer wert gleich langsamer
brne Delay
clr temp1
inc temp2
cpi temp2, 6 ; Drehgeschwindigkeit; größerer wert gleich langsamer
brne Delay
clr temp2
inc temp5
cpi temp5, 1 ; Drehgeschwindigkeit; größerer wert gleich langsamer
brne Delay
clr temp5
inc temp3
cpi temp3, 200 ; Fahrweg wie lang der motor Drehen soll.
brne output
clr temp3
inc temp4
cpi temp4, 1 ; Fahrweg wie lang der motor Drehen soll.
brne output
clr temp4
sbic PORTB, 1
rjmp ClrBitNow2 ; Springe zu ClrBitNow
sbi PortB, 1 ; Setze Bit 0 in PortB
rjmp output ; Springe BitReady
ClrBitNow2:
cbi PortB, 1
rjmp output



Schöne Grüße
Thomas

sahra
01.04.2010, 11:25
[quote="ThomasD"]Hallo
hier mal der Code.



.include "m8def.inc"
; Motor dreht abwechselnt vorwärts und rückwärts
; Anschlüße Port B
; PB0 Takt
; PB1 Drehrichtung
; PB2 Enable
; PB3 H/F
; Alle Anderen nicht belegt.

.def temp0 = r16
.def temp1 = r17
.def temp2 = r18
.def temp3 = r19
.def temp4 = r20
.def temp5 = r21

.org 0x0000

rjmp start ; Reset Handler

start:
ldi temp0, 0xFF
ldi temp1, 0x00
ldi temp2, 0x00
ldi temp3, 0x00
ldi temp4, 0x00
ldi temp5, 0x00
out DDRB, temp0
ldi temp0, 0xFE
out PORTB, temp0
; cbi PortB, 3 ; Halb oder Voll Schritt


output:
sbic PortB, 0 ; Überspringe den nächsten Befehl, wenn das Bit 0 im Port gelöscht ist
rjmp ClrBitNow ; Springe zu ClrBitNow
sbi PortB, 0 ; Setze Bit 0 in PortB
rjmp Delay ; Springe BitReady
ClrBitNow:
cbi PortB, 0
Delay:
inc temp1
cpi temp1, 250 ; Drehgeschwindigkeit; größerer wert gleich langsamer
brne Delay
clr temp1
inc temp2
cpi temp2, 6 ; Drehgeschwindigkeit; größerer wert gleich langsamer
brne Delay
clr temp2
inc temp5
cpi temp5, 1 ; Drehgeschwindigkeit; größerer wert gleich langsamer
brne Delay
clr temp5
inc temp3
cpi temp3, 200 ; Fahrweg wie lang der motor Drehen soll.
brne output
clr temp3
inc temp4
cpi temp4, 1 ; Fahrweg wie lang der motor Drehen soll.
brne output
clr temp4
sbic PORTB, 1
rjmp ClrBitNow2 ; Springe zu ClrBitNow
sbi PortB, 1 ; Setze Bit 0 in PortB
rjmp output ; Springe BitReady
ClrBitNow2:
cbi PortB, 1
rjmp output




danke, ich werde das testen

sahra
01.04.2010, 11:35
[quote="ThomasD"]Hallo,

mit wenige Spannung hast du es sicher schon mal probiert.

ja mit wenige Spg hört das Netzgerät zu bipen auf.
MFG
Sahra

sahra
12.04.2010, 11:36
Hallo zusammen,
kann man einen Schrittmotor über L297/L298 mit einem Joystick oder eine Poti ansteuern. ich will die Geschwindigkeit und die Richtung während des Antriebs des Motors ändern.
VG sahra

Kampi
12.04.2010, 11:49
Jo kannst du. Du ließt einfach die Spannung des Joysticks aus die bei einem Schwenker erzeugt wird und wandelst diese per Controller in ein Signal für den Motortreiber um um diesen dann anzusteuern (zum Beispiel indem du den Duty Cycle erhöhst oder verminderst wenn du den Motor mit einem PWM-Signal ansteuerst aber ich weiß nicht ob das bei einem Schrittmotor auch geht).

ThomasD
12.04.2010, 13:37
Hallo,

ohne µC wird das nicht gehen, und mit müsstest du dir einen Spannung zu Frequenz Wandler Programmieren. Vielleicht gibt es da schon irgend wo Beispiel.

Mit PWM Kann man da nichts machen.

Schöne Grüße
Thomas