Pemula berusia 16 tahun di sini.
Proyek saya adalah robot mini dengan pcb sebagai sasis, baterai lipo dengan sirkuit pengisi daya, dan sensor inframerah. Saya menggunakan LSM6DS33TR untuk accelerometer dan giroskop I2C saya dengan 10K "pull-up resistor" menurut datasheet, dan ATMEGA328P sebagai mikrokontroler.
Ini adalah pertama kalinya saya merancang papan PCB industri saya sendiri dan memproduksinya. Saya membuat PCB dengan JLCPCB. Setelah mengirim file dan menunggu pengiriman, ketika saya menemukan kesalahan dari desain saya. Saya perhatikan bahwa saya belum menyambungkan resistor pull-up untuk bus I2C saya dengan benar karena mereka harus ditarik ke 3V3.
Pertanyaan saya adalah:
- Bagaimana saya bisa mengalihkan koneksi atau membuat modifikasi untuk membuat SDA dan SCL pull-up untuk memasok tegangan dengan PCB yang sudah diproduksi?
- Haruskah saya mengubah desain dan membuat PCB lain? (Rusak) :)
Berikut adalah diagram skematik keseluruhan untuk proyek yang saya buat: (garis i2c dilingkari)
sumber
Jawaban:
Anda harus 'menambal' PCB Anda.
Saya akan melakukan apa yang saya coba gambar di bawah ini: tempatkan dua resistor pull up (10K) pada bantalan yang ada korslet mereka. Kemudian kabel dari ujung lainnya ke koneksi 3V3 terdekat.
Saya telah menggambar SMD resistor tetapi Anda dapat menggunakan yang "kuno" yang aksial juga.
sumber
Papan Anda memiliki lebih banyak masalah. Sebagai contoh, pin catu daya untuk U5 memiliki kapasitor dalam seri dengan mereka yang saya kira seharusnya menjadi topi decoupling antara VCC dan GND. Saya juga tidak melihat topi decoupling untuk AVR.
Pada akhirnya mungkin lebih baik untuk mengulang papan dengan benar.
sumber
Bus I2C dapat diperbaiki tanpa perubahan PCB (masalah lain yang tidak ditemukan masih membutuhkan perhatian).
Secara sederhana:
Perhatikan bahwa pullup yang dapat diprogram tidak akan persis nilai yang disarankan untuk penggunaan I2C, jadi Anda harus menghitung ulang kecepatan maksimum berdasarkan kekuatan pullup baru.
sumber