Input 12V pada pin mikrokontroler

8

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".

Kristen
sumber
2
pembagi resistif + dioda zener / penjepit?
Wesley Lee
2
Apakah ini benar-benar pertanyaan yang tidak dapat dijawab dengan pencarian Google sederhana?
Ale..chenski
16
Itu bisa dijawab, namun saya sangat menginginkan jawaban yang berkualitas sebelum menghancurkan peralatan saya karena kebodohan saya sendiri. Mari kita tentukan "ketenangan pikiran"?
Christian
8
@AliChen stackexchange bertujuan untuk menjadi tempat penyimpanan pertanyaan dan jawaban yang kanonik. Bahkan pertanyaan sederhana dapat menjadi baik jika mereka mengumpulkan jawaban yang bermanfaat.
Wayne Conrad
2
100Hz tidak cepat.
user253751

Jawaban:

13

Gunakan sirkuit seperti ini:

skema

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.

iec 61131-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.

Jeroen3
sumber
Wow. Jawaban yang sangat teliti untuk apa yang awalnya tampak pertanyaan sederhana. Terima kasih.
Christian
Saya benar-benar ingin tahu tentang R4 dan R5 - kapan mereka akan melakukan sesuatu yang bermanfaat? R2 + R3> R4. Apakah kalau-kalau ada komponen "tugas berat" rusak?
pipa
@pipe R3 dan R4 dapat membantu mengonfigurasi ambang, sambil memberikan jalur impedansi tinggi ke logika. R5 sebagian besar berlebihan, tetapi dalam desain ini digunakan mcu pull-down tidak dapat digunakan. Jika karena suatu alasan buffer akan gagal, input mcu tidak akan membaca 50Hz hum. (Catatan: dapat diandalkan diminta)
Jeroen3
17

Saya akan mencoba solusi pembagi resistor seperti yang ditunjukkan di bawah ini.

masukkan deskripsi gambar di sini

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.

Michael Karas
sumber
1
Mengapa memilih zener menjadi 4v7? Apakah 5v2 (5v1?) Menjadi solusi yang lebih baik?
R.Joshi
7
@ R.Joshi: Jika mikrokontroler 5V ditenagai dari suplai toleran 10% (4,5-5,5V VDD), maka penerapan 5.2V pada pin bisa lebih dari VDD + 0.3V absolut absolut. Logika tinggi diakui pada 2V untuk TTL dan 2/3 * VDD untuk CMOS, jadi tidak ada masalah dengan zener 4V7 di sana.
Hans
2
Saya benar-benar berharap saya dapat menandai dua jawaban sebagai "dipilih". Cara Anda adalah cara sehari-hari yang harus ditempuh, namun jawaban Jeroen sedikit lebih mendalam. Namun, terima kasih telah meluangkan waktu untuk menjawab.
Christian
8

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.

Rendeverance
sumber
7

Jika level sinyal GND dan 12V (atau> 5V), cara paling sederhana dan 100% aman adalah ini:

skema

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.

JimmyB
sumber
Pada sebagian besar μC, seseorang bahkan dapat menjatuhkan resistor dan mengaktifkan pullup internal untuk pin itu.
Janka
Solusi dioda yang diusulkan di sini tidak selalu merupakan solusi terbaik atau optimal. Tegangan input level rendah yang diberikan kepada MCU akan berada di atas GND dengan satu drop tegangan maju dioda plus tegangan output level rendah apa pun yang menciptakan sinyal 0 hingga 12V. Ini bisa menjadi masalah di mana sinyal dapat menimbulkan noise dan input MCU ditentukan dengan level tegangan tipe TTL untuk V <sub> IL </sub>. Seringkali spesifikasi ini hanya 0,8V. Jadi jika solusi ini digunakan hati-hati dan setidaknya secara khusus drop diode tegangan rendah maju seperti BAT54.
Michael Karas
@MichaelKaras Anda benar tentang pergeseran level rendah oleh Vf dioda; ini perlu diperhitungkan. Bagi saya, untuk 5V μC, V [IL] 0,8V tampaknya sangat rendah. Saya biasanya menemukan 0.3Vcc (~ 1.5V) spec'd.
JimmyB
Jika MCU Anda memiliki spesifikasi tipe CMOS untuk V <sub> IL </sub> maka mungkin berfungsi dengan baik. Saya masih suka merancang dengan cara yang akan bekerja bahkan jika spek itu jauh lebih rendah dari itu hanya untuk mendapatkan margin operasi sebanyak mungkin. Bahkan perbedaan dalam menentukan drop diode rendah adalah langkah yang baik untuk itu jika Anda memilih untuk menggunakan tipe sirkuit ini. Sirkuit Anda tidak terlalu bagus untuk kasus-kasus di mana mungkin ada kunjungan negatif pada input 12V.
Michael Karas
Saya setuju. Merancang margin adalah hal yang baik. Dan tegangan negatif pada sinyal 12V mungkin memang mendatangkan kekacauan di sirkuit.
JimmyB
5

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.

John U
sumber
Masalah dengan menggunakan opto isolator untuk menyelesaikan masalah ini adalah mengasumsikan Anda dapat menarik arus dari sinyal 12V. Anda dapat menyangga sinyal 12V tetapi itu kemudian akan membutuhkan pasokan tambahan.
Jason Morgan
Saya yakin Anda bisa mendapatkan opto yang akan efektif pada arus yang hampir sama dengan input mikro, dari 12v itu tidak akan menambah banyak beban untuk menyalakan LED kecil.
John U
1
Kebocoran input digital biasanya antara 10nA dan 1uA (tergantung suhu dan proses). Saya tidak pernah menemukan coupler opto yang bekerja pada 1uA genap. Optic coupler, dipasarkan sebagai daya rendah, misalnya Broadcom ACPL-x6xL membutuhkan 1,6mA. Itu antara 1600 dan 160000 kali lebih banyak dari saat ini. Tapi kemudian, seperti yang saya nyatakan dalam jawaban saya, itu tergantung pada persyaratan apa yang akan bekerja sehingga saya tidak menolak solusi opto.
Jason Morgan
xkcd.com/386
John U
2

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:

skema

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

  • Impedansi input sangat tinggi
  • Input sebagian terisolasi (dapat menahan +/- 30V, tergantung pada pemilihan FET)
  • Analog mungkin
  • Efek minimal pada sinyal eksternal
Jason Morgan
sumber
1

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

Gambar 1. Antarmuka yang terisolasi. Gunakan pull-up internal pada GPIO.

Opto-isolator memecahkan beberapa masalah.

  • Isolasi listrik lengkap antara sirkuit 12 V dan logika 5 V.
  • Menangani sinyal 12 V kotor tanpa risiko.
  • Kesederhanaan.
Transistor
sumber
1

skema

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.

Jason Han
sumber
-2

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.

Ayhan
sumber
4
Satu masalah yang saya temukan dengan ini bertahun-tahun yang lalu adalah bahwa sementara itu mungkin tidak merusak Vcc apa pun secara internal dapat melayang sedikit (sampai dioda melakukan) dan tergantung pada mikrokontroler dapat membuang hal-hal seperti pembacaan ADC.
PeterJ
@ PeterJ berfungsi dengan baik jika Anda dapat menjamin bahwa setidaknya banyak saat ini diambil dari pasokan. Dalam kasus terburuk, tambahkan resistor dummy ...
CL.
Meskipun 'jahat' saya telah melihat ini dilakukan pada banyak barang konsumen yang murah. Saya pernah memperbaiki jam alarm di mana listrik dimasukkan ke input digital melalui resisor 10M sebagai referensi waktu. Tidak heran chip itu sudah mati.
Jason Morgan
-5

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.

Yash
sumber
1
Itu kreatif. Tetapi Anda akan beroperasi di luar spesifikasi pada kecepatan tinggi. Jika hanya itu yang kau miliki, mungkin.
Jeroen3