Kabar baik! Ini akan menjadi murah! :-)
Pembagi resistor sederhana akan membawa 12 V ke bawah ke 5 V yang bisa dicerna oleh Arduino. Tegangan output dapat dihitung sebagai
VO UT= R 2R 1 + R 2VsayaN
Nilai resistor di kisaran 10 kΩ adalah pilihan yang baik. Jika R2 Anda adalah 10 kΩ maka R1 harus menjadi 14 kΩ. Sekarang 14 kΩ bukan nilai standar, tetapi 15 kΩ adalah. Tegangan input Anda akan menjadi 4,8 V, bukan 5 V, tetapi Arduino akan melihatnya sebagai level tinggi. Anda juga memiliki sedikit ruang kepala jika 12 V harus agak terlalu tinggi. Bahkan 18 kΩ masih akan memberi Anda 4.3 V yang cukup tinggi, tetapi kemudian Anda harus mulai memikirkan 12 V agak terlalu rendah. Apakah voltase masih terlihat tinggi? Saya akan tetap dengan 15 kΩ.
sunting
Anda menyebutkan lingkungan otomotif, dan kemudian Anda memang membutuhkan perlindungan ekstra. Mobil 12 V tidak pernah cukup 12 V, tetapi sebagian besar waktu lebih tinggi, dengan puncak beberapa volt di atas nominal 12 V. (Sebenarnya nominal lebih seperti 12.9 V, pada 2.15 V per sel.) Anda dapat menempatkan zener 5 V dioda secara paralel dengan R2, dan ini harus memotong tegangan lebih tinggi dari zener's 5 V. Tapi tegangan zener bervariasi dengan arus, dan pada arus input rendah resistor memberi Anda itu akan terputus pada tegangan yang lebih rendah. Solusi yang lebih baik adalah memiliki dioda Schottky antara input Arduino dan suplai 5 V. Maka setiap tegangan input lebih tinggi dari sekitar 5,2 V akan membuat dioda Schottky melakukan, dan tegangan input akan terbatas pada 5,2 V. Anda benar-benar membutuhkan dioda Schottky untuk ini, dioda PN umum memiliki 0.
Optocoupler
Michael yang lebih baik adalah alternatif yang baik, meskipun sedikit lebih mahal. Anda akan sering menggunakan optocoupler untuk mengisolasi input dari output, tetapi Anda juga dapat menggunakannya untuk melindungi input seperti yang Anda inginkan di sini.
Cara kerjanya: arus input menyala LED inframerah internal, yang menyebabkan arus keluaran melalui phototransistor. Rasio antara input dan arus keluaran disebut CTR , untuk Current Transfer Ratio. The CNY17 memiliki minimal CTR 40%, yang berarti Anda perlu 10 mA masukan untuk 4 mA output. Mari kita pergi untuk input 10 mA. Maka R1 harus (12 V - 1,5 V) / 10 mA = 1 kΩ. Resistor output harus menyebabkan penurunan 5 V pada 4 mA, maka itu harus 5 V / 4 mA = 1250 Ω. Lebih baik memiliki nilai yang sedikit lebih tinggi, toh tegangan tidak akan turun lebih dari 5 V. 4,7 kΩ akan membatasi arus sekitar 1 mA.
Vcc adalah suplai 5 V Arduino, Vout pergi ke input Arduino. Perhatikan bahwa input akan terbalik: akan rendah jika 12 V ada, tinggi ketika tidak. Jika Anda tidak menginginkannya, Anda dapat menukar posisi output optocoupler dan resistor pull-up.
sunting 2
Bagaimana solusi optocoupler tidak memecahkan masalah kelebihan tegangan? Pembagi resistor adalah ratiometrik: tegangan keluaran adalah rasio tetap dari input. Jika Anda telah menghitung 5 V pada 12 V in, maka 24 V in akan memberikan 10 V out. Tidak OK, karenanya dioda perlindungan.
Dalam rangkaian optocoupler Anda dapat melihat bahwa sisi kanan, yang terhubung ke pin input Arduino tidak memiliki tegangan lebih tinggi dari 5 V sama sekali. Jika optocoupler aktif maka transistor akan menarik arus, saya menggunakan 4 mA pada contoh di atas. 1,2 kΩ akan menyebabkan penurunan tegangan 4,8 V, karena Hukum Ohm (resistansi kali saat ini = tegangan). Maka tegangan output akan menjadi 5 V (Vcc) - 4,8 V melintasi resistor = 0,2 V, itu level yang rendah. Jika arus akan lebih rendah drop tegangan akan lebih kecil juga, dan tegangan output akan naik. Arus 1 mA, misalnya, akan menyebabkan penurunan 1,2 V, dan output akan menjadi 5 V - 1,2 V = 3,8 V. Arus minimum adalah nol. Maka Anda tidak memiliki tegangan melintasi resistor, dan output akan menjadi 5 V. Itu maksimum, ada '
Bagaimana jika tegangan input akan menjadi terlalu tinggi? Anda secara tidak sengaja menghubungkan baterai 24 V dan bukannya 12 V. Kemudian arus LED akan berlipat ganda, membentuk 10 mA hingga 20 mA. 40% CTR akan menyebabkan arus keluaran 8 mA dan bukannya 4 mA yang dihitung. 8 mA melalui resistor 1,2 kΩ akan menjadi penurunan 9,6 V. Tetapi dari pasokan 5 V itu akan menjadi negatif, dan itu tidak mungkin; Anda tidak bisa lebih rendah dari 0 V di sini. Jadi sementara optocoupler sangat ingin menggambar 8 mA, resistor akan membatasi itu. Arus maksimum yang melaluinya adalah ketika 5 V penuh melewatinya. Outputnya akan benar-benar 0 V, dan 5 V / 1.2 kΩ saat ini = 4.2 mA. Jadi catu daya apa pun yang Anda pasang arus keluaran tidak akan lebih tinggi dari itu, dan tegangan akan tetap antara 0 V dan 5 V. Tidak ada perlindungan lebih lanjut yang diperlukan.
Jika Anda mengharapkan tegangan lebih, Anda harus memeriksa apakah LED optocoupler dapat menangani peningkatan arus, tetapi 20 mA tidak akan menjadi masalah bagi sebagian besar optocoupler (mereka sering diberi nilai maksimum 50 mA), dan selain itu, itu untuk double tegangan input, yang mungkin tidak akan terjadi IRL.