Proč#
Vstup, který není k ničemu připojený, plave: chytá rušení a čte náhodné hodnoty. Pull-up rezistor (na 3V3) způsobí, že čte 1, dokud ho něco nestáhne dolů; pull-down (na GND) způsobí, že čte 0, dokud ho něco nevytáhne nahoru. Rezistor je schválně slabý, aby ho tlačítko nebo výstup snadno přetlačily.
Kde ho potřebujete#
| Signál | Rezistor |
|---|---|
| Tlačítko na GND | pull-up 10 kΩ (nebo interní v čipu) |
| I²C SDA a SCL | pull-up 4.7 kΩ na 3V3, jednou na sběrnici |
| ESP32 EN / strapping piny pro boot | pull-up 10 kΩ, jak říká datasheet |
| Gate MOSFETu řízené z GPIO | pull-down 10–100 kΩ, aby zátěž zůstala během resetu vypnutá |
| USB-C CC (zařízení) | pull-down 5.1 kΩ, viz USB-C |
Volba hodnoty#
- Příliš malá hodnota plýtvá proudem, když je linka stažená opačně (3.3 V / 1 kΩ = 3.3 mA), a může přetížit budič.
- Příliš velká hodnota zpomalí hrany a linka je citlivá na rušení. I²C na 400 kHz potřebuje na typické sběrnici ≤ 4.7 kΩ; pro tlačítka stačí 10 kΩ.
- Interní pull-upy (30–100 kΩ) stačí pro tlačítka na krátkých vodičích, na I²C po kabelech jsou příliš slabé.
Na co si dát pozor#
- Dva moduly I²C, každý s vlastními pull-upy, nevadí; pět paralelně (≈1 kΩ) je příliš silných. Nadbytečné odstraňte.
- Pull-up na 5 V na pinu čipu 3.3 V do něj pouští 5 V.