PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pulserzeugung in Protobed StepM 297 298



timo1105
04.05.2007, 10:49
Hallo,

Ich habe eine Frage bezüglich der Pulserzeugung bei der Schrittmotorsteuerung Protobed Stemp_M 297 298.

Ich verstehte die Funktionen "Enable,Half/Full,CW/CCW" nur was ist jetzt mit der Geschwindigkeit?!

An die Karte schließe ich einen Motor an, auf dem 12 DC angegeben ist. Stepangle= 3,75°.

Irgendwie habe ich verstanden, dass die Geschwindigkeit abhängig von der Spannung ist. Jedoch lese ich jetzt, dass es auf die "geschwindigkeit" des Pulses ankommt?

Könnt ihr mir weiterhelfen?
mfg
Timo

Yossarian
04.05.2007, 12:15
Hallo
Mit jedem Takt macht der Motor einen Schritt.Hohe Taktfrequenz=hohe Schrittfrequenz.
Mit freundlichen Grüßen
Benno

timo1105
04.05.2007, 16:36
hi!

Ja, wie gesagt, das weiß ich ja schon. Nur wie kann ich diesen Takt erzeugen?
mfg
timo

PcVirus
05.05.2007, 14:17
Hi,
ich habe selber noch nicht mit schrittmotoren gearbeitet.(sind bestellt)
Aber ich denke, dass du dir eine Funktion schreiben kannst die einen Port mit einer kleinen Verzögerung immer zwischen 0 und 5 V herschaltet, z.B. in einer for schleife.
Als Parameter für die Funktion kann man dann die zumachenden schritte übergeben.
MFG PcVirus

darwin.nuernberg
05.05.2007, 15:12
Entweder mit einer PWM (wenn da der Motor mit macht) oder einfach mit einer Schleife.

Jetzt kommt es darauf an mit was Du programmierst.

Ein Bascom-Beispiel ist ja dabei,
auch noch recht einfach gehalten:


Die für die Schritte verantwortliche Routine:


Function Mstep(byval Wert As Byte)as Byte ' Funktion für Einzelschritt
Motorport = Motorport Or &B01000000
Waitms Motorpulsedelay
Motorport = Motorport And &B10111111
Mstep = 0
End Function


Erst mal wird das 6. Bit am Port gesetzt (eine Bitweise verODERung)
dann un eine definiere Zeit gewartet (Motorpulsedelay)
und zuletzt wir das 6. Bit am Port wieder gelöscht (eine Bitweise verUNDung) *grausamerworterfindungvonmir*


So jetzt hat man eine Puls für einen einzelnen Schritt erzeugt.
jedesmal wenn diese Funktion aufgerufen wird passiert dies.

Nun muss nur noch der Motor VORHER enabled werden,
die Drehrichtung (CW/CCW) und der Schrittmodus definiert sein.

Klar soweit?


Nachtrag:

' INFO der einzelnen Port BIT's ' Step
' | CW/CCW
' | | Half/Full
' | | | Enable (Bestromung)
' | | | |
' &B00000000

timo1105
06.05.2007, 09:01
Hi!
danke für die Info.
Ich programmiere mit Bascom, hatte ich vergessen zu sagen.
Ich werde erstmal die Steuerung komplett zusammenlöten und dann schaue ich mal was passiert wenn ich das Beispielprogramm lade.
mfg
timo

darwin.nuernberg
06.05.2007, 13:10
Naja Du musst aber auch darauf achten, an welchen Port Du dann die Schaltung anschliesst.

Es passiert wohl garnix wenn Du den falschen Port verwendest,
aber dann kannst Du ja den Programm-Source anpassen.

timo1105
07.05.2007, 10:06
Hallo und danke für die Antworten,

klar, das habe ich gemacht. habe alles an portd.7-portd.4 angeschlossen.
Habe jetzt mal ein HI an Enable gelegt und der Motor blockiert...schon mal was positives.
Habe ich das richtig verstanden, dass wenn ich einen immer schnelleren Puls erzeuge, der Motor schneller dreht aber an Kraft verliert?
wie wird dann die nötige Spannung aber die gleichbleibende Stromstärke bereitgestellt?
Ich habe gemerkt, dass bei einem HI befehl am Enable eingang genau die Spannung den Motor erreicht, die am Motorspannungeingang vom Netzteil dranhängt?!

Mfg
Timo

timo1105
07.05.2007, 12:26
Hallo nochmal,

Ich habe jetzt mal das beispielprogramm angepasst und ausprobiert.
Der Motor reagiert zwar aber gibt bei "motor in Motion" nur ein summen für eine best. Zeit aus. Danach blockiert er kurz und es geht wieder von vorn los.
Ich habe auch schon alle Möglichkeiten durchprobiert wie man den Motor anschließen kann. Er hat 4 Anschlüsse.

Es kommt mir vor als wenn es ZU kleine Schritte sind?!?!?

Woran kann das liegen?

mfg
timo

Yossarian
07.05.2007, 17:07
Hallo
da gibt es viele Möglichkeiten.
Ist die Taktfrequenz zu hoch, so daß der Motor nicht folgen kann?
Ist der Motorstrom niedrig, so daß das Drehmoment nicht reicht?
Ist der Motor richtig angesclossen?
Fehlt eine Phase?

Mit freundlichen Grüßen
Benno

timo1105
08.05.2007, 10:16
Hi!

Es muss definitiv an der Schaltung liegen. Ich habe sie zu wirr verdrahtet. Hatte alles auf einer Experimentierplatine.
Jetzt löte ich sie nochmal neu und übersichtlicher.

Kann ich eigentlich einen Puls erzeugen der alle 1sek. auf HI geht? macht der motor dann immer einen Schritt egal wie lang die Zeit ist?

Beispiel 1:



do
portd.7=not portd.7
wait 1
loop


Beispiel 2:

$regfile ="m8def.dat"
$crystal = 16000000
ddrd=&b01000000
ontimer1 ontimer1
tccr1a=&b00000000
tccr1b=&00000101 'Quarzfrequ./1024
timsk.toie1= &b000000100
sreg.7=1
'
do
loop
'
ontimer1:
timer1=57723 'voreinstellung um auf 1HZ zu kommen (65535- 7812
portd.6=not portd.6 'prtd.6 invertieren
return

müsste so nicht auch eine Freuquenz von 1HZ herauskommen? Also das der timer bei 1sek. immer ein interrupt auslöst?

Rechnung: 16000000HZ/1024/7812/2 = 1.000064004HZ

Welches Beispiel ist besser und funktioniert es?

mfg
timo

Mech2007
08.05.2007, 11:03
Ich habe die Erfahrung gemacht, dass der Schrittmotor auch einen Mindesttakt hat um einwandfrei zu funktionieren. Darunter stimmt das Drehmoment nicht ! Bei der von mir aus dem Forum zusammengelöteten Version ( inkl. Silizium Dioden WICHTIG !!! ) kann der Schrittmotor bis zu einer Frequenz von ca. 420 Hz, ohne Schrittverlust betrieben werden. darüber hinaus fängt er an Deine oben beschriebenen Fehler aufzuweisen. Hatte auch zweimal löten müssen, da ich die Anschlüsse Sens1 / sens2 und mit Enable A und Enable B verdreht hatte.

Gruß Sven

darwin.nuernberg
09.05.2007, 20:37
Ich habe die Erfahrung gemacht, dass der Schrittmotor auch einen Mindesttakt hat um einwandfrei zu funktionieren.

Ja Schrittmotoren haben je nach Taktgeschwindigkeit und
auch je nach Betriebsart (Vollschritt, Halbschritt, 1/4-, 1/8-, usw. Schritt)
absolut andere Kennlinien.

1/4 Schritt un feiner geht mit dem L297 nicht.

Der TMC222 kann gar keinen Vollschritt, das "gröbste" ist 1/2-Schritt.


Außerdem bedingt der Schrittwinkel auch die max. Drehzahl, glaube ich aus meinen Experimenten herausgefunden zu haben.
Mein Floppymotor hat 0.9° und kann viel schneller drehen als meine 3.6° Mineba's,
dafür haben die Mineba's mehr Drehmoment (bei gleicher Bestromung!!!).



Die wahl des richtigen Motors ist also absolut Anwendungsabhängig.

Yossarian
09.05.2007, 21:19
Hallo

dass der Schrittmotor auch einen Mindesttakt hat um einwandfrei zu funktionieren
Einen Mindesttakt für Schrittmotoren gibt es nicht. Wenn Du willst, kannst Du auch eine Umdrehung im Jahr machen.Allerdings hast Du bei einem 1.8° Motor im Vollschrittbetrieb einen 'unrunden' Lauf übers Jahr.

Mit freundlichen Grüßen
Benno