Hallo, Ich möchte eine Motorfunktion in Atmel Studio programmieren um einen DRV8825 mit angeschlossen Schrittmotor drehen zu lassen. So könnte sie aussehen: motor(255); Als Board benutze ich den Arduino MEGA 2560. Später möchte ich 4 oder noch mehr Motoren steuern. Das Problem auf das ich gestoßen bin ist, dass ich kein PWM an dem STEP Pin bekommen habe. Er blieb immer LOW. Ich habe auch schon sehr lange recherchiert, bin aber leider nicht schlauer geworden. Das Grundprinzip ist, dass ich das zugehörige OCR1A Register oder ein anderes Register auf den Wert des Argumentes der Motorfunktion zu setzen. Bitte helft mir. Viele Grüße, Fabio
Sorry, aber ob des Scheefalls kann ich Deinen Monitor nicht lesen. Wir müssen wohl auf den Frühling warten ;-)
Gast
#5718093
Fabio M. schrieb: > Er blieb immer LOW. Ich habe auch schon sehr lange > recherchiert, bin aber leider nicht schlauer geworden. Bist du sicher, dass er LOW war. Vielleicht war er einfach nur hochohmig, weil du ihn nicht als Ausgang konfiguriert hast.
Gast
#5718106
@ Fabio Swing Low, Sweet Chariot
Wolfgang schrieb: > Fabio M. schrieb: >> Er blieb immer LOW. Ich habe auch schon sehr lange >> recherchiert, bin aber leider nicht schlauer geworden. > > Bist du sicher, dass er LOW war. Vielleicht war er einfach nur > hochohmig, weil du ihn nicht als Ausgang konfiguriert hast. Das könnte auch sein. Am besten gebt ihr mir ein Beispiel für ein PWM Signal :)
Gast
#5718133
Fabio M. schrieb: > Am besten gebt ihr mir ein Beispiel für ein PWM Signal :) Nein , bestens zeigst du mal vor, waß du da gebaut, programmiert und gemessen hast. Denn Tutorials für PWM gibt es massenweise im Internet, doch mit denen kommst du scheinbar nicht klar. Bei Arduino brauchst du nur ein einziges Kommando, um eine PWM zu erzeugen: analogWrite(pin,wert);
Ich benutze aber kein Arduino, sondern Atmel Studio. Meine Code Versuche sind diese: Ich habe sie in allen Variantionen getestet, da ich so verzweifelt war.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
Gast
#5718190
Kann mir mal einer sagen wo der Zusammenhang zwischen PWM und Schrittmotor ist? Der DRV8825 regelt den Strom für die Motorwicklungen mit PWM aber hat Eingänge für Step und Direction. Da scheint einges durcheinander.
Ich hatte auch mal ein PWM Problem... Lösung war die while-Schleife in Main, die hatte ich vergessen... => Main wurde verlassen VG Jörg
karadur schrieb: > Da scheint einges durcheinander. Stimmt. aber die OCRxx sind doch auch für die Timer zuständig; die Impulsweite ist egal. Ich denke er nutzt Fast PWM um sich nicht um das Setzen der Ausgänge kümmern zu müssen.
Ich weiß nicht welche PWM Art ich benutzen soll. Das PWM Siganl soll an den STEP Pin weitergeleitet wird, um die Geschwindigkeit anzupassen.
Fabio M. schrieb: > Ich weiß nicht welche PWM Art ich benutzen soll. Dann nimm bitte Arduino. Da kannst Du bei Deinem Wissensstand fertige Libs nehmen. Ansonsten setze Dich bitte mit dem Datenblatt des µC auseinander und schau Dir die Register bei den Timern an. Wenn Du das nicht verstehst, dann stelle bitte dahingehend zielgerichtete Fragen. VG Jörg
Eigentlich kenne ich mich schon im Datenblatt aus. Aber an genau diesem Problem komme ich einfach nicht weiter.
Gast
#5718248
Zwar für ATmega328, sollte aber auch auf anderen Typen lauffähig sein: http://mino-elektronik.de/Generator/takte_impulse.htm#bsp7 Du mußt vermutlich nur STEP und DIR verwenden.
Dankeschön. Ich schaue mir es mal an. Bei weiteren Probleme melde ich mich.
Gast
#5718265
Ich sehe keinen Sinn darin, den STEP Anschluss mit einem PWM Signal anzusteuern. Was du brauchst sind mehr oder weniger Impulse pro Sekunde - aber schön passend zum Motor. Also finde erstmal heraus, was du brauchst. Dann kann man schauen, wie das mit dem Timer umsetzbar ist.
Gast
#5718483
Nur zum Üben:
Deklarieren: Step,Dir,maxschritte;
Du brauchst 2 Pins für den Motorcontroller.
Dir = vorwärts;
for(anzahlschritte=0;maxschritte;anzahlschritte++)
{
Delay1000msec;
Step=1;
Delay1000msec;
Step=0;
}
Hallo, dank eurer Hilfe habe ich jetzt eine Motor Funktion, die soweit funktioniert. Wenn es noch Verbesserungsvorschläge gibt, dann sagt mir diese bitte.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.