Saat ini saya sedang merancang sirkuit yang dapat merekam data dari sensor dan menyimpan data yang direkam ke dalam EEPROM. Dua perangkat saya (EEPROM dan untuk tujuan pengujian RTC) terhubung melalui bus I2C ke PIC16F887 μC. Namun, rentang pengoperasian tegangan kedua perangkat tidak sama (5v untuk EEPROM, 3,3 untuk RTC), dan baterai saya adalah baterai 9V.
Oleh karena itu saya merancang sirkuit elektronik dengan level shifter yang terdiri dari MOSFET untuk kabel SDA / SDL. Selain itu saya menambahkan dua regulator tegangan LM317 untuk memberi daya pada perangkat (9V-> 3.3V dan 9V-> 5V). Karena saya bukan ahli dalam mendesain hal-hal seperti itu, saya akan sangat menghargai jika Anda dapat melihat apa yang saya buat dan memberi tahu saya jika saya melakukan sesuatu yang sangat salah!
Jawaban:
Terlepas dari komentar lain, solusinya sendiri baik-baik saja Saya melihat beberapa masalah kecil.
Resistor pull-up 10k pada bus hampir tidak cukup kaku, terutama jika Anda ingin menggunakan kecepatan bus yang lebih tinggi.
Anda membutuhkan kapasitor decoupling input dan output pada regulator linier dan IC digital Anda. 100nF adalah awal yang baik untuk IC digital, dan untuk regulator linier, 100nF pada input dan 1μF pada output.
sumber
Ya, Anda telah melakukan hal-hal pada skema Anda yang sangat salah. Untuk menggeser level tegangan Anda dengan benar, lihat alamat budak I2C yang tidak diakui (terkadang) IC MAX3373E digunakan untuk pemindahan level. Harap dicatat bahwa, pull up resistor ditunjukkan pada garis SDA & SCK. Namun, ketika menggunakan MAX3373E, resistor pull up tidak diperlukan karena MAX3373E telah membangun pull-up di kedua sisi garis I / O. Ada IC lain yang tersedia untuk pengalihan level juga. Anda dapat pergi ke Digi Key atau Mouser dan mencari.
sumber