Wie finde ich heraus, ob sich mein Board dem Lebensende nähert?

12

Ich habe ein Uno, das ich seit 3 ​​Jahren benutze. Ich werde es wieder in einem ziemlich kritischen Projekt verwenden, bei dem ein Versagen des Boards ziemlich teuer und gefährlich sein kann. Daher möchte ich sichergehen, dass das Board nicht bald das Ende seiner Lebensdauer erreicht oder bald ausfällt. Gibt es einen zuverlässigen Weg, um herauszufinden, wie lange die Platine funktioniert, ohne dass es zu Ausfällen oder Leistungseinbußen kommt?

Ascheshr
quelle
"Ein Versagen des Boards könnte ziemlich teuer und gefährlich sein". Definiere teuer und definiere gefährlich. Vielleicht ist ein Arduino nicht die beste Wahl für Ihre Anwendung, vielleicht müssen Sie einen ausfallsicheren Mechanismus entwickeln.
jippie
@jippie Denk an kleine UAVs und / oder andere kleine bis mittlere Roboter.
Asheeshr

Antworten:

8

Leider gibt es im Kontext der Festkörperelektronik nicht viele Möglichkeiten, den "Verschleiß" wirklich zu bestimmen.

Die wahrscheinlichsten Fehlerquellen sind die Elektrolytkondensatoren und die Steckverbinder.


Erstens, wenn Sie eine ATmega-CPU für etwas verwenden, das möglicherweise jemanden verletzen könnte, KONTAKTIEREN SIE ATMEL UND SPRECHEN SIE ÜBER SICHERHEITSHINWEISE . Die in den meisten Arduino-Modellen verwendete ATmega-CPU ist für die Verwendung in solchen Situationen nicht geeignet.

In JEDEM Datenblatt:

Atmel-Produkte sind nicht für die Verwendung als Komponenten in Anwendungen zur Unterstützung oder Aufrechterhaltung der Lebensdauer vorgesehen, zugelassen oder garantiert.

Nun, realistisch gesehen, ist dies wahrscheinlich größtenteils anwaltrechtlich abweisend, aber Sie sollten dennoch geeignete Vorsichtsmaßnahmen treffen.

Wirklich, während es auf einem herkömmlichen Arduino-Board nichts gibt, das sich wirklich abnutzt, außer den Anschlüssen, warum versuchen Sie, 30 US-Dollar zu potenziell enormen Kosten zu sparen? Kaufe einfach ein neues Board.

Ich würde Ihnen auch dringend empfehlen, ein Board mit einem SMT ATmega328P zu wählen, da dadurch die IC-Sockelkontakte aus der Liste der Bedenken entfernt werden. Entfernen Sie nach Möglichkeit auch die Stiftleisten und löten Sie die Drähte direkt auf die Platine. Versuchen Sie, die Anzahl der Anschlüsse zu minimieren, da diese häufig ausfallen.

Connor Wolf
quelle
4

Einer der Abschnitte des Arduino, der mit der Zeit wahrscheinlich unzuverlässig wird, ist sein Gedächtnis. Es gibt drei Speicherpools im Mikrocontroller, die auf Avr-basierten Arduino-Boards verwendet werden:

  • Im Flash-Speicher (Programmspeicher) wird die Arduino-Skizze gespeichert.
  • In SRAM (Static Random Access Memory) werden bei der Ausführung der Skizze Variablen erstellt und bearbeitet.
  • EEPROM ist ein Speicherplatz, in dem Programmierer Langzeitinformationen speichern können.

Der Speicher ist ein Teil der Karte, der überprüft und verifiziert werden kann und somit auf Zuverlässigkeit / Gesundheit bewertet wird. Eine sehr grundlegende Möglichkeit, den Speicher zu überprüfen, besteht darin, ein bestimmtes 8-Bit-Muster (Byte-Zeichen) über jede Adresse im Speicher zu schreiben und dann den an jeder Adresse vorhandenen Wert zu lesen. Wenn der geschriebene Wert mit dem gelesenen Wert übereinstimmt, funktioniert der betreffende 8-Bit-Block im Speicher zum gegenwärtigen Zeitpunkt ordnungsgemäß.

Die Abnutzung des ROM-Speichers erfolgt normalerweise blockweise, dh n * 8-Bit-Blöcke verschlechtern sich mit der Zeit. Für einen 2-KByte-ROM-Chip kann der Zustand des Chips geschätzt werden, indem von jedem Byte auf dem Chip geschrieben und gelesen und der Prozentsatz der ordnungsgemäß funktionierenden Blöcke berechnet wird. Wenn der Prozentsatz fehlgeschlagener Blöcke signifikant ist (15% -20%), bedeutet dies, dass der Speicher wahrscheinlich bald ausfällt.

Der Testcode kann mit separaten Methoden für jeden der Speicherabschnitte geschrieben werden.

SRAM

Alle statisch oder dynamisch deklarierten Variablen werden im SRAM zugewiesen. Wir könnten also ein großes Zeichenarray (~ 2000) deklarieren und jedes Element mit 255 (alle Bits 1) füllen. Dann könnten wir versuchen, jedes dieser Elemente zu lesen und festzustellen, ob der gelesene Wert tatsächlich 255 ist.

EEPROM

Das EEPROM kann mithilfe der EEPROM-Bibliothek bearbeitet werden . Die Bibliothek bietet Funktionen zum Lesen und Schreiben von bestimmten Stellen im EEPROM. So können alle Speicheradressen durch einfaches Durchlaufen des gesamten Speicherplatzes getestet werden. Diese Operation erfordert 500 Schreib- und Lesevorgänge.

Abhängig von der Board-Nutzung fällt das EEPROM am wahrscheinlichsten zuerst aus, ist jedoch für den Board-Betrieb nicht kritisch.

Blitz

Mit der PROGMEMDirektive können Daten im Flash-Speicher abgelegt werden . Ähnlich wie bei SRAM kann hier ein großes Array deklariert und initialisiert werden. Dann können Werte gelesen und überprüft werden.

Ascheshr
quelle
Dies konzentriert sich nur auf den Mikrocontroller, der höchstwahrscheinlich das am wenigsten zuverlässige Bit auf der Platine ist. Der Blitz ist für 10k-Zyklen ausgelegt - dies ist sehr schwer zu erreichen. Auch würde der Test nur beweisen, dass er jetzt funktioniert, nicht wenn er in die Anwendung eingefügt wird. Ist es sicher viel einfacher, den einmal programmierten Programmspeicher oder das EEPROM zu validieren?
Cybergibbons
Ich würde den Satz in Frage stellen "Einer der Abschnitte des Arduino, der mit der Zeit wahrscheinlich unzuverlässig wird, ist sein Gedächtnis." - Der Blitz kann 10k-Zyklen ausführen, der EEPROM 100k-Zyklen. Das ist viel Schreiben.
Cybergibbons
@ Cybergibbons Speicherintensive Anwendungen können mehr als 100 Schreibvorgänge pro Minute ausführen. Nicht üblich, aber bei Verwendung einer großen Anzahl von Sensoren möglich. Der Test würde uns einen Prozentsatz des Speichers geben, der korrekt funktioniert. Ich habe keine spezifischen Kenntnisse über die ROM-Chips auf dem Arduino, aber viele ROMs können Lese- und Schreibzyklen über den Chip verteilen. Dies hat zur Folge, dass selbst wenn sich einige Speicherplätze verschlechtern, dies ein Zeichen dafür ist, dass sich der gesamte Chip bald verschlechtern wird. Auch wenn sich die R / W-Zyklen nicht ausbreiten, ist dies ein Zeichen dafür, dass
asheeshr
Mindestens Teile des Chips haben einen erheblichen Verschleiß erfahren, wodurch der Chip teilweise unzuverlässig wird. In beiden Fällen ist das Auswerten des gesamten verfügbaren Speicherbereichs eine zuverlässige Methode, um den aktuellen Status des Chips zu ermitteln, der in naher Zukunft einen Hinweis auf einen Ausfall geben kann . Ja, das sagt mir nicht, ob der Chip im nächsten Projekt ausfällt, aber im Falle einer gefährlichen oder teuren Anwendung würde ich mit Sicherheit keinen Chip in Betrieb nehmen, der eine erhöhte Ausfallwahrscheinlichkeit aufweist.
Asheeshr
Wenn Sie Hunderte von Malen pro Minute ins EEPROM schreiben oder flashen, sehen Sie jedoch eine Lebensdauer von weniger als einem Tag. Das ist nur eine unangemessene Verwendung. Bei einem ATmega gibt es keinen Verschleißausgleich.
Cybergibbons
-4

Edit: Leute, die meine Antwort runtergestimmt haben, Ohh common, sei nicht zu dumm! Dafür musst du ein Elektron sein und die Schaltung selbst durchlaufen, um zu überprüfen, ob alles in Ordnung ist oder nicht :)

Schließen Sie die Karte an einen USB-Anschluss Ihres Computers an und überprüfen Sie, ob die grüne LED-Betriebsanzeige auf der Karte leuchtet. Standard-Arduino-Boards (Uno, Duemilanove und Mega) haben eine grüne LED-Betriebsanzeige in der Nähe des Rücksetzschalters.

Eine orangefarbene LED in der Nähe der Mitte der Platine (im Bild unten mit „Pin 13 LED“ gekennzeichnet) sollte beim Einschalten der Platine ein- und ausgeschaltet werden (die Platinen werden ab Werk mit vorinstallierter Software geliefert, um die LED zu blinken, um dies zu überprüfen) das board funktioniert).

Bildbeschreibung hier eingeben

Wenn die Betriebsanzeige nicht aufleuchtet, wenn die Karte an Ihren Computer angeschlossen ist, wird die Karte wahrscheinlich nicht mit Strom versorgt.

Die blinkende LED (verbunden mit dem digitalen Ausgangsstift 13) wird durch den auf der Platine laufenden Code gesteuert (neue Platinen sind mit der Blink-Beispielskizze vorinstalliert). Wenn die Pin 13 LED blinkt, läuft die Skizze korrekt, was bedeutet, dass der Chip auf der Platine funktioniert. Wenn die grüne Power-LED leuchtet, die Pin 13-LED jedoch nicht blinkt, befindet sich möglicherweise der Werkscode nicht auf dem Chip. Wenn Sie keine Standardplatine verwenden, verfügt diese möglicherweise nicht über eine integrierte LED an Pin 13. Überprüfen Sie daher die Dokumentation auf Details Ihrer Platine.

Online-Anleitungen für den Einstieg in Arduino finden Sie unter Windows , Mac OS X und Linux .

Hardik Thaker
quelle
2
Die Frage ist, wie überprüft werden kann, ob die Karte kurz vor dem Ausfall steht und nicht, ob sie bereits ausgefallen ist .
Asheeshr
@AsheeshR: Ohh gemein, sei nicht zu dumm!
Dazu
2
@ HardikThaker Warum schreibst du das nicht stattdessen in eine Antwort? Es wäre wohl besser gewesen. Auch wenn Sie Ihre Antwort nicht wegwerfen möchten (es ist nützlich), können Sie immer die richtige Frage stellen und sie selbst beantworten. Das ist in der Regel von den Experten zu Adresse häufig gestellte Fragen, getan wie so .
Ricardo
@ Ricardo: Roger das! Danke Kumpel ! Ich werde das im Hinterkopf behalten: P besseres Glück beim nächsten Mal für mich;) -4 und zählen: P
Hardik Thaker