Saya mencoba menghitung pulsa / detik. pada pin mikrokontroler dalam kisaran ~ 5 hingga 100Hz. ΜC dapat beroperasi pada input 5V, jadi saya harus menurunkan level tegangan dengan aman.
Sebuah resistor sederhana muncul di pikiran, namun itu membiarkan setiap lonjakan terbuka langsung ke μC pin - meh .
Saya telah menemukan jawaban ini , tetapi pertanyaannya tetap adalah apakah rangkaian itu mampu "cepat" 100Hz berubah.
Apakah ada cara yang terbukti dan andal (dengan IC mungkin?) Dengan menghubungi pin 5V atau 3.3V ke input 12V "kotor" ? Saya memiliki 12V dan 5V yang tersedia untuk menggerakkan IC "siap pakai".
microcontroller
voltage
input
pins
Kristen
sumber
sumber
Jawaban:
Gunakan sirkuit seperti ini:
mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab
R1 dan R2 menentukan rentang tegangan, dan melakukan pembagian awal. Resistor ini harus memiliki daya. Biasanya adalah MELF 0.4W. Semua yang lain bisa berupa chip resistor / kapasitor.
R3 mencegah setiap lonjakan yang menyebabkan kerusakan pada pemicu schmitt. R4 dan R5 adalah opsional untuk mencegah sinyal mengambang.
Namun, kombinasi R3 / R4 juga dapat digunakan untuk mengatur ambang, jika perlu.
C1 dan C2 menentukan kecepatan maksimum. Kombinasi R3 / C2 dapat menyaring lambat. C1 menyaring transien.
Pemicu schmitt terpisah digunakan karena Anda bisa membuatnya sangat kecil dan murah. Dan itu mencegah routing sinyal lemah melalui jejak panjang. Sementara juga menjadi bagian pengorbanan pada lonjakan besar.
Saya telah merancang sirkuit ini berdasarkan apa yang saya lihat di dalam PLC. Sirkuit di atas adalah untuk 24V. Sesuaikan resistor agar sesuai dengan 12V sesuai dengan IEC61131-2.
Konsep standar adalah untuk memastikan input harus menenggelamkan arus minimum sebelum mempertimbangkannya sebagai '1'. Tiga jenis menentukan berapa banyak, dan diterapkan berdasarkan kebisingan lingkungan. Ini mencegah gangguan dari menyentuhnya atau relay terdekat. Kekurangannya adalah R1 / 2 harus memiliki peringkat daya yang layak dan resistansi rendah.
sumber
Saya akan mencoba solusi pembagi resistor seperti yang ditunjukkan di bawah ini.
Pilih rasio resistor sehingga tegangan yang dibagi berada pada tingkat yang sesuai untuk MCU ketika input berada pada tegangan nominalnya. Tegangan dioda zener dipilih untuk menjepit input MCU ketika input berjalan di atas input maks. Zener juga akan melindungi MCU jika input menjadi negatif.
Solusi ini akan bekerja dengan baik untuk rentang frekuensi yang relatif rendah yang telah Anda tentukan.
sumber
Saya akan menggunakan pembagi resistor dan kemudian melindungi UC dengan Zener 5.1v
Jika Anda meletakkan zener antara pin dan ground secara paralel dengan, katakanlah, resistor tarik turun 10k, maka beri sinyal terbagi tegangan Anda di kemudian ... zener lebih dari cukup cepat, dan murah / mudah.
Saya sering melakukan ini dan membagi sinyal sebelum zener menggigit pot.
Pilihan lain adalah sebagai ditautkan, jika Anda benar-benar khawatir suatu opto dapat digunakan, jika ini bukan masalah keamanan saya akan pergi dengan di atas atau memiliki pin biasanya tinggi dari 5V Vcc dan tarik rendah dengan fet (di atas kepala saya) 2N7000 seharusnya bekerja) - tetapi tidak sesederhana pilihan zener.
sumber
Jika level sinyal GND dan 12V (atau> 5V), cara paling sederhana dan 100% aman adalah ini:
mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab
Jika benar-benar memenuhi tujuan Anda tergantung pada impedansi sebenarnya dari sinyal 12V (harus jauh di bawah R1) dan apa yang Anda maksud dengan "kotor".
Juga, seperti yang ditunjukkan oleh @MichaelKaras dengan benar, level rendah pada input µC dapat bergeser ke level rendah dari sinyal 12V ditambah Vf dioda (hingga sekitar 0,7V). Anda harus memeriksa apakah ini merupakan masalah dalam kasus Anda atau tidak. Jika ya, Anda masih dapat mencoba dan menggunakan dioda Schottky dengan Vf sekitar 0.35V.
sumber
Saya akan menggunakan opto-isolator, 100Hz mudah dalam jangkauan yang layak. 4n25 muncul dalam pikiran sebagai nomor bagian umum, dan saya tahu itu mampu jauh lebih baik dari 100Hz.
sumber
Metode yang dipilih sebagian tergantung pada apa yang dilakukan sinyal input, bagaimana perilakunya dan bagaimana hal itu mempengaruhi sirkuit input dan kode yang membacanya?
misalnya apakah selalu 12V? Apakah ada paku atau noise? Berapa banyak arus yang bisa dikendarainya? Bisakah saat ini didorong ke dalamnya? Apakah mengambil arus darinya akan memengaruhi hal lain? Apakah keselamatan itu penting? ....
Karena itu, tidak akan pernah ada jawaban universal untuk pertanyaan ini karena solusi yang 'benar' tergantung pada apa yang dilakukan sistem lainnya. Solusi yang dipilih yang memenuhi persyaratan akan memiliki biaya dan kompleksitas yang berbeda.
Yang mengatakan, karena belum ada orang lain yang menyarankannya, saya akan mencari input FET.
JFET atau MOSFET dapat digunakan dan bisa menjadi sumber umum atau mode drain umum. Misalnya, tiriskan umum:
mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab
Keuntungan dari mode saluran umum adalah memungkinkan input dihubungkan ke analog (mis. ADC) atau pin digital. Jika sinyal benar-benar digital saya akan mengaktifkan pemicu schmitt pada input CPU (jika ada), atau menambahkan buffer schmitt eksternal ke pin input CPU.
Keuntungan
sumber
mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab
Gambar 1. Antarmuka yang terisolasi. Gunakan pull-up internal pada GPIO.
Opto-isolator memecahkan beberapa masalah.
sumber
mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab
R1, R2 dan C1 membentuk pembagi tegangan dengan filter low pass 1kHz. Sinyal frekuensi tinggi yang tidak diinginkan yang bepergian pada 12V dapat disaring. Perhitungan untuk frekuensi filter adalah 1 / (2 pi R2 C1). Catatan: Basis membutuhkan setidaknya 0.7V untuk berfungsi dengan benar, hati-hati saat menyesuaikan resistor.
BJT digunakan karena sangat umum dibandingkan dengan MOSFET. Jika 12V masih aktif tetapi 5V untuk UC Anda turun, BJT tidak akan melewatkan arus ke pin dan menyebabkan kerusakan.
Untuk pemrograman UC, gunakan pemicu tinggi ke rendah untuk menghitung pulsa Anda. Karena rangkaian ini akan membalikkan pulsa.
sumber
Umumnya input MCU sudah dilindungi dengan dioda penjepit, selama Anda memiliki resistor dengan nilai yang dioptimalkan (cukup tinggi untuk klem dan cukup rendah untuk pengambilan sampel) dan memiliki kapasitas bypass yang baik antara VDD dan VSS, Anda tidak memiliki khawatir tentang hal itu. Jadi, hanya sebuah resistor yang cukup baik.
sunting: Berkat komentar PeterJ, saya ingin menjelaskannya sedikit lebih jauh. Kekuatan terkecil yang ditarik MCU (dengan asumsi tidak tidur), kapasitas memotong, nilai resistor; ketika semua ini berada pada titik kompromi-yang dengan mudah adalah kasus yang sangat umum dengan hanya kondisi menggunakan resistor sekitar 10kOhm- satu-satunya resistor baik untuk aplikasi OP sederhana.
sumber
Anda dapat memilih regulator tegangan LM7805 / LM7803 masing-masing untuk 5V dan 3.3V. Saya berasumsi bahwa UC dipisahkan dari beban yang menuntut arus, jika ada.
sumber