Digital ist eine Vereinbarung, keine Eigenschaft
Ein Eingang liefert deinem Code ein Bit â 0 oder 1. Die Welt am Pin ist aber keineswegs digital: Dort liegt irgendeine Spannung zwischen 0 und 3.3 V, und zwar jede beliebige.
Die Ăbersetzung besorgt der Vergleicher im Chip. Er hat zwei Schwellen, und dazwischen liegt ein Bereich, in dem gar nichts festgelegt ist.
Der Bereich von 0 bis 3.3 V zerfÀllt in drei Zonen:
| Bereich | Spannung bei 3.3 V | Ergebnis |
|---|---|---|
| unter Œ der Versorgung | bis ca. 0.83 V | sicher Low (0) |
| dazwischen | 0.83 ⊠2.48 V | undefiniert |
| ĂŒber Ÿ der Versorgung | ab ca. 2.48 V | sicher High (1) |
Die Fachbegriffe dafĂŒr sind V(IL) (input low, die obere Grenze fĂŒr sicheres Low) und V(IH) (input high, die untere Grenze fĂŒr sicheres High). Beim ESP32 liegen sie bei einem Viertel und drei Vierteln der Versorgungsspannung.
âUndefiniert" heisst nicht âirgendwas dazwischen"
Der Eingang liefert deinem Code immer eine 0 oder eine 1 â auch bei 1.5 V. Es gibt kein drittes Ergebnis.
Undefiniert heisst: welche der beiden es wird, ist nicht vorhersagbar. Es kann vom Exemplar abhÀngen, von der Temperatur, von der Versorgungsspannung, und es kann sich von Millisekunde zu Millisekunde Àndern.
Ein Fehler in diesem Bereich ist deshalb besonders unangenehm: Er sieht nicht wie ein Fehler aus, sondern wie ein sporadischer Bug in deiner Software.
Der offene Eingang
Jetzt kommt der Fall, der in der Praxis am hĂ€ufigsten zuschlĂ€gt â und der Grund fĂŒr das ganze nĂ€chste Modul.
Was liest ein Eingang, an dem gar nichts angeschlossen ist?
Die Leitung endet frei. Weil der Eingang hochohmig ist, zieht er die Spannung nirgendwohin â und weil sonst niemand da ist, der sie festlegt, ist sie einfach nicht bestimmt.
Die Leitung wirkt stattdessen wie eine kleine Antenne. Sie fĂ€ngt auf, was in der Umgebung passiert: das 50-Hz-Brummen der Netzleitung, SchaltvorgĂ€nge von GerĂ€ten in der NĂ€he, sogar die NĂ€he deiner Hand. Rechts in der Figur siehst du das Ergebnis â der gelesene Zustand springt unregelmĂ€ssig zwischen 0 und 1.
Dieser Zustand heisst floating, zu Deutsch: der Eingang hÀngt in der Luft.
Warum ein Taster allein nicht reicht
Jetzt die entscheidende Einsicht. Der naive Aufbau fĂŒr einen Taster wĂ€re: Pin â Taster â GND. Und der ist kaputt, obwohl er auf den ersten Blick vollstĂ€ndig aussieht:
| Taster | Pin verbunden mit | Ergebnis |
|---|---|---|
| gedrĂŒckt | Masse | liest sauber Low â |
| offen | nichts | floatet â |
Die HĂ€lfte der FĂ€lle ist also undefiniert. In der Praxis Ă€ussert sich das als Taster, der âmanchmal von selbst auslöst" â besonders gern, wenn man mit der Hand in die NĂ€he kommt.
Was fehlt, ist ein Bauteil, das den Pin auf einen definierten Pegel zieht, solange der Taster offen ist. Genau das leistet der Pull-Widerstand im nÀchsten Modul.
Die Regel
Jeder Eingang braucht zu jedem Zeitpunkt etwas, das seinen Pegel festlegt.
Geh in Gedanken alle ZustĂ€nde deiner Schaltung durch â Taster gedrĂŒckt, Taster offen, Sensor angesteckt, Sensor abgezogen, Gegenstelle noch nicht gestartet. Wenn in einem dieser ZustĂ€nde niemand die Spannung bestimmt, hast du einen floatenden Eingang und damit einen Fehler, der erst spĂ€ter auffĂ€llt.
Kurze Selbstkontrolle
ZĂ€hlt nicht â nur zum PrĂŒfen, ob es angekommen ist.
1.An einem ESP32-Eingang liegen 1.5 V. Was liest der Pin?
2.Ein Taster verbindet einen Eingang mit GND, sonst hÀngt nichts am Pin. Was ist das Problem?