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
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ß).
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.
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?
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
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.
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).
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
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.
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.
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.
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?
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.