Mega32 + L293D + PWM, nur 0V oder 12V

Gast #1039911
Lesenswert?

Ich habe ein kleines Problem mit meiner PWM-Steuerung, die ich gerade 
versuche zu bauen.

Am L293D ist einmal die Spannung für die Logik (5V) und 12V für den 
Motor angelegt (auch richtig herum).
Hiernach ( http://www.mcu.hk/GIF/L293D.gif ) ist an In1 H, In2 L, 
Out1+Out2 am Motor, GND sind alle angeschlossen. En1 ist am 
Microcontroller am PWM-Pin angeschlossen.

Wenn ich mit meinem Multimeter messe oder eine LED mit Vorwiderstand 
direkt an den Pin anschliesse, kann ich das ganze regeln mit der 
Software auf meinem M32 (relevante Codeausschnitte kommen gleich noch). 
Jetzt habe ich eben den L293D daran angeschlossen und einen Motor dran. 
Wenn der PWM-Pin aus ist, dann ist am Motorausgang auch alles aus, aber 
EGAL was ich am PWM-Pin über 0V anliegen lasse, es kommen immer nur die 
12V heraus, obwohl, wenn ich in der Schaltung nochmal messe, kommt 
selbst mit dem Motortreiber noch eine Spannung heraus, die ich verändern 
kann.

Der Mega32 läuft mit einem externen 8MHZ Quarz, die Fusebits stimmen, 
der Quarz ist richtig angeschlossen mit den 22pF Kondensatoren. Ich 
Programmiere mit dem avr-gcc unter Linux. Das Restliche Programm (u.a. 
mit Display-Ansteuerung, Interrupt gesteuerter UART, ADC-Funktionen, 
...) funktioniert einwandfrei.

Hier das relevante Stückchen Code:
1
DDRD = (1 << PD5 ); // pd5 ausgang
2
TCCR1A = (1<<COM1A1) | (1<<WGM11);
3
TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS10);
4
ICR1 = 0x6FFF;
5

6
OCR1A = 0x3FFF;

Den Code habe ich aus eurem " AVR-GCC-Tutorial ", compiliert ohne Fehler 
oder Warnungen.

Wenn ihr noch was wissen wollt/müsst, sagt bitte bescheid.
Ich danke hier auch gleich schon mal allen, die versuchen, mir zu 
helfen.
Gast #1040110
Lesenswert?

Hallo,

ohne den Leistungstreiber genau zu kennen - man sollte normalerweise 
keinen PWM auf einen enable Pin geben, der ist dazu da, die ganze 
Anordnung abzuschalten. Der PWM muss normalerweise auf die In Pins, und 
zwar so, dass die gewünschte Logikfunktion erreicht wird. Also z.B. In1 
auf High und In2 auf PWM. Enable ist dabei immer High. Für eine 
Richtungsumkehr dann einfach In1 auf Low legen und die Wirkungsrichtung 
des PWM umdrehen.

Es kann sein, dass der Enablepin gegen hochfrequente Signale geschützt 
ist und ein PWM-Signal als dauer high erkennt. Das ist aber nur eine 
Vermutung.

Wenn du es so machst, sollte es auch funktionieren.

Grüße,

Peter
Gast #1040152
Lesenswert?

@ Peter Diener:

Tut mir leid, das ist Unsinn, was du da schreibst. Der Enable-Eingang 
ist unter anderem auch dazu gedacht, einen Motor per PWM zu regeln.

@ Nils: Du schreibst:

> EGAL was ich am PWM-Pin über 0V anliegen lasse, es kommen immer nur die
> 12V heraus,

Der PWM-Pin des Controllers kann keine Spannungen ausgeben, nur 
Rechteckspannungen mit wechselndem Tastverhältnis. Wenn du hier eine 
Gleichspannung mit einem normalen Billig-Multimeter messen willst, wirst 
du keinen Erfolg haben.

> obwohl, wenn ich in der Schaltung nochmal messe, kommt
> selbst mit dem Motortreiber noch eine Spannung heraus,
> die ich verändern kann.

Das heisst doch, dass die Schaltung funktioniert.

Welche Spannung hast du in diesem Fall an welchem Punkt der Schaltung 
womit gemessen? Hast du ein Oszilloskop, wo du dir die Signale ansehen 
kannst?
Gast #1040179
Lesenswert?

@Kobaltchlorid:

Nils misst eben mit einem Multimeter die mittlere Spannung, die sich 
durch die Pulsweitenmodulation ergibt. Die Tatsache, dass am MC-Pin die 
Spannung verändert werden kann, auch mit angeschlossenem Treiber, zeigt, 
dass die Software funktioniert. Wenn er am Ausgang des Treibers aber nur 
immer 12 Volt misst, sobald irgendeine Pulsweite > 0 eingestellt ist, 
deutet das auf eine Filterung des Enablesignals im Leistungsteil hin. 
Und wie gesagt: Der enable ist zum Bereitschalten (enable) der Schaltung 
da, nicht zur Modulation des Augangs. Es mag sein, dass das in manchen 
Schaltungen funktioniert. Aus dem Datenblatt geht das aber nicht hervor 
und es hängt mit sicherheit auch von der verwendeten Frequenz ab. Aber 
nach der Fehlerbeschreibung von Nils ist es recht wahrscheinlich, dass 
es deswegen nicht funktioniert. Und was spricht denn gegen die korrekte 
Variante, einen der In Pins zu Modulieren?

@Kobaltchlorid:

Versuch auch mal niedrigere PWM-Frequenzen.

Grüße,

Peter
Gast #1040313
Lesenswert?

Hallo Tassilo,

die Zwangskommutierung ist mit der Selbstkommutierung in diesem Fall 
identisch. Stell dir vor Brücke 1 ist auf High und Brücke 2 auf Low. 
Dann fließt Strom von Brücke 1 durch den Motor in Brücke 2. Der 
Motorstrom integriert auf. Bestromt werden nur Transistoren, keine 
Dioden.

Jetzt erfolgt eine Kommutierung: Brücke 1 ist immer noch High, Brücke 2 
kommutiert von Low nach High um. Die Spannung über dem Motor ist jetzt 
Null, der Strom integriert ab. Er fließt immer noch in die gleiche 
Richtung (Motorinduktivität). Jetzt fließt der Stom in Brücke 1 immer 
noch durch den oberen Transistor, in Brücke 2 aber durch die obere Diode 
auf die positive rail zürück und dann wieder in den oberen Transistor 
von Brücke 1. Die Tatsache, dass in diesem Zyklus auch der obere 
Transistor von Brücke 2 eingeschaltet ist, ist irrelevant.

Wenn man enable wegnehmen würde, wären alle Brückentransistoren 
nichtleitend und der Freilauf der Motorinduktivität erfolgt doppelt so 
schnell gegen die negative Versorgungsspannung über die Dioden. Das 
bedeutet doppelten Stromrippel am Motor. Daher ist der Betrieb wie ich 
ihn vorschlage vorteilhaft.

Zudem ist damit ein Bremsbetrieb beim Richtungsumsteuern möglich, der 
die Bremsleistung in die Batterie zurückspeist.

Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren