Always refer to the manufacturer’s YL105 datasheet V1.2 for absolute maximum ratings (TMV: -20°C storage, 5.5V absolute max input).
// Datasheet threshold: 30 µs is the boundary if(duration > 30) byte *data = byte; return true;
#define YL105_PIN 2 void startSignal() pinMode(YL105_PIN, OUTPUT); digitalWrite(YL105_PIN, LOW); delay(20); // Better: 20ms (exceeds 18ms requirement) digitalWrite(YL105_PIN, HIGH); delayMicroseconds(40); pinMode(YL105_PIN, INPUT); yl105 datasheet better
It respects the 20ms start signal and uses a 30µs threshold (midpoint between bit0's 26µs and bit1's 70µs). Most libraries incorrectly use 40µs, causing bit errors at the edges of the tolerance range. Part 6: Common Pitfalls (What the Datasheet Doesn't Explicitly Say) The YL105 datasheet is good, but it misses three practical details. Knowing these makes your usage better than 90% of other engineers. 1. Power Supply Noise The datasheet mentions "VDD ripple < 50mV." In reality, if you power the YL105 from the same 5V rail as a servo motor, you will get +10% RH errors. Better solution: Use a dedicated 3.3V LDO regulator or add a 470µF capacitor on the power rail. 2. Self-Heating If you read the YL105 faster than 1 Hz (e.g., every 500ms), the internal thermistor will self-heat by 2-3°C. The datasheet does not warn about this clearly. Better practice: Limit reads to once every 2 seconds for temperature accuracy, even if humidity can refresh faster. 3. Condensation Recovery The datasheet says "non-condensing environment." But if condensation occurs, the sensor requires 2 hours of drying at 50°C. Better design: Mount the YL105 vertically, not horizontally, so water drips off the PCB. Part 7: Conclusion – Is the YL105 "Better" for YOU? After reading this deep dive into the yl105 datasheet better analysis, ask yourself:
bool readByte(uint8_t* data) uint8_t byte = 0; for (int i = 0; i < 8; i++) while(digitalRead(YL105_PIN) == LOW); // Wait for start of bit uint32_t startTime = micros(); while(digitalRead(YL105_PIN) == HIGH); uint32_t duration = micros() - startTime; Always refer to the manufacturer’s YL105 datasheet V1
Stop fiddling with external pull-ups and faulty libraries. Download the original YL105 datasheet, follow the timing diagrams above, and build humidity logging that just works. YL105 Arduino wiring, YL105 vs DHT22 latency, YL105 humidity calibration offset, best YL105 library GitHub
| Parameter | Symbol | Value | Your code must... | | :--- | :--- | :--- | :--- | | Start signal low time | Tbe | > 18 ms | Pull pin LOW for 20ms (not 1ms) | | Sensor response low | Trel | 80 µs | Wait for pin to go LOW | | Sensor response high | Treh | 80 µs | Wait for pin to go HIGH | | Bit "0" high time | Tbit_0 | 24-28 µs | Sample after 30 µs | | Bit "1" high time | Tbit_1 | 70-74 µs | Sample after 50 µs | Part 6: Common Pitfalls (What the Datasheet Doesn't
The YL105 datasheet reveals a sensor that is better for 80% of hobbyist and commercial indoor projects . It is robust, forgiving, and cheap. When paired with proper timing code and a clean power supply, it rivals sensors twice its price.