Forum: Mikrocontroller und Digitale Elektronik µC-Schaltung spielt nach 5 Jahren verrückt


von Gerhard (Gast)


Lesenswert?

Ich bitte euch hier mal um Hilfe für ein Trouble-Shooting-Problem, das 
ich habe.

Die Schaltung besteht aus einem µC, der verschiedene Eingangsbedingungen 
erhält und über eine State-Machine daraus zwei Ausgangswerte macht, mit 
denen mechanische Kupplungen geschaltet werden. Also zum Beispiel so: 
Schalte Kupplung eins, WENN Drehzahlsensor 1 länger als 3 Sekunden 0 UND 
Schalter 17 an UND Schalter 25 aus UND Öltemperatur > 40 °C. Sowas in 
der Art.

Das ganze ist nach höchsten Sicherheitsstandards zugelassen. Weil wir 
die Software nicht auf den gewünschten Level zertifizieren konnten, 
haben wir um zwei wichtige Eingabewerte noch diskrete Logik außenrum 
gebaut und die mit dem µC-Ausgang ver-"und"-et.

Das Produkt funktioniert beim Kunden in hundertfacher Ausführung seit 
Jahren ohne einen einzigen Fehler. Vor kurzem habe ich allerdings eine 
Platine bekommen, die komplett verrückt spielt. Das Ding schaltet die 
Kupplung zu, wenn es das nicht soll, und schaltet sie mittendrin ohne 
Grund ab. Es liegt NICHT an der diskreten Logik, denn diese hat in 
unserem Fall das schlimmste verhindert.

Mein erster Schritt war, die Firmware auszulesen und gegen unsere Kopie 
zu verifizieren - jedes einzelne Bit stimmt. Der zweite Schritt war 
dann, ein Test-Programm hochzuladen, mit dem ich die einzelnen Ein- und 
Ausgänge abfragen/setzen kann, um den µC selbst zu überprüfen. Alles ok.

Trotzdem spielt diese Platine verrückt. Das Problem lässt sich zwar 
schnell lösen (neue Platine mit neuem µC zum Kunden), jedoch sind wir 
sehr daran interessiert, die Ursache herauszufinden, um möglichen 
zukünftigen Ausfällen vorzubeugen.

Limitiert haben wir die Lebensdauer übrigens auf 6 Jahre - wegen des 
Flash-Speichers. Im Moment sind wir knapp bei 5 Jahren. Allerdings 
spricht gegen diese Ursache, daß das Programm noch korrekt im Speicher 
steht.

Prozessor ist ein ATMEGA48. Wer hat Ideen?

von Magnus Müller (Gast)


Lesenswert?

1. Kalte Lötstellen
2. gealterte Elkos (muss man nicht unbedingt auf den ersten Blick
   erkennen können)

von holger (Gast)


Lesenswert?

>Mein erster Schritt war, die Firmware auszulesen und gegen unsere Kopie
>zu verifizieren - jedes einzelne Bit stimmt. Der zweite Schritt war
>dann, ein Test-Programm hochzuladen, mit dem ich die einzelnen Ein- und
>Ausgänge abfragen/setzen kann, um den µC selbst zu überprüfen. Alles ok.

Mein erster Schritt wäre gewesen einfach den uC zu
tauschen. Dann sieht man doch ob es wieder geht oder nicht,
und man kann diesen ausschließen. Auslesen oder neuprogrammieren
ist ja wohl sowas von "nicht aussagekräftig".

von Max (Gast)


Lesenswert?

1. Magnus punkten stimm ich zu, kommt schon öfter ma vor.
2. Ich hatte es jetzt schon öfters, das eine Schaltung mit einem Mega ne 
zeitlang funktioniert hat, dann irgendwas unerklärliches passiert ist 
und danach der Mega nur noch Mist gebaut hat.
Beim Auslesen des Programm war aber alles in Ordnung.
Trotzdem war der Mega kaputt.. muss zumindest so gewesen sein, da ein 
austausch Mega mit dem selben Programm auf der selben Platine danach 
alles richtig gemacht hat.
Also wenn es geht, ma nen neuen Mega mit frischem Programm rein und 
ausprobieren.

MfG
Max

von Thomas (kosmos)


Lesenswert?

Funktioniert die Platine nur beim Kunden oder auch bei euch in der Firma 
nicht? Dann könnte man schon mal äußere Einflüsse ausschließen, wie z.B. 
ein Gerät in der Nähe das nicht ausreichenden entstört ist.

Mich wurde mal dein Layout der Spannungsversorgung und die Beschaltung 
der Eingänge interessieren.

Lass mal den µC kontinuierlich einen Ausgang takten alle anderen Pin als 
Ausgänge konfigurieren, wenn er dann nicht aus dem Tritt kommt weißt du 
das er sich etwas über die Eingänge einfängt. Und kannst dann hier näher 
nach schauen.

von Heinz O. (styx)


Lesenswert?

Wird bei der Schaltung irgendein Speicher zur speicherung von 
Daten/Variablen verwendet?

mfg

von Winfried (Gast)


Lesenswert?

Wenn Ram/EEPROM im Prozessor defekt ist, kann es auch ganz üble Probleme 
geben. Gerade beim Ram, wo ja der Stack drüber läuft.

Ich denke, jeder, der häufiger Microcontroller einsetzt, hat irgendwann 
mal so einen verrückten Controller erlebt. Ich meine damit Controller, 
die garantiert Dinge tun, die man niemals im Leben so programmiert hat. 
Oder die jahrelang geplant funktionieren und dann manchmal was ganz 
anderes tun.

von Joel S. (hansjoerg)


Lesenswert?

Hall Gerhard,
wenn das System nur mit der diskreten Sicherheitslogic zugelassen wurde 
hat das schon einen Grund! Vor allem die alten AVR's haben da enorme 
Probleme. Verwendet Ihr den internen EEPROM Speicher?

Warum genau habt Ihr die Zertifikation nicht erhalten? Leg doch mal den 
Schaltplan hier herein!

gruss

Gerhard schrieb:
> Ich bitte euch hier mal um Hilfe für ein Trouble-Shooting-Problem, das
> ich habe.
>
> Die Schaltung besteht aus einem µC, der verschiedene Eingangsbedingungen
> erhält und über eine State-Machine daraus zwei Ausgangswerte macht, mit
> denen mechanische Kupplungen geschaltet werden. Also zum Beispiel so:
> Schalte Kupplung eins, WENN Drehzahlsensor 1 länger als 3 Sekunden 0 UND
> Schalter 17 an UND Schalter 25 aus UND Öltemperatur > 40 °C. Sowas in
> der Art.
>
> Das ganze ist nach höchsten Sicherheitsstandards zugelassen. Weil wir
> die Software nicht auf den gewünschten Level zertifizieren konnten,
> haben wir um zwei wichtige Eingabewerte noch diskrete Logik außenrum
> gebaut und die mit dem µC-Ausgang ver-"und"-et.
>
> Das Produkt funktioniert beim Kunden in hundertfacher Ausführung seit
> Jahren ohne einen einzigen Fehler. Vor kurzem habe ich allerdings eine
> Platine bekommen, die komplett verrückt spielt. Das Ding schaltet die
> Kupplung zu, wenn es das nicht soll, und schaltet sie mittendrin ohne
> Grund ab. Es liegt NICHT an der diskreten Logik, denn diese hat in
> unserem Fall das schlimmste verhindert.
>
> Mein erster Schritt war, die Firmware auszulesen und gegen unsere Kopie
> zu verifizieren - jedes einzelne Bit stimmt. Der zweite Schritt war
> dann, ein Test-Programm hochzuladen, mit dem ich die einzelnen Ein- und
> Ausgänge abfragen/setzen kann, um den µC selbst zu überprüfen. Alles ok.
>
> Trotzdem spielt diese Platine verrückt. Das Problem lässt sich zwar
> schnell lösen (neue Platine mit neuem µC zum Kunden), jedoch sind wir
> sehr daran interessiert, die Ursache herauszufinden, um möglichen
> zukünftigen Ausfällen vorzubeugen.
>
> Limitiert haben wir die Lebensdauer übrigens auf 6 Jahre - wegen des
> Flash-Speichers. Im Moment sind wir knapp bei 5 Jahren. Allerdings
> spricht gegen diese Ursache, daß das Programm noch korrekt im Speicher
> steht.
>
> Prozessor ist ein ATMEGA48. Wer hat Ideen?

von Gerhard (Gast)


Lesenswert?

Moin Jungs,

erstmal danke für die zahlreichen Tips. Ich sitze gerade vor der Platine 
und forsche weiter.

> 1. Kalte Lötstellen

Habe gerade alles nachgelötet -> Fehler bleibt.

> 2. gealterte Elkos (muss man nicht unbedingt auf den ersten Blick
>  erkennen können)

Elkos gibt es (aus gutem Grund) keine.

> Funktioniert die Platine nur beim Kunden oder
> auch bei euch in der Firma nicht?

Fehler ist hier reproduzierbar.

> Mich wurde mal dein Layout der Spannungsversorgung
> und die Beschaltung der Eingänge interessieren.

LM2674 Schaltregler auf 5V, lokal mit R-C entkoppelt. Alle Eingänge 
werden einzeln über Komparatoren mit Hysterese getrieben. ESD, EMV und 
Filterung geschieht vor den Komparatoren.

> Wird bei der Schaltung irgendein Speicher zur speicherung von
> Daten/Variablen verwendet?

Nur die Register vom ATMEGA48 und ein wenig RAM für den Stack.

> Warum genau habt Ihr die Zertifikation nicht
> erhalten? Leg doch mal den Schaltplan hier herein!

Schaltplan kann ich nicht posten. Das Problem bei der Zertifizierung 
war, daß keine Erfahrungen mit dieser Prozessorfamilie vorlagen. Wir 
haben den erzeugten Maschinencode überprüft, aber das war noch nicht 
genug. Ehrlich gesagt war es mir als Entwickler auch etwas heikel, mich 
alleine auf den µC zu verlassen.

So haben wir zusammen mit dem Kunden für das Schalten der Kupplungen 
Bedingungen entwickelt, die schlimme Folgen haben und solche, die in der 
Praxis relativ harmlos sind. Der µC übernimmt die logische Verknüpfung 
aller Eingänge, die Logik außenrum hat nur zwei Eingänge und verhindert 
zum Beispiel, daß die Kupplung (formschlüssig!) bei Drehzahl betätigt 
wird.

von Gerhard (Gast)


Lesenswert?

Nachdem ich alles andere ausgeschlossen habe, kann ich nun definitiv 
sagen, daß der ATMEGA48 physikalisch defekt ist. Ich habe ihn ausgelötet 
und auf eine Experimentierplatine gesetzt.

Ein schnell geschriebener RAM-Test läuft ohne Probleme. Die Register 
sind ebenfalls ok. Die Software läßt sich weiterhin ohne Fehler 
programmieren und auslesen. Auch jeder einzelne I/O-Port funktioniert 
wie erwartet.

Aber: Von Zeit zu Zeit spielt der gesamte ATMEGA völlig verrückt und 
schaltet wild Ausgäng an und aus. Das ganze scheint unabhängig von 
äußeren Einflüssen zu sein und so wie es aussieht, läuft das Programm im 
Hintergrund unbeeindruckt weiter.

Wir warten jetzt erst einmal ab, ob es noch weitere Ausfälle gibt. Eine 
neue Version der Schaltung gibt es schon seit zwei Jahren, diese kommt 
ohne µC aus und wird in der Produktion von neuen Steuergeräten schon 
eingesetzt. Notfalls werden wir alle alten Steuergeräte durch die neue 
Version ersetzen.

Aber interessant ist das ganze schon.

von Sebastian .. (zahlenfreak)


Lesenswert?

Habt ihr Atmel deswegen mal angeschrieben? Würde mich interessieren, was 
die dazu sagen.

Gruß, Sebastian

von Thomas (kosmos)


Angehängte Dateien:

Lesenswert?

mit welcher Spannung versorgst du den Schaltregler könnte es sein das es 
hier mal zu größeren Ausreissern gekommen ist und er das nicht 
vollständig ausregeln konnte.

Ich habe keine Ahnung wie ein AVR auf kurze Überspannung im niedrigen 
Bereich 1-2V reagiert. Vielleicht willst du ja einen AVR opfern und tust 
der normalen Versorgungsspannugn mal 6-7V Impulse überlagern um zu sehen 
ob ihn das vielleicht auch mit nimmt.

Ich schalte meinen Linearregler auch immer eine kleine Filterung aus 
100µH und 15V Supressordiode vor um wirklich sicherzugehen. Habe bei mir 
nämlich den Fall das ein Stromstoßrelais ab und an einen 1000V Impuls 
erzeugt den ich dann auch vermindert auf der Sekundärseite des Trafos 
beobachten kann. In einer Firma mit größen Geräten / Maschinen wird das 
sicherlich nicht selten vorkommen.

Ist der µC jetzt fest verlötet oder kannst du probeweise einen anderen 
auf die Platine setzen.

von Gerhard (Gast)


Lesenswert?

In Richtung Schaltnetzteil und dessen Durchlässigkeit für äußere 
Störungen habe ich auch schon gedacht. Das Netzteil wurde nach DO-160 
für ein Bordnetz von 28V DC getestet.

Da wir hier sehr interessiert daran sind, woran es gelegen hat, werden 
wir morgen mal mit einem Satz ATMEGAs herumprobieren.

Alte Originalplatinen mit ATMEGAs mit gleichem Datecode haben wir hier 
noch zu hunderten liegen.

von Bernhard M. (bernhard84)


Lesenswert?

Du könntest es auch zum Fraunhofer Institut schicken und die 
schleifen/ätzen den Atmel dann mal auf. Damit kann man feststellen, ob 
wodurch der fehler verursacht wird, z.B. überspannung oder so.
Kostet halt ein bisschen was ...

Bernhard

von Falk B. (falk)


Lesenswert?

@  Bernhard Mayer (bernhard84)

>Du könntest es auch zum Fraunhofer Institut schicken und die
>schleifen/ätzen den Atmel dann mal auf.

Na bevor man das macht, sollte man systematisch testen. Das kostet aber 
auch, nämlich Zeit und damit Geld.

Der Chef wird sagen. OK, die Hardware hat die Katastrophe verhindert, 
gut so. Es ist ein Einzelfall, gut so. Wegschmeissen und durch neue 
ersetzen, fertig.

MFG
Falk

von O. D. (odbs)


Lesenswert?

Vielleicht ein Einzelfall, vielleicht aber auch der erste Vorbote einer 
ganzen Reihe von Ausfällen. Man weiß das ja nie so genau.

Da dich dein Chef da offensichtlich mindestens zwei komplette Tage dran 
forschen lässt, obwohl in der Produktion schon eine neue Version deiner 
Schaltung aufliegt, gleichzeitig das Stichwort DO-160 fiel, scheint es 
in Richtung Luftfahrt zu gehen.

Da wäre es dann evtl. schon interessant, möglichst frühzeitig 
abzuklären, woran es gelegen hat und ob es voraussichtlich ein 
Einzelfall bleiben wird.

Wird der 28V-DC-Bus aus einem Generator gespeist? Wenn ja, wie sichert 
ihr den Schaltregler gegen Über- und Unterspannung ab? Nach welcher 
Kategorie DO-160 wurde getestet?

Ich tippe auch intuitiv auf einen durch Überspannung angetöteten µC. Es 
könnten aber auch extrem tiefe oder hohe Temperaturen einen solchen 
Fehler auslösen.

von Alexander S. (esko) Benutzerseite


Lesenswert?

Gerhard schrieb:
> Aber: Von Zeit zu Zeit spielt der gesamte ATMEGA völlig verrückt und
> schaltet wild Ausgäng an und aus. Das ganze scheint unabhängig von
> äußeren Einflüssen zu sein und so wie es aussieht, läuft das Programm im
> Hintergrund unbeeindruckt weiter.
Du meinst, dass nur die Ausgänge wild umschalten unabhängig vom 
Prozessorkern.
Woran erkennst du, dass das Programm noch weiterläuft?

von Thomas (kosmos)


Lesenswert?

ist in der Luftfahrt nicht sowieso alles doppelt vorgeschrieben als z.B. 
2 Potis und 2 µC die beide die gleichen Werte ausspucken müssen...?

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.