-
        

Ergebnis 1 bis 5 von 5

Thema: Anfängerfrage L298 L297 ATmega8

  1. #1
    Neuer Benutzer Öfters hier Avatar von kaufparkangucker
    Registriert seit
    27.08.2009
    Beiträge
    15

    Anfängerfrage L298 L297 ATmega8

    Anzeige

    Hallo,

    ich bin Einsteiger im Elektronikbereich und versuche mich da langsam weiter vor zu Tasten.
    Derzeit bastel ich an einem Steppermotor der über die bekannte L298-L297 Kombi angesteuert wird.
    Der Motor soll sich 100 Schritte in die eine und dann 100 Schritte in die andere Richtung bewegen.
    Jetzt benötigt Clock je ein negatives Signal damit der Motor einen Schritt macht - aus dem Atmega8 kann ich aber nur positive Signale abgreifen - muss ich das jetzt umständlich invertieren?

    Da giebt es doch bestimmt eine Lösung wie man einen AVR mit dieser Treiberkombination verbindet - leider finde ich nichts passendes.

    Vielen Dank für Eure Hilfe.

    fg Rocco

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.254
    Hallo kaufparkangucker,

    der L297 braucht keine negativen Signale, vielleicht verwechselst du das mit fallenden Flanken.
    AVR und L297 arbeiten mit positiven Signalen wunderbar zusammen

    Gruß, Michael

  3. #3
    Neuer Benutzer Öfters hier Avatar von kaufparkangucker
    Registriert seit
    27.08.2009
    Beiträge
    15
    Hallo Michael,
    ja stimmt, Du hast recht.

    Vieleicht kann mir nochmal jemand helfen.
    Programmieren möchte ich gern mit C und mit dem AVR Studio. Das klappt auch so weit. kann den Motor auch schon bewegen.
    Allerdings kapiere ich nicht wie man eine Schleife schreibt die den Motor sagen wir 100 Schritte in die eine und dann 100 Schritte in die andere Richtung drehen lässt.
    Clock hängt bei mir an Port B0 vom Atmel
    und CW/CCW würde ich gern an Port B2 hängen.

    Bitte habt verständniss, auch im Programmieren bin ich noch ein Anfänger.

    Mein zusammengeschusterter Ansatz sieht z.Z. so aus:

    /* Standard Includes */
    #include <inttypes.h>
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #define F_CPU 1000000UL
    #include <util/delay.h>

    /* Pin defs für Atmega */

    #define Draht1 _BV(PB0) //hier CLOCK dran hängen
    #define Draht2 _BV(PB1) //unbelegt!!! verhilft nur Draht1 zu einer Pause
    #define Draht3 _BV(PB2) //hier CW / CCW dran hängen
    #define Draht4 _BV(PB3) //mal sehen wofür der noch gebraucht wird

    int main(void){

    const uint8_t delay = 1; // Taktrate am CLOCK Pin bzw an Draht1


    DDRB = 0xff; /* alle B Port Pins sind Outputs */
    PORTB = 0x00; /* fangen alle bei 0V an */

    for (int i=0;i<100;i++){ /* Schleife lässt Draht1 und 2abwechselnd 100 mal "blinken" */
    PORTB = Draht1;
    _delay_ms(delay);

    PORTB = Draht2;
    _delay_ms(delay);

    // PORTB = RED;
    //_delay_ms(delay);

    //PORTB = YELLOW;
    //_delay_ms(delay);

    }
    PORTB = 0x00; /*Endwert alle Pins von Port B auf 0V*/
    return 0;
    }

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.07.2009
    Ort
    Wien
    Beiträge
    131
    du solltest mit den einzelnen bits im port wackeln; so wie gezeigt schaltest du ja nur zwischen PB0 und PB1 um.

    Code:
    PORTB |= Draht1; // Draht1 einschalten
    PORTB &= ~Draht1; // Draht1 ausschalten
    dann kannst du nämlich mit

    Code:
    PORTB |= Draht3; // drehrichtung CCW
    die drehrichtung umschalten und mit dem obigen die pulse generieren, ohne daß dein drehrichtungsport sich ändert.

    nebenbei: es ist üblich, makros komplett in großbuchstaben zu schreiben. und es wird übersichtlicher, wenn du die die dinger gleich nach ihrer funktion benennnst:

    Code:
    #define CLOCK _BV(PB0)
    #define RICHTUNG _BV(PB2)
    cm.

  5. #5
    Neuer Benutzer Öfters hier Avatar von kaufparkangucker
    Registriert seit
    27.08.2009
    Beiträge
    15
    Hallo cmock,

    danke für die schnelle Hilfe.
    Werde ich gleich mal probieren.

    fg Rocco

Berechtigungen

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