Forum: Mikrocontroller und Digitale Elektronik AVR Reset durch Stromspitzen beim Brushlessregler


von Markus H. (masterofd)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich versuche zur Zeit einen Brushlessregler vernünftig ans Laufen zu 
bringen.
Das ganze scheint auch bis auf ein Problem zu funktionieren:
Beim Beschleunigen aus Standgas auf eine deutlich höhere Geschwindigkeit 
(durch Erhöhen des Duty-Cycles der PWM) kommt es zu einem Reset des 
Mikrocontrollers.
Nachträglich habe ich eine Diode in die Versorgungsspannung des 
Mikrocontrollers eingebaut und bis zu 400µF an Kondensatoren 
dahintergeschaltet (siehe gelbe Einzeichnungen im Anhang), es scheint 
aber keine wirkliche Änderung zu bringen. Testweise habe ich dann noch 
eine Diode in die Masseleitung gelötet, das Problem des Resets tritt 
dann nicht mehr auf, allerdings läuft der Motor dann immer auf Vollgas 
und erhöhtem Stromverbrauch (18A anstatt den normalen 13A). Ich nehme 
mal an das liegt an dem erhöhten Massepotential des AVR durch die Diode, 
während die Treibermosfets und Transistoren noch auf der "echten" Masse 
liegen...
Außerdem habe ich die Versorgungsspannung des µC zum Test einmal über 
ein externes zweites Netzteil angeschlossen, damit lief alles perfekt.

Der Reset des AVRs scheint also wirklich durch den Spannungseinbruch 
beim Beschleunigen hervorgerufen zu werden, aber wie kann ich dies 
verhindern? Sollte die Diode in der Versorungsspannung nicht ausreichen? 
Welche Dinge sollte man beim Entwurf der Platine noch beachten? 
Eigentlich dachte ich die Platine wäre "vernünftig" entworfen... ;)


Viele Grüße
Markus

von Qwerty (Gast)


Lesenswert?

Am Eingang mind. 330µF low esr Elko verwenden. Auch am Ausgang schadet 
es nicht z.B. 220µF low esr anzuschließen. Es besteht ein Unterschied 
zwischen einfachen Elkos und low esr Elkos.

Keine Angabe zur Stromversorgung. Wie weit sinkt die Versorgungsspannung
unter Last ab? Der 78L05F ist meiner Meinung eher ungeeignet für diesen 
Zweck. Nur 100mA Maximum und ein Vd von 1,7V! Besser einen LDO-Regler 
(low drop out) verwenden.

Brown out an der MCU eingestellt? Und wenn ja, auf welchen Wert?

Bei einer schlechten Ansteuerung der Halbbrücken kann es auch
zu einem Spannungseinbruch kommen, wenn die nötigen Totzeiten
nicht beachtet werden (Kurzschluß).

von 132 (Gast)


Lesenswert?

Ich würde dir noch zusätzlich zu den 100nF für jeden Power-Pin 4,7uF als 
X7R KERAMIK (gibt es für 16V bis 0603 runter) parallel zu den 100nF 
Decoupling empfehlen. Plus natürlich - wie bereits genannt - eine 
größere Kapzität auch als Low-ESR Elko. Eine ähnlich große Kapazität 
(2stelliger bis Anfang 3stelliger uF-Bereich) schadet auch am Ausgang 
des LDO nicht (wenn er dann noch sauber regelt). Sieht man auch bei den 
meisten Brushlessreglern. Die dicken Elkos schauen doch immer raus. Und 
natürlich auf Shoot-Throuh an den H-Brücken checken. Man könnte auch mal 
versuchen eine ordentliche Bank Keramikkondensatoren parallel zu 
schalten und dadurch die schneller sterbenden Elkos zu ersetzen. Einfach 
mal als Versuch. Könnte aber auch sein, dass man mit dem Elko (evtl. mit 
einem PTC begrenzt) bis in die 4stelligen uF-Bereich rein muss. Je nach 
Leistung.

von Markus H. (masterofd)


Lesenswert?

Danke für die Antworten,

ich habe jetzt noch 2 low ESR 330µF Elkos vor den 78L05 gepackt, 
außerdem 100µF Elko dahinter. Ein 330µF low ESR Elko ist auch noch vor 
Diode, also direkt an der Motorspannung.
Hat aber auch nicht wirklich was gebracht.
Dann habe ich noch direkt an die VCC Pins des µC einen 10µF Keramik 
Kondensator und parallel dazu nochmal 100nF gepackt. Jetzt gibt es 
scheinbar keinen Reset mehr. Komischerweise spinnt jetzt die 
Ansteuerung, die Motorgeschwindigkeit ist ziemlich zufällig und kann 
nicht mehr sinnvoll gesteuert werden. Da werde ich morgen nochmal 
genauer nachsehen woran es liegt.

Die Totzeit dürfte bei ein paar ns liegen, testweise habe ich aber auch 
mal bis zu 10µs genommen, kein Unterschied.
Dass der 78L05 "nur" 100mA schafft sollte doch egal sein oder? Es hängt 
ja nur der µC dran. Eingangsspannung ist 16V, da sollte theoretisch doch 
auch mit 1,7V Dropout noch genug Reserve sein?

von pitschu (Gast)


Lesenswert?

Ich glaube nicht, dass du ein RESET Problem hast, sondern der brown out 
schlägt wegen falscher Ansteuerung der Mosfets zu. Die 100nf in den 3 
NULL_A/B/C Leitungen sind viel zu groß wen nicht sogar komplett 
überflüssig. Bei mehreren kHz PWM Frequenz wird dan nichts vernüftiges 
mehr gemessen, zumindest nicht pünktlich. Schau dir mal andere 
Reglerschaltungen an, in den meisten sind keine C's drin.

pitschu

von Markus H. (masterofd)


Lesenswert?

Die 100nF kommen aus der Schaltung von Mikrokopter.de, die habe ich mehr 
oder weniger so übernommen 
(http://mikrocontroller.com/files/BL_Ctrl_V2_0_Doku.pdf). Da scheint es 
ja auch zu funktionieren... Aber ich kann gerne mal kleinere Werte 
testen, mal sehen ob es einen Unterschied gibt.

Aber auch mit deaktiviertem Brown Out kommt es zu dem Problem, es sind 
also scheinbar wirklich größere Störungen.

von Die Welt geht vor die Hunde (Gast)


Lesenswert?

Womöglich Impulse durch schalten der Induktivität?

Teste:
Diode und 10 Ohm-Widerstand in Reihe vor den Spannungsregler des AVR, 
direkt vor und hinter dem Widerstand ein 100n Kerko (Vielschicht). Dann 
noch eine Suppressordiode von GND nach VCC innerhalb des AVR-Bereichs 
P6KE6v8 (DC-Version).

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


Angehängte Dateien:

Lesenswert?

Markus H. schrieb:
> Die 100nF kommen aus der Schaltung von Mikrokopter.de, die habe ich mehr
> oder weniger so übernommen
> (http://mikrocontroller.com/files/BL_Ctrl_V2_0_Doku.pdf). Da scheint es
> ja auch zu funktionieren... Aber ich kann gerne mal kleinere Werte
> testen, mal sehen ob es einen Unterschied gibt.

Bist du sicher, das es nicht 100pF sind? Ich verrate kein Geheimnis, 
wenn ich das MC100 Kit von Atmel anschaue und da nur 100p und optional 
noch einen 470p parallel sehe. Anbei mal der Auszug.

: Bearbeitet durch User
von Markus H. (masterofd)


Angehängte Dateien:

Lesenswert?

So, ich habe mal mehrere Dinge ausprobiert:
Zuerst einmal zu den 100nF in der BEMF-Erkennung: Ich habe die 
Kondensatoren zum Test durch 10nF ersetzt, danach lief der Motor nicht 
mehr richtig, es kam zu plötzlichem Stillstand oder schwankender 
Geschwindigkeit. Ich denke die 100nF sind da korrekt, ich habe ja auch 
nur 4,7k Widerstände im Spannungsteiler.

Der Reset konnte wie gesagt durch einen 10µF Keramik Kondensator direkt 
an den Vcc Pins des µC verhindert werden, die fehlerhafte Ansteuerung 
liegt irgendwo in meinem selbstgeschriebenen Ansteuerprogramm, manuell 
über HTerm läuft es problemlos. Leider liegen die Vcc Pins so ungünstig 
auf der Platine, dass ein nachträglicher Einbau auf allen Platinen 
kompliziert wird..
Der vorhandene Pufferkondensator zur Stabilisierung der Vcc Spannung 
liegt auf der Rückseite und ist im angehängten Bild eingekreist. Ein 
Einbau des 10µF Kondensators an dieser Stelle bringt leider auch nichts, 
er muss wirklich direkt an die Pins gelötet werden.

Der Einbau eines 10 Ohm Widerstands hinter der Diode mit 100nF vor und 
hinter dem Widerstand hat leider auch nichts gebracht. Suppressordiode 
habe ich leider keine da, aber durch den Widerstand und die über 700µF 
dahinter dürfte Spannungsspitzen ja eigentlich auch kaum noch durch 
kommen.

von Amateur (Gast)


Lesenswert?

Auf die Schnelle fällt mir dazu nur ein:
1. Ein niederohmiger Widerstand in Reihe zum µP und dahinter einen
   dicken Kondensator. Hier dürfen sich nur Bauteile befinden, die
   direkt mit dem µP zu tun haben.
2. Fuses befummeln. Speziell die für den Brown Out.

von pitschu (Gast)


Lesenswert?

Ich kenne zwar deine Software nicht und kann daher nicht bewerten, wie 
du eine Zeitknstante in der Größenordnung von 1ms rausrechnest. In den 
letzten 3 Tagen habe ich insgesamt 12 BLDC von 3 verschiedenen 
Herstellern (ModelPower, Mystery und YGE) mit neuer Software geflasht 
(SimonK) und keiner der Regler hatte irgendein C in den Sense-Eingängen.

Bei den genannten Reglern sind übrigens die RESET Pins nur über die 
internen Pullups oder rudimentär über einen externen R beschaltet. Ich 
habe die Dinger seit Jahren im Einsatz und einen Reset gabs noch nie. 
Auch sind da keine üppigen Cs im Einsatz, nur die üblichen (kosten 
optimierten) Maßnahmen.
Vielleicht kannst du ja mal deine Software posten, dann können wir mal 
drüberschauen.

von Markus H. (masterofd)


Angehängte Dateien:

Lesenswert?

Ich habe jetzt alle nachträglich eingebauten Kondensatoren und 
Widerstände komplett rausgenommen, bis auf den 10µF 0603 Kondensator 
direkt an den Vcc Pins, damit läuft es jetzt.
Finde ich etwas merkwürdig, dass der Kondensator direkt an den Pins sein 
muss, 5mm weiter weg auf der Rückseite reicht ja nicht, egal wie groß 
man den Kondensator dann macht.
Den Kondensator in der Reset Leitung habe ich auch mal rausgenommen, 
falls darüber Störungen über die Masse einkoppeln. Scheint aber auch 
nicht wirklich einen Unterschied zu machen.

Meine Software ist eigentlich relativ einfach, nach einem 
Phasenumschalten wird über einen Timer 12,6µs gewartet, dann der Analog 
Comparator eingeschaltet und bei einem "Vorzeichenwechsel" zwischen der 
"Mittel"-Spannung und der Phasenspannung sofort auf die nächste Phase 
umgeschaltet. Funktioniert soweit ja auch. Ich habe mal 2 Bilder 
angehängt, einmal bei Standgas und einmal fast Vollgas. Oben die 
Spannung an Phase A, unten ein Toggeln bei jedem Erkannten BEMF-Wechsel 
bzw. Umschalten der Phase. Bei hoher Geschwindigkeit siehts etwas 
hässlicher aus, aber das ist ja vermutlich normal?

von Amateur (Gast)


Lesenswert?

>Finde ich etwas merkwürdig, dass der Kondensator direkt an den Pins sein
>muss, 5mm weiter weg auf der Rückseite reicht ja nicht, egal wie groß
>man den Kondensator dann macht.

Es ist kein Zufall, dass die Chip-Hersteller genau dies, in ihren 
Datenblättern, vorschlagen.
Das hat u. v. A. drei Gründe:
1. Jeder Leiter ist eine potentielle Antenne.
2. Das abfangen von Störungen, die von der Versorgung her ins System
   kommen.
3. Das Abfangen von Störungen, die aus dem Chip kommen und eventuelle
   Peripherie und den Chip selber (zweiter Vcc-Pin), stören könnten.

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.