-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Sichere Abschaltung bei µC Störungen

  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    47
    Beiträge
    497

    Sichere Abschaltung bei µC Störungen

    Anzeige

    Hi,

    ich benötige einen Gedankenanstoß.

    Für die Ansteuerung eines Brushlessmotors schalte ich einen ENABLE- und einen BRAKE-Eingang der Steuerung mit einem ATMega8. Außerdem stelle ich die Geschwindigkeit über ein DS1804 zwischen 0-5V.

    Das Gerät soll autark versorgt werden und ist lediglich durch ein Funkmodul erreichbar. Den Fall, dass der Funkkontakt abreißt und dadurch ein Weiterfahren verhindert wird, habe ich durch eine Dauersendung des Senders (Broadcast) gelöst.

    Nun aber zu meinem Problem. Nehmen wir mal an, dass der Controller aus irgend einem Grund nicht mehr korrekt funktioniert. Dann möchte ich gern, dass auch für diesen Fall der Motor sicher angehalten wird. Ich kann aber ja nicht die Zustände der Ausgänge sicher definieren. Jetzt würde ich einfach mal einen separaten Ausgang toggeln und daran eine Schaltung basteln, die bei längerem Verharren in einem der beiden Zustände einen Ausgang schaltet. Wohin ist erstmal egal.

    Ich meine soetwas schonmal im Forum gelesen zu haben, finde es aber nicht mehr. Hat vielleicht jemand eine Idee wie dies Schaltung aussehen könnte?

    sast

    雅思特史特芬
    开发及研究

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    29
    Beiträge
    1.221
    Du kannst sowas relativ einfach über eine Ladungspumpe machen - Ein Kondensator in Reihe zum Port lässt nur Strom fließen wenn dieser umgeschaltet wird. Die Dioden sorgen für "Stromnachschub", der zweite Kondensator glättet die gepumpte Spannung.

    mfG
    Markus
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken failsafe.png  

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Für so einen Fall haben die meisten Controller einen Watchdog Timer eingebaut.
    Dieser Timer hat eine eigene Taktquelle und löst, wenn er nicht regelmässig resettet wird einen Reset aus, der den Controller neu bootet.

    Problemen mit der Stromversorgung kann man mit der Controllerinternen Brown Out detection entgegentreten.

    Dabei wird beim Unterschreiten einer bestimmten Versorgungsspannung ein Reset des Controllers ausgelöst.

    Wenn die Funksignale regelmässig kommen, könntest Du den Watchdog in der Empfangsroutine des Controllers einbauen und ihn mit WDR nur resetten wenn ein gültiges Funksignal eingetroffen ist.

    Ansonsten wird der Controller resettet.

    Damit wäre dann eine Controllerhänger und ein Funkausfall gleichermassen abgedeckt.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.11.2006
    Beiträge
    463
    Der Watchdog hilft nur dann, wenn sich der Controller aufgrund eines temporären Fehlers (z.B. elektromagnetische Störung oder selten auftretender Fehler im Programm) aufhängt. Wenn der Controller jedoch aus irgendeinem Grund dauerhaft nicht mehr funktioniert (z.B. durch Erschütterungen defektes Quarz), dann hilft auch ein Watchdog nicht. Eine reine Hardwarelösung wie die von Markus vorgeschlagene Schaltung kann da die Sicherheit deutlich erhöhen.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    47
    Beiträge
    497
    @markusj so etwas in der Art schwebt mir vor. Muss ich doch gleich mal aufbauen.

    @wkrug ja watchdog ist mir bekannt, ich weiß nur nicht, ob der bei Spannungsunterschreitung noch funktioniert. Wenn das Brownout eine Unterspannung detektiert hat das Brushlessmodul möglicherweise immer noch genug Spannung da getrennte Versorgung. Was nützt mir ein Reset wenn danach trotzdem noch alles unterversorgt ist. Dann fährt der Controller nicht an und alles bleibt beim Alten.

    Beim Ausfall der Funkstrecke gehe ich davon aus, dass es an der Entfernung bzw an Störungen liegt.
    In meinem Problemfall gehts um undefinierte Zustände des Controllers durch verschiedenartige Einflüsse wie zB permanente Unterspannung, oder Aufhängen, oder was weiß ich noch. Ich kann das Gerät sonst nicht anhalten und irgendwann fährt es sonst gegen Konstruktionsteile in 300m Höhe.

    Vielleicht bin ich auch zu fokusiert darauf, dass es Fehler gibt die die normalen Überwachungssachen des AVR nicht abdecken. Hab jetzt kein konkretes Scenario im Kopf was ich bis zum Ende durchdacht habe. Aber erfahrungsgemäß passiert immer genau das, was man vergessenhat zu berücksichtigen.

    Danke ihr zwei für eure Infos

    Edit: @Jakob L wie ich gerade gesehen habe bestätigst du meine Vermutung. Na dann werd ich mal den Lötkolben schwingen.
    sast

    雅思特史特芬
    开发及研究

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    29
    Beiträge
    1.221
    Noch ein Nachtrag: Die o.g. Schaltung wurde von mir bisher nur simuliert, allerdings sehe ich momentan nichts was Probleme bereiten könnte.
    Wenn der Eingang mit den besagten 10kHz versorgt wird, geht der Ausgang auf "High" und der Transistor wird durchgesteuert. Für deine Zwecke würde es vermutlich auch reichen wenn du anstelle der Transistorbasis direkt "ENABLE" anschließt.
    Auf jeden Fall ist ein Ein Pulldown-Widerstand erforderlich, um das ganze auf einen definierten Pegel zu ziehen wenn kein Eingangstakt vorhanden ist.
    Durch umdrehen der Dioden und anschließen an VCC statt GND lässt sich der Aktivpegel auch auf "Low" ändern.

    Ich empfehle auf jeden Fall eine Simulation mit SwCAD oder ähnlichen Werkzeugen, dort können die Widerstände und Kondensatoren auf die erwartete Last und gewünschte Toggle-Frequenz hin optimiert werden.

    mfG
    Markus

  7. #7
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    47
    Beiträge
    497
    Danke nochmal an Markus

    Der erste Test mit einem BC547C und einer LED am Collector bei 6kHz sieht gut aus.
    Das mit dem Pulldown ist mir nicht klar, wo soll der hin?

    Jetzt muss ich mir überlegen, was ich damit schalten will ;o)
    Werde es im LTSpice noch etwas optimieren. Aber Praxistests sind durch nichts zu ersetzen.

    sast

    雅思特史特芬
    开发及研究

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    29
    Beiträge
    1.221
    Hallo sast,

    Transistoren sind stromgesteuert, da ist kein Pulldown/-up erforderlich - Wenn du aber den Eingang des Moduls direkt anschließen möchtest, wirst du einen Pulldown parallel zu C8 einbauen wollen und dafür R7 und T2 weglassen.

    Aber: Der Transistor "zieht" den Pegel nur in eine Richtung, du brauchst bei einem npn-Transistor also einen Pullup als Gegenspieler.

    mfG
    Markus

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Wenn der Controller jedoch aus irgendeinem Grund dauerhaft nicht mehr funktioniert (z.B. durch Erschütterungen defektes Quarz), dann hilft auch ein Watchdog nicht
    Soweit ich weiß wird der Watchdog von einem internen RC Generator gespeist.

    Zum anderen kann man während des hochlaufens des Controllers bestimmte Bits abfragen, was denn nun einen Reset ausgelöst hatte und dementsprechnde Routinen anfahren.

    Die Funkstrecke kann man über Prüfbits absichern z.B. mit CRC.
    Im Ersten Schritt werden dann Funkframes verworfen, im zweiten Schritt alles still gelegt. Beim Modellflug nennt man das "Fail Safe".

    Das der Controller bei zu niedriger Spannung nicht hochläuft ist natürlich klar.
    Dann sind aber auch alle Ausgänge TRISTATE und Du kannst über geeignete Pull UP/Down Widerstände für eine Abschaltung der Peripherie sorgen.

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2006
    Beiträge
    225
    Hallo,
    Watchdog Timer sind in jeden Fall die erste Wahl. Aber nur so lange sich der Mircocontroller nicht selber aufhängt oder was auch immer. Jedenfalls habe ich in einer ähnlichen Situation einen einfachen, unabhängigen Timer spendiert mit entsprechender Zeitkonstante. Der wird dann periodisch per Ansteuerung zurückgesetzt. Es ist eigentlich ein externer Watchdog.
    Gruss Klaus.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •