PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schrittmotor "spinnt"



ouwenx
19.10.2007, 14:30
Hallo zusammen,

Ich bin ein ziemlicher einsteiger beim thema roboter. für meine maturarbeit will ich selber einen kleinen roboter bauen, der nicht über viele funktionen verfügen muss: lediglich hinderniss ausweichen und einer person folgen.

Nun stimmt was mit dem schrittmotor nicht. ich habe versucht im forum nach ähnlichen problemen zu suchen, aber keines stimmt so richtig mit meinem überrein. und nach 2 stunden ergebnisloses rumfummeln brauche ich professionnelle hilfe [-o<

jetzt zum problem:

ich besitze ein RN-Control 1.4 und den schrittmotor Sanyo 103-770-1640. Als stromversorgung habe ich ein Li-Ion-akku mit 7.4V und 2.35 Ah.

den motor habe ich an die 4 motorstecker neben der stromversorgung eingeklemmt, und zwar so: weiss/blau in 1; blau in 2; rot in 3 und weiss/rot in 4. wenn ich mich nicht irre entspricht das weiss/blau portc.6 ; blau portc.7 ; rot portb0 und rot/weiss portb1

programmiert habe ich in basic mit hilfe von bascom. Hier ist das programm. es ist vielleicht bisschen "primitiv" aber für den vollschrittmodus sollte es jedoch reichen, schliesslich teste ich ja nur, ob der motor richtig läuft.


$regfile = "m32def.dat"
$framesize = 64
$swstack = 64
$hwstack = 64
$crystal = 16000000
$baud = 9600


Config Pinb.0 = Output
Config Pinb.1 = Output

Config Pinc.6 = Output
Config Pinc.7 = Output

A Alias Portc.6
B Alias Portc.7
C Alias Portb.0
D Alias Portb.1



Do
A = 1
B = 0
C = 1
D = 0
Waitms 10
A = 1
B = 0
C = 0
D = 1
Waitms 10
A = 0
B = 1
C = 0
D = 1
Waitms 10
A = 0
B = 1
C = 1
D = 0
Waitms 10
Loop


was ich beobachte:
nach dem übertragen läuft der Motor, ziemlich einwandfrei. Aber das dauert leider nur 3 bis 4 umdrehungen (machmal länger, manchmal kürzer) dann gerät der motor in ein chaotisches verhalten: er stottert, dreht bisschen zurück usw.

Woran liegt der fehler? wenn der motor die ersten 3 umdrehungen schaffe, sollte das problem nicht am programm liegen. ich habe 2 motoren bestellt, bei beiden treten der gleiche fehler auf. ist die Spannung zu niedrig? auf dem cn-control gibt es ja einen treibeer. #-o

Ich wäre sehr froh wenn jemand mir hier weiterhelfen könnte. ich danke schon mal im voraus O:)

mfg

ouwen

robodriver
22.10.2007, 08:38
Also du gibst dem Motor in deinem Fall 7,4 Volt?
Laut Datenblatt beträgt die Nennspannung des Motors aber 3,6 Volt!

In dem Programm sehe ich so auf den ersten Bilck (ohne mir die Schrittfolge genauer an zu sehen), das du die Enable Pins am Motortreiber nicht aktivierst.

Folgende Zeilen solltest du noch mit einfügen:



Config Pind.4 = Output
Config Pind.5 = Output

set portd.4
set portd.5


Dann sollte es eigentlich funktionieren.

Achso, als erklärung warum es 2 Umdrehungen funktioniert: Nicht konfigurierte Pins haben keinen definierten Pegel. Dadurch kann es sein, das der Treiber an seinen Enabl-Pins zunächst ein High-Signal erkennt, was dann aber irgendwann evtl. dann als Low erkannt wird. Der Pegel ist ja undefiniert...

Hoffe das hilft dir erstmal weiter.

Gruß Robodriver

ouwenx
22.10.2007, 20:29
Das mit der Spannung spielt glaube ich keine Rolle. Durch den Treiber wird die Spannung ja erhöht. auf etwa 30V. Und Schrittmotoren müssen glaube ich sogar mit so hohen verspeist werden, sonst kommt die Stromstäkre nicht zu stande.

Ich habe das neue Code mal ausprobiert. Es funktioniert leider immer noch nicht. ](*,) ](*,)

Aber gestern habe ich anstatt vollschrittmodus, den schritt genommen, wo man immer nur eine Spule aktiviert(weiss nicht mehr wie er heisst ^^). Am anfang lief es zwar immer noch nicht. aber ich habe danach den Akuu mal aufgeladen. und es funktioniert plötzlich. zwar habe ich noch nicht mit Räder getestet, aber freie Drehungen schafft der motor auf jeden fall einwandfrei.

Nun nachdem ich das neue code draufgeladen habe, ist er wieder ganz der alte. Er dreht wieder nicht mehr richtig.

vielleicht liegt wirklich das problem bei der Stromstärke, denn der treiber auf dem rn-control ist ja der L293D und der liefert eigentlich nur 0.6 A oder eine Peak-I von 1A. damit ist die angegebene stromstärke von 1.2 A noch nicht erreicht.

aber trotzdem danke

mfg

ouwen

womb@t
22.10.2007, 21:41
Der Treiber erhöht die Spannung nicht! Es fällt sogar ein kleines bisschen Spannung am Treiber ab. Könnte es sein dass die Spannung zusammenbricht? Teste es mal indem du am Anfang des Programms ein "Beep" ausgibst, wenn die RN-Control anfängt zu Piepsen liegts an der Stromversorgung!

robodriver
23.10.2007, 06:35
Bitte schau dir mal das Datenblatt vom Motor genau an:
Spannung: 3,6 Volt
Spulenwiderstand: 2,6 Ohm (vergrößert sich natürlich mit steigender Frequenz)
Maximaler Strom: 1,41 A

Wenn du dem lieben Motor nun direkt die Spannung von 7,4 V (abzüglich Spannungsfall vom Akku gibst, dann fließt laut Ohmschen Gesetz:
I=U/R=2,8 A ! (Haltestrom)
Das ist für den Motor zu viel! Der Maximale Strom für dem Motor ist 1,41 A!



Aber gestern habe ich anstatt vollschrittmodus, den schritt genommen, wo man immer nur eine Spule aktiviert(weiss nicht mehr wie er heisst ^^).

Es gibt den Vollschrittmodus und den Halbschrittmodus.
Im Vollschrittmod wird immer nur eine Spule bestromt.
Im Halbschrittmodus wird immer eine-zwei-eine-zwei im wechsel bestromt
Durch das bestromen zweier Spulen gleichzeitig stellt sich der Rotor mittig zwischen beide und macht somit einen halben Schritt.
Eine komplette Umdrehung besteht dann nicht mehr aus 200 Schritten, sondern aus 400 (bei deinem Motor)

Ich werde mir nachher mal dein Programm unter die Lupe nehmen, evtl. hast du ein Fehler in der Bestromungsreihnfolge drinn...

Gruß Robodriver

ouwenx
23.10.2007, 15:40
Bitte schau dir mal das Datenblatt vom Motor genau an:
Spannung: 3,6 Volt
Spulenwiderstand: 2,6 Ohm (vergrößert sich natürlich mit steigender Frequenz)
Maximaler Strom: 1,41 A

Wenn du dem lieben Motor nun direkt die Spannung von 7,4 V (abzüglich Spannungsfall vom Akku gibst, dann fließt laut Ohmschen Gesetz:
I=U/R=2,8 A ! (Haltestrom)
Das ist für den Motor zu viel! Der Maximale Strom für dem Motor ist 1,41 A!


Das ist mir schon klar.

Ich habe im wissensartikel den artikel "schrittmotor" durchgelesen. wie ichs mitbekommen habe, besitzt der motortreiber einen stromregler, der automatisch die passende stromstärke ausgibt. damit ergibt sich ja auch genau die nennspannung auf dem datenblatt.

womb@t
23.10.2007, 16:48
Dann hast du dich verlesen, denn der L293 reguliert den Strom nicht, das macht die Kombination aus L297 und L278!
Und würdest du meinem Rat folgen könnten wir dir über das wir-raten-mal-helfen hinaus zu einem indiziengefolgten helfen übergehen!

ManuelB
23.10.2007, 18:09
Es gibt normalerweise zwei Betriebsmöglichkeiten einmal nach Spannung und einmal nach Strom. Für den Spannungsbetrieb kann eigendlich nur die Spannung verwendet werden die im Datenblatt steht, da im Motorstillstand dann Nennstrom fließt. Nachteil ist bei Erhöhung der Drehzahl ein schnell fallendes Motormoment durch den steigenden induktiven Widerstand der Spule.
Bei der Stromregelung wie z.B. bei der L297/L298 wird der Strom auf Nennstrom gehalten. Hier sollte eine möglichst hohe Betriebsspannung gewählt werden, da mit steigendem induktivem Widerstand eine höhere Spannung benötigt wird um den Nennstrom duch den Motor zu treiben.

Bei bipolaren Motoren (sollte theoretisch der Sanyo sein wegen der 4 Anschlüsse) sind im Vollschritt beide Spulen bestromt und im Halbschritt nur eine, wodurch sich das Drehmoment im Halbschritt verringert (kann durch Stromanhebung im Halbschritt verbessert werden)

MfG
Manu

Manf
23.10.2007, 19:17
Aus der Diskussion möchte ich noch einmal den einen genannten Punkt hervorheben:

Könnte es sein dass die Spannung zusammenbricht?
Nach 2-3 ordnungsgemäßen Umdrehungen ist eine solche Störungsursache wohl am wahrscheinlichsten.
Manfred

Yossarian
23.10.2007, 19:32
Hallo
Weder der ohmsche Widerstand noch die Induktivität des Motors ändert sich!
Es handelt sich hier um eine Spule, die in einem Magnetfeld bewegt wird.
Dabei wird natürlich eine Spannung induziert, die der Betriebsspannung entgegengerichtet ist.

Mit freundlichen Grüßen
Benno

ManuelB
23.10.2007, 22:25
Ich hab ja nicht geschrieben das sich die Induktivität ändert sondern der induktive Blindwiderstand steigt mit höherer Frequenz nach XL = 2xPhixfxL und somit der Scheinwiderstand der RL Kombi. Der Ohmsche Anteil bleibt natürlich gleich vertreten durch den Kupferwiderstand der Spule (ummagnetisierungsverluste usw. mal vernachlässigt).

MfG
Manu

ouwenx
24.10.2007, 12:34
So habe nun mal das programm mit dem Beep am anfang der schleife ausprobiert.

es kommt jedes mal ein beep. der motor aber, der motor dreht natürlich immer noch nicht richtig.

es soll also wahrscheinlich an der stormversorgung liegen.

die nächste frage wäre, falls diese prognose stimmt, wie ich dieses problem beheben kann. es ist eigentlich schwer möglich, noch zwischen dem L293 und dem motor einen widerstand dazwischen zu schalten, damit die spannung bzw. die stromstärke stimmt.

vielleicht noch was zum vollschritt und halbschritt. für mich spielt drehmoment keine rolle. mit den motoren will ich einfach meinen roboter nach vorne bringen, der ein entsprechendes ziel erreichen soll.

mfg

womb@t
24.10.2007, 12:46
Aus der Diskussion möchte ich noch einmal den einen genannten Punkt hervorheben:

Könnte es sein dass die Spannung zusammenbricht?
Nach 2-3 ordnungsgemäßen Umdrehungen ist eine solche Störungsursache wohl am wahrscheinlichsten.
Manfred

Also doch die Stromversorgung!!! \:D/

Bluesmash
24.10.2007, 15:32
Ich habe den thread mal kurz überflogen und so wie ich das sehe überlastest du den L293 aufs extremste... wird der nicht extrem heiss? der l293 darf man nur bis ca. 600mA pro Phase belasten!

Ich denke nach den 2-3 umdrehungen wird der l293 so heiss dass er in die thermoabschaltung geht...

gruss bluesmash

ouwenx
24.10.2007, 17:12
Ich habe den thread mal kurz überflogen und so wie ich das sehe überlastest du den L293 aufs extremste... wird der nicht extrem heiss? der l293 darf man nur bis ca. 600mA pro Phase belasten!

Ich denke nach den 2-3 umdrehungen wird der l293 so heiss dass er in die thermoabschaltung geht...

gruss bluesmash

jep, nach 2-3 umdrehungen wird der L293D sehr heiss, habe fast den finger verbrannt =;

Ich glaube nun ist klar, wieso der motor nicht funktioniert...

da muss ich wohl eine andere lösung finden, damit der roboter endlich mal motoren kriegt.

vielleicht noch eine letzte frage: ist es noch möglich den schrittmotor mit dem rn-control anzusteuern? vielleicht irgendiwe die stromstärke erhöhen oder so?

Bluesmash
24.10.2007, 17:25
du könntest ja nen widerstand zwischen motorspule und rn-control schalten damit du unter die 600mA kommst... ist aber seeehr ineffizient ;)

aber du brauchst doch sowiso 2 motoren und dazu eine treiberstufe für den 2. motor? oder wie steuerst du den bot?

gruss bluesmash

ouwenx
24.10.2007, 21:12
für den 2. motor wollte ich selber ein L293D bestellen und löte ihn zwischen dem 2. Motor und 4 freie PINs vom rn-control. da ja L293D keine zusätzliche kondensator oder ähnliches braucht, ist es keine grosse aufwand.

mein plan würde also noch aufgehen wenn ich wie du gesagt hast einen widerstand dazwischen schalten könnte ^^

Bluesmash
24.10.2007, 21:38
dass währe aber eine sehr unsaubere lösung... und nebenbei verringert sich das drehmoment des motors um ein vielfaches...

robodriver
25.10.2007, 06:35
für mich spielt drehmoment keine rolle. mit den motoren will ich einfach meinen roboter nach vorne bringen, der ein entsprechendes ziel erreichen soll.

](*,) Das tut weh, das zu lesen...
Meinen ersten Roboter habe ich auch mit Schrittmotoren steuern wollen. Das Problem: zu wenig Drehmoment der Motoren. Also wenn du die Räder direkt an die Motorwelle ohne Getriebe dazwischen, einsetzen willst, dann brauchst du schon ziemlich viel Drehmoment!
Desshalb bin ich dann ganz schnell auf DC Motoren umgestiegen. ist um ein vielfaches Kompfortabler.
1. Weil man die Geschwindigkeit über das Hardware PWM vom Controler von 0-100% regeln kann
2. In der Software muss man keine schritte berechnen, sondern einmalig einen Wert setzen und der Motor dreht. Somit kann der Controler noch gaan z viel nebenher machen

PS: generell sind DC Motoren für Antriebe gemacht, während Schrittmotoren eigentlich nur zum Positionieren angedacht sind ;)

Also ich kann DC Motoren als Roboterantrieb nur herzlichst empfehlen, seit dem ich auf DC-Motoren umgestiegen bin, habe ich keinerlei Antriebsprobleme mehr...

Greetz Robodriver

ouwenx
25.10.2007, 15:55
das ist ja auch mein erster roboter :P

dein tip werde ich sicherlich zur kenntis nehmen.

mir bleibt nur nochch 1 monat, dann muss nämlich diese arbeit abgeben. mal schauen was sich da alles machen lässt #-o

bedanke mich nochmals für eure hilfe =D>

gruss