Forum: Mikrocontroller und Digitale Elektronik tiny2313 brown-out?


von leif (Gast)


Lesenswert?

hallo,

hier (http://circuitcellar.com/avr2004/DA3149.html) wird beschrieben,
wie mit hilfe der brown-out detection quasi bervor das licht endgültig
ausgeht noch ins eeprom geschrieben wird.
genauer gesagt benutzen sie einen analog comparator, das ist mir
allerdings erst eben klargeworden (diffus beschrieben!?).

sowas praktisches wäre auch für meine anwendung wünschenswert, also muß
noch ein pufferkondensator mit in die schaltung:

wie viel strom wird beim eeprom-schreiben benötigt, bzw. wie lange
braucht man für eine handvoll bytes?

danke!

von TravelRec. (Gast)


Lesenswert?

Pro Byte mußt Du etwa 1,5ms reine EEPROM-Schreibzeit einkalkulieren. Für
diese Zeit brauchst Du die volle Stromaufnahme des Prozessors die für
die angegebene Takt-Frequenz gilt (also bis zu 10mA) zuzüglich dem, was
die angeschlossene Schaltung verbraucht, falls Du diese nicht vorher
mittels Fet oder Transistor abkoppelst. Das EEPROM funktioniert bis zur
angegebenen Mindestberiebsspannung sicher, darunter kann´s zu Problemen
kommen. Dein externer Brown-Out sollte also recht kanpp eingestellt
sein, damit noch genug Zeit bleibt. Nun rechne mal ;-).

von leif (Gast)


Lesenswert?

dankeschön!

von Sven (Gast)


Lesenswert?

>>Byte mußt Du etwa 1,5ms reine EEPROM-Schreibzeit einkalkulieren

Sicher? Ich habe hier 8,5ms, ist aber auch ein ATmega8.

>>Dein externer Brown-Out sollte also recht kanpp eingestellt
sein, damit noch genug Zeit bleibt.

Oder wenn Du die Versorgung aus einer höheren Spannung erzeugst, kannst
Du besser diese puffern. Beispiel:

5V aus Vs 24V mit StepDown LT1776, "BrownOut" bei 18V, die 5V liegen
bis Vs 8V sicher an und sind dann schnell weg. Mit 100µ Pufferelko an
Vs über Diode von übriger 24V-Seite entkoppelt reicht das für 150ms
Pufferzeit, ohne dass ich an der 5V Seite noch was abschalte.

Sven

von leif (Gast)


Lesenswert?

hallo sven,

wo steht denn das mit den schreibzeiten im datenblatt?

und - dann lebt ja auch dein spannungsregler vom puffer, oder? kannst
du mir erklären, warum das besser ist? weil der kondensator wegen der
höheren spannung kleiner sein kann? aber dafür hast du doch die
verluste des reglers..

und vielleicht hast du ja noch einen tipp übrig:
meine schaltung und ein schrittmotor werden mit 12v gespeist, der 7805
für die schaltung wir mit einer diode vor verpolung geschützt.

da ich die versorgungsspannung über den analog comparator ja in jedem
fall vor meinem pufferkondensator prüfen muss, habe ich die wahl
zwischen einer weiteren diode und dem damit einhergehenden
spannungsabfall, kann aber direkt nach dem spannungsregler messen.

oder ich messe direkt an den 12V, bzw nach der schutzdiode vor dem
spannungsregler..

das wird wohl das beste sein, oder? hochohmiger spannungsteiler, und
dann an AINx...

ach sch****, ich hab gerade gesehen, daß dazu beide pins benötigt
werden..

dann bleibt mir wohl nur ein externer komparator, oder aber ein
spannungsteiler, der bei stromausfall schnell einen low-pegel am
interrupt erreicht?

gibt es noch andere möglichkeiten?

danke!

von leif (Gast)


Lesenswert?

aha, ich habs gefunden. für den 2313 auf seite 16: 3.4ms im
atomic-mode.
allerdings sinnvoller ist, nach powerup die eeprom felder zu löschen,
und wenn der strom weg ist, nur zu schreiben, das dauert nämlich nur
1.8ms -> kondensator kann halb so groß sein.

wieso muß denn der avr während des schreibens 100% an sein?

doof ist nur, daß ich noch nicht genau weiß, wieviele bytes ich
brauche. muß ich wohl auf nummer sicher gehen.

wie kann ich denn gefahrlos die 12V versorgungsspannung prüfen, wenn
dort auch der schrittmotor seinen Strom herbekommt?

danke!

von TravelRec. (Gast)


Lesenswert?

Mach´s doch so: 12V -> Diode -> fetter Kondensator -> 7805 -> Tiny2313.
Mach an die 12V einen Spannungsteiler 4:1 und klemme einen Portpin vom
ATTiny dran (vielleicht einen Interruptpin). Wenn nun die Spannung
wegklappt, gehen die 12V zuerst krachen (es sei denn, da ist noch ein
Riesenkondensator drin), die Spannung am Spannungsteiler sinkt und der
ATTiny löst den Interrupt aus in dem Du die Schreibvorgänge machst,
während der Pufferkondensator vor dem Linearregler noch ´ne Weile Saft
liefert. Ohne Rechnen wird das freilich nichts, aber das sollte dann
doch recht zuverlässig funktionieren.

von Sven (Gast)


Lesenswert?

>>wo steht denn das mit den schreibzeiten im datenblatt

Für den ATmega8 auf Seite 19, Table 1. EEPROM Programming Time

>>und - dann lebt ja auch dein spannungsregler vom puffer

max 50µA für 7805, wenn ich nicht irre

>>warum das besser ist? weil der kondensator wegen der
höheren spannung kleiner sein kann

Erstens. Deutlich kleiner. Und zweitens, weil der AVR länger mit
konstanter Spannung versorgt wird und diese dann schnell einbricht.
Keine unschönen Hystereseeffekte...

>>aber dafür hast du doch die verluste des reglers..

Halten sich in Grenzen bzw. machst Du je nach Spannung locker wett. Und
da Du sowieso einen Regler drin hast...

>>kann aber direkt nach dem spannungsregler messen

??? Du meinst vor? Auf jeden Fall vor der Diode messen, Spannungsteiler
100k / 27k und kleinen Kondensator 1-10n vom AVR-Pin gegen GND. Die
internen Schutzdioden schützen das Pin vor Verpolung, wenn der
Widerstand davor hochohmig genug ist (eben 100k oder größer)

>>AINx... ach sch****, ich hab gerade gesehen, daß dazu beide pins
benötigt werden..

Du kannst mit dem Spannungsteiler direkt auf ein Pin gehen, der
Schaltpegel liegt für Vcc 5V bei etwa 2,2V, die AVRs sind da recht
tolerant.

>>allerdings sinnvoller ist, nach powerup die eeprom felder zu löschen,
und wenn der strom weg ist, nur zu schreiben, das dauert nämlich nur
1.8ms -> kondensator kann halb so groß sein.

Gute Idee, musst nur sicherstellen, dass sie wieder beschrieben werden.
Was passiert zum Beispiel bei einem Reset während des Programmablaufs
(Programmer, Störung), dann wird gelöscht, aber nicht beschrieben.

>>wieso muß denn der avr während des schreibens 100% an sein?

Muss er? Aber ich glaub, ausschalten bringt nicht viel, da eh der
EEPROM beim Schreiben das meiste bringt und der Takt laufen muss.

>>wie kann ich denn gefahrlos die 12V versorgungsspannung prüfen, wenn
dort auch der schrittmotor seinen Strom herbekommt?

Mit obigem Spannungsteiler, brauchst aber definiertes GND-Potential.
Ansonsten vielleicht mit Optokoppler und Zenerdiode davor, wenn Du eine
Potentialtrennung möchtest.

Sven

von leif (Gast)


Lesenswert?

hallo ihr zwei,

danke für die hinweise!

es tut sich wieder eine frage zum eeprom auf:

d.h. ich habe nur zwei möglichkeiten ?:

 - ich lösche den eeprom wenn ich zeit und strom habe (zu beginn meines
programms), schreibe, wenn der strom ausfällt. aber wenn dann das
programm abstürzt und einen reset auslöst sind meine daten weg.
also entweder das passiert nicht, oder

- ich benutze den 'normalen' atomic mode, brauch aber beim
stromausfall mehr zeit, um meine daten zu schreiben -> größerer
kondensator.

AHA! An die abfallende Spannung bei den gepufferten 5V habe ich gar
nicht gedacht.

So, aber zur anderen Lösung und dem Spannungsteiler noch eine Frage,
weil an den 12V auch ein Schrittmotor betrieben wird. Die Spulen werden
zwar gegen GND mit Z-Dioden (62V) gesichert, der geplante MOSFET
vertärgt laut Datenblatt 100V. Aber mein armer, kleiner Spannungsteiler
am Interruptpin vom tiny - leiden die beiden nicht?

Tausend dank für die Hilfe!

von Sven (Gast)


Lesenswert?

>>weil an den 12V auch ein Schrittmotor betrieben wird. Die Spulen
werden zwar gegen GND mit Z-Dioden (62V) gesichert

Warum nicht mit 25V-Surpressor-Dioden?

>>armer, kleiner Spannungsteiler am Interruptpin vom tiny

Ist es SMD? Dann mußt Du mal schauen, was der an Spannung abkann. Bei
einem normalen 0,25W-Metallschicht hätte ich keine Bedenken, wenn er
hochohmig genug ist. Wenn Du das Pin noch direkt mit einer Z-Diode
schützen willst, bedenke, dass bei sehr kleinen Strom die Zenerspannung
stark sinkt.

Und wenn es Dich beruhigt;-) Atmel hat irgendeine App-Note (AN182) für
einen Nulldurchgangserkennung, da liegt über einen Widerstand 1Mohm
direkt Netzspannung am Pin.

Sven

von leif (Gast)


Lesenswert?

hi sven,


von supressor-dioden weiß ich nichts, man riet mir zu z-dioden. ich
habe ja keine ahnung :-(

wenn also meine z-dioden kein fatales problem darstellen, würde ich die
ganz gerne aus aufwandsgründen erstmal belassen. oder geht das nicht?
na, ich gucke bei gelegenheit mal nach, was suppressor-dioden sind.

ich hatte mehr bedenken wegen des µC..da ich schlecht abschätzen, bzw.
raten kann, ob und wie die induktionsspitzen ausfallen.. so daß evtl.
etwas mehr als verträglich durch den spannungsteiler an den pin vom
tiny gelangt.

aber ich werde den spannungsteiler beim layout berücksichtigen, und
dann erstmal mit dem rest zu potte kommen.

danke!

von TravelRec. (Gast)


Lesenswert?

Sorge nur dafür, daß der Strom in den Prozessorpin nicht größer als 1mA
werden kann, alles andere verfrühstücken die internen Schutzdioden.
Wenn Du 100k Serie auf 22k nach Masse nimmst, mache ich mir keine
Sorgen, und Du brauchst Dir auch keine zu machen.

von leif (Gast)


Angehängte Dateien:

Lesenswert?

:-) danke!

ich habe gerade die zweite seite der platine geätzt, und bin
einigermaßen zufrieden. es hätte schneller gehen können. und das
toner-aufbügeln könnte noch 3 prozent besser klappen. und ich werde in
zukunft erst ätzen und dann bohren. merk

wenn beim bestücken und spannunganlegen nichts durchbrennt, melde ich
mich dann demnächst mit software-fragen zurück, oder einer blinkenden
led! hoffentlich heute abend ..

leif

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.