Kurzschlussschutz für digitalen Eingang

In meiner Frage hier: Überprüfung meines allerersten PCB-Designs für einen Bewässerungssteuerungsroboter. es wurde darauf hingewiesen, dass ich wohl die LEVEL_ALERTleitung schützen solle.

Im Wesentlichen habe ich also ein digitales Off-Board-Eingangssignal (5 V), das den Anschluss mit einem 12-V-Hochleistungskabel (bis zu 5 A) teilt, und es gibt die Nähe zu Wasser. Es besteht also ein echtes Risiko, dass die 12 V mit dem Eingangssignal kurzgeschlossen werden. Ich möchte magischen Rauch vermeiden ... Die genaue Schaltung ist in der oben verlinkten Frage enthalten, aber ich werde die relevanten Teile hier wiedergeben:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Die Werte der Komponenten sind nicht korrekt. Ich habe die Komponenten nur hinzugefügt, die Werte sollten keine Rolle spielen. Ich habe die Sicherung hinzugefügt, es war nicht im Original.

Wie Sie in dem großen Kästchen oben sehen können, das einen Stecker darstellt, der außerhalb des Boards verläuft. Und es besteht die Gefahr, dass die 12 V, die aus dem Relais gehen, mit dem Draht, der zum LEVELPin des ATmega geht, kurzgeschlossen werden und magischer Rauch entsteht.

Wenn es nur eine ESD oder ein kleiner Transient wäre, bin ich sicher, dass die ESD-Dioden im GPIO-Pin damit umgehen könnten. Dies kann jedoch ein Dauerkurzschluss zu 12 V sein, von dem ich sicher bin, dass er das Mikro braten würde.

Hier sind die Optionen, die ich in Betracht gezogen habe:

  1. Klemmen Sie die Diode an die 5-V-Schiene. Kann der Regler (LM7805CT) damit umgehen, dass der Ausgang stark auf die gleiche Spannung wie sein Eingang getrieben wird? Selbst wenn dies möglich ist, wird die 5-V-Schiene über die maximale Vcc des ATmega steigen? Wenn der Wasserstand so sinkt, dass der Schalter betätigt wird, während der Ausgang kurzgeschlossen ist, sollte die Sicherung durchbrennen, um einen Trockenlauf der Pumpe zu verhindern.
  2. Setzen Sie einen PMOS zwischen U2 und ATmega und fügen Sie einen Spannungsteiler hinzu LEVEL, wo der Teilungspunkt mit dem Gate des PMOS verbunden ist, so dass alles über 5 V auf LEVEL die Stromversorgung des Relais unterbricht und den Kurzschluss unterbricht. Ich bin mir nicht sicher, ob dies schnell genug sein wird, um Schäden am ATmega zu verhindern. Es sind auch mindestens drei weitere Komponenten. Die Geschwindigkeit kann durch einen RC-Filter auf der LEVEL-Leitung gelöst werden. Wenn der Füllstandsschalter aufgrund eines niedrigen Füllstands aktiviert wird, während der Ausgang kurzgeschlossen ist, ist dies kein Problem, da das Relais die Pumpe sowieso abschaltet.
  3. Dedizierte Strom- und Spannungsbegrenzungs-IC. Ich möchte wirklich vermeiden, an dieser Stelle einen weiteren IC hinzuzufügen.
  4. Ähnlich wie 2, aber PMOS parallel zu C1 schalten und stattdessen die Sicherung durchbrennen.
  5. Verwenden Sie einen Spannungsteiler, um ein geeignetes Potential von fast 5 V von der 12-V-Schiene zu erzeugen, die nicht mit dem Regler verbunden ist, und klemmen Sie sie mit einer Diode ab, die den LEVELgleichen Effekt wie 1 hat. Ich denke jedoch, dass Sie nicht riskieren, den Regler durchzubrennen oder anzuheben Vcc.

Können Sie uns bitte mitteilen, ob eine dieser Methoden zum Schutz der ICs geeignet ist? Oder wenn einer besser ist als der andere?

Antworten (2)

Die andere Seite von SW1 ist mit GND verbunden, dh LEVEL ist offen oder mit GND verbunden. Wenn der LEVEL offen ist, ist dieser Teil der Schaltung hochohmig. Der interne Pullup-Widerstand von 50k ist immer noch ein hoher Wert. Ich schlage vor, einen Widerstand von 4k7 oder 10k von LEVEL zu 5V hinzuzufügen.

Es ist eine schlechte Idee, einem Eingang eines ATmega Klemmdioden hinzuzufügen. Sie sind parallel zu den internen ESD-Dioden. Der richtige Weg, Klemmdioden hinzuzufügen, ist ein zusätzlicher Widerstand zwischen den Klemmdioden und dem Eingang des ATmega-Chips.

Die gebräuchlichste Art, einen Eingang zu schützen, besteht darin, einen Reihenwiderstand zwischen dem Signal und dem Eingang hinzuzufügen. Zum Beispiel 4k7 oder 10k. Es ist erlaubt, 1mA in die internen ESD-Dioden eines Pins zu drücken oder zu ziehen. Das heißt, bei 12V und einem 10k-Widerstand ist der Strom in den Pin des ATmega (12-5,5)/10k = 0,6mA, das ist in Ordnung. Mit 4k7 ist es noch nah genug.

Es gibt viele andere Möglichkeiten, dies zu lösen, aber meine Lösung besteht darin, einen Pullup-Widerstand von 4k7 oder 10k von LEVEL auf 5V und einen Widerstand von 4k7 oder 10k von LEVEL zum Eingangspin des ATmega hinzuzufügen.

Fällt dadurch nicht die Spannung am Pin ab? Wie bildet der Vorwiderstand mit dem Pull-up-Widerstand einen Spannungsteiler?
Der Pullup nicht am Pin, sondern seitlich am Schalter.
Könnten Sie bitte den Grund für das Hinzufügen des Serienwiderstands zwischen einer externen Klemmdiode (Zener?) Und dem Eingangspin erläutern?
Mit einer Klemmdiode lege ich zwei Dioden von der Signalleitung auf 5V und GND. Sie „klemmen“ das Signal zwischen GND und 5V. Es gibt jedoch bereits ESD-Dioden im Mikrocontroller, die dasselbe tun. Die interne ESD-Diode könnte vor der externen Begrenzungsdiode zu leiten beginnen, und somit verhindert die externe Begrenzungsdiode keinen Schaden. Ein Widerstand zwischen externer und interner Klemmdiode verhindert dies. Eine Zenerdiode leckt und kann nicht in einem analogen Signalpfad verwendet werden. Für einen digitalen Eingang ist es ok. Manchmal sehe ich eine 5,1-V-Zenerdiode in einem Schaltplan, aber ich verwende nie eine Zenerdiode.

Je mehr ich über das Problem nachdachte, desto mehr wurde mir klar, dass ich in der Lage sein muss, zwischen drei Zuständen auf der LEVELLeitung zu unterscheiden:

  1. Betätigt
  2. Kurzgeschlossen
  3. Offen

Nach langem Kopfzerbrechen bin ich auf diesen Schaltplan gekommen:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Simulation: Hier .

Der Wert auf ADC3 ist:

  • 5 V, wenn +12 V mit LEVEL kurzgeschlossen sind.
  • 1,3 V, wenn der Schalter offen ist.
  • 0,88 V, wenn der Schalter geschlossen oder LEVEL mit Masse kurzgeschlossen ist.

ADC3 wird kontinuierlich abgefragt, solange das Relais, das die +12 V zum Reservoir liefert, aktiviert ist. Wenn der Wert kleiner/größer als 1,3 V -/+ 0,2 V ist, wird das Relais, das +12 V liefert, deaktiviert (oder nie aktiviert). Ich kann die Widerstandswerte skalieren, um die erwartete Ausgangsimpedanz auf der ADC-Leitung für eine schnelle Abfrage zu erfüllen.

Ich möchte auch, dass das System betriebssicher ist, also muss ich alle möglichen kurzen Szenarien berücksichtigen:

  • 12 V an GND oder PGND: Ein hoher Strom fließt und löst eine rückstellbare Sicherung aus, und µC fällt ab. Wenn der µC das nächste Mal online geht, ist das Relais ausgeschaltet und ich muss einen Weg finden, um festzustellen, ob es aufgrund eines kurzen oder normalen Ausfalls abgeschaltet wurde. Vielleicht verwende ich ein bisschen im EEPROM, um "Pumpe ein / aus" umzuschalten. Wenn die Pumpe beim Zurücksetzen eingeschaltet war, war es wahrscheinlich ein Kurzschluss.
  • 12 V auf LEVEL: ADC3 geht auf 5 V und die 5-V-Schiene wird durch die Diode geschützt.
  • GND oder PGND zu LEVEL: Gleiche Wirkung wie wenn der Schalter betätigt wurde. ADC3 geht auf 0,88 V und die Pumpe wird mit der Meldung „Niedriger Wasserstand“ abgeschaltet.