3.8. Penggeseran level

Pin GPIO pada kamera menghasilkan sekitar 3,3 V saat bernilai tinggi. Perangkat di sisi lain mungkin beroperasi pada 5 V (mikrokontroler lama, banyak papan sensor) atau 1,8 V (sensor terbaru, beberapa bus antarchip). Menghubungkan keduanya secara langsung terkadang aman dan terkadang merusak; penggeseran level adalah rangkaian yang menjembatani perbedaan ini secara andal.

3.8.1. Mengapa penggeseran tegangan lintas langsung dapat merusak pin

Setiap pad I/O chip memiliki sepasang dioda proteksi bawaan: satu dari pin ke ground, satu dari pin ke rel suplai chip. Dioda ini berfungsi menyerap electrostatic discharge (ESD) -- lonjakan tegangan tinggi singkat dari listrik statis yang dapat mengenai pin saat papan dipegang. Seseorang yang berjalan di atas karpet dapat membawa beberapa kilovolt statis; menyentuh pin yang salah mentransfer muatan tersebut ke chip dalam hitungan nanodetik. Dioda proteksi bagian atas menjadi bias maju dan mengalihkan pulsa dengan aman ke rel suplai sebelum mencapai transistor di dalam chip.

Ketika sinyal 5 V diterapkan secara terus-menerus ke pin 3,3 V yang tidak tahan terhadap 5 V, dioda proteksi bagian atas mengalirkan arus selamanya. Dioda dirancang untuk pulsa ESD singkat, bukan arus keadaan tunak; rel suplai mulai naik di atas 3,3 V, dioda memanas, dan pin atau regulator tegangan on-chip mengalami kerusakan.

Pin yang tahan terhadap 5 V menggunakan tahap masukan yang berbeda -- dioda bagian atas terhubung ke rel yang lebih tinggi atau tidak ada -- sehingga menerapkan 5 V tidak berbahaya. Apakah pin suatu papan tahan 5 V berbeda-beda tergantung papan; periksa referensi cepat OpenMV Cam.

Arah lain memiliki masalah tersendiri. GPIO 3,3 V yang menghasilkan level tinggi menghasilkan ~3,3 V pada kabel. Penerima 5 V yang memerlukan 0.7 × Vcc untuk mengenali high memiliki ambang batas di 3,5 V; 3,3 V mungkin terbaca sebagai rendah atau ambigu. Bahkan tanpa kerusakan, sinyal tidak bekerja dengan andal.

Penggeser level menyelesaikan masalah di kedua arah.

3.8.2. N-MOSFET sebagai sakelar

Rangkaian di bawah ini menggunakan N-channel MOSFET tunggal. Perangkat ini memiliki tiga pin -- gate, drain, dan source -- dan berperilaku sebagai sakelar yang dikendalikan secara elektrik.

Masukan kendali adalah tegangan antara gate dan source, ditulis Vgs (tegangan gate-ke-source):

Vgs = (gate voltage) - (source voltage)

MOSFET memperhatikan perbedaan ini, bukan tegangan absolut pada salah satu pin saja. Perilakunya mengikuti dari Vgs:

  • Ketika Vgs berada di atas tegangan ambang MOSFET (biasanya sekitar 1 V untuk komponen logic-level sinyal kecil), transistor menyala dan arus mengalir bebas dari drain ke source.

  • Ketika Vgs berada pada atau di bawah 0, transistor mati dan hampir tidak ada arus yang mengalir dari drain ke source.

Jalur drain-source adalah jalur arus yang dialihkan; Vgs membuka atau menutup sakelar tersebut.

N-MOSFET juga memiliki dioda body antara drain dan source yang mengalirkan arus ketika drain ditarik ke bawah source lebih dari ~0,6 V. Dioda ini merupakan efek samping dari proses manufaktur; rangkaian penggeser bidireksional di bawah ini memanfaatkannya secara sengaja.

3.8.2.1. Aturan pengkabelan

N-MOSFET bukan perangkat tiga terminal yang simetris. Dioda body mengarah dari source (anoda) ke drain (katoda), dan Vgs yang mengendalikan saluran. Dua aturan berikut ini harus berlaku untuk setiap rangkaian sakelar N-MOSFET:

  • Source terhubung ke tegangan yang lebih rendah; drain terhubung ke tegangan yang lebih tinggi. Dengan drain pada rel yang lebih tinggi, dioda body menjadi bias terbalik dan tidak berpengaruh. Membaliknya membuat dioda body selalu bias maju: arus mengalir dari source yang kini lebih tinggi melalui dioda body ke drain yang kini lebih rendah tanpa memperhatikan kondisi gate. MOSFET berhenti berfungsi sebagai sakelar -- arus bocor terus-menerus, sinyal tidak dapat dimatikan, dan perangkat sering kepanasan dan rusak.

  • Gate terhubung ke rel tegangan source. Menjaga gate pada rel yang ditempati source saat idle membuat Vgs = 0 saat idle, jauh di bawah ambang batas; MOSFET tetap mati dengan kuat sampai ada sesuatu yang mendorong gate di atas source (rangkaian satu arah di bawah) atau menarik source di bawah gate (rangkaian bidireksional). Membiarkan gate mengambang di tempat lain menyebabkan kondisi mati menjadi tidak terdefinisi -- derau, kebocoran, atau kapasitansi liar dapat mendorong Vgs di atas ambang batas dan menyalakan MOSFET secara acak.

Membalik salah satu aturan mengubah penggeser level menjadi jalur yang bocor dan tidak andal. Kedua rangkaian penggeser di bawah mengikuti aturan ini: source di sisi yang lebih rendah, drain di sisi yang lebih tinggi, gate terhubung atau digerakkan dari rel source.

3.8.3. Satu arah 3,3 V → 5 V

Penggeser level paling sederhana mendorong sinyal satu arah dari GPIO kamera ke masukan 5 V. Sebuah N-MOSFET tunggal ditambah dua resistor sudah cukup untuk pekerjaan ini.

An N-channel MOSFET wired as an inverter. The 3.3 V GPIO drives the gate; the source goes to ground; the drain pulls up to 5 V through 10 kΩ; the drain is also tapped as the 5 V output.

N-MOSFET menggeser level (dan membalik) sinyal 3,3 V ke keluaran 5 V.

Ketika GPIO bernilai tinggi (3,3 V pada gate), Vgs berada di atas ambang batas dan MOSFET menyala; drain ditarik turun ke ~0 V. Ketika GPIO bernilai rendah (0 V pada gate), MOSFET mati dan pull-up 10 kΩ membawa drain ke 5 V.

Keluaran adalah kebalikan dari masukan. Perangkat lunak dapat membalik sinyal kembali (tulis 0 untuk "keluaran 5 V tinggi"), atau sambungkan dua tahap untuk mendapatkan sinyal non-terbalik dengan dua kali jumlah komponen.

3.8.4. Bidireksional dengan satu N-MOSFET

Untuk jalur yang harus dapat digerakkan dari kedua sisi -- bus bersama di mana salah satu ujung dapat menarik jalur ke rendah -- rangkaian standar adalah satu N-MOSFET per jalur, dengan satu pull-up ke suplai setiap sisi.

A bidirectional N-MOSFET level shifter. The MOSFET bridges a 3.3 V signal line on the left and a 5 V signal line on the right; the gate connects to the 3.3 V supply, the source connects to the 3.3 V signal, the drain to the 5 V signal; each signal line has its own pull-up resistor to its supply.

Satu N-MOSFET menjembatani jalur 3,3 V dan 5 V; setiap sisi memiliki pull-up sendiri.

Gate terhubung ke suplai 3,3 V, sehingga perilaku MOSFET bergantung pada sisi mana yang mengendalikan:

  • Kedua sisi idle. Source berada di 3,3 V melalui pull-up kiri; gate berada di 3,3 V; Vgs = 0; MOSFET mati. Sisi 5 V mengambang ke 5 V melalui pull-up kanan. Kedua sisi membaca tinggi.

  • Sisi 3,3 V menarik rendah. Source turun ke 0 V; Vgs naik di atas ambang batas; MOSFET menyala dan mengalirkan arus source-ke-drain. Sisi 5 V ditarik rendah melalui transistor.

  • Sisi 5 V menarik rendah. Drain turun ke 0 V; dioda body MOSFET (drain ke source) menjadi bias maju dan mengalirkan arus; source (sisi 3,3 V) ditarik turun ke sekitar 0,6 V. Vgs kemudian melebihi ambang batas dan MOSFET sepenuhnya menyala, membawa kedua sisi ke rendah.

BSS138 adalah N-MOSFET standar untuk pola ini; N-MOSFET logic-level sinyal kecil dengan tegangan ambang batas gate yang serupa semuanya berperilaku sama di sini.