Forum: Mikrocontroller und Digitale Elektronik Ständige Resets (?)


von mr.chip (Gast)


Lesenswert?

Hallo

Seit einer Stunde habe ich ein riesen Problem mit meinem Roboter. Alles
lief wie gewohnt, dann las ich noch kurz das EEPROM mit AVRDUDE aus -
die Daten waren allerdings irgendwie seltsamer Müll, lediglich die
ersten Bytes waren so wie erwartet (und so wie bisher eigentlich
normal). Danach funktionierte gar nichts mehr. Es scheint, dass sich
der ATMega8 ständig resettet. Wenn ich hingegen die Servos entferne,
entschärft sich das Problem ein bisschen. Sind sie dran, so geht es
manchmal - sie drehen allerdings in die falsche Richtung und die
resetterei geht wieder los, wenn der Annäherungssensor ausschlägt. Das
alles ist nur "ungefähr", "manchmal", "vielleicht" - ich habe den
Fehler weder genau beschreiben noch eingrenzen können.

Woran könnte diese Störung liegen? Wie könnte ich den Fehler weiter
eingrenzen?

Gruss

Michael

von Winfried (Gast)


Lesenswert?

Hab meine Wünschelrute gerade nicht zur Hand...

von ??? (Gast)


Lesenswert?

...Leistung und Logik Versorgungsmäßig getrennt...
Abblocken, abblocken, abblocken... Filtern... Sternförmige
Masseführung... räumliche Trennung...

wenn das nicht hilft, müssen dann die Experten ran.

von Hubert.G (Gast)


Lesenswert?

Akkus unter Last überprüft ? Am besten mit einem Oszi.

von Conlost (Gast)


Lesenswert?

Hallo,

wie ist der Reset-Pin beschaltet, 10k nach VCC und 47nF nach GND?

es grüsst,
Arno

von Thomas O. (Gast)


Lesenswert?

denke auch wenn die Servos in Aktion treten nehmen Sie den AVR den Saft
weg. Würde also vor dem 7805 nen fetten Elko parallel schalten und
davor noch eine Diode so da der Saft des Elkos nur zum 7805 gelangen
kann und nicht zu den Servos. Die Servos bräuchten aber evtl. auch eine
etwas stabilere Spannungsversorgung.

von mr.chip (Gast)


Lesenswert?

Hallo

Ja, ich habe auch in diese Richtung gedacht. Nur - vor einiger Zeit
hatte ich das Problem schon, ich habe dann die Servos direkt an den
Akku angeschlossen und zwischen Vcc-Akku und Vcc-Steuerung eine
Schottkydiode eingebaut sowie zwischen Vcc-Steuerung und GND einen
fetten 470uF Elko. Danach lief alles problemlos - bis gestern nach dem
Auslesen des EEPROMs. Und die Störung war nicht dieselbe wie damals und
auch wesentlich weniger konstant.

Die Beschaltung der Steuerung ist analog zur Beschreibung im Tutorial -
(Reset: 10 kOhm an Vcc, 47pF an GND).

Könnte auch das Schreiben des EEPROM hier Probleme machen? Ich hatte
teilweise Probleme, nachdem ich das EEPROM-Datenlogging hinzugefügt
hatte. Erst als ich den EEPROM-Ready-Interrupt entfernte, ging es
wieder.

Oder könnte auch die Hardware beschädigt sein? Allerdings: Ich kann den
Chip auslesen, kann ihn beschreiben, das Programm startet, die
Sensor-Auswertung scheint zu funktionieren. Jedoch - im EEPROM steht ab
Byte 2 nur noch Müll.

Sorry wenn meine Beschreibung etwas konfus ist, sobald ich mehr
herausfinde, werde ich es sicher auch posten...

Gruss

Michael

von mr.chip (Gast)


Lesenswert?

Nein, Leute, an der Stromversorgung liegt dieses Problem nicht. Selbst
wenn ich die Servos abhänge bleiben die ständigen Resets bestehen. Das
geht immer dann los, wenn die Sensoren ausschlagen (Spannung am ADC bei
8 Messungen in 8 ms jeweils unterschiedlich hoch) - und dann wird
jeweils auch etwas ins EEPROM gespeichert. An den Sensoren liegts kaum,
die laufen ständig und wenn sie ausschlagen, dann ist der einzige
Unterschied ein paar wenige Bit im ADC.

von mr.chip (Gast)


Lesenswert?

Stimmt leider nicht was ich vorhin gesagt habe. Es sind definitiv Resets
und zwar dann, wenn ich die Servos anschliesse, sonst nicht. Nur
verstehe ich einfach nicht, warum das plötzlich nicht mehr gehen
sollte. Diode kaputt? Elko kaputt? Resetpin irgendwie überempfindlich?
(-> Wie könnte ich das testen?)

von mr.chip (Gast)


Lesenswert?

Wenn ich Steuerung und Servos an eine separate Stromversorgung
anschliesse, dann geht es. Mit meiner - bisher funktionierenden -
Stromversorgung aber nicht mehr, bisher ging es aber sehr gut. Meine
Stromversorgung:

Vcc (Akku) --- Vcc (Servos)----Schottkydiode(Bat43)-----Vcc
(Steuerung)
                                                      |
                                                 Elko 470 uF
                                                      |
GND (Akku) -------------------------------------------------- GND


Was könnte man da noch verbessern? Oder was könnte daran kaputt sein?
Ist es wahrscheinlich, dass der Elko oder die Diode unter diesen
Bedingungen kaputt gehen könnte? Bzw. wie kann man diese Komponenten
testen? (Oszi hab ich leider keines, aber eine einfache Schaltung, mit
der ich Spannungen zwischen 0 und 5 V als Kurve auf dem PC ausgeben
kann.)

von Jörg B. (joerg_b)


Lesenswert?

Auf welchen Spannungslevel hast du die Brownout Erkennung gestellt? Wenn
die zu "früh" einsetzt, könnte das noch ne Möglichkeit für deine
Aussetzer sein (ich vermute mal, daß du 4 NC oder NiMh Zellen
verwendest). Bei mir rennt nen Mega8 (ohne "L") noch problemlos mit
ca. 3V @ 8MHz, aber natürlich erst nach dem anpassen der Brownout Fuses
;-)

von mr.chip (Gast)


Lesenswert?

Könnten diese Fuses auch beim Auslesen des EEPROMs versehentlich ein
bisschen ins Wackeln geraten?

Weil wie gesagt - bis zu besagtem Auslesen hat es problemlos
funktioniert. Die absoluten Spannungstiefs dürften bei etwa 4 V liegen
wie ich jetzt mit meinem "PC-Oszi" herausgefunden habe.

Ja, Akku ist 4 Zellen (NiMh oder NC wüsste ich jetzt nicht mal), 4.8 V.
Vielleicht werde ich dann morgen noch im Modellbauladen vorbeisehen und
mir einen Akku mit ca. 6 Volt besorgen - wenn sich das Problem nicht
lösen lässt.

von Jörg B. (joerg_b)


Lesenswert?

Bei 4V dürfte der Brownout in der Standardeinstellung zuschlagen (siehe
dazu das Mega8 Datenblatt unter Resetquellen). Versuch doch mal
Brownout entweder auszuschalten oder auf irgendwas bei 3V zu setzen.

von mr.chip (Gast)


Lesenswert?

Das war's! BODLEVEL gelöscht, Problem gelöst. Vielen, vielen, vielen
Dank! Ich wäre wohl zu Tode verzweifelt.

Jetzt aber doch noch eine ernsthafte Frage: Was war hier passiert? Das
letzte mal hatte ich folgende Fuses gesetzt:

BOOTSZ1
BOOTSZ0
SUT0
CKSEL3
CKSEL2
CKSEL1

als ich vorhin die Fuses auslas, waren folgende zusätzlich gesetzt:

BODLEVEL
BODEN
SUT1

Habe diese Fuses irgend ein Eigenleben, bricht dort manchmal ein
bisschen die Anarchie aus?

Um das Problem zu lösen, habe ich jetzt lediglich BODLEVEL gelöscht.
Wann sollte man BODEN ausschalten, wann eher nicht?

SUT1/SUT0 sollte wohl keinen zu grossen Unterschied machen, da es ja
lediglich einen kaum merkbaren Unterschied in der Startu-Up-Time gibt.
Wie würdet ihr die standardmässig setzen?

von Jörg B. (joerg_b)


Lesenswert?

BODEN sollte aktiv sein, wenn man nicht sicherstellen kann, daß die
Versorgung stabil ist (also ab und an mal einbricht und man verhindenr
möchte, daß der Controller evtl. in undefinierten Zuständen
hängenbleibt).

Ich würde BOD auch aktiv lassen, aber auf was bei 3V setzen (datt
geht), damit der Mega sicher in einen Reset geht, sobald dein Akku
runter ist ohne den Akku gleich zu himmeln (ich vermute mal, daß deine
sonstige Hardware so gut wie nix mehr ziehen kann, sobald der Mega im
reset ist, oder?)

Welches Flashtool benutzt du? Hast du jeweils vorm schreiben der Fuses
die alten Werte vom Mega gelesen?

Daß die Fuses nen Eigenleben zeigen, ist zumindest bei mir noch nicht
vorgekommen (mal von einigen "Fehlgriffen", die ich per Galep3
beheben konnte, abgesehen)

von mr.chip (Gast)


Lesenswert?

Hallo

So wie ich das interpretiere, ist bei gesetztem BODEN der
Brown-Out-Detektor eingeschaltet und bei gleichzeitig gelöschtem
BODLEVEL der Brown-Out auf 2.7 V. Ich denke, das ist etwa in deinem
Sinn, oder?

Zuerst habe ich yaap auf Windows 95 verwendet (damals, als ich das
bisher einzige mal die Fuses für den externen Oszillator gesetzt habe).
Danach Ponyprog auf XP, nur zum flashen und EEPROMen. Bevor der Fehler
auftrat, einige male AVRDUDE, nur zum EEPROMen. Unmittelbar bevor der
Fehler auftrat, wurde AVRDUDE per Kommandozeile aus einem Java-Programm
 heraus aufgerufen - zum Auslesen des EEPROMs.

Gruss

Michael

von Thomas O. (Gast)


Lesenswert?

ich würde auch schauen die Ursache zu beseitigen und nicht das Symthom.
Das nächste haste dann vielelciht 2 oder mehr Fehlerquellen und dann
ist es noch schwieriger.

Meine Möglichkeit mit dem Elko und der Diode bringt ja nur Abhilfe bei
kurzzeitigen Einbrüchen z.b. beim Anlauf der Servos, im Dauerbetrieb
wird der Elko genauso leer wenn dein Netztrafo zu schwach ist. Wieviel
Leistung wird eigentlich über den 7805 gezogen?

Du könntes auch eine Diode vom Reglerausgang zum Reglereingang
reinmachen und nach dem Regler noch einen größeren Elko. Die Diode
bewirkt das eine Spannung über 5V Volt zum Reglereingang geleitet wird
und das sich der große Elko nciht über den Regler entlädt wenn man die
Versorgungsspannung Ausschaltet oder diese Am Regler eingang geringer
als am Reglerausgang ist (z.B. beim Spannungseinbruch).

Kenn mich mich Servos nicht aus, aber vielleicht würde hier eine
Entstörung direkt am Servo auch was bringen. Ein kompletter Schaltplan
würde schonmal ne Menge helfen. Zeichne ihn doch mal auf und scanne ihn
ein, falls du keinen Schaltplaneditor hast.

von Magnus Müller (Gast)


Lesenswert?

@ mr.chip:

Wenn ich Deine "Skizze" richtig interpretiere, gehst Du mit
einer(!!!) Versorgungsleitung vom Akku zu den Servos und von dort aus
weiter zum Controller.

Ich würde Dir raten, die Versorgungsleitung zum Controller NICHT hinter
den Servos, sondern direkt am Akku abzugreifen (ggf. Spannungsregler mit
einplanen). Der unter Last entstehende Spannungsabfall auf der Leitung
zwischen Akku und Servos geht Dir dann nämlich auch am Controller ab.

Wenn Du einen Akku mit 6V Nennspannung einsetzen willst solltest Du dir
auch dringend Gedanken zum Thema Spannungsregler machen. Ein frisch
geladener 6V Akku hat in der Tat mehr als 6V Leerlaufspannung. Sieh
einfach mal im Datenblatt Deines Controllers nach, welche
Betriebsspannung zulässig ist (Recommended Operating Conditions).

Gruß
Magnetus

von mr.chip (Gast)


Lesenswert?

Ich werde die Stormversorgung auf jeden Fall nochmals überdenken.

Was haltet ihr davon: 6 V Akku, nach folgender Skizze beschaltet.
(Sobald ich mal Zeit habe, hole ich mir ein Schaltplan-Programm...)


Vcc Akku---------------- 7805 (IN)  7805 (OUT)-Diode---- Vcc Logik
         |       |                                   |
      Servo    470uF                               470uF
         |       |                                   |
GND Akku----------------7805 (GND)---------------------- GND Logik

von Marco Schwan (Gast)


Lesenswert?

-------------Vcc Akku-----7805--Diode----------Vcc Logik
  |                        |   |           |
Servo                    470µF |         470µF
  |                        |   |           |
   --------------cc GND---------------------------GND Logik

von Magnus Müller (Gast)


Lesenswert?

@mr.chip / @Marco Schwan:

Bitte denkt daran, dass über den 7805 von haus aus bis zu 2V (@1A)
abfallen. Sprich: der Spannungsregler ist nicht in der Lage eine
Eingangsspannung, die kleiner als 7V ist, zuverlässig auf 5V zu
bringen. Über die Diode habt Ihr dann auch noch mal einen
stromabhängigen Spannungsabfall zu berücksichtigen.

Leider kann ich Euch jetzt aus dem Stegreif auch keine Alternativlösung
anbieten. Vielleicht kann Euch noch ein anderes Forumsmitglied
brauchbare Tips geben?

Gruß
Magnetus

von Conlost (Gast)


Lesenswert?

Hallo,

ein Low Drop Spannungsregler könnte gehen.
Der LM2940 ist so ein Regler, den gibt es zB. bei Reichelt.

Es grüsst,
Arno

von mr.chip (Gast)


Lesenswert?

Hallo

Ich weiss echt nicht mehr recht... Der Roboter läuft absolut anständig
jetzt, darum denke ich nicht, dass ich die Stromversorgung gross ändern
werde. Da es aber ein erstes Versuchsmodell ist und ich daher laufend
wieder kleine Unzulänglichkeiten feststelle, werde ich eventuell dann
sowieso ein völlig neuer Roboter bauen - dann sicher auch mit solider
Stromversorgung.

Gruss

Michael

von Thomas O. (Gast)


Lesenswert?

Also 6V ist wirklich etwas knapp bemessen, wenn die Schaltung nach dem
7805 sehr wenig Strom benötigt könnte es gut gehen. Also nun hätte ich
folgende Vorschläge

1. Akkupack mit 7,2 oder 9,6V nehmen?
2. Low-Drop Spannungsregler( wie schon gesagt)
3. selbst wenn du nen Low-Drop Spannungsregler verwendest und dort nen
Elko am Eingang mit dran hast kannste noch vor dem Elko eine Diode
reinmachen damit die Servos nicht den Elko für den Spannungsregler
leersaugen sondern nur ihren eigenen großen Elko(denke da eher an
4.700µF oder mehr)

von Marco Schwan (Gast)


Lesenswert?

http://www.kreatives-chaos.com/index.php?seite=schaltnetzteil
oder das hier hat ein viel bessern Wirkungsrad als ein
Festspannungsregler.

von mr.chip (Gast)


Lesenswert?

Hallo

Nochmals zur Stromversorgung: Ich hab versehentlich einen Elko 1000uF
für 16 V bestellt, das Ding hat etwa die Dimensionen einer AA-Batterie,
nur etwas kürzer. Sollte aber Problemlos in einer 5V-Schaltung
verwendbar sein, oder?

Gruss

Michael

von Karl H. (kbuchegg)


Lesenswert?

Ja

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.