www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik L298: 2 Motoren - bei unterschiedlicher Richtung heiß


Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich verwende als Motortreiber den L298:
http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=1;INDE...

In dieser Beschaltung:
http://www.roboternetz.de/bilder/schaltung298getriebe.gif

Die Motorspannung beträgt etwa 24V.

Wenn ich die Motoren einzeln ansteuere (also nur ein Motor läuft), 
funktioniert das Problemlos, links drehen, rechts drehen, ausschalten, 
bremsen, PWM. Auch wenn beide Motoren sich in die selbe Richtung drehen 
gibt es noch keine Probleme und der IC bleibt auch bei Belastung relativ 
kühl.

Wenn ich jedoch die beiden Motoren in unterschiedliche Richtungen drehen 
lasse, wird der IC selbst im Leerlauf schnell heiß. Die Motoren drehen 
sich auch nur sehr langsam und ich messe eine Motorspannung von etwa 4V.

Hat jemand eine Idee an was das liegen könnte? Ich bin im Moment 
ziemlich ratlos.

Vielen Dank

Franz

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hat jemand eine Idee an was das liegen könnte? Ich bin im Moment
>ziemlich ratlos.

An der Software...

Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, dann hier der in Frage kommende Code:

Konstanten:
#define MOT_B_DDR DDRB
#define MOT_A_DDR DDRD

#define MOT_PWM_DDR DDRB

#define MOT_B_PORT PORTB
#define MOT_A_PORT PORTD

#define MOT_B_OCR OCR1B
#define MOT_A_OCR OCR1A

#define MOT_B_1 PB3
#define MOT_B_2 PB2

#define MOT_B_D1 DDB3
#define MOT_B_D2 DDB2

#define MOT_A_1 PD5
#define MOT_A_2 PD4

#define MOT_A_D1 DDD5
#define MOT_A_D2 DDD4

#define MAX_SPEED_PWM 1023

PWM initialisieren:
void init_pwm()
{
  cli();

  //Nicht invertierter 10 Bit PWM Timer 1
  //Zusätzlich (1 << COM1A1) für invertierten Timer
  TCCR1A |= (1 << COM1A1) | (1 << COM1B1) | (1 << COM1C1) | (1 << WGM11) | (1 << WGM10);

  //Timer auf CPU Takt stellen
  TCCR1B &= ~((1 << CS11) | (1 << CS12));
  TCCR1B |= (1 << CS10);

  //Alle Motoren ausschalten
  OCR1A = 0;
  OCR1B = 0;

  sei();
}

Motoren initialisieren:
void init_motoren()
{
  MOT_A_DDR |= (1 << MOT_A_D1) | (1 << MOT_A_D2);
  MOT_B_DDR |= (1 << MOT_B_D1) | (1 << MOT_B_D2);

  //PWM Ports auf Ausgänge stellen
  MOT_PWM_DDR |= (1 << 5) | (1 << 6);

  init_pwm();
}

PWM-Funktionen:
void mot_a_pwm(uint16_t pwm)
{
  cli();
  MOT_A_OCR = pwm;
  sei();
}

void mot_b_pwm(uint16_t pwm)
{
  cli();
  MOT_B_OCR = pwm;
  sei();
}

Ansteuerung:
void mot_a_rechts(uint16_t pwm)
{
  mot_a_pwm(pwm);
  MOT_A_PORT &= ~(1 << MOT_A_1);
  MOT_A_PORT |= (1 << MOT_A_2);
}

void mot_b_links(uint16_t pwm)
{
  mot_b_pwm(pwm);
  MOT_B_PORT &= ~(1 << MOT_B_1);
  MOT_B_PORT |= (1 << MOT_B_2);
}

In main:
init_motoren();

mot_a_rechts(MAX_SPEED_PWM);
mot_b_links(MAX_SPEED_PWM);

Ich kann keinerlei Fehler finden :-/

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal Schlatplan zeigen...

Autor: Franz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

den eigentlichen Schaltplan habe ich ja oben bereits gepostet (meiner 
ist lediglich ein Nachbau mit einem anderen Anschluss).
Das Board habe ich im Anhang kopiert. Die beiden Motoren A und B sind am 
unteren Motortreiber angeschlossen.
Die roten Linien sind Drahtbrücken. Die Anschlüsse zum µC müssen 
stimmen, da ja die Einzelsteuerung der Motoren klappt.

HTH

Franz

Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Beobachtung habe ich gerade noch gemacht:
Die Motoren sind ja mit jeweils 2 Kabel am Motorboard angeschlossen, 
einer ist bei "voller Fahrt" mit 24V, der andere mit Masse beschaltet.
Wenn ich die beiden Motoren nun mit unterschiedlichen Richtungen drehen 
lasse, fällt ja die Spannung stark ab. Sobald ich aber bei dem einen 
Motor das Kabel mit 24V entferne, dreht sich der andere Motor wieder 
normal. Das gleiche wenn ich beim andern Motor das Massekabel entferne 
dreht sich ersterer Motor normal (jeweils nur das andere Kabel entfernen 
hilft nicht).
Komischerweise dreht sich jedoch der eine Motor, bei dem das Massekabel 
entfernt wird, trotzdem noch, jedoch nur sehr langsam. Ist das vllt ein 
Hinweis darauf dass da mit der Verkabelung was nicht stimmt?
Die Motoren sind so entstört:
http://www.roboternetz.de/wissen/images/3/3a/Entstoerung.gif
Als Masse habe ich das Gehäuse der Motoren benutzt. Über eine 
Alu-Grundplatte sind die Gehäuse leitend miteinander verbunden.
Ist das in Ordnung?

Übrigens habe ich auch schon versucht die PWM-Steuerung 
auszukommentieren und die Enable-Leitungen ständig auf Ausgang zu 
schalten, hat jedoch nichts geholfen.

Über weitere Hilfe würde ich mich sehr freuen

Franz

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klemm die Motoren vom L298 ab, und messe ob zwischen den Anschlüssen der 
beiden Motoren eine Verbindung besteht. Falls ja, dann hast du dein 
Problem.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Franz (Gast)

>Komischerweise dreht sich jedoch der eine Motor, bei dem das Massekabel
>entfernt wird, trotzdem noch, jedoch nur sehr langsam. Ist das vllt ein
>Hinweis darauf dass da mit der Verkabelung was nicht stimmt?

Auf jeden Fall!

>Als Masse habe ich das Gehäuse der Motoren benutzt. Über eine
>Alu-Grundplatte sind die Gehäuse leitend miteinander verbunden.
>Ist das in Ordnung?

NEIN! Du hast eine H-Brücke. Die Motoren dürfen KEINERLEI Massebzug 
haben, auch nicht untereinander. Die müssen beide vollkommen isoliert 
werden!

MFG
Falk

Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh in der Tat, da scheint was nicht zu passen. Danke für den Tipp, jetzt 
weiß ich wo ich nach dem Fehler zu suchen habe :)

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wei ja nicht, was du für Motoren verwendest. Aber ich habe mal bei 
einigen Typen herausgefunden, dass die intern zwischen beiden 
Anschlüssen einen kleinen Entstörkondensator (zwischen den beiden 
Anschlüssen)) hatten. Den musste ich herauslöten, erst dann war ein 
ordentlichen "dimmen" per PWM möglich.

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Kondensator ist zur Entstörung gedacht, damit dein Mikrocontroller 
(und was sich noch so in näherer Umgebung zu deinem Motor) nicht 
gelegentlich aufhängt und von vorn anfängt.

Ein Schaltplan für den kompletten Aufbau könnte helfen, den Fehler zu 
finden...

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das stimmt schon, aber der Kondensator hat meine PWM vermurkst und mit 
der Induktivität des Motors einen Schwingkreis gebildet. Der Motor war 
ja unsprünglich nur dazu da, an echter Gleichspannung betrieben zu 
werden...

Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Hilfe. Das Problem lag eben daran, dass einer der beiden 
Motorenanschlüsse mit dem Gehäuse verbunden ist, naja und wenn die 
Gehäuse untereinander verbunden sind gibt es eben bei unterschiedlicher 
Polung einen Kurzschluss (anscheinend war die Verbindung nicht sehr gut, 
50 Ohm Widerstand etwa, drum ist nicht mher passiert).

Konnte zum Glück heute noch Plastikschrauben auftreiben, so haben die 
Motoren keinen leitenden Kontakt mehr zur Grundplatte und das Problem 
ist gelöst.

Eine erfolgreiche Woche

Franz

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Konnte zum Glück heute noch Plastikschrauben auftreiben, so haben die
>Motoren keinen leitenden Kontakt mehr zur Grundplatte und das Problem
>ist gelöst.

Ich würde dir eher raten, die Verbindung Motoranschluss-Gehäuse zu 
trennen und das Gehäuse auf GND zu legen.

Ein Gehäuse, das mit ner PWM betrieben wird, zieht sehr hohe Ströme beim 
Schalten und bildet eine gute Antenne...

Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh man ich habe gedacht eine Leitung ist von Haus aus (durch den 
Hersteller) mit dem Gehäuse verbunden. Nach deinem Hinwe (lippy) habe 
ich gerade an einem ausgebauten Motor festgestellt, das das gar nicht 
der Fall ist. D.h. da ist nur irgendwo die Isolierung der Anschlüsse an 
den Motoren gerissen.

Nun ja, für die Präsentation morgen spielt das wohl keine Rolle :)

Grüße

Franz

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Nun ja, für die Präsentation morgen spielt das wohl keine Rolle :)


Ein zukünftier Messemuster-Bauer...
Viel Erfolg!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.