เชื่อมต่อ IC อย่างปลอดภัย ด้วย Logic Level Shifting

Logic Level คืออะไร?
Logic Level คือระดับแรงดันไฟฟ้าที่ใช้แทนสถานะ HIGH และ LOW ของขา I/O บนไมโครคอนโทรลเลอร์ เช่น Arduino แต่สิ่งสำคัญคือ Logic Level ของแต่ละบอร์ดไม่ได้มีค่าเท่ากันเสมอไป
ตัวอย่างเช่น บอร์ด Arduino รุ่นยอดนิยมอย่าง Arduino UNO และ Arduino Nano ที่ MCU ใช้เลี้ยง 5V กับบอร์ด ESP32 หรือ Sensor บางบอร์ดที่ใช้แรงดันไฟ 3.3 V
| ESP8266 | ESP32 | Arduino | |
|---|---|---|---|
| Input low | 0.0 V – 0.8 V | -0.3 V – 0.8 V | -0.5 V – 1.5 V |
| Input high | 2.5 V – 3.3 V | 2.4 V – 3.3 V | 3.5 V – 5.0 V |
| Output low | 0.0 V – 0.33 V | 0.0 V – 0.33 V | 0.0 V – 0.8 V |
| Output high | 2.64 V – 3.3 V | 2.64 V – 3.3 V | 4.2 V – 4.7 V |
ปัจจุบัน(ปี 2026) ระดับแรงดันไฟเลี้ยง IC มีหลากหลายค่า 5V, 3.3V, 3.0V และ 1.8V แต่ที่ พบได้บ่อยที่สุดคือ 5V และ 3.3V
ดังนั้น ก่อนเชื่อมต่ออุปกรณ์ต่าง ๆ เข้าด้วยกัน ควรตรวจสอบว่า แต่ละอุปกรณ์ใช้ Logic Level เท่าใด เพื่อป้องกันปัญหาการสื่อสารผิดพลาดหรือความเสียหายที่อาจเกิดขึ้นกับวงจร.
เมื่อใดจึงจำเป็นต้องใช้ Logic Level Shifting?
หากคุณใช้ไมโครคอนโทรลเลอร์และเซนเซอร์ที่มี Logic Level ต่างกัน อาจจำเป็นต้องใช้ Logic Level Shifting เพื่อแปลงระดับแรงดันสัญญาณให้เข้ากัน
กรณีที่ 1: สัญญาณ 3.3V ส่งไปยังอุปกรณ์ 5V
กรณีนี้ไม่เกิดความเสียหายด้านอุปกรณ์ แต่มีผลด้านความสเถียรภาพของการทำงาน โดยเฉพาะ Level High เช่น จากตารางถ้า ESP32 การการสั่งงานไปที่ Arduino จะเห็นได้ว่า แรงดันต่ำสุดที่ IC จะตึความว่าเป็น High คือ 3.5 V แต่ ESP32 ขา I/O แรงดันสูงสุดคือ 3.3 V ดังนั้นความสเถียรภาพอาจจะไม่ดี มีความเสี่ยงที่จะผิดพลาดได้ง่าย
แม้ว่าในการใช้งานจริงจะพบว่าการต่อ GPIO ของ ESP32 (3.3 V) เข้ากับ Arduino Uno (ATmega328P @5 V) มักใช้งานได้ แต่ Datasheet ของ ATmega328P ระบุค่า VIH(min) เท่ากับ 0.7VCC หรือประมาณ 3.5 V เมื่อใช้ VCC = 5 V ดังนั้นแรงดัน High จาก ESP32 ที่ประมาณ 3.3 V จึงไม่เป็นไปตามสเปกที่ผู้ผลิตรับประกัน การเชื่อมต่อลักษณะนี้จึงควรถือว่าเป็นการใช้งานนอกเหนือจากเงื่อนไขที่ Datasheet รับรอง (out of specification) หากต้องการความน่าเชื่อถือในงานผลิตหรืออุตสาหกรรม ควรใช้วงจรแปลงระดับแรงดัน (Level Shifter)
เพิ่มเติม
Arduino บางรุ่นใช้ Input แบบ TTL เช่น Mega2560 บางขา Input High ประมาณ 2.0 V ดังนั้นจึงไม่ต้องใช้ Logic Level Shifting
กรณีที่ 2: สัญญาณ 5V ส่งไปยังอุปกรณ์ 3.3V
กรณีนี้เป็นสิ่งที่ต้องระมัดระวังมากที่สุด เพราะ อุปกรณ์ที่ใช้ Logic Level 3.3V ส่วนใหญ่รองรับแรงดันที่ขา I/O ได้สูงสุดเพียงประมาณ 3.6V ดังนั้น หากส่งสัญญาณ 5V เข้าไปโดยตรง อาจทำให้ไมโครคอนโทรลเลอร์หรืออุปกรณ์เกิดความเสียหายได้
ตัวอย่างเช่น Ultrasonic Sensor (5V) เข้ากับ ESP8266 (3.3V)

……………………………………………………………………….
วิธีทำ Logic Level Shifting
มีหลายวิธี
1. วงจรแบ่งแรงดัน (Voltage Divider)
2. ใช้ Bi-Directional Logic Level Shifter Module หรือ จะต่อ Transistor เองก็ได้ (ในบทความนี้ขออธิบายการใช้ Module เท่านั้น
3. ใช้ TXB0108 หรือ TXS0108E Module
1. วงจรแบ่งแรงดัน (Voltage Divider)
วิธีที่ง่ายที่สุดคคือ วงจรแบ่งแรงดัน (Voltage Divider) ในการทำ Logic Level Shifting

จากในรูป จุดที่ใช้เป็น เอาต์พุต (Output) คือจุดที่อยู่ กึ่งกลางระหว่างตัวต้านทานทั้งสองตัว โดยแรงดันไฟฟ้ารวม 5V จะถูกแบ่งตกคร่อมที่ตัวต้านทานทั้งสองตัวตามสัดส่วนของค่าความต้านทาน
ดังนั้น หากเลือกค่าตัวต้านทานให้เหมาะสม เราก็สามารถลดแรงดันจาก 5V ให้เหลือประมาณ 3.3V ซึ่งปลอดภัยสำหรับอุปกรณ์ที่ใช้ Logic Level 3.3V ได้
สูตรคำนวณแรงดันเอาต์พุต
แรงดันที่ได้จากวงจรแบ่งแรงดันสามารถคำนวณได้จากสูตร
(R2 / (R1 + R2) ) * V
ตัวอย่างเช่น หากเลือก
- R1 = 10 kΩ
- R2 = 22 kΩ
เมื่อนำไปแทนค่าในสูตร จะได้แรงดันเอาต์พุตประมาณ 3.4V ซึ่งอยู่ในช่วงที่ปลอดภัยสำหรับไมโครคอนโทรลเลอร์อย่าง ESP8266
2. ใช้โมดูล Bi-Directional Logic Level Shifter

โมดูลชนิดนี้เหมาะมากในกรณีที่ต้องแปลงระดับแรงดันของ หลายสัญญาณพร้อมกัน ทำให้สะดวกกว่าการสร้างวงจรแบ่งแรงดัน (Voltage Divider) แยกทีละขา
อุปกรณ์ที่ใช้เรียกว่า Bi-Directional Logic Level Shifter หรือ โมดูลแปลงระดับแรงดันสัญญาณแบบสองทิศทาง ซึ่งมีราคาค่อนข้างถูก โดยทั่วไปสามารถหาซื้อได้ในราคาประมาณ 35 บาท (ปี 2026)
วิธีใช้งาน
การต่อใช้งานทำได้ง่ายมาก
- ต่อไฟเลี้ยงฝั่งแรงดันสูง (ปกติคือ 5V) เข้ากับขา HV
- ต่อไฟเลี้ยงฝั่งแรงดันต่ำ (ปกติคือ 3.3V) เข้ากับขา LV
- เชื่อมต่อ GND ของทั้งสองระบบเข้าด้วยกัน
- จากนั้นนำสัญญาณที่ต้องการแปลงมาต่อเข้ากับช่องหมายเลขเดียวกันของทั้งสองฝั่ง
โมดูลจะทำหน้าที่แปลงระดับแรงดันของสัญญาณให้โดยอัตโนมัติ ทั้ง จาก 5V ไป 3.3V และ จาก 3.3V ไป 5V
ด้วยคุณสมบัติที่สามารถแปลงสัญญาณได้ ทั้งสองทิศทาง (Bi-Directional) โมดูลชนิดนี้จึงเหมาะสำหรับการเชื่อมต่อไมโครคอนโทรลเลอร์ 3.3V เช่น ESP8266, ESP32, Raspberry Pi เข้ากับอุปกรณ์หรือเซนเซอร์ที่ใช้ Logic Level 5V ได้อย่างปลอดภัยและสะดวก โดยเฉพาะงานที่ต้องสื่อสารผ่านบัสอย่าง I²C, SPI หรือ GPIO หลายช่องพร้อมกัน.
3. ใช้ TXB0108 หรือ TXS0108E Module

TXS0108E™ ของ Texas Instruments ซึ่งเป็นตัวแปลงระดับแรงดันลอจิก (Logic Level Translator) แบบ 8 บิต สองทิศทาง (Bi-directional) สำหรับเชื่อมต่ออุปกรณ์ที่ทำงานด้วยแรงดันลอจิกต่างกัน เช่น 1.8 V, 3.3 V และ 5 V
TXS0108E สามารถรับส่งข้อมูลได้ที่ความเร็วสูงสุด 100 Mbps สำหรับสัญญาณแบบ Push-Pull และ 1.2 Mbps สำหรับสัญญาณแบบ Open-Drain ดังนั้นจึงสามารถเชื่อมต่ออุปกรณ์ SPI 3.3 V เข้ากับไมโครคอนโทรลเลอร์ 5 V
| คุณสมบัติ | TXB0108 | TXS0108 (TXS0108E/B) |
|---|---|---|
| Bi-Directional Mode | Auto | Auto |
| ประเภทเอาต์พุต (Output Type) | Push-pull: ขับสัญญาณ High และ Low ได้โดยตรงด้วยวงจรขับภายในที่มีกำลังขับไม่สูง (มีตัวต้านทานอนุกรมภายในประมาณ 4 kΩ) | Open-drain: เอาต์พุตทำหน้าที่เหมือนสวิตช์ที่ดึงลงกราวด์ และอาศัยตัวต้านทาน Pull-up ภายนอกในการสร้างระดับ High |
| ความสามารถในการขับสัญญาณ (Drive Strength) | วงจรขับภายในมีกำลังไม่สูง ดังนั้นจึงต้องใช้กับอุปกรณ์ที่สามารถจ่ายหรือดึงกระแสได้ ≥2mA เพื่อให้การรับส่งข้อมูลแบบสองทิศทางทำงานได้ถูกต้อง | ไม่มีวงจรขับระดับ High ภายใน ใช้ตัวต้านทาน Pull-up ภายนอก (เช่น 4.7 kΩ–10 kΩ) ทั้งสองฝั่ง |
| ความต้องการ Pull-up | ไม่จำเป็น แต่การต่อ Pull-up ภายนอกอาจทำให้เกิดปัญหา เช่น เกิดวงจรแบ่งแรงดันหรือรบกวนการทำงาน | จำเป็นต้องมี Pull-up ทั้งสองด้านเพื่อให้ระดับ High ทำงานได้ถูกต้อง |
| ความเร็ว / อัตรารับส่งข้อมูล (Speed / Data Rate) | สูงสุด 100 Mbps (เหมาะสำหรับโปรโตคอลที่มีความเร็วสูงกว่า) | สูงสุด 52 Mbps (ช้ากว่า เนื่องจากระดับ High เกิดจากการชาร์จผ่านตัวต้านทาน Pull-up) |
| ข้อควรระวัง (Common Pitfalls) | มีความเสี่ยงต่อการเกิด Oscillation หากขอบสัญญาณ (Edge) ช้าเกินไป และกำลังขับที่อ่อนอาจไม่เหมาะกับสัญญาณที่ใช้พลังงานต่ำมาก | ต้องเลือกค่า Pull-up อย่างเหมาะสม ไม่เหมาะกับสัญญาณ Push-pull หากไม่มีการดัดแปลง และไวต่อสายที่ยาวหรือค่าความจุไฟฟ้า (Capacitance) |
| Power Consumption | สูงกว่าเล็กน้อย | ต่ำกว่า |
| I²C | ❌ ไม่แนะนำ | ✅ เหมาะมาก |
| SPI | ✅ เหมาะ | ⚠️ ใช้ได้แต่มีข้อจำกัด |
| UART | ✅ ดี | ✅ ใช้ได้ |
| GPIO | ✅ ดี | ✅ ใช้ได้ |
การทำงาน TXS0108 Level Shifter
TXS0108E เป็นตัวแปลงระดับแรงดัน (Level Shifter) แบบ 8 ช่องสัญญาณ (8-Channel) และ สองทิศทาง (Bi-directional) ที่รองรับการทำงานได้ทั้งกับสัญญาณแบบ Open-Drain และ Push-Pull
พอร์ต A รองรับแรงดันไฟเลี้ยงในช่วง 1.4 V ถึง 3.6 V ส่วนพอร์ต B รองรับแรงดันไฟเลี้ยงในช่วง 1.65 V ถึง 5.5 V โดยมีเงื่อนไขว่า VCC_A ≤ VCC_B.

ความแตกต่าง Bi-direction Module และ TXS0108 / E
| คุณสมบัติ | Bi-direction Module | TXS0108E Module | TXB0108 Module |
|---|---|---|---|
| หลักการ | MOSFET + Pull-up | One-shot Accelerator + Pull-up | Active Driver + Auto Direction |
| Open Drain | ✅ ดีมาก | ✅ รองรับ | ❌ ไม่เหมาะ |
| Push-Pull | ใช้ได้แต่ไม่เร็ว | ใช้ได้ | ✅ ดีที่สุด |
| I2C | ⭐ ดีที่สุด | ⭐ ดี | ❌ ไม่ควรใช้ |
| UART | ใช้ได้ | ดี | ดี |
| SPI | ใช้ได้ที่ความเร็วไม่สูง | ใช้ได้บางกรณี | ⭐ เหมาะกว่า |
| Drive Current | อาศัย Pull-up | Weak Driver | Strong Driver |
| ความเร็ว | ต่ำ-ปานกลาง | สูงกว่า BSS138 | สูงที่สุด |
การแปลงระดับแรงดันอาจดูเป็นเพียงรายละเอียดเล็ก ๆ ในวงจร แต่รายละเอียดเล็ก ๆ นี้เองที่มักเป็นตัวกำหนดความเสถียรของระบบทั้งหมด เมื่อเข้าใจข้อจำกัดและจุดเด่นของ Logic Level Shifter แต่ละประเภทแล้ว เราจะสามารถเลือกใช้อุปกรณ์ได้อย่างมั่นใจ และออกแบบระบบสื่อสารระหว่างอุปกรณ์ต่างระดับแรงดันได้อย่างถูกต้องและมีประสิทธิภาพตั้งแต่ต้น
⚙️ Happy Designing! 🚀🔋

