Qo'llanma · Apparat · Sathlar
3.3V ↔ 5V: ESP32 ni qanday kuydirmaslik kerak
Arduino dunyosidagi sensor va modullarning yarmi 5 V da ishlaydi. ESP32, ESP8266 va ko'pchilik zamonaviy chiplar 3.3 V da ishlaydi. 5 voltli chiqishni to'g'ridan-to'g'ri 3.3 voltli pinga bersangiz — uni o'sha zahoti shikastlashingiz mumkin. Ular nega chiqishmasligini, o'zgartirgichni qachon qo'ymasa ham bo'lishini va ularni bog'lashning uchta toza usulini ko'rib chiqamiz.
Bu shina asoslaridan olingan «sath qanday o'qiladi?» degan savolning amaliyotga aylantirilgan ko'rinishi — va bu boshlovchilar ESP32 pinini o'ldiradigan eng keng tarqalgan usul.
Nega 3.3 V va 5 V shunchaki birga ishlamaydi
Ikkita alohida muammo, har bir yo'nalishga bittadan:
- 5 V → 3.3 V kirish (xavfli tomoni). ESP32 GPIO taxminan 3.6 V maksimumga mo'ljallangan. Unga 5 V bersangiz — kirishning himoya diodlaridan oshib ketasiz: goho omon qoladi, ko'pincha degradatsiyaga uchraydi yoki ishdan chiqadi. Aynan shu pinlarni kuydiradi.
- 3.3 V → 5 V kirish (jimjit tomoni). 3.3 V dagi «birlik» 5 voltli chip mantiqiy birlik deb sanaydigan sathdan (ko'pincha ~3.5 V) past bo'lishi mumkin, shuning uchun 5 voltli qurilma hech narsani o'qimaydi yoki noto'g'ri ishlaydi. Hech narsa yonmaydi, lekin ishlamaydi.
Avvalo — sizga o'zgartirgich umuman kerakmi?
Detallar qo'shishdan oldin tekshiring:
- Ko'p 5 voltli modullar 3.3 voltli mantiq bilan bemalol o'qiladi va undan boshqariladi — datasheetda «3.3 V compatible I/O» ni qidiring.
- I²C da, agar tortish (pull-up) rezistorlarini 3.3 V dan quvvatlasangiz va sensor buni ko'tarsa, shina ko'pincha shunchaki ishlayveradi — ochiq stok (open-drain) liniyalari baribir faqat 3.3 V gacha tortiladi.
- Faqat 5 V → 3.3 V yo'nalishi haqiqatan xavfli. 5 V kirishga berilgan 3.3 V signal hech qachon zararli emas, faqat goho yetarli bo'lmaydi.
1-usul — Rezistorli bo'luvchi (bir yo'nalishda)
Bitta 5 voltli chiqish 3.3 voltli kirishga ketayotganda — sensorning TX i ESP32 ning RX iga — ikkita rezistorning o'zi yetarli:
5V TX ──[ R1 = 1kΩ ]──┬──> 3V3 RX (xavfsiz)
│
[ R2 = 2kΩ ]
│
GND
Vout = 5V × R2 / (R1 + R2) = 5 × 2 / 3 ≈ 3.3 V
// Faqat bir yo'nalishda (5V -> 3V3). I²C SDA liniyasida ISHLATMANG.
Arzon va ishonchli, lekin faqat bir tomonlama va biroz sekin (qarshilik va simning sig'imi tez frontlarni yumshatadi). Uni hech qachon I²C SDA kabi ikki yo'nalishli liniyaga qo'ymang.
2-usul — BSS138 MOSFET (ikki yo'nalishli, asosiy tanlov)
Klassik 4 kanalli «logic level converter» platasi — bu bir nechta BSS138 MOSFET. Har bir kanal ikkala yo'nalishda avtomatik siljitadi, bu esa aynan I²C ga kerak (SDA ham, SCL ham ikki yo'nalishli). Yuqori tomonni 5 V ga, past tomonni 3.3 V ga ulang, umumiy yerni bo'lishing va signallaringizni undan o'tkazing. Bir-ikki dollar — va holatlarning 90% i hal bo'ladi.
3-usul — Maxsus mikrosxemalar (ko'p/tez liniyalar)
8 bitli parallel shina yoki tez SPI uchun maxsus mikrosxema ishlating: TXS0108E
(avto-yo'nalish, ochiq stok bilan chiqishadi) yoki TXB0104 (push-pull, tezroq, I²C uchun
emas). Ular bo'luvchi yoki yakka MOSFET ga qaraganda yuqori tezlik va ko'proq kanallarni tozaroq
eplaydi.
Tuzoqlar
- Bo'luvchi — bir tomonlama. Uni I²C SDA da ishlatish shinani buzadi — sensor liniyani teskari tomonga tortolmaydi. U yerda BSS138 kerak.
- Ikkala kuchlanish tayanchi. Sath o'zgartirgich modulga ikkala quvvat — HV (5 V) va LV (3.3 V) — hamda umumiy yer ulangan bo'lishi kerak; bittasini unutsangiz — hech narsa qilmaydi.
- Push-pull vs ochiq stok. TXB sinfidagi mikrosxemalar I²C kabi ochiq stokli shinalarda ishlamaydi; u yerda TXS sinfi yoki BSS138 ishlating.
- Umumiy yer majburiy — ikkala tomon GND ni bo'lishishi shart, aks holda sathlar hech nima anglatmaydi.
Umumiy qoida: bitta 5 voltli signal ichkariga → bo'luvchi. Ikki yo'nalishli shina (I²C) → BSS138 platasi. Ko'p yoki tez liniyalar → to'g'ri o'zgartirgich mikrosxema. Bir marta to'g'ri qiling — va ESP32 pinlaringiz uzoq umr ko'radi.
Jimjit I²C bilan kurashayapsizmi? Sath mos kelmasligi — odatiy aybdorlardan biri.