Micro:bit Kurzschluss-Sicherung
Einige haben sich ja schon Sorgen gemacht, ob die vielen englischen
Schüler nicht laufend Kurzschlüsse an den Ports verursachen und damit
alles in Rauch aufgehen lassen. Aber bisher wurden noch keine schwarzen
Wolken über den britischen Inseln gesichtet. Und das hat einen Grund,
den ich ganz zufällig entdeckt habe: Die Entwickler des Micro:bit unter
der Federführung der BBC haben nämlich einen Kurzschluss-Sicherung für
die Ports eingebaut!
Das ganze habe ich ganz zufällig gefunden,
als ich die Belastbarkeit und den On-Widerstand der Ports untersuchen
wollte. Wenn ich den Ausgang hochohmig mit 10 kOhm belaste, ist noch
alles normal. Es kommen ca. 3,3 V raus. Eine Belastung mit nur 100 Ohm
ging manchmal gerade noch. Die Spannung am Port war dann schon auf ca.
1,5 V zusammengebrochen. Das bedeutet 15 mA, und mehr geht nicht!
Wenn ich nämlich die Belastung noch etwas erhöhe, schaltet der Port ab!
Beim ersten Mal dachte ich, Schreck lass nach, alles durchgebrannt.
Aber nach einem Reset ist alles wieder wie neu.
Also
erstmal ein Testprogramm geschrieben, das schnell mit einem Port
wackelt. Die Wartezeiten waren insgesamt nur 20 ms. Am Oszi sehe
ich allerdings, dass alles viel langsamer abgeht. Die On-Zeit beträgt
ca. 12 ms, die Offzeit allerdings aufgrund der Endlosschleife 36 ms.
Und dann kommt's: Sobald ich den Port
überlaste, wird nach 5-6 ms umgeschaltet. Nicht schneller und auch nie
wesentlich später. Das folgende Bild zeigt die Abschaltung
bei 100 Ohm und 15 mA.
Und
nicht nur das, die Sicherung funktioniert auch in der anderen Richtung.
Wenn ich meinen Lastwiderstand gegen VCC anschließe, gibt es wieder
eine Grenze bei ca. 15 mA. Aber dann schaltet der Port hoch! Die
Vermutung ist nun: Der Port wird laufend überwacht. Wenn ich einen
High-Zustand ausgebe, aber den Port so weit überlaste, dass 1/2
VCC unterschritten wird, schaltet sich der Portzustand um. Genial!
Jetzt kommt natürlich die Frage auf, auf welcher Ebene passiert das? Ist das schon
eine Eigenschaft des Controllers? Oder gibt es das nur in den Blocks?
Also erstmal ein Testprogramm mit Python geschrieben.
Der Test mit Python zeigt keine Sicherung. Die Portausgaben sind hier wesentlich schneller, was ja
auch seine Vorteile haben kann. Aber Kurzschluss bleibt Kurzschluss.
Das Bild zeigt eine Belastung mit 47 Ohm. Die Spannung ist bereits
unter 1 V abgesunken. Aber von Abschalten findet man keine Spur. Der maximale Strom ist dabei etwa 20 mA. Auch kein Beinbruch,
wahrscheinlich passiert dabei nichts. Die Ports des Controllers sind
wesentlich hochohmiger als bei AVR-Controllern. Deshalb kann man hier
sogar LEDs ohne Vorwiderstand anschließen. Der Strom liegt dann meist
bei ca. 10 mA.
Ein weiterer Test mit Mbed zeigt das gleiche: Keine Sicherung!
Der Versuch wurde rein statisch durchgeführt, indem der Controller
selbst die Spannung am Port gemessen hat. Wahrscheinlich sieht das
anders aus, wenn man microbit.h verwendet. Aber dann hat man
ja die Wahl: Entweder schnell und schmutzig, oder
langsam und sicher.
Aber
warum dauert das mit den Blocks überhaupt so lange? Ich weiß nur, dass
der echte Programmierer in Schichten und Instanzen denkt. Wenn ich mir
die Microbit-Quelltexte ansehe, verstehe ich nichts mehr, nur dass
alles fürchterlich kompliziert ist. Ich stelle mir vor, dass mehrere
Instanzen daran beteiligt sind und sie am Ende wie in einer
Redaktionskonferenz der BBC demokratisch abstimmen:
Eingangs-Inspektor: Hast du nicht gerade P1 eingeschaltet?
Ausgangs-Bevollmächtigter: Hab ich.
Eingangs-Inspektor: Aber ich lese hier nur eine Null! Was soll das?
Sicherheits-Beauftragter: Da hat wieder einer n´ Kurzschluss gebaut. Die lernen das nie!
Eingangs-Inspektor: Und was machen wir jetzt?
Ausgangs-Bevollmächtigter: Ich könnte abschalten, aber nur, wenn das von einer Mehrheit getragen wird.
Eingangs-Inspektor: Lieber abschalten! Besser ist das!
Sicherheits-Beauftragter: Mir egal! Passiert sowieso nichts.
Ausgangs-Bevollmächtigter: Ich bin auch für Abschalten, sicher ist sicher.
Eingangs-Inspektor: Zwei gegen eine Enthaltung für Ausschalten. Schalt ab!
Ausgangs-Bevollmächtigter: Ist abgeschaltet. Und was ist wenn der Kurzschluss aufgehoben wird?
Sicherheits-Beauftragter: Dann muss er eben mal Reset drücken. Vielleicht kapiert er es dann.
So stelle ich mir das vor, und das dauert dann schon mal fünf Millisekunden oder etwas länger.
Elektronik-Labor Projekte Microbit