Forum: Mikrocontroller und Digitale Elektronik Negative Spannungsspitzen abfangen


von Markus H. (traumflug)


Angehängte Dateien:

Lesenswert?

Es gibt da das RepRap-Projekt, bei dem die Elektroniken sowohl einen 
ATmega betreiben als auch recht hohe Ströme (bis 15 Ampére) für die 
Heizungen über einen MOSFET aus dem gleichen Netzteil schalten. Oft ist 
das ein handelsübliches PC-Netzteil. Welches genau, da hat die 
(weltweite) Community wenig Einfluss drauf. Selber bin ich zwar 
Maschinenbau-Ingenieur, habe also nur begrenzt Ahnung von Elektronik, 
betreue aber auch die Generation 7 Elektronik.

Es gibt immer wieder Meldungen, dass beim einschalten der Heizung der 
Brown-Out-Detector (4.3V) des ATmega (20MHz) auslöst. Das kann ich bei 
meinem eigenen Aufbau nachvollziehen. Offensichtlich zieht eine 
plötzliche Last auf der 12V-Linie auch die 5V-Linie mit runter. Fette 
Elkos (1000 uF) helfen da nicht, denn bei 10A sind die in Nullkommanix 
leer.

Wie das bislang geschaltet ist, sieht man im angehängten Bild. Die 5V 
gehen an den ATmega, auf den 12V sind die Lastwechsel (oft per PWM mit 
wahlweise 70Hz - 70kHz).

Die Frage ist jetzt, wie man den kurzen Spannungsausfall überbrücken und 
die Elektronik gegenüber nicht ganz so tollen Netzteilen robuster machen 
kann. Gehe ich nach 
http://www.sprut.de/electronic/switch/12vsnt/12vsnt.html (Scope-Bilder 
ganz unten), sind das etwa 2 Millisekunden.

Idee 1: Die 5V (max. 300mA) durch eine Schottky-Diode laufen lassen. 
Dann gehen zwar 0,3V verloren, doch das Netzteil kann den Puffer-Elko 
nicht mehr leer saugen. Der Puffer-Elko würde seine Funktion 
beibehalten.

Idee 2: Die 5V aus dem Netzteil weg lassen und den ATmega über einen 
LM7805 aus den 12V betreiben. Ist der LM7805 schnell genug, sollten die 
Spannungseinbrüche auf den 5V ausbleiben.


Klingt das gut? Gibt es noch bessere Lösungen?

von holger (Gast)


Lesenswert?

>Klingt das gut? Gibt es noch bessere Lösungen?

Steckernetzteil für den AVR.

von Markus H. (traumflug)


Lesenswert?

Ein zweites Netzteil? Klingt nicht übermässig elegant.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Aber effektiv.

von Michael (Gast)


Lesenswert?

Die Sache mit der Schottky-Diode und einem angemessenen Kondensator 
dürfte doch schon mal helfen

Markus H. schrieb:
> Gehe ich nach
> http://www.sprut.de/electronic/switch/12vsnt/12vsnt.html (Scope-Bilder
> ganz unten), sind das etwa 2 Millisekunden.

Ich würde da nicht nach irgendwelchen Bilder aus dem Netz gehen, sondern 
die eigenen Signale auf dem Scope ansehen. Das dürfte deutlich mehr 
Aussagekraft haben.

Markus H. schrieb:
> Es gibt immer wieder Meldungen, dass beim einschalten der Heizung der
> Brown-Out-Detector (4.3V) des ATmega (20MHz) auslöst.

Was nun? Tut oder tut nicht?
Fragt sich natürlich, warum du bei solch einer Versorgungsspannungslage 
den Brown-Out auf 4.3V stehen hast. Oder läuft der Prozessor wirklich 
mit über 50% Auslastung (von Warteschleifen mal abgesehen)?

Wenn man die paar mA aus einem separatem Linearregler holt, der über 
Diode und Lade-C abgekoppelt ist, wäre man allerding auf der sicheren 
Seite. Stromsparen scheint ja nicht das Thema zu sein.

von Klaus D. (kolisson)


Lesenswert?

Ich würd auch sagen:
a.) separates Netzteil
b.) Brownoutspannung runtersetzen
c.) Brownout abschalten
d.) Fehler suchen
e.) etc. nach Wunsch

k.

von Markus H. (traumflug)


Lesenswert?

Michael schrieb:
> Die Sache mit der Schottky-Diode und einem angemessenen Kondensator
> dürfte doch schon mal helfen

Dann werde ich das mal ausprobieren.

> Ich würde da nicht nach irgendwelchen Bilder aus dem Netz gehen, sondern
> die eigenen Signale auf dem Scope ansehen. Das dürfte deutlich mehr
> Aussagekraft haben.

Erst mal ein Scope haben :-)

> Markus H. schrieb:
>> Es gibt immer wieder Meldungen, dass beim einschalten der Heizung der
>> Brown-Out-Detector (4.3V) des ATmega (20MHz) auslöst.
>
> Was nun? Tut oder tut nicht?

BOD ausgelöst = Reset = Maschine gestoppt = tut nicht.

> Fragt sich natürlich, warum du bei solch einer Versorgungsspannungslage
> den Brown-Out auf 4.3V stehen hast. Oder läuft der Prozessor wirklich
> mit über 50% Auslastung (von Warteschleifen mal abgesehen)?

Der Prozessor ist bis zum Rand ausgelastet. Je höher der Takt, desto 
schneller kann die Maschine arbeiten. Vier Schrittmotoren synchronisiert 
laufen zu lassen ist eine ziemlich rechenaufwendige Geschichte.

Manche stellen dan BOD tatsächlich auf 2.7V, doch da die Heizungen die 
ganze Zeit temperaturgeregelt laufen bedeutet das ja auch, dass er immer 
wieder ausserhalb der Spezifikation läuft. Da kribbelt's mir in den 
Zehennägeln.

> Wenn man die paar mA aus einem separatem Linearregler holt, der über
> Diode und Lade-C abgekoppelt ist, wäre man allerding auf der sicheren
> Seite. Stromsparen scheint ja nicht das Thema zu sein.

von Markus H. (traumflug)


Lesenswert?

Klaus De lisson schrieb:
> c.) Brownout abschalten

Das würde ich nicht empfehlen, so war das am Anfang. Schaltet man einen 
ATmega ohne BOD ab hat man gute Chancen, dass danach Programmspeicher 
inklusive Bootloader durch den Wolf ist. Manche haben das fünf Mal am 
Tag geschafft.

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


Lesenswert?

Aber die ATX Netzteile haben doch ein völlig getrenntes 5 Volt Netzteil 
eingebaut, das für die Standby Sächelchen nämlich. Das wird für USB und 
die Einschaltfunktion des Hauptnetzteils benutzt.

von Markus H. (traumflug)


Lesenswert?

Matthias Sch. schrieb:
> Aber die ATX Netzteile haben doch ein völlig getrenntes 5 Volt Netzteil
> eingebaut, das für die Standby Sächelchen nämlich. Das wird für USB und
> die Einschaltfunktion des Hauptnetzteils benutzt.

Ja, für Standby wird das benutzt. Beim Einschalten (per Software) werden 
dann die 5VSB mit den normalen 5V zusammen gelegt.

von MaWin (Gast)


Lesenswert?

> Idee 1:

Geht

> Idee 2:

Geht

> Klingt das gut? Gibt es noch bessere Lösungen?

Vermutlich reicht ein Widerstand vor dem Elko,
an dem bei Nennstrom noch kene relevante Spannung abfällt,
da der uC nur Milliampere brauchen wird.

Besser ist das aber nicht.

Auch die Methode der aktiven Diode bringt gegenüber
dem 7805 keinen Vorteil.

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


Lesenswert?

Markus H. schrieb:
> Beim Einschalten (per Software) werden
> dann die 5VSB mit den normalen 5V zusammen gelegt.

Nö, nicht bei den Netzteilen, die ich bisher zerbastelt habe. Dadrin 
läuft immer das kleine SMPS weiter und versorgt +5V(SB). Aber das kannst 
du ja leicht mal messen.

von Klaus D. (kolisson)


Lesenswert?

Markus H. schrieb:
> Klaus De lisson schrieb:
>> c.) Brownout abschalten
>
> Das würde ich nicht empfehlen, so war das am Anfang. Schaltet man einen
> ATmega ohne BOD ab hat man gute Chancen, dass danach Programmspeicher
> inklusive Bootloader durch den Wolf ist. Manche haben das fünf Mal am
> Tag geschafft.

Stimmt,... jetzt wo du es sagst fällt mir ein, dass mir das auch
oft passiert ist.
Nun habe ich jedoch den "Fuse Doctor"  .. deshalb hatte ich das 
vergessen.

Gruss k.

von Markus H. (traumflug)


Lesenswert?

Matthias Sch. schrieb:
> Markus H. schrieb:
>> Beim Einschalten (per Software) werden
>> dann die 5VSB mit den normalen 5V zusammen gelegt.
>
> Nö, nicht bei den Netzteilen, die ich bisher zerbastelt habe.

Nicht im Netzteil, aber auf der Gen7 Elektronik ;-)

Wobei der Gedanke gar nicht schlecht ist, alles über 5VSB laufen zu 
lassen. Das sind neben dem ATmega1284P (20mA) noch rund 40mA. Macht 2,6 
kWh/Jahr, damit kann die Stromrechnung leben.

von Markus H. (traumflug)


Lesenswert?

Sodele. Nachdem ich zuerst die Version mit "alle Logik über 5V-Standby", 
dann die Version mit zwei getrennten Netzeilen ausprobiert habe und die 
Sache nicht einmal ein kleines bisschen besser geworden ist, kam mir 
langsam der Verdacht, dass das Problem ganz wo anders liegt.

Also habe ich ein bisschen an den GND-Leiterbahnen herum gefummelt und 
siehe da, ich kann jetzt durch alle 255 Leistungsstufen durchschalten, 
ohne dass der ATmega einen einzigen unerwünschten Mucks macht. Das waren 
keine negativen Spannungsspitzen auf 5V, sondern positive Spitzen auf 
GND, was bekanntlich unter dem Strich, bzw. für den Brown-Out-Detektor, 
ziemlich genau das gleiche ist.

Das Ganze habe ich nebst Reparaturanleitung aufgeschrieben. Ich glaube 
ein nettes Lehrstück, wie man Leiterbahnen nicht verlegen sollte: 
http://reprap.org/wiki/Gen7_Board_1.2#Improving_Heated_Bed_Tolerance

Die neue Version dieser Elektronik soll jetzt drei getrennte Massen 
(Logik, Schrittmotoren, Heizelemente) bekommen, die nur über 1000 Ohm 
miteinander verbunden sind. Dann werden irgendwelche Störungen 
(hoffentlich) immer zu 99% über das Netzteil abgeleitet bevor sie einen 
anderen Beriech erreichen.

Vielen Dank von mir und der RepRap-Community an die 
Mikrocontroller.net-Community für die tolle Hilfe hier und falls sich 
jemand wundert, warum die Leiterplatten bei RepRap teilweise so 
eigenartig aussehen: RepRap-Maschinen können ihre eigenen Platinen 
fräsen: 
http://reprap.org/wiki/Gen7_Stories#Markus_.22Traumflug.22_Hitter_showing_Gen7_replication

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.