Saya merancang sensor PCB kecil untuk tesis master saya dengan mikrokontroler ATtiny44 . Saya membutuhkan sekitar 200 papan ini untuk aplikasi saya dan 16 selalu terhubung secara lokal ke papan pengontrol. Seluruh jaringan terlihat seperti ini:
Untuk berkomunikasi antara pengontrol dan papan sensor, saya menulis bus 1 pin saya sendiri (berbasis waktu). Satu-satunya masalah adalah papan sensor harus memiliki alamat untuk mengetahui lokasinya di jaringan, ketika saya mengirim datanya ke papan pengontrol.
Karena saya hanya memiliki 1 pin yang tersisa pada ATtiny saya datang dengan sirkuit DAC berbasis jumper yang harus menghasilkan tegangan analog berdasarkan pengaturan empat jumper. Karena sirkuit sensor menggunakan nilai-nilai (47, 470, 1k, 3k, 4k7, 10k, 100k, dan 220k) dan saya ingin mengoptimalkan produksi saya menggunakan nilai-nilai di bawah ini untuk DAC (pada dasarnya 100k, 50k, 20k, dan 10k ). Yang seharusnya memberi saya nilai bagus antara 0 V dan 760 mV berdasarkan pengaturan jumper. Persis apa yang saya perlu baca sebagai tegangan analog dengan referensi 1,1 V internal ATtiny. Pada saat start-up ATtiny membaca voltase ini dan harus tahu posisinya.
mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab
Secara teori ini berfungsi dengan baik. Saya bahkan melakukan analisis Monte Carlo di LTspice untuk memastikan saya tidak mendapatkan area yang tumpang tindih, ketika mempertimbangkan toleransi resistor (semuanya 1% BTW). Di bawah ini Anda dapat menemukan gambar-gambar analisis ini.
Sekarang saya menghasilkan beberapa (untungnya bukan 200) dari papan ini dan beberapa gagal untuk mendapatkan pembacaan yang benar pada alamat mereka (khususnya di daerah alamat yang lebih tinggi di mana semua toleransi datang untuk bermain sekaligus). Saya mengukur semua solusi yang mungkin dan akhirnya menemukan masalah saya. Analisis asli saya tidak termasuk toleransi tegangan suplai 5 V, yang dihasilkan secara lokal dari 12 V dengan MC7805 pada setiap papan pengontrol. Per lembar data, MC7805 memiliki tegangan output antara 4,8 dan 5,2 V.
Setelah saya menemukan ini, saya memodifikasi analisis Monte Carlo. Sekarang terlihat seperti ini:
Seperti yang Anda lihat ada daerah tumpang tindih yang bagus, di mana saya tidak bisa mengatakan tegangan ini hanya bisa berarti alamat ini. Pada dasarnya semua alamat dimulai dengan no. 8 bisa mendapatkan pembacaan yang salah (dengan kemungkinan lebih tinggi untuk pembacaan yang salah untuk alamat yang lebih tinggi).
Saya tidak ingin menambahkan nilai resistor yang berbeda dari yang sudah digunakan di papan tulis (seperti untuk tesis saya ingin mengoptimalkan untuk produksi).
Saya tidak ingin menambahkan referensi tegangan (misalnya, Zener diode) untuk memberi makan jaringan resistor DAC.
Saya tidak dapat memodifikasi papan pengontrol lagi (dan menggunakan pengatur tegangan yang lebih tepat).
Saya masih bisa memodifikasi desain / skema PCB papan sensor!
Bagaimana saya bisa memastikan selalu mendapatkan pembacaan yang benar pada alamat (baik dengan program atau dengan mengubah sirkuit)?