Saya berencana melakukan chaining bersama register geser 40 x 74HC595 . Seluruh rantai 74HC595 akan dikontrol oleh mikrokontroler 5 V, yang akan menghasilkan SDI
, CLOCK
&LATCH
sinyal.
Setiap register geser dan mikrokontroler akan memiliki PCB sendiri, seperti yang diilustrasikan dalam diagram di bawah ini:
Karena kendala mekanis, jarak antara masing-masing register geser adalah sekitar 30 cm (12 in), sehingga sinyal kontrol akan bergerak sepanjang jarak aprox. 12 m (40 kaki). Selain itu, seluruh sistem akan dipasang di lingkungan yang sangat bising (dekat lampu neon, kabel listrik, dll.)
Kekhawatiran saya adalah bahwa sinyal kontrol akan sangat bising dan register shift mungkin menampilkan hal-hal yang salah. Saya sedang memikirkan:
- Menggunakan buffer IC pada setiap papan, untuk buffer sinyal kontrol. Mana yang akan Anda rekomendasikan?
- Menggunakan kabel berpelindung di antara papan untuk sinyal
- Turunkan
CLOCK
frekuensi sebanyak mungkin. Saya hanya perlu memperbarui konten register beberapa kali sehari.
Apakah solusi di atas adalah hal yang baik untuk dilakukan? Apa lagi yang bisa saya lakukan untuk menjaga kebisingan (potensial) di kabel sinyal menjadi minimum?
sumber
Jawaban:
Gunakan buffer pemicu Schmitt pada input setiap papan. Mereka akan membersihkan sinyal sehingga kebisingan tidak akan memberikan pulsa palsu pada jam, misalnya. The 74LVC3G17 adalah tiga non-pembalik penyangga.
Juga, berikan sinyal buffered ke papan berikutnya. Kalau tidak, semua input akan paralel dan Anda dapat melebihi kipas dari mikrokontroler mengemudi (saya terutama memikirkan beban kapasitif total). Rantai daisy sinyal clock dan latch akan memberikan penundaan riak di seluruh rantai, tetapi data akan melakukannya juga, dan Anda berencana untuk tetap menggunakan kecepatan rendah.
sumber
Masalah yang dapat terjadi adalah bahwa beberapa jam SR sebelum jam SR berikutnya, sehingga SR berikutnya akan clock di data yang salah. Solusi (standar?) Untuk ini adalah mentransfer jam mulai dari SR terakhir.
Saya akan mempertimbangkan menambahkan buffer (schmit-trigger?) Di setiap papan untuk semua 3 garis sinyal.
(sunting) Menurunkan frekuensi jam tidak akan membantu (kecuali jika terlalu tinggi untuk memulai). Masalah yang Anda dapat terjadi di tepi jam, yang akan Anda miliki, tidak peduli seberapa rendah Anda memilih frekuensi jam Anda.
sumber
Masalah terbesar ketika chaining shift register adalah memastikan bahwa hubungan waktu antara jam yang digunakan oleh masing-masing papan digunakan untuk menerima data dan perubahan data dari papan sebelumnya dapat diprediksi. Fakta bahwa output dari 74HC595 berubah pada sisi yang sama dengan jam sedikit mengganggu dalam hal itu. Saya akan menyarankan bahwa sinyal jam harus buffered ketika melewati setiap papan dan bahwa sinyal data yang keluar dari 74HC595 satu papan harus dimasukkan melalui buffer yang akan menunda itu dengan waktu sedikit lebih lama daripada buffer jam.
Atau, Anda dapat menggunakan register geser seperti 74HC4094 yang memiliki perubahan output data di tepi jam jatuh, atau Anda dapat menambahkan flip flop antara output 74HC595 terakhir di papan dan papan berikutnya, dan memiliki flip flop itu kaitkan outputnya di tepi jatuh jam yang menggerakkan 74HC595's (mungkin melewatkan jam melalui dua inverter untuk buffer itu dan memberi makan sinyal clock terbalik ke flip flop).
Jika jumlah output 74HC595 yang akan Anda gunakan adalah satu (atau lebih) kurang dari jumlah yang disediakan oleh chip Anda (misalnya di papan dengan dua 74HC595, Anda sebenarnya hanya membutuhkan 15 output) Anda bisa memberi makan 74HC595 terakhir di papan dengan jam terbalik dari yang lain, tetapi itu akan dikenakan biaya penggunaan satu output 74HC595 untuk setiap kali sinyal melewati antara 74HC595 non-clock terbalik dan 74HC595 clock terbalik.
sumber