- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 3 von 3

Thema: Gleichstrommotor oder Schrittmotor

  1. #1

    Gleichstrommotor oder Schrittmotor

    Anzeige

    Praxistest und DIY Projekte
    Ich möchte eine örtliche Schule bei einem Roboterprojekt unterstützen und weiß nicht, welchen Weg ich mit den Motoren einschlagen soll: Gleichstrommotor oder Schrittmotor? Gleichstrom wäre wirklich einfach und PWM zur Geschwindigkeitsregelung, aber ich bin mir nicht sicher, wie ich den Controller bidirektional machen kann.

    Ich glaube nicht, dass der RPi schnell genug wäre, um den Schrittmotor zu steuern, und wir bräuchten einen Schrittmotor-Controller, und dann aktiviert der RPi einfach den Controller-Chip. Aber so wäre ein Rückwärtsgang viel einfacher.

    Hat jemand eine Idee, was der beste Weg ist? Idealerweise der Gleichstrommotor, aber wie macht man den Motor bidirektional?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    900
    Idealerweise der Gleichstrommotor, aber wie macht man den Motor bidirektional?
    Mit einer H-Brücke:
    https://dieelektronikerseite.de/Lect...-Schaltung.htm

    Die gibt es entweder als fertige Module...
    (z.B. https://www.reichelt.de/entwicklerbo...n-p282644.html)
    ...oder auch als IC...
    (z.B.: https://www.reichelt.de/push-pull-4-...3-b-p9660.html)
    ...oder, wenn's was ganz Spezielles werden soll, kann man sich so was auch aus Transistoren und Logikbausteinen selber bauen.

    Kurz: Mannigfaltiges Angebot, das Du unter dem Suchbegriff "H-bridge motor driver" findest.

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.688
    .. Gleichstrommotor oder Schrittmotor .. wie macht man den Motor bidirektional?
    Gebürsteter Motor (wohl das, was Du mit Gleichstrommotor meinst) oder Schrittmotor sind (meiner unbedarften Meinung nach) eher Glaubensbekenntnisse (abgesehen von Spezialfällen). Vorteil des Schrittmotors: das Verfahren hat eine - meist, aber nicht unbedingt, zuverlässige - Drehzahlvorgabe (ausser es gibt Schrittverluste). Wird Dir sicher bekannt sein.

    Zum Beschreiben der Gleichstrommotor-Ansteuerung zitiere ich unten meinen entsprechenden C-Code für meine rollende Coladose. Dort sind modifizierte Modellbauservos als Antrieb eingebaut denen ich eine Drehzahlmessung verpasst hatte. Beispiel für ne Testfahrt - uralt. Im wahren Leben sieht das dann beispielsweise so aus - wieder nur ne Art Test. Autonom kommt dann noch ne Hinderniserkennung (Hindernis oder Abgrund) ins Spiel.

    Code:
    // ============================================================================== =
    // Motoransteuerung mit dem L293D, hier werden die Drehrichtungen gesetzt 
    //   Anschlüsse M168 für R3D01 für die Motoransteuerung (Stand 24mrz09 1410) :
    //   Motor 12 ist in Fahrtrichtung rechts (Kennzeichen 1 Punkt)
    //   Motor 34 ist in Fahrtrichtung links  (Kennzeichen 2 Punkte)
    //                                 
    //  (E7)  _|-- 1,2 Guz, PD4___6   23___PC0, SFH 5110, IN irDME 1-2    
    //                      . . . . . . . . . . . .
    //               XTAL1  PB6___9   20___VCC
    //               XTAL2  PB7  10   19   PB5, SCK, Taster2                  
    //  (E6) PWM 1,2 uz+Guz,PD5  11   18   PB4, MISO,  _|-- 1,2  uz, Taster1  
    //  (E5) PWM 3,4 uz+Guz,PD6__12   17___PB3, MOSI, Reserve 2
    //  (E8)   _|-- 3,4  uz,PD7  13   16   PB2, Servo
    //  (E9)   _|-- 3,4 Guz,PB0  14   15   PB1, OC1A = SFH 415, OUT (irDME) 
    //   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
    //      vgl. Erklärung von Hubert.G     (zu L293D)
    // http://www.roboternetz.de/community/threads/59146
    //-Wieso-benötigt-RN-Control-(1-4-)-für
    //-integrierten-Motortreiber-gleich-3-freie-Ports?p=558716&viewfull=1#post558716
    //      Zitat   Mit setzten von Kanal 1 und 2 auf 0 ist der Motor im Freilauf, 
    //              werden beide Kanäle auf 1 gesetzt wird der Motor gebremst
    //   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
    //                -----------------------
    //  Drehrichtungsbefehle für Motor 1,2 = "rechter" Motor
    //             r r r r r r r Motor 1,2 = rechter Motor r r r r r r
    // ============================================================================== =
      void Mrechtsvor (void)        // Mot12 dreht im Uhrzeigersinn = neg. math.
     {                              //   .. dann fährt rechtes Rad "vorwärts"
    // TCCR0A |=  (1<<COM0B1);      // Enable clear/set OC0B on Compare Match
       PORTD  &= ~(1<<PD4);         // Setze 1A low
       PORTB  |=  (1<<PB4);         // Setze 2A high
       mdir12 = 1; 
     }                              //
    // ============================================================================== =
      void Mrechtszur (void)        // Mot12 dreht im mathematisch positiven Drehsinn
     {                              //   .. dann fährt rechtes Rad "rückwärts"
    // TCCR0A |=  (1<<COM0B1);      // Enable clear/set OC0B on Compare Match
       PORTD  |=  (1<<PD4);         // Setze 1A high
       PORTB  &= ~(1<<PB4);         // Setze 2A low
       mdir12 = -1;                 //
     }                              //
    // ============================================================================== =
      void Mrechtsstop (void)       // Motor 12 aus
     {                              //
    // TCCR0A &= ~(1<<COM0B1);      // Disable clear/set OC0B on Compare Match
       PORTD  &= ~(1<<PD4);         // Setze 1A low
       PORTB  &= ~(1<<PB4);         // Setze 2A low
     }                              //
    //                -----------------------
    //  Drehrichtungsbefehle für Motor 3,4 = "linker" Motor
    //             l l l l l l l Motor 3,4 = linker Motor l l l l l l
    // ============================================================================== =
      void Mlinksvor (void)         // Mot3,4 dreht im mathematisch positiven Drehsinn
     {                              //   .. dann fährt linkes Rad "vorwärts"
    // TCCR0A |=  (1<<COM0A1);      // Enable clear/set OC0A on Compare Match
       PORTB  |=  (1<<PB0);         // Setze 3A high
       PORTD  &= ~(1<<PD7);         // Setze 4A low
       mdir34 = 1; 
     }                              
    // ============================================================================== =
      void Mlinkszur (void)         // Mot3,4 dreht im Uhrzeigersinn = neg. math.
     {                              //   .. dann fährt linkes Rad "rückwärts"
    // TCCR0A |=  (1<<COM0A1);      // Enable clear/set OC0A on Compare Match
       PORTB  &= ~(1<<PB0);         // Setze 3A low
       PORTD  |=  (1<<PD7);         // Setze 4A high
       mdir34 = -1;                 //
     }                              //
    // ============================================================================== =
      void Mlinksstop (void)        //  Motor 34 aus
      {                             //
    //  TCCR0A &= ~(1<<COM0A1);     // Disable clear/set OC0A on Compare Match
        OCR0A        =   0;         // PWM-Wert Mot34 auf Null setzen
        PORTB  &= ~(1<<PB0);        // Setze 3A low
        PORTD  &= ~(1<<PD7);        // Setze 4A low
      }                             //
    // ============================================================================== =
    Für die Ansteuerung solcher Motoren macht man sich zweckmässigerweise ne "Wahrheitstabelle", nochnBeispiel:
    Code:
    // ============================================================================= =
    //  Motorsteuerung babyorangutan/TB6612FNG - Wahrheitstabelle
    //      übernommen am 19. Nov. 2018 aus Smt01_mot10.c, Version
    //     D02_x15 19Sep18 23ff Ausgänge A01 und A02 getestet und bestätigt
    //     ============================
    //  Motor12 (A)      Motor 34 (B)                    Motor-
    //  PB4     PD4      P??     P??   AO1,BOx  AO2,BOx  effekt
    //     PWMA             PWMB
    //  AIN1    AIN2     BIN1    BIN2
    //   H       H        H       H       L        L     brake
    //   L       H        H       L       L        H     math.neg =  uz
    //   H       L        L       H       H        L     math.pos = Guz *) 19Nov18 ok!
    //   L       L        L       L      OFF             (high impedance) coast
    //                                                 coast =: auslaufen, ausrollen
    // *) WENN der Positive Motoranschluss an AO1 liegt resultiert bei den (meisten)
    //      Motoren ein Lauf im Gegenuhrzeiger, mat-pos, bei Blick auf Abtriebswelle
    // ============================================================================= =
    // ============================================================================= =
    // - - - - - - - - - - - - - - -
    //  MoRe        "vor"  =:  Vorwärtsfahrt        "rechts"  =:  Drehsinn Mot
    //  Beispiel    mot12 dreht mathematisch negativ bei Befehl "vor" = "rechts"
    //              vor/re  zur/li  stop    brems   vor/zur = Rad-/Fortbewegung
    //      M11=    0       1       0       1       re / li = Motordrehrichtung
    //      M12=    1       0       0       1
    // - - - - - - - - - - - - - - - -
    //      MoLi    =:      Mot34, "vor/links" dreht Motor mathematisch positiv
    //              vor/li  zur/re  stop    brems   vor/zur = Rad-/Fortbewegung
    //      M41=    1       0       0       1       re / li = Motordrehrichtung
    //      M42=    0       1       0       1
    // ============================================================================= =
    // ============================================================================= =
    // Motoransteuerung mit L293D, auch TB66.., hier werden die Drehrichtungen gesetzt
    // Anschlüsse:  Motor 12 ist in Fahrtrichtung rechts (Kennzeichen 1 Punkt)
    //              Motor 34 ist in Fahrtrichtung links  (Kennzeichen 2 Punkte)
    //                                 
    //        -|__ 1,2 Guz, PD4___6   23___PC0, SFH 5110, IN irDME 1-2    
    //                      . . . . . . . . . . . .
    //               XTAL1  PB6___9   20___VCC
    //               XTAL2  PB7  10   19   PB5, SCK, Taster2                  
    //       PWM 1,2 uz+Guz,PD5  11   18   PB4, MISO,  _|-- 1,2  uz         
    //       PWM 3,4 uz+Guz,PD6__12   17___PB3, MOSI, Reserve 2
    //         _|-- 3,4  uz,PD7  13   16   PB2, Servo
    //         _|-- 3,4 Guz,PB0  14   15   PB1, OC1A = SFH 415, OUT (irDME) 
    //   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
    // ============================================================================= =
    Ist ein bisschen viel - viel-leicht hilfts Dir aber .

    Zur GeschwindigkeitsREGELUNG (die beiden Motoren der Coladose laufen unabhängig von einander - geradeaus läuft die Dose nur wenn BEIDE Motoren exakt gleich schnell laufen) muss man noch n bisschen Regelungstechnik machen. Die ist dann aber auch kein wirkliches Geheimnis.
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. Antworten: 14
    Letzter Beitrag: 24.04.2014, 11:48
  2. Antworten: 1
    Letzter Beitrag: 04.10.2011, 13:32
  3. Antworten: 4
    Letzter Beitrag: 30.04.2008, 16:05
  4. Servo oder Schrittmotor?
    Von coldsoul im Forum Motoren
    Antworten: 4
    Letzter Beitrag: 14.10.2005, 18:55
  5. Schrittmotor oder einfacher Gleichstrommotor
    Von astrospider im Forum Motoren
    Antworten: 1
    Letzter Beitrag: 06.03.2005, 20:36

Berechtigungen

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

Labornetzteil AliExpress