-         
Ergebnis 1 bis 2 von 2

Thema: L298N direkt am Microkontroller (Schrittmotor)

  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von RobbyMartin
    Registriert seit
    31.12.2009
    Ort
    Leverkusen
    Alter
    24
    Beiträge
    206

    L298N direkt am Microkontroller (Schrittmotor)

    Anzeige

    Hallo,

    lange nicht mehr hier gewesen, aber jetzt habe ich ein Problem...

    Ich habe einen L298N an einem MSP430 2553 von Texas Instruments angeschlossen.

    So nun zum Problem:

    Vorwärts drehen lassen kein Problem, doch wenn ich die Reihenfolge im Code drehe dann dreht er sich trotzdem in die selbe Richtung

    Das klappt:

    Code:
    void vor(int schritte){    P1OUT |= (ENA);
        P1OUT |= (ENB);
        P1OUT |= (LED_r);
    
    
        int i=0;
    
    
        for(i=0;i<schritte;i++){
            P1OUT |= (BIT1);
            P1OUT &= ~(BIT2);
            P1OUT |= (BIT3);
            P1OUT &= ~(BIT4);
            __delay_cycles(100000);
            P1OUT |= (BIT1);
            P1OUT &= ~(BIT2);
            P1OUT &= ~(BIT3);
            P1OUT |= (BIT4);
            __delay_cycles(100000);
            P1OUT &= ~(BIT1);
            P1OUT |= (BIT2);
            P1OUT &= ~(BIT3);
            P1OUT |= (BIT4);
            __delay_cycles(100000);
            P1OUT &= ~(BIT1);
            P1OUT |= (BIT2);
            P1OUT |= (BIT3);
            P1OUT &= ~(BIT4);
            __delay_cycles(100000);
        }
    
    
        P1OUT &= ~(ENA);
        P1OUT &= ~(ENB);
        P1OUT &= ~(LED_r);
    }
    Warum dreht er hierbei nicht Rückwärts?:

    Code:
    void rueck(int schritte){    P1OUT |= (ENA);
        P1OUT |= (ENB);
        P1OUT |= (LED_g);
    
    
        int j=0;
    
    
        for(j=0;j<schritte;j++){
            P1OUT &= ~(BIT1);
            P1OUT |= (BIT2);
            P1OUT |= (BIT3);
            P1OUT &= ~(BIT4);
            __delay_cycles(100000);
            P1OUT &= ~(BIT1);
            P1OUT |= (BIT2);
            P1OUT &= ~(BIT3);
            P1OUT |= (BIT4);
            __delay_cycles(100000);
            P1OUT |= (BIT1);
            P1OUT &= ~(BIT2);
            P1OUT &= ~(BIT3);
            P1OUT |= (BIT4);
            __delay_cycles(100000);
            P1OUT |= (BIT1);
            P1OUT &= ~(BIT2);
            P1OUT |= (BIT3);
            P1OUT &= ~(BIT4);
            __delay_cycles(100000);
    
    
        }
    
    
        P1OUT &= ~(ENA);
        P1OUT &= ~(ENB);
        P1OUT &= ~(LED_g);
    }
    Ich hoffe Ihr könnt mir helfen

    Gruß
    Martin
    \/ \/ \/ Elektronische Bauteile funktionieren nur weil in ihnen Rauch eingeschlossen ist Beweis: tritt Rauch aus sind sie kaputt!! \/ \/ \/

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    25
    Beiträge
    1.547
    Hi,

    ich hab mir deine "Programme" jetzt nicht sehr detailiert angesehen (auch weil einige Sachen Fehlen, u.a. deklaration von BIT1/2/3/4), was mir aber auffällt:
    - Du übergibst der Funktion eine Anzahl an Schritten, es werden aber immer 4x so viele gemacht.
    - Um den Motor in die andere Richtung laufen zu lassen, reicht es, die (in deinem Fall) Vollschritte einfach rückwärts durchlaufen zu lassen.

    Um wirklich die richtige Anzahl an Schritten zu fahren, könnte man eine Statemachine anwenden, das wäre hier eine elegante Lösung. Dann könntest du die Routine sogar in einer ISR ablaufen lassen und so währenddessen noch andere Sachen erledigen.
    Wenn das dann noch mit Bitmasken der Steuerausgänge kombiniert wird, hat man eine (wie ich finde) sehr schöne Lösung. Außerdem wäre dann das ändern, sofern nötig, der Steuerausgänge bei einer neueren Version sehr schnell gelöst und man muss nicht lange im Code rumsuchen.

    Gruß
    Chris

Ähnliche Themen

  1. Langsamer eintieg: Schrittmotor direkt von PC aus steuern
    Von boqopod im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 26.08.2010, 14:11
  2. Unipolar Schrittmotor mit L298N?
    Von SMR im Forum Motoren
    Antworten: 2
    Letzter Beitrag: 26.08.2005, 12:19
  3. Schrittmotor mit C Control direkt ansteuern
    Von $ermon im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 1
    Letzter Beitrag: 07.01.2005, 15:52
  4. Diesen Schrittmotor direkt ansteuern?
    Von RCO im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 26
    Letzter Beitrag: 19.11.2004, 10:12
  5. SCHRITTMOTOR UND l298N .. hilfeeeeeeeee
    Von hoer173 im Forum Motoren
    Antworten: 9
    Letzter Beitrag: 02.04.2004, 23:44

Berechtigungen

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