Der Sensirion SHT11
war ein Temperatur- und Feuchtesensor mit I²C-ähnlichem Interface.
Es gibt davon Derivate und Nachfolger,
etwa SHT21
oder SHTC1.
Software
Die Software für den PC-Anschluss des digitalen
Temperatur- und Feuchtesensors SHT11 befindet sich auf der
Freeware-Seite.
Sie unterstützt alle unten genannten Anschlussformen,
gegebenenfalls wird die neueste Version meiner InpOut32.dll benötigt.
Auch gibt es davon eine native 64-Bit-Version und — wie immer — den Quelltext.
In ZIP-Archiv befindet sich sogar ein Programm für DOS und Windows 3.1;
allerdings nur für den Anschluss am Parallelport.
Da die Software mittels
DDE
eine Automatisierungsschnittstelle bereit hält,
kann diese auch im Labor- und Industrieumfeld zur gleichzeitigen Überwachung
mehrerer Messstellen eingesetzt werden.
Im universitären Umfeld wird oft
LabVIEW verwendet,
da hier dessen Lizenzkosten gering ausfallen
und hübsche Grafen zur Verfügung stehen.
Anschluss am Parallelport
Am einfachsten wird ein SHT11 am Parallelport betrieben.
Ein Datenpin genügt zur Speisung des Sensors.
Da genügt eine simple Verdrahtung. Der Kondensator ist erforderlich.
Ohne diesen misst der Schaltkreis eine zu hohe Temperatur.
Mit USB-Paralleldrucker-Konvertern funktioniert das nicht.
Dafür benötigt man die folgende Schaltung:
Mit welchen Flipflops oder Latches man die beiden benötigten Datenbits auffängt
ist an sich egal. Hier wurde ein 4013 dafür benutzt.
Wer einen 74HC74 oder 74HCT74 hat, nimmt diesen.
Auch 74HC(T)274, 74HC(T)374, 74HC(T)574, 4029, 4035, 4042 sind geeignet.
Die Leseleitung kann nicht an ACK angeschlossen werden,
hier wird Pin 13 = ONL benutzt.
Anschluss am seriellen Port
Etwas komplizierter ist der Anschluss am seriellen Port,
wegen der Spannungsanpassung.
Dafür funktioniert es auch mit USB-Seriell-Konvertern.
Auf den beiden Fotos ist die Adaptierung zu sehen.
Am anderen Ende des 4-poligen Hosenträgerkabels ist der SHT11-Sensorchip
und der Kondensator.
Anschluss am USB
Moderner ist der Anschluss am USB. Dafür wird ein Mikrocontroller benötigt.
In seiner Firmware wurde ein HID-Gerät implementiert,
welches eine etwaige Referenzimplementierung von
PnPSA darstellt.
Der Schaltplan ist geradezu lächerlich einfach.
Und hier ist der Firmware-Quelltext.
Man beachte dabei insbesondere die Liesmich-Datei.
Die 2-Byte-Seriennummer befindet sich an der EEPROM-Speicherzelle 0x1F8 (ATtiny85) bzw. 0xF8 (ATtiny45).
Die letzten 4 Bytes sind für den Programmierzykluszähler von avrdude freigehalten.
Alternativen
Noch einfacher wird die Schaltung, wenn man einen 14-poligen
PIC16LF1454 verwendet.
Dann entfallen sämtliche Widerstände — außer für die LED.
Es können einige SHT21 angeschlossen werden:
Bis zu vier solo (dedizierte Takt- und Datenleitung)
oder bis zu sieben (gemeinsame Taktleitung).
Arduino-Freaks benutzen einen Arduino Micro oder den sehr preiswerten
Pro Micro,
jeweils üppig mit ATmega32U4 bestückt.
Diese Platinchen lassen sich so konfigurieren,
dass der Controller mit 3,3 V läuft.
gibt es in 5-V- und 3,3-V-Ausführung.
Notfalls verwandelt man eine 5-V-Ausführung durch Austausch des
Längsreglers in eine 3,3-V-Version.
An den freien Pins lassen sich viele (mehr als 10) SHT21 anschließen.
TODO: Referenzimplementierung und Firmware
Intelligenz im Stecker
Zum Einsatz kam hier eine Universal-Mikrocontroller-Schaltung zum Einbau
in den USB-Stecker, die schon früher für das
1-Tasten-Keyboard entwickelt wurde.
(Dort ist auch ein Foto von der Leiterplatte zu sehen.)
Der vorgesehene IC1 ATtiny25 (2 KByte Flash) ist durch einen ATtiny45 ersetzt zu denken.
Der 100-nF-Kondensator C1 sollte 10 µF haben, gibt es inzwischen auch als
Keramikkondensator in der Bauform 0603 sogar bei Reichelt.
Die Leuchtdiode wurde aus Platzgründen erst mal weggelassen.
Dazu die Quellen:
Des öfteren wird moniert, dass R1 eigentlich 1,5 kΩ haben müsste.
Das ist falsch: Er müsste 10 kΩ groß sein, damit die Potenzialverhältnisse
am USB bei 5 V Versorgungsspannung stimmen.
Dann aber ist das Ruhepotenzial am Pin 7 in der Nähe der halben Speisespannung,
und der Mikrocontroller zieht zu viel Strom im Schlafmodus,
mehr als die erlaubten 500 µA.
Daher ist mit 4,7 kΩ ein Kompromiss gewählt worden; die Schlafstromaufnahme
ist so am geringsten.
Kleineres R1 lässt den Schlafstrom durch R1 anwachsen.
Zenerdioden zur Begrenzung der Spannung auf den USB-Leitungen scheinen
(zumindest bei mir) nicht nötig zu sein; die Serienwiderstände
R2 und R3 erfüllen praktisch den gleichen Zweck.
Besser für eine künftige Schaltungslösung ist ein gemeinsamer
Spannungsregler 3,3 V für den Controller und den SHT11;
für den SHT21 ist dieser sogar Pflicht.
Im Muster wurde die Firmware in einen ein DIL-Schaltkreis auf einem Steckbrett gebrannt und getestet.
Dann wurde der Chip „in system“ (auf der Platine) durch temporäres Anlöten
des Programmieradapters an J1, J5, J6, J7 und J4 (bei Speisung an J8) gebrannt
und einer weiteren Seriennummer versehen.
Gesamtaufbau
Der Sensor ist an einem Abschnitt vierpoligen Kabels angelötet.
Damit seine Kontakte nicht mit irgendeiner geerdeten metallischen Oberfläche
Kontakt aufnehmen (und womöglich die 5 V aus dem Rechner kurzschließen)
wurde der Sensor mit einem Schrumpfschlauch mit Loch überzogen.
Das Loch wird klitzeklein vor dem Schrumpfen eingeschnitten;
beim Schrumpfvorgang zieht es sich groß. Siehe vergrößertes Foto links unten.
So ähnlich sollten eigentlich alle Sensoren aussehen!
Nicht irgendetwas mit losen Drahtenden.
Erfahrungsbericht
Egal wo man den SHT11 anschließt, das o.g. Windows-Programm kann alle
Schnittstellen ansprechen und das quer von Windows 98 bis Windows 10 64 bit.
Für den Parallelport-Anschluss werden Administrator-Rechte benötigt.
Es gibt auch andere Hersteller und Lieferanten von
an USB fertig adaptierten SHT11 / SHT21.
Diese laufen mit SHT11.EXE nicht.
Es sei denn, jemand wünscht sich da etwas.
Sonderfall SHTC1 / SCSC1
Diese modernen Feuchtesensoren erfordern eine Speise- und Busspannung
von 1,8 V.
Während nahezu alle modernen Mikrocontroller bis hinunter zu 1,8 V
laufen, ist mir keiner (aus der beherrschbaren
und in Durchsteck-Gehäusen verfügbaren 8-Bit-Welt) bekannt,
der das auch gleichzeitig mit USB kann.
Daher benötigt man für SHTC1:
Entweder bidirektionale Pegelkonverter für SCL und DATA.
Am einfachsten mit einem npn-Transistor und zwei
(dann unidirektionale) I/O-Ports des Mikrocontrollers.
Sind I/O-Ports knapp, dann noch je eine Schottky-Diode.
Solche Dioden braucht man auch am guten alten Parallelport.
Auch Schottky-Dioden haben eine merkliche Flussspannung,
die Lösung mit zwei Portpins pro Leitung ist die bessere.
Der unverwüstliche LM317 in Kleinleistungs-Version ist die einfachste
und preiswerteste Art, 1,8 V Speisespannung aus 5 V bereitzustellen.
Bei 3,3 V muss ein Low-Drop-Regler her.
Die beiden npn-Transistoren in
Basisschaltung
leiten ein Low von rechts nach links unter Spannungsverstärkung,
die beiden Schottky-Dioden leiten ein Low von links nach rechts.
Pullup-Widerstände auf der linken Seite sind nicht eingezeichnet,
diese seien bereits Teil der Schaltung oder im Mikrocontroller
integriert.
Die Schaltung arbeitet auch für künftige Sensorgenerationen
bis 1,2 V Speisespannung hinunter.
Wenn noch kleiner muss man's allerdings ganz anders lösen.
Oder zwei Mikrocontroller Rücken an Rücken:
Einer für USB und einer für die SHTC1-Chips.
Lohnt sich nur beim Anschluss mehrerer SHTC1,
denn einen Pegelwandler dazwischen braucht man ja trotzdem noch.
Da der
Arduino Uno
(Nicht der China-Nachbau!!)
bereits zwei Mikrocontroller Rücken an Rücken aufweist,
kann man ein solches Board benutzen,
muss es aber für der 1,8-V-Betrieb noch „frisieren“,
also darauf einige Bauteile und Verdrahtungen ändern.
Günstig an der dortigen RS232-Verbindung ist,
dass beide Leitungen unidirektional sind und sich ein Pegelwandler
einfach gestaltet.
Man benötigt für ein solches Vorhaben ein ISP-Programmiergerät,
beispielsweise einen zweiten Arduino Uno mit entsprechender Software.
Oder einen geeigneten 32-Bit-Mikrocontroller verwenden.
Da kenne ich mich aber nicht genügend aus, welcher wirklich
1,8 V I/O-Spannung und USB anbietet.
Das ist nur nach dem Studium hunderter Datenblätter (von über 1000 Seiten)
möglich.
Sonstiges
Foto eines SHT11 am 8051 im Rahmen einer Studienarbeit