Hallo,
nach geduldigem Durchackern diverser Foren und Ausfragen von Freunden
meine ich, daß ich zwischenzeitlich eine Vorstellung davon habe, wie ein
Spannungsregler beschaltet werden sollte. Ich möchte aber nicht
ausschließen, daß ich mich täusche, da ich nicht vom Fach bin. Daher
würde ich mich über die Meinung von fachkundigeren Forenschreiben
freuen.
Einige Schaltungen (und Beiträge) zur kurzzeitingen Pufferung der
Versorgung zum Schreiben einiger Bytes ins EEPROM sind ja auch hier zu
finden. Dabei wird aber i.d.R. davon ausgegangen, daß die
Spannungsversorgung separat geregelt wird (siehe
http://www.mikrocontroller.net/articles/Speicher#EEPROM).
Mein Ziel ist, Spannungsversorgung, Puffer, und eine Leitung zum
Detektieren des Spannungsverlustes zu integrieren. Die eigentlich
funktionierende Schaltung findet sich im Anhang (ATtiny beispielhaft,
normalerweise wird ein ATmega168 benutzt). Eigentlich deshalb, weil
ich etwas sonderbares beobachte, sobald ich ein LCD-Display mit dran
hänge
(http://www.sparkfun.com/commerce/product_info.php?products_id=461).
Das Display wird seriell mit Daten aus dem uC gefüttert. Wenn ich nun
das Netzteil vor dem Spannungsregler einstecke, sehe ich 2 verschiedene
Verhaltensweisen, je nachdem, ob die serielle Leitung zwischen uC und
Display permanent ist oder erst ein paar Sekunden nach dem Einschalten
hergestellt wird:
Permanent: Display stellt sich nach Aufblinken des Splashscreens tot
Nachträgliches Einstecken COM: Datenübertragung funktioniert wie
gewünscht.
Ich habe den Verdacht, daß es mit extremen Spannungsschwankungen beim
Einschalten meiner Versorgungsschaltung zusammenhängt. Da es mit einer
einfachen Beschaltung
(http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment)
tadellos funktioniert, würde das nahe liegen. Möglicherweise ist der 100
uF-Elko einfach zu groß.
Leider habe ich keine Möglichkeit zum Messen am Oszi. Vielleicht kann
mir trotzdem jemand sagen, ob hier irgendetwas katastrophal falsch ist
und falls ja, was man besser machen kann.
Danke schonmal im Voraus,
Markus
Markus schrieb:
> Die eigentlich funktionierende Schaltung findet sich im Anhang (ATtiny> beispielhaft, normalerweise wird ein ATmega168 benutzt). /Eigentlich/> deshalb, weil ich etwas sonderbares beobachte, sobald ich ein> LCD-Display mit dran hänge
Wieviel Strom zieht das LCD denn?
Und ist das Backlight an?
> Permanent: Display stellt sich nach Aufblinken des Splashscreens tot> Nachträgliches Einstecken COM: Datenübertragung funktioniert wie> gewünscht.
Probier doch mal aus, den nachdem der µC gestartet ist ein delay von 3s
einzubauen.
Hi Alexander,
das Backlight ist an, damit zieht das Display 25 mA, der uC und der
übrige Kleinkram wird auch nochmal Strom um die 50 mA verbraten.
Wenn ich die Initiierung der Kommunikation mit dem Display (Custom
characters einspielen etc.) ein wenig (500 ms) verzögere, scheint es zu
funktionieren.
Sicher bin ich mir deshalb nicht, weil sich das Ganze auch in der
Vergangenheit recht nichtdeterministisch verhalten hatte, also mit
identischen Komponenten auf einmal ging. Daher wäre es nützlich zu
wissen, ob die Versorgungsschaltung wenigsten OK ist. Sprich die
Schaltung bis einige 100 mA stabil und glatt Strom liefern kann.
Damit könnte ich die zumindest mal ausschließen.
Danke schonmal,
Markus
Ich denke der Mikrocontroller laeuft, wenn du die Spannungsquelle
ansteckerst, erstmal ein paar An-Reset-Zyklen durch, bis die Spannung
tatsaechlich brauchbar ist. In der Zeit sendet er etwas Muell zum
Display, was dann nicht richtig initialisiert ist. Also entweder eine
Warteschleife nach dem Starten einplanen oder ein IC verbauen, welches
den Mikro solange im Reset haelt, bis die Spannung tatsaechlich
brauchbar ist.
Hi.
Warum nimmst du für C2 nicht einfach nen kleineren von z.B. um die 270uF
oder noch kleiner? Bei dem Strombedarf wird der für deine Schaltung
locker reichen. Ein Vorteil bei der sache, das er nicht so lange braucht
um geladen zu werden wie deiner von 1000uF. Die beiden Kondensatoren
sind ja OK. Nur meiner Meinung nach kannst du den Elko hinterm
Spannungsregler auch weglassen, weil du mit den Kon. ja nur evt.
auftrettende Schwingungen unterdrücken sollst und der C2 soll ja nur die
Netzspannung ggf. etwas glätten. Wenn ich einen SP nutze kamm ich damit
immer bestens klar und hatte nie irgendwelche Probleme und meine
verbauten LCD´s haben auch immer sofort das Angezeigt was sie sollten.
Moin zusammen und erstmal Danke für die Antworten.
Ob der Controller stabil startet, ist natürlich schwer zu sagen, ohne
per Oszi zu messen. Aber für Deine Theorie spricht der Umstand, daß
schon eine geringe Wartezeit im Code das Problem behebt. Also die
Zeitspannen An-Reset kürzer sein müssen als diese Zeit, und das Display
erst dann gestartet wird, wenn sich eine stabile Spannung einstellt.
Die Idee hinter dem großen C2 ist, bei Trennung vom Netz die Versorgung
noch so lange sicherzustellen, daß etwaige Variablen ins EEPROM des uC
gesichert werden können. Detektiert wird der Abfall per Signalleitung
vor der Diode.
Kann es eigentlich auch an diesem Elko liegen, daß die Spannung beim
Einschalten instabil ist, weil er sich als erster lädt und dabei der
folgende Spannungsregler erstmal zu kurz kommt?
C4 habe ich übrigens tatsächlich etwas unreflektiert auf Anraten eines
befreundeten Technikers noch mit reingenommen. Er meinte, daß der da
nicht viel schaden kann, bei Engpässen aber noch ausreichend viel
abfängt, damit der Jitter nicht zu groß wird. Sollte ich den rausnehmen,
oder sind die negativen Auswirkungen zu marginal?
Danke,
Markus
@ Markus (Gast)
>schon eine geringe Wartezeit im Code das Problem behebt. Also die
Das kann man einfach dadurch absichern, indem man a) den Brown Out
Detektor per AVR Fuses einschaltet oder b) in den Taktoptionen der
Fuses eine lange Wartezeit, meist 64ms.
>Die Idee hinter dem großen C2 ist, bei Trennung vom Netz die Versorgung>noch so lange sicherzustellen, daß etwaige Variablen ins EEPROM des uC>gesichert werden können. Detektiert wird der Abfall per Signalleitung>vor der Diode.
C2 ist OK und unkritisch. C4 ist auch OK, wenn gleich in der Grösse
nicht notwending. 10uF tuns hier auch.
>Kann es eigentlich auch an diesem Elko liegen, daß die Spannung beim>Einschalten instabil ist, weil er sich als erster lädt und dabei der>folgende Spannungsregler erstmal zu kurz kommt?
Nein.
>abfängt, damit der Jitter nicht zu groß wird. Sollte ich den rausnehmen,
Jitter ist was ganz anderes.
>oder sind die negativen Auswirkungen zu marginal?
Ist mehr oder weniger egal. Der hat nur dann einen Sinn, wenn sehr
schnell grosse Lasten mit 100mA++ geschaltet werden.
MFG
Falk
Es kann sein das die Schaltung über die Schutzdioden an PIN5 versorgt
wird.
Während C2 noch geladen wird und die Spannung an VCC noch <4,7V beträgt,
fließt ein Strom von U/R1 = U/1kohm >= 3mA in den µC. Dieser startet
dann eventuell mehrmals wie von Rik beschrieben und verursacht das
Problem.
Mach mal R1 größer auf 100kohm und lass R2 und D2 weg.
Die interne Schutzbeschaltung reicht fast immer aus.
Wie sieht die Stromversorgung vor X1 aus?
Und bau vor D1 einen Widerstand 5kohm, damit der Eingang schnell auf 0V
gezogen wird.
Markus schrieb:
> Permanent: Display stellt sich nach Aufblinken des Splashscreens tot
Auf dem LCD ist ja noch ein extra PIC-MC drauf, der braucht wohl erstmal
einige Zeit zum Starten (sollte im Datenblatt stehen).
Du mußt also etwas warten, dann sollte es gehen.
So einen UART zu LCD Wandler kann man aber auch selber programmieren:
Beitrag "LCD über nur einen IO-Pin ansteuern"
Kostet dort ja immerhin 16.95$
Peter
Hallo zusammen,
danke für Eure Bemühungen.
@Falk: Optimal, diese Informationen waren, was ich gesucht habe um die
Unsicherheit hinsichtlich der generellen Funktion der Schaltung zu
zerstreuen. 100 uF wurden es vor allen Dingen deshalb, weil kein 10 uF
Elko zur Hand war.
Und Jitter != Ripple, Freud'scher Doppelkonsonantenverschreiber.
@Alexander: Die Spannungsversorgung vor X1 sind 9V aus einem
Steckernetzteil. Die Zenerdiode ist daher zum Runterschrauben der
Spannung gedacht, R1 um den Strom zu beschränken und R2 als Pulldown.
Was mir aber neu ist (möglicherweise aber auch Uninformiertheit) ist der
Umstand, daß der uC startet, wenn Spannung am I/O Pin anliegt.
@Peter: Könnte was dran sein, ein wenig Zeit benötigt der PIC sicher.
Vor allem interessant ist Dein Code. Allerdings beschränken sich meine
Lötaktionen meist auf Einzelstücke auf Streifenraster, da stellt sich
dann die Frage Zeit vs. Zusatzkosten. Werde ich beim nächsten Mal
trotzdem mal testen.
Beste Grüße,
Markus