-
        

Ergebnis 1 bis 8 von 8

Thema: Bestimmte Anzahl von Schritten fahren/ansteuern?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.07.2006
    Beiträge
    29

    Bestimmte Anzahl von Schritten fahren/ansteuern?

    Anzeige

    Hallo alle miteinander,

    ich möchte mit meinem Controller eine bestimmte Anzahl von Schritten ausgeben, die mein Schrittmotor
    drehen soll. Bisher sieht das ganze wie folgt aus:

    AVR erzeugt PWM mit 16-Bit Timer (mega8535, PWM an OCR1A und OCR1B) die an den Clock von
    zwei L297 gehen. Interessant wird das ganze, da ich bis zu 30000 Schritte kontrollieren muss, und dann auch
    möglichst exakt abschalten will.

    Hat da jemand eine Idee, wie ich das machen kann? Wie wird das ganze bei dem rn-motor realisiert?

    vielen dank für eure antworten.

    grüßle

    Flo

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    PWM scheint mir für Schrittmotoren (L297) nicht notwendig. Ich mach sowas immer mit irgendeinem Timer, der die Schritte auslöst und auf einen beliebig großen Zähler draufaddiert. Diesen Zähler kann man dann natürlich auch mit einem Sollwert vergleichen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    06.07.2006
    Beiträge
    29
    also was anderes mach ich auch nicht, als mit einem timer ein clocksignal zu erzeugen, bei halt pwm,
    mit dem klaren vorteil dass das pwm-modul im hintergrund läuft.

    wenn ich nun nach jedem schritt das register vergleiche bekomm ich meiner ansicht nach das problem, dass ich nur noch in interrupts hänge
    und während ich fahre dann nix mehr machen kann ausser fahren, oder? und wie sieht das dann aus,
    wenn ich 2 motoren gleichzeitig fahren will?

    grüßle

    Flo

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ich weiß nicht, welche Stepper du verwendest, bei meinen konnt ich maximal ~1000 Steps/sekunde machen. Da hab ich bei 8MHZ 8000 zyklen zeit von einem Step zum nächsten. da bleibt Zeit genug.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    06.07.2006
    Beiträge
    29
    hm, jo die rechnung mag stimmen, jedoch habe ich 2 motoren synchron laufen (1. interrupt konflikt) greife zwischendurch auf ein eeprom zu (sollte wohl besser net unterbrochen werden).
    wenn ich da zwischendurch interrupt disable, verpass ich evtl. schritt.

    also wenn jemand ncoh eine andere lösung weiss, wäre ich recht dankbar.


    grüßle

    Flo

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    06.07.2006
    Beiträge
    29
    hat sich erledig.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.04.2005
    Ort
    Minden
    Alter
    32
    Beiträge
    227
    hallo,

    mich würde interessieren wie du das jetzt gemacht hast?
    Ich habe derzeit das gleiche Problem. Ich habe abhängig von der Schrittgeschwindigkeit einen Timer Interrupt auslösen lassen. In dieser Interrupt Routine habe ich dann den Schritt generiert, anschließend eine Variable hoch gezählt und mit dem Sollwert veglichen. Dadurch bin ich schonmal sicher dass ich keinen Schritt zu viel oder zu wenig mache.
    Nur funktioniert das ganze nur bei kleineren Schrittfrequenzen. Bei einer Interruptfrequenz von 5 khz. hab ich Probleme bekommen.
    Das Problem ist auch das der Controller auch noch andere Sachen zu tun hat.
    Vielleicht sollte man für die Schrittmotoransteuerung einen weiteren Controller verwenden.
    gruß ceekay \/

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    06.07.2006
    Beiträge
    29
    hi ceekay,

    also mein plan sieht etz so aus:

    clock über 8bit timer pwm, frequenzbereich reicht mir. die impulse zähle ich über den t1 eingang,
    vom 16bit timer (nötig bei mir, da bis zu 32000 schritte benötigt werden), und lasse das ganze mit der compare-unit vergleichen.

    das heisst dann: nur noch 1 interrupt.


    grüßle

    Flo

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •