BASCOM Schrittmotor Ansteuerung

Gast #4328824
Lesenswert?
• ▲
▼
Hallo,
die Frage ist mir etwas peinlich, aber ich weiß nicht mehr weiter.
Im Anhang ein kleines Progtramm, welches über eine Timer-Routine den
Schrittmotor mit 1Umdr./sek. dreht.
Ich benutze einen AVR ATMEGA8A mit int. 8MHz Takt.
Ich möchte nun den Motor in Teilschritten 1/8, 1/4, 1/2....2 Umdrehungen
drehen lassen, danach das Ganze zurück.

Hat einer eine Idee dazu?

Vielen dank für eine Hilfe !

Christoph
Angehängte Dateien:
Gast #4328945
Lesenswert?
• ▲
▼
Hatte mich wohl falsch ausgedrückt. Ich möchte den Motor nicht in 
Teilschritten, sondern in Teilumdrehungen drehen lassen.
Also 1/2 Umdrehung vor und danach 1/2 Umdrehung zurück.

Mir geht es hier mehr um die Art der programmierung in Bascon.

Besten Dank schon mal für die Hinweise !

MfG

Christoph
(Firma: Bastler aus Mönchengladbach) Persönliche Seite #4328956
Lesenswert?
• ▲
▼
Christoph Maass schrieb:
> Ich möchte den Motor nicht in
> Teilschritten, sondern in Teilumdrehungen drehen lassen.
> Also 1/2 Umdrehung vor und danach 1/2 Umdrehung zurück.

Schau ins Datenblatt wieviel Schritte der Stepper-Motor für eine 
Umdrehung braucht, bei den meisten sind es 200 Vollschritte.

Also für eine halbe Umdrehung 100 Pulse an den Driver schicken.
Für halbe Umdrehung zurück das selbe, aber am CW/CCW Pin des Drivers den 
Pegel ändern (High/Low).

Bei Halbschrittbetrieb entsprechend jeweils 200 Pulse.

Die Frequenz der Pulse (oder zeitlicher Abstand der Pulse) bestimmt die 
Geschwindigkeit mit der sich der Stepper dreht. Für die ersten Versuche 
würde ich es bei max. 500 Steps pro Sekunde belassen (Timer passend 
konfigurieren), das machen die meisten Stepper Motore ohne 
Schrittverlust mit.

Wenn Du mal irgendwann weiter im Erkentnisstand fortgeschritten bist, 
kannst Du Dich ja mal über Beschleunigungsrampen schlau machen.

Du benutzt als Pulsdauer 1 us was für viele Driver Boards schon etwas 
knapp ist. So 5 bis 10 us wären besser. Über die Erzeugung des 
Puls-Delay mittels wait lass ich mich jetzt nicht weiter aus, ist für 
den Anfang schon OK :)
#4329024
Lesenswert?
• ▲
▼
Christoph Maass schrieb:

> Mir geht es hier mehr um die Art der programmierung in Bascon.

Was Albert dir mitteilen will, das ist, dass du da wohl eine Variable 
brauchen wirst, in der du mitzählst wieviele Schritte du an den Motor 
ausgegeben hast. Und wenn diese Schrittzahl erreicht ist, dann kannst du 
zb die Drehrichtung umschalten oder ganz einfach nichts weiter tun oder 
.... was immer du in deinem Programm benötigst.

Im Moment generierst du einen Schritt, wann immer der Timer mitteilt, 
dass es wieder mal Zeit wäre. Du generierst den Schritt immer. Das musst 
du eben ändern. Zum Beispiel indem du mitzählst (in einer Variablen) 
wieviele Schritte schon generiert wurden oder indem du eine Variable von 
einer gewissen Anzahl bis auf 0 herunterzählst. Wie auch immer, ist die 
gesuchte Anzahl an Schritten erreicht, dann unterbindest du in der Timer 
Routine zum Beispiel ganz einfach die Schrittgenerierung.
1
DIM Schritte As Byte
2

3

4
....
5

6

7
Timer_irq:
8
  Timer0 = Timervorgabe                                     'Interrupt-Routine
9

10
  Schritte = Schritte + 1
11

12
  if Schritte < 200 then
13

14
    Stepper_takt = 0 : Waitus 1 : Stepper_takt = 1            'Taktsignal für Motor
15

16
  endif
17

18
  Return

Das ist jetzt nur ein Beispiel. Du baust das natürlich so aus, wie du 
das brauchst.
Gast #4329204
Lesenswert?
• ▲
▼
Klasse !

Das hat mir wirklich weitergeholfen !!!

Ich wollte auch nix über irgendwelche Rampen usw. wissen, sondern eine 
Anregung zum programmieren erhalten.
Vielen Dank für die Anregung !

MfG

Christoph

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren