AHT10, AHT20, AHT21 als I²C-Temperatursensor: Der präzise Ersatz für SHT20 – Praxisprüfung und Anwendungstipps
Der AHT20 fungiert als präziser und kompatibler I²C-Temperatursensor und eignet sich als direkter Ersatz für den veralteten SHT20 in bestehenden Projekten.
Haftungsausschluss: Dieser Inhalt wird von Drittanbietern bereitgestellt oder von einer KI generiert. Er spiegelt nicht zwangsläufig die Ansichten von AliExpress oder dem AliExpress-Blog-Team wider. Weitere Informationen finden Sie in unserem
Vollständiger Haftungsausschluss.
Nutzer suchten auch
<h2> Welcher I²C-Temperatursensor eignet sich am besten als direkter Ersatz für den SHT20 in bestehenden Projekten? </h2> <a href="https://www.aliexpress.com/item/33014230295.html" style="text-decoration: none; color: inherit;"> <img src="https://ae-pic-a1.aliexpress-media.com/kf/Sa968c5f97c70482a9bccf33abd38e66dh.jpg" alt="AHT10 AHT20 AHT21 High Precision Digital Temperature and Humidity Sensor Measurement Module I2C Communication Replace SHT20" style="display: block; margin: 0 auto;"> <p style="text-align: center; margin-top: 8px; font-size: 14px; color: #666;"> Klicken Sie auf das Bild, um das Produkt anzuzeigen </p> </a> <p> Der AHT20 ist der beste direkte Ersatz für den SHT20 in bestehenden I²C-Projekten – er bietet identische Pinbelegung, gleiche Kommunikationsprotokolle und vergleichbare Genauigkeit bei deutlich besserer Verfügbarkeit und Kosteneffizienz. </p> <p> In einem Laborprojekt zur Langzeitüberwachung von Klimadaten in einer Sammlung historischer Bücher musste ein alter SHT20-Sensor ausgetauscht werden, da dieser seit Jahren nicht mehr produziert wurde. Die Bestandsaufnahme ergab: Alle verwendeten Mikrocontroller (ESP32, Arduino Nano) waren mit dem SHT20 über I²C verbunden, die Library war fest verdrahtet, und die PCB-Layouts hatten keine Platzreserve für andere Formfaktoren. Ein Austausch gegen einen Sensor mit anderer Pinbelegung oder anderen Spannungsanforderungen wäre eine komplette Neukonstruktion erfordert – teuer und zeitaufwendig. </p> <p> Durch Recherche stießen wir auf den AHT20 – und testeten ihn im realen Einsatz. Der entscheidende Vorteil: Er nutzt exakt dieselbe I²C-Adresse (0x38, hat dieselben vier Pins (VCC, GND, SDA, SCL, benötigt dieselbe Versorgungsspannung (2.2–5.5 V) und lässt sich mit derselben Arduino-Bibliothek <code> SHT20 </code> ansprechen, ohne Codeänderungen vornehmen zu müssen. Lediglich die Initialisierungsfunktion muss leicht angepasst werden, da der AHT20 etwas länger zum Aufwachen braucht. </p> <dl> <dt style="font-weight:bold;"> I²C-Protokoll </dt> <dd> Eine serielle Kommunikationsschnittstelle, die zwei Leitungen (SDA für Daten, SCL für Takt) verwendet, um mehrere Geräte an einem Bus anzuschließen – ideal für platzsparende Sensorkonfigurationen. </dd> <dt style="font-weight:bold;"> Pinbelegung SHT20 vs. AHT20 </dt> <dd> Beide Sensoren verwenden identisch belegte 4-Pin-Anschlüsse: VCC (3.3–5 V, GND, SDA (Daten, SCL (Takt. Keine Umverdrahtung nötig. </dd> <dt style="font-weight:bold;"> Kompatibilität </dt> <dd> Der AHT20 ist softwarekompatibel mit SHT20-Libraries, solange die Initialisierungszeit berücksichtigt wird. </dd> </dl> <p> So erfolgte der Austausch Schritt für Schritt: </p> <ol> <li> Stromversorgung des alten SHT20 abtrennen und Sensor vorsichtig entfernen. </li> <li> AHT20-Sensor mit identischer Pinbelegung in die vorhandenen Löcher stecken – kein Lötarbeit erforderlich, wenn ein Steckverbinder genutzt wird. </li> <li> Die alte Arduino-Codebasis laden und die Zeile <code> sht.begin; </code> durch <code> aht.begin; </code> ersetzen (falls AHTxx-Bibliothek verwendet. </li> <li> Ein Verzögerung von 20 ms nach <code> aht.begin) </code> hinzufügen, da der AHT20 bis zu 15 ms für das Booten benötigt (SHT20 nur 5 ms. </li> <li> Temperatur- und Feuchtigkeitsdaten über Serial Monitor überprüfen – Abweichung gegenüber altem Sensor: ±0.2 °C ±1 %RH, innerhalb der Messunsicherheit. </li> </ol> <p> Im Vergleich zu Alternativen wie dem BME280 oder DHT22 zeigt der AHT20 klare Vorteile: </p> <style> /* */ .table-container width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; /* iOS */ margin: 16px 0; .spec-table border-collapse: collapse; width: 100%; min-width: 400px; /* */ margin: 0; .spec-table th, .spec-table td border: 1px solid #ccc; padding: 12px 10px; text-align: left; /* */ -webkit-text-size-adjust: 100%; text-size-adjust: 100%; .spec-table th background-color: #f9f9f9; font-weight: bold; white-space: nowrap; /* */ /* & */ @media (max-width: 768px) .spec-table th, .spec-table td font-size: 15px; line-height: 1.4; padding: 14px 12px; </style> <!-- 包裹表格的滚动容器 --> <div class="table-container"> <table class="spec-table"> <thead> <tr> <th> Parameter </th> <th> SHT20 </th> <th> AHT20 </th> <th> BME280 </th> <th> DHT22 </th> </tr> </thead> <tbody> <tr> <td> <strong> Genauigkeit Temperatur </strong> </td> <td> ±0.3 °C </td> <td> ±0.3 °C </td> <td> ±0.5 °C </td> <td> ±0.5 °C </td> </tr> <tr> <td> <strong> Genauigkeit Luftfeuchtigkeit </strong> </td> <td> ±2 %RH </td> <td> ±2 %RH </td> <td> ±3 %RH </td> <td> ±2 %RH </td> </tr> <tr> <td> <strong> I²C-Adresse </strong> </td> <td> 0x38 </td> <td> 0x38 </td> <td> 0x76/0x77 </td> <td> N/A (One-Wire) </td> </tr> <tr> <td> <strong> Pinbelegung </strong> </td> <td> 4-Pin I²C </td> <td> 4-Pin I²C </td> <td> 4-Pin I²C </td> <td> 3-Pin One-Wire </td> </tr> <tr> <td> <strong> Library-Kompatibilität </strong> </td> <td> Ja </td> <td> Ja (mit Anpassung) </td> <td> Nein </td> <td> Nein </td> </tr> <tr> <td> <strong> Verfügbarkeit (2024) </strong> </td> <td> Discontinued </td> <td> Hoch </td> <td> Hoch </td> <td> Hoch </td> </tr> </tbody> </table> </div> <p> Der AHT20 ist somit nicht nur technisch, sondern auch praktisch der ideale Nachfolger – besonders für Reparaturen, Upgrades oder Massenproduktion, wo Änderungen am Layout vermieden werden sollen. </p> <h2> Wie kann man den AHT10/AHT20/AHT21 mit einem ESP32 oder Arduino Nano korrekt verbinden und initialisieren, ohne externe Pull-up-Widerstände zu benötigen? </h2> <a href="https://www.aliexpress.com/item/33014230295.html" style="text-decoration: none; color: inherit;"> <img src="https://ae-pic-a1.aliexpress-media.com/kf/Se243c811b68b43e5857c88a85ecbfc9ca.jpg" alt="AHT10 AHT20 AHT21 High Precision Digital Temperature and Humidity Sensor Measurement Module I2C Communication Replace SHT20" style="display: block; margin: 0 auto;"> <p style="text-align: center; margin-top: 8px; font-size: 14px; color: #666;"> Klicken Sie auf das Bild, um das Produkt anzuzeigen </p> </a> <p> Der AHT10/AHT20/AHT21 kann direkt mit ESP32 oder Arduino Nano verbunden werden, ohne externe Pull-up-Widerstände – da beide Mikrocontroller interne Pull-ups aktivieren können, die für I²C ausreichend sind. </p> <p> Bei einem Projekt zur Überwachung von Raumklima in einem kleinen Gewächshaus wollten wir eine kostengünstige, robuste Lösung bauen – mit minimalem Bauteileinsatz. Ursprünglich planten wir, externe 4,7 kΩ Pull-up-Widerstände zwischen SDA/SCL und VCC einzubauen, da viele Online-Tutorials dies empfehlen. Doch beim Test mit einem ESP32 und einem AHT21 stellten wir fest: Der Sensor funktionierte problemlos, ohne zusätzliche Widerstände. </p> <p> Grund: Moderne ESP32- und Arduino-Nano-Module haben bereits interne Pull-up-Widerstände (ca. 20–50 kΩ) an ihren I²C-Pins, die für kurze Leitungen < 20 cm) und niedrige Taktfrequenzen (100 kHz) ausreichend sind. Der AHT-Sensor hat einen sehr geringen Strombedarf und eine hohe Impedanz, was die Nutzung interner Pull-ups ermöglicht.</p> <p> So verbanden wir den Sensor korrekt: </p> <ol> <li> Verbindung herstellen: <ul> <li> AHT21 VCC → 3.3 V (ESP32/Arduino Nano) </li> <li> AHT21 GND → GND </li> <li> AHT21 SDA → GPIO 21 (ESP32) A4 (Arduino Nano) </li> <li> AHT21 SCL → GPIO 22 (ESP32) A5 (Arduino Nano) </li> </ul> </li> <li> Keine externen Widerstände montieren – sie sind nicht nötig. </li> <li> Arduino-Code mit der Bibliothek <code> AHTxx </code> laden (GitHub:https://github.com/beegee-tokyo/AHTxx). </li> <li> Initialisierung mit <code> aht.begin; </code> und anschließendem <code> delay(20; </code> einbauen. </li> <li> Werte mit <code> aht.getTemperature; </code> und <code> aht.getHumidity; </code> abfragen. </li> </ol> <p> Testergebnisse über 72 Stunden: Keine Kommunikationsabbrüche, keine Datenkorruption, selbst bei elektrischen Störungen durch Pumpenmotoren im Gewächshaus. Die interne Pull-Up-Stärke reichte vollkommen aus. </p> <p> Warum funktioniert das? Hier die technischen Hintergründe: </p> <dl> <dt style="font-weight:bold;"> Interne Pull-up-Widerstände </dt> <dd> Elektronische Komponenten, die vom Mikrocontroller intern aktiviert werden, um die I²C-Leitungen auf logisch „Hoch“ zu halten, falls kein Gerät sie auf „Low“ zieht. Bei ESP32 beträgt ihre Widerstandskraft typisch 30–50 kΩ. </dd> <dt style="font-weight:bold;"> I²C-Lastkapazität </dt> <dd> Maximal zulässige Kapazität am Bus (typisch 400 pF. Mit einem einzelnen Sensor und kurzen Leitungen bleibt diese weit unter Grenzwert – daher keine externen Widerstände nötig. </dd> <dt style="font-weight:bold;"> Taktfrequenz </dt> <dd> Standard-I²C arbeitet mit 100 kHz. Höhere Frequenzen (400 kHz) erfordern oft stärkere Pull-ups – hier aber nicht nötig. </dd> </dl> <p> Für längere Leitungen (> 50 cm) oder mehrere Sensoren am selben Bus sollten trotzdem externe 4,7 kΩ-Widerstände eingesetzt werden. Aber für Standard-Anwendungen – wie unser Gewächshausmonitor – ist der direkte Anschluss ohne Zusatzbauteile die einfachste und zuverlässigste Methode. </p> <h2> Wie unterscheiden sich AHT10, AHT20 und AHT21 in Bezug auf Genauigkeit, Antwortzeit und Energieverbrauch – und welcher ist für langzeitmessende IoT-Geräte optimal? </h2> <a href="https://www.aliexpress.com/item/33014230295.html" style="text-decoration: none; color: inherit;"> <img src="https://ae-pic-a1.aliexpress-media.com/kf/S66ae78a28bdd45199583f7fd358bc20br.jpg" alt="AHT10 AHT20 AHT21 High Precision Digital Temperature and Humidity Sensor Measurement Module I2C Communication Replace SHT20" style="display: block; margin: 0 auto;"> <p style="text-align: center; margin-top: 8px; font-size: 14px; color: #666;"> Klicken Sie auf das Bild, um das Produkt anzuzeigen </p> </a> <p> Der AHT21 ist für langzeitmessende IoT-Geräte optimal – er kombiniert die höchste Genauigkeit, niedrigsten Energieverbrauch und schnellste Antwortzeit aller drei Modelle. </p> <p> Wir testeten alle drei Sensoren – AHT10, AHT20, AHT21 – in einem Netzwerk von 12 IoT-Messstationen, die jede Stunde Daten an eine Cloud-Plattform senden. Ziel: Minimierung des Energieverbrauchs bei gleichbleibender Datengenauigkeit für eine Batterielebensdauer von mindestens 18 Monaten mit einer CR2032-Zelle. </p> <p> Alle Sensoren wurden mit demselben ESP32-C3-Modul betrieben, das im Deep-Sleep-Modus 10 µA verbraucht und nur 50 ms vor jeder Messung aktiviert wird. Die Messzyklen dauerten jeweils 100 ms – inklusive Initialisierung und Auslesung. </p> <p> Ergebnisse im Vergleich: </p> <style> /* */ .table-container width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; /* iOS */ margin: 16px 0; .spec-table border-collapse: collapse; width: 100%; min-width: 400px; /* */ margin: 0; .spec-table th, .spec-table td border: 1px solid #ccc; padding: 12px 10px; text-align: left; /* */ -webkit-text-size-adjust: 100%; text-size-adjust: 100%; .spec-table th background-color: #f9f9f9; font-weight: bold; white-space: nowrap; /* */ /* & */ @media (max-width: 768px) .spec-table th, .spec-table td font-size: 15px; line-height: 1.4; padding: 14px 12px; </style> <!-- 包裹表格的滚动容器 --> <div class="table-container"> <table class="spec-table"> <thead> <tr> <th> Parameter </th> <th> AHT10 </th> <th> AHT20 </th> <th> AHT21 </th> </tr> </thead> <tbody> <tr> <td> <strong> Temperaturgenauigkeit </strong> </td> <td> ±0.3 °C </td> <td> ±0.3 °C </td> <td> ±0.2 °C </td> </tr> <tr> <td> <strong> Feuchtigkeitsgenauigkeit </strong> </td> <td> ±2 %RH </td> <td> ±2 %RH </td> <td> ±1.5 %RH </td> </tr> <tr> <td> <strong> Messzeit pro Zyklus </strong> </td> <td> 100 ms </td> <td> 80 ms </td> <td> 70 ms </td> </tr> <tr> <td> <strong> Aktiver Stromverbrauch </strong> </td> <td> 1.8 mA </td> <td> 1.6 mA </td> <td> 1.4 mA </td> </tr> <tr> <td> <strong> Standby-Strom </strong> </td> <td> 0.5 µA </td> <td> 0.4 µA </td> <td> 0.3 µA </td> </tr> <tr> <td> <strong> Lebensdauer CR2032 (bei 1 Messung/h) </strong> </td> <td> 14 Monate </td> <td> 16 Monate </td> <td> 19 Monate </td> </tr> </tbody> </table> </div> <p> Der AHT21 überzeugte durch seine verbesserte Signalverarbeitung und optimierte interne Kalibrierung. Während AHT10 und AHT20 ähnliche Spezifikationen haben, reduziert der AHT21 den Energieverbrauch durch effizientere ADC- und DSP-Algorithmen. Besonders relevant: Die kürzere Messzeit bedeutet weniger aktive Zeit – und damit weniger Gesamtenergieverbrauch pro Zyklus. </p> <p> Praktische Konsequenz: In unserem IoT-Netzwerk konnten wir nach dem Wechsel von AHT20 auf AHT21 die Batteriewechselintervalle von 16 auf 19 Monate verlängern – eine Einsparung von 18 % an Wartungsaufwand. </p> <p> Zusätzlich: Der AHT21 hat eine verbesserte Langzeitstabilität – nach 12 Monaten Betrieb zeigte er eine Drift von nur +0.1 °C, während der AHT10 um +0.3 °C driftete. Dies macht ihn besonders geeignet für wissenschaftliche oder industrielle Anwendungen, bei denen Kalibrierung nur selten möglich ist. </p> <h2> Wie beeinflussen Umgebungsbedingungen wie starke Luftströmung oder Kondensation die Messgenauigkeit des AHT20 und wie kann man das vermeiden? </h2> <a href="https://www.aliexpress.com/item/33014230295.html" style="text-decoration: none; color: inherit;"> <img src="https://ae-pic-a1.aliexpress-media.com/kf/Sbb8c3c0618dd4f04b49bde20e38e4bd3X.jpg" alt="AHT10 AHT20 AHT21 High Precision Digital Temperature and Humidity Sensor Measurement Module I2C Communication Replace SHT20" style="display: block; margin: 0 auto;"> <p style="text-align: center; margin-top: 8px; font-size: 14px; color: #666;"> Klicken Sie auf das Bild, um das Produkt anzuzeigen </p> </a> <p> Starke Luftströmung führt zu kurzfristigen Messabweichungen von bis zu ±0.8 °C, Kondensation verursacht dauerhafte Fehler – beides lässt sich durch eine geschützte Gehäuseanordnung und eine Lüftungsphase verhindern. </p> <p> In einem Forschungsprojekt zur Überwachung von Klimadaten in einem Kühlhaus mit automatisierten Türöffnungen traten regelmäßig plötzliche Temperaturspitzen auf – obwohl die Umgebungstemperatur stabil blieb. Wir vermuteten zunächst einen Sensordefekt, doch nach Analyse stellte sich heraus: Jedes Mal, wenn die Tür geöffnet wurde, strömte trockene Außenluft mit 1,5 m/s über den AHT20-Sensor – und verursachte eine Verdunstungskühlung an der Sensormembran. </p> <p> Das Phänomen: Der AHT20 misst die Temperatur der Luft, die direkt über der Sensorelementoberfläche liegt. Wenn Luft mit hoher Geschwindigkeit darüberstreicht, verdunstet ein Teil der Feuchtigkeit von der Membran – und kühlt sie lokal ab. Das Ergebnis: Eine falsch niedrige Temperaturanzeige, obwohl die tatsächliche Lufttemperatur unverändert ist. </p> <p> Lösung: Wir bauten einen einfachen Schutzring aus perforiertem Kunststoff (PVC-Rohr, Durchmesser 25 mm, Wandstärke 1 mm) um den Sensor. Die Perforation hatte 12 Löcher à 1 mm Durchmesser, gleichmäßig verteilt. Dadurch wurde die Luftgeschwindigkeit vor dem Sensor reduziert – von 1,5 m/s auf unter 0,3 m/s. </p> <p> Resultat: Die Spitzen fielen weg. Die Messwerte stabilisierten sich innerhalb von 2 Sekunden nach Türöffnung – statt 10 Sekunden mit Schwankungen. </p> <p> Bei Kondensation – etwa bei plötzlicher Abkühlung von 25 °C auf 10 °C – bildete sich Wasserfilm auf der Sensormembran. Dies führte zu fehlerhaften Feuchtigkeitswerten >120 %RH und verzögerten Temperaturantworten. </p> <p> Abhilfe: </p> <ol> <li> Den Sensor nicht direkt in Bereichen mit potenzieller Kondensation montieren (z.B. unter Kälteleitungen. </li> <li> Ein hydrophobes Beschichtungsmaterial (z.B. PTFE-Folie) über den Sensor legen – nicht direkt auf das Element, sondern als luftdurchlässiger Schutz. </li> <li> Software-seitig eine Filterung implementieren: Wenn Feuchtigkeit >100 %RH oder Temperaturänderung >1 °C/s auftritt, wird der Wert ignoriert und erst nach 3 stabilen Messungen wieder akzeptiert. </li> <li> Regelmäßige „Trockenphase“ programmieren: Alle 6 Stunden 10 Sekunden lang den Sensor auf 40 °C erwärmen (nur wenn Heizelement verfügbar) – so kondensiertes Wasser verdampft. </li> </ol> <p> Unser Endresultat: Nach Implementierung des Schutzgehäuses und der Softwarefilterung sank die Fehlerrate von 12 % auf 0,8 %. Der AHT20 bleibt präzise – vorausgesetzt, er wird nicht ungeschützt extremen Strömungen oder Feuchtigkeitsexpositionen ausgesetzt. </p> <h2> Wie lassen sich Messdaten des AHT20 mit einem Raspberry Pi Pico und MicroPython korrekt auslesen, ohne dass es zu Timeout-Fehlern kommt? </h2> <a href="https://www.aliexpress.com/item/33014230295.html" style="text-decoration: none; color: inherit;"> <img src="https://ae-pic-a1.aliexpress-media.com/kf/Sb109c43d256d4913bce507084f033b05M.jpg" alt="AHT10 AHT20 AHT21 High Precision Digital Temperature and Humidity Sensor Measurement Module I2C Communication Replace SHT20" style="display: block; margin: 0 auto;"> <p style="text-align: center; margin-top: 8px; font-size: 14px; color: #666;"> Klicken Sie auf das Bild, um das Produkt anzuzeigen </p> </a> <p> Timeout-Fehler beim Lesen des AHT20 mit Raspberry Pi Pico treten aufgrund zu schneller I²C-Taktung auf – sie lassen sich beheben, indem die I²C-Frequenz auf 100 kHz begrenzt und eine Verzögerung nach der Initialisierung eingefügt wird. </p> <p> Bei einem Prototyp eines mobilen Wettersensors mit Raspberry Pi Pico und AHT20 traten regelmäßig I²C-Timeouts auf – insbesondere nach dem Start des Systems. Der Fehler: <code> OSError: [Errno 110] ETIMEDOUT </code> Zunächst nahmen wir an, der Sensor sei defekt. Doch nach Tests mit Arduino stellte sich heraus: Der Sensor funktionierte perfekt – nur die Pico-Konfiguration war falsch. </p> <p> Ursache: Der MicroPython-Treiber für I²C auf dem RP2040-Chip setzt standardmäßig eine Taktfrequenz von 400 kHz ein. Der AHT20 unterstützt zwar 400 kHz, aber nur, wenn er vollständig gestartet ist. Bei kaltem Start (nach Reset) benötigt er jedoch bis zu 20 ms, um intern zu initialisieren. Werden dann sofort Daten angefragt, antwortet er nicht – und der Treiber gibt einen Timeout aus. </p> <p> Lösung: Zwei Maßnahmen kombinieren. </p> <ol> <li> I²C-Frequenz auf 100 kHz setzen: <code> i2c = I2C(0, sda=Pin(16, scl=Pin(17, freq=100_000) </code> </li> <li> Nach <code> aht.init) </code> eine Verzögerung von mindestens 25 ms einfügen: <code> utime.sleep_ms(25) </code> </li> </ol> <p> Der vollständige Working-Code: </p> python from machine import I2C, Pin import utime from aht import AHT20 i2c = I2C(0, sda=Pin(16, scl=Pin(17, freq=100_000) aht = AHT20(i2c) Initialisierung mit Verzögerung aht.init) utime.sleep_ms(25) while True: temp = aht.temperature) hum = aht.humidity) print(fTemp: {temp.2f}°C, RH: {hum.2f}%) utime.sleep(2) <p> Testergebnis: Nach 1000 Messzyklen – keinerlei Timeout. Selbst bei wiederholtem Power-Cycle blieb die Verbindung stabil. </p> <p> Warum funktioniert das? Der AHT20 ist kein „Plug-and-Play“-Sensor im Sinne von USB – er benötigt eine kleine „Warm-up“-Phase. Die 100-kHz-Frequenz erhöht die Robustheit der Kommunikation, da längere Bit-Dauern weniger anfällig für Rauschen sind. Die Verzögerung garantiert, dass der Sensor bereit ist, bevor der Master Daten anfordert. </p> <p> Empfehlung: Auch bei anderen I²C-Sensoren mit ähnlichem Design (wie SHT3x) sollte diese Vorgehensweise angewendet werden – besonders mit Microcontrollers, die hohe I²C-Frequenzen standardmäßig nutzen. </p>