Forum: Mikrocontroller und Digitale Elektronik ATmega328PB mit H-Brücke hat Aussetzer


von Paul (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich entwickle gerade einen Motorsteller und habe leider so meine 
Problemchen.

Grundsätzlich läuft er rund in beide Richtungen mit 32kHz, allerdings 
macht er mir in eine Richtung Probleme. So bei ca. 60% PWM verspringt 
sich der Code immer wieder mal oder der Chip resetted, ohne dass im 
MCUSR irgendwelche Flags gesetzt werden (BrownOut wäre auf 2.7V 
eingestellt). Wird die Drehzahl langsam auf die 60% hochgestellt, kann 
man erkennen, dass vermehrt Störungen auftreten, auch der Motor beginnt 
etwas zu krächzen. Ich vermute, dass die Lager in diesem Drehzahlbereich 
nicht sauber laufen. Es handelt sich um einen billigen Motor zum Testen, 
allerdings soll mir der die Schaltung natürlich nicht außer Tritt 
bringen.

Potentiell habe ich verschiedene Dinge ausgemacht und bin auf eure 
Meinung gespannt:
1. Keine Gatewiderstände für die N-MOSFET sowie den P-Ansteuer-MOSFET. 
Ich dachte der Ausgangswiderstand wäre genug, aber können mir 
Gateentladungen der FETs Störungen verursachen?
2. Keine Gatewiderstände für die P-MOSFETs. Hier habe ich überhaupt ein 
komisches Phänomen, siehe Oszi - Attachement. Warum habe ich hier eine 
Spitze nach unten? Ich habe auch mit der Versorgungsspannung (Netzteil) 
experimentiert und diese Spitze unterschreitet nie 3V... Die 
Akkuspannung an der anderen Seite von RN5C ist relativ stabil.
3. 10Ohm vor die Blockkondensatoren
4. Drossel in die 5V Leitung
5. Ein 1000uF parallel zur Versorgungsspannung hat nichts genutzt.

Ich habe auch versucht die Frequenz auf 2kHz runterzusetzen, aber das 
hat das Problem noch verschlechtert.

von CATCO (Gast)


Lesenswert?

Hi,

hier mal ein paar Ideen:

1. Teste mal nur mit internem Takt
2. Setze mal 100nF parallel zum PullUp der P-Mos
3. Rücklaufdiode über den Spannungsregler.

von qwerty (Gast)


Lesenswert?

Im Einschaltmoment der low side (M2 LU) bricht die Versorgungsspannung 
ein, weil der Motor einen zu hohen Strom zieht bzw. das Netzteil den 
Strom nicht liefern kann. Kleineren Motor verwenden oder anderes 
geeignetes Netzteil bzw. Akku mit low ESR Kondensatoren. Kurz gesagt, 
das Netzteil ist nicht geeignet für den Motor oder anders rum. Außerdem 
kann man kleine Gate-Widerstände verwenden, dann sind die Schaltflanken 
und der Stromanstieg nicht so steil.

von Spess53 (Gast)


Lesenswert?

Hi

>3. Rücklaufdiode über den Spannungsregler.

STM Dataseet:

Application with high capacitance loads and an output voltage greater 
than 6 volts need an external diode

MfG Spess

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

CATCO schrieb:
> 2. Setze mal 100nF parallel zum PullUp der P-Mos

Wofür soll das denn gut sein?

Grundsätzlich ist ein AVR Pin bei 32kHz zu schwach, um ein Gate zügig 
aufzuladen und zu entladen. Aber geanuso wichtig ist die Ansteuerung 
durch die Software. Wie ist denn hier die Strategie? Ich sehe da zwar 2 
benutzte OC Ausgänge, aber auch 2, die offensichtlich nur per Software 
bedient werden. Besser ist da ein Mega48-328, der auch komplementäre 
Timerausgänge zur Verfüngung stellen kann.
Genauso wichtig ist die Dämpfung der Gegen-EMK. Die wird über die 
Bodydioden in die 12V abgeleitet und müssen dort vom Elko geschluckt 
werden. Es lohnt sich also, hier kräftig abzublocken.

: Bearbeitet durch User
von Willi (Gast)


Lesenswert?

Hallo,

siehe Dir mal den PORTD.2 an. Der PB kann da zwei PWM kombinieren und 
das spinnt, der schaltet den D2 immer mit auch wenn man den Modulator 
gar nicht verwendet (bin gerade unterwegs hab das Datenblatt nicht bei).

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Die Schaltung ist kompletter Müll und für hohe Schaltgeschwindigkeiten 
unbrauchbar. Da hat irgendwer vergessen, daß MOSFETs eine Gate-Kapazität 
haben, die in dieser Anwendung möglichst schnell umgeladen werden muss.

: Bearbeitet durch User
von Paul (Gast)


Lesenswert?

Ich kann nicht bestätigen, dass die Spannung zusammenbricht. Ich habe 
mit dem Oszi weder an der Versorgungsspannung, noch am uC einen 
Spannungseinbruch messen können.

Den Motor oder das Netzteil zu tauschen ist keine Lösung, da es sich 
hier um ein Testsetup handelt. Der Motor soll größer werden und statt 
dem Netzteil kommt ein Akku. Das Problem bestand auch mit dem Akku.


1. Kein Gatewiderstand oder AVR Pin zu schwach:
Die kleinen MOSFETs haben eine Gatekapazität von 550pF und der AVR kann 
bis zu 40mA pro Pin liefern. Auch Kurzschlüsse bringen ihn normalerweise 
nicht aus der Ruhe. Außerdem sieht man doch am Oszi, dass der N-Kanal 
ultraschnell schaltet. Die P-FETs werden übrigens statisch geschaltet 
und die N-FETs machen die PWM.
Fazit: FETs scheinen zu schalten. Können die 32kHz Stromspitzen durch 
die Gateladung/-entladung das interne Energieniveau des Controllers 
stören?

2. Rücklaufdiode über den Spannungsregler
Es werden zwei Spannungsregler verwendet: Der IFX1117 macht ca. 6V und 
hat tatsächlich keine Rücklaufdiode. Der davor geschaltete MCP1802 
schon. Die Rücklaufdiode schützt aber nur den Spannungsregler vor 
Beschädigung, oder?

3. PORTD.2 PB kann da zwei PWM kombinieren...
Das ist sehr interessant. Der Pin geht bei mir auf die zweite Seite der 
H-Brücke und . Woher hast du die Infos?

Kann mir jemand den Signalverlauf der blauen Kurve (Gate P-Kanal) 
erklären? Woher kann dieser Einbruch kommen? Die andere Seite des 
Pull-Ups hat keine Einbrüche und FDC6561 steuert ebenfalls nicht. Kann 
es sich um eine Rückkopplung handeln? Kann der P-MOSFET dadruch leitend 
werden?

Und eine weitere Frage, die mich beschäftigt: Warum resetted der 
Controller, ohne eines der Reset Flags zu setzen? Falls es durch 
"Verspringen" im Code an eine nicht-existente Adresse verursacht wird, 
warum schlägt der BrownOut nicht schon davor an?
Ist die Taktgenerierung vlt gestört?

VG, Paul

von qwerty (Gast)


Angehängte Dateien:

Lesenswert?

Paul schrieb:
> Ich kann nicht bestätigen, dass die Spannung zusammenbricht. Ich habe
> mit dem Oszi weder an der Versorgungsspannung, noch am uC einen
> Spannungseinbruch messen können.

Das widerspricht eindeutig dem oben geposteten Oszi-Bild (dunkelblaue 
Linie, Meßpunkt zwischen RN5C u. FDS 4935).

von Paul (Gast)


Angehängte Dateien:

Lesenswert?

Aber der "Spannungseinbruch" kommt nicht von der Versorgungsspannung. 
Auf der Netzteilseite des Widerstands gemessen ist außer leichten 
Schwingungen im Zehntelvoltbereich nichts zu sehen.

Aber ich frage mich auch, was diesen Einbruch verursacht.

Je größer das Tastverhältnis, desto größer der Sprung.

von Paul (Gast)


Lesenswert?

Sorry, beim oberen Beitrag fehlt etwas.

Die beiden Fotos beziehen sich auf die Anlaufphase des Motors. Die erste 
Spitze in blau ist abhängig vom Tastverhältnis. Je größer das 
Testverhältnis desto größer auch die Spitze.

von spess53 (Gast)


Lesenswert?

Hi

>Aber ich frage mich auch, was diesen Einbruch verursacht.

Hast du irgendwelche Totzeiten, die verhindern das die Transistoren 
gleichzeitig schalten, in der Software drin?

Was zeigt dieser Mischmasch im Bild 20200429_183714.jpg?

MfG Spess

von Steffen H. (Firma: www.shotech.de) (mc_sho) Benutzerseite


Angehängte Dateien:

Lesenswert?

Das Portpin wird den FET in der sehr seltsamen Motorbrücke nicht 
durchschalten können. Keine Chance. Baue Dir die Brücke mit FET Treibern 
auf und überarbeite die Schaltung. Wurde aber weiter ober schon 
angeschnitten.
Beitrag "Re: ATmega328PB mit H-Brücke hat Aussetzer"

Ich hänge mal ein PDF an, das Dir eine H-Bridge zeigt. Die funktioniert 
schon seit Jahren und ist auch leicht an andere Spannungen und Ströme 
anzupassen. Den richtigen FET mit einen ensprechenden RDSon, den Du 
bestimmst mit Deiner PWM-Frequenz. Bei dem Beispiel von mir liegt die 
bei 30KHz. Die Software läuft in einem ATmega168 (PD-Regler ) mit 
Incremental Input.

Viele Grüsse,
Steffen

von Paul (Gast)


Lesenswert?

Wieso genau ist meine H-Brücke "sehr eigenartig"?

Weil ich keinen FET Treiber verwende?

Der FDS6990 hat eine Gatekapazität von 550pF, der MegaPin einen 
Ausgangswiderstand irgendwo im 100Ohm Bereich, ergibt eine Zeitkonstante 
von 50E-9s. Warum soll ich damit keine 32kHz hinbekommen?! Außerdem 
sieht man doch auf den Oszibildern, dass der FET schaltet? (pink am 
oszi) Sollte ich hier am Holzweg sein, lerne ich sehr gerne, aber dann 
bitte mit fundierten Argumenten.
Außerdem habe ich keine Probleme, die auf schlecht schaltende FETs 
hindeuten würden, wie zB Erwärmen der FETs.

Mischmasch im Bild 20200429_183714: In hbruecke.PNG sieht man die 
Messpunkte. Gelb ist das Gate des P-MOSFET, der statisch nach unten 
zieht.

Daher gibt es auch keine Totzeiten einzuhalten, außer beim Anlaufen des 
Motors und da mache ich fix ca 1us.

/Paul

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.