-
        

Ergebnis 1 bis 9 von 9

Thema: L293D schaltet Motor manchmal nicht ab

  1. #1
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551

    L293D schaltet Motor manchmal nicht ab

    Anzeige

    Bitte um Hilfe bei einem L293D-Problem - der Controller schaltet meinen Get riebemotor auf 1Y-2Y (Rechts vorwärts) nicht ab.

    Motor - gehackter Billigservo hier.
    Schaltplan ähnlich wie hier, aber Belegung des L293D siehe unten.
    Aufbau vorher so, aktueller Stand ist dieser hier.
    Ansteuerung des L293D von mega328P, 20 MHz.
    Belegung des Motortreibers L293D:
    Ausgänge 1Y+2Y - - - - Motor 12 - rechter Motor
    Eingang 1/PWM - - - - - von PD5/OC0B
    Eingang 2 - - - - - - - - von PD4
    Eingang 7 - - - - - - - - von PB4

    Befehlscode:
    Code:
    //  Drehrichtungsbefehle für Motor 1,2 = "rechter" Motor
     void M12pos (void)             // Mot12 dreht im Uhrzeigersinn = neg. math.
     { PORTB  |=  (1<<PB4);  PORTD  &= ~(1<<PD4);  mdir12 = 1; }
    //             r r r r r r r Motor 1,2 = rechter Motor r r r r r r
     void M12neg (void)             // Mot12 dreht im mathematisch positiven Drehsinn
     { PORTB  &= ~(1<<PB4);  PORTD  |=  (1<<PD4);  mdir12 = -1; }
    //             r r r r r r r Motor 1,2 = rechter Motor r r r r r r
     void M12stp (void)             // Motor 12 aus
     { PORTB  &= ~(1<<PB4);  PORTD  &= ~(1<<PD4); }
    //                -----------------------
    //  Drehrichtungsbefehle für Motor 3,4 = "linker" Motor
     void M34neg (void)             // Mot3,4 dreht im Uhrzeigersinn = neg. math.
     { PORTB  |=  (1<<PB0);  PORTD  &= ~(1<<PD7);  mdir34 = 1; }
    //             l l l l l l l Motor 3,4 = linker Motor l l l l l l
     void M34pos (void)             // Mot3,4 dreht im mathematisch positiven Drehsinn
     { PORTB  &= ~(1<<PB0);  PORTD  |=  (1<<PD7);  mdir34 = -1; }
    //             l l l l l l l Motor 3,4 = linker Motor l l l l l l
     void M34stp (void)             //  Motor 34 aus
     { PORTB  &= ~(1<<PB0);  PORTD  &= ~(1<<PD7); }
    Problem:
    Bei der Vorwärtsfahrt mit anschließendem Rechtstörn, ebenso bei der "Rückwärtsfahrt" mit anschließendem Rechtstörn schaltet zwar der linke Motor korrekt ab, gelegentlich aber läuft der rechte Motor weiter. Diese Fahrt wird als Fahrtest zur korrekten Fahrweise und Drehung benutzt, sie ist exakt das, was im oben genannten Video gezeigt wird. Fazit: das MiniD0 rotiert gelegentlich im Gegenuhrzeiger um das linke Rad, meistens ist die Funktion korrekt.

    Frage: kann sich jemand vorstellen, was daran Schuld ist? Schon mal jetzt Danke für Eure Hilfe.
    Ciao sagt der JoeamBerg

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Hallo!

    Ich vermute Software, kenne aber "Cäh" gar nicht.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Hast du kontrolliert ob der Ausgang auch als Ausgang programmiert sind.
    Wenn du nur den PullUp ein und ausschaltest könnte es zu so einem Verhalten kommen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    Zitat Zitat von Hubert.G Beitrag anzeigen
    Hast du kontrolliert ob der Ausgang auch als Ausgang programmiert sind ...
    Ja, hab ich kontrolliert. Auch die Platine wurde mehrfach geputzt und auf verbliebene Kurzschlussbrücken mit einer Lupe kontrolliert. Das Neckische daran ist, dass die Erscheinung a) zufällig und b) auch nach Wechsel auf einen fabrikfrischen Controller auftritt. Das Oszilloskop zeigt auch brav an, dass im Fehlerfall die Ausgangspinne high bleiben, obwohl die Software sie auf low setzen sollte :-/

    Zitat Zitat von PICture Beitrag anzeigen
    ... Ich vermute Software, kenne aber "Cäh" gar nicht ...
    Das vermute ich auch, aber ich habe fast "ALLES" mehrfach kontrolliert und finde nix. Das Problem tauchte auch erst vor einer Weile auf. UND - Softwarefehler sollten eigentlich immer reproduzierbare Fehler zeigen - dieser hier ist wirklich zufällig und nicht reproduzierbar ; - (
    Ciao sagt der JoeamBerg

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Ich könnte nur allgemein sagen, dass solche Softwarefehler ich nur wegen durch ISR veränderte, vorher nicht zwischengespeicherte und danach restaurierte Registerinhalte kenne, falls Interrupts auftretten ...

    Es wäre auch Stapelüberlauf und sonst alles auserhalb des Programmcodes möglich.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Softwarefehler müssen nicht immer reproduzierbar sein. Einflüsse von außen, wie Sensoren, können das ganze schon beeinflussen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    Zitat Zitat von Hubert.G Beitrag anzeigen
    Softwarefehler müssen nicht immer reproduzierbar sein ...
    Danke Hubert.G, danke PICture. Mein oben gezeigter Code hatte seit Jahren und stundenlang funktioniert bei meinen Fahrdingern, egal ob Dottie, MiniD0 oder ein namenloser Versuchsträger. Mit m168 und m328 und m328P. Nur jetzt - gings eben nicht wie "immer". Dabei ist dieser Code mit Beispielen wie z.B. dem C-Testprogramm der RNControl weitgehend deckungsgleich. Aber die Beispiele waren natürlich nicht so voll von Interrupts wie das MiniD0 jetzt ist - und daran KÖNNTE es gelegen haben. Und damits richtig verwirrend war, kam die Fehlfunktion AUSSCHLIEßLICH auf den Ports 1Y-2Y meiner L293D.

    Festgestellt hatte ich jedenfalls, dass der L293D bei Softwarebeispielen für Gleichstrommotoren mit Bürsten für den Motorstop eigentlich immer beide Schalteingängen 1A/2A oder 3A/4A auf low oder high gezogen werden. Das entspricht der Funktionstabelle des L293D im Datenblatt von TI (L293, L293D QUADRUPLE HALF-H DRIVERS, Doc SLRS008C − SEPTEMBER 1986 − REVISED NOVEMBER 2004, Seite 9). Hatte bei mir aber nicht einwandfrei funktioniert - bei zwei verschiedenen L293D, einer davon fabrikfrisch.

    Gelöst habe ich es jetzt so, dass ich für den Motorstop den PWM-Port auf low ziehe. Und so geht es - bisher in rund zwei Dutzend Testfahrten ohne den geringsten Fehler.
    Ciao sagt der JoeamBerg

  8. #8
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Gratulation ! Dein Erfolg freut mich wahnsinnig, weil ich mit meinem Wissen (k.A. über "Cäh") schon am Ende war.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    An sich schön wenn es funktioniert. Das aber ein Softwarefehler drinnen ist, ist doch sehr wahrscheinlich.
    Du überdeckst ihn jetzt dadurch das du den Enable auf Low ziehst und damit der Status der Schalteingänge nicht mehr relevant ist.
    Es kann nur leicht sein das sich der Fehler noch auf eine andere Weise bemerkbar macht.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Ähnliche Themen

  1. PRO-BOT128 Motor Schaltet sich nicht ab
    Von wiesi94 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 7
    Letzter Beitrag: 04.08.2010, 20:49
  2. l293d schaltet nicht
    Von robby-fant im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 29.08.2006, 22:47
  3. Antworten: 3
    Letzter Beitrag: 26.06.2006, 20:46
  4. RN-Motor läuft nur manchmal
    Von ISI05 im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 4
    Letzter Beitrag: 02.04.2006, 14:08
  5. ISP geht ManchmaL nicht
    Von Superhirn im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 06.02.2006, 21:21

Berechtigungen

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