oberallgeier
05.07.2012, 09:47
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.
(https://www.roboternetz.de/community/threads/32293-DC-Kleinstmotor-mit-Getriebe-Drehsensor-5V-510-Upm?p=401963&viewfull=1#post401963)Schaltplan ähnlich wie hier, (https://www.roboternetz.de/phpBB2/files/m168d-schaltung-x97.pdf) aber Belegung des L293D siehe unten.
Aufbau vorher so, (http://oberallgeier.ob.funpic.de/miniDO_1837.jpg) aktueller Stand ist dieser hier. (https://www.roboternetz.de/community/attachment.php?attachmentid=21323&d=1327591249)
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:
// 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.
Motor - gehackter Billigservo hier.
(https://www.roboternetz.de/community/threads/32293-DC-Kleinstmotor-mit-Getriebe-Drehsensor-5V-510-Upm?p=401963&viewfull=1#post401963)Schaltplan ähnlich wie hier, (https://www.roboternetz.de/phpBB2/files/m168d-schaltung-x97.pdf) aber Belegung des L293D siehe unten.
Aufbau vorher so, (http://oberallgeier.ob.funpic.de/miniDO_1837.jpg) aktueller Stand ist dieser hier. (https://www.roboternetz.de/community/attachment.php?attachmentid=21323&d=1327591249)
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:
// 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.