Dijital Arduino pininde 12 V girişi nasıl kullanabilirim?


38

Bir Arduino Uno mikro denetleyicisi kullanarak 12 V'luk bir sistem için bir kontrolör oluşturuyorum. Çıkışlar için 12 V bileşenlerini değiştirmek için bir röle siperi kullanıyorum. Sistemdeki bazı 12 V bileşenlerini açan bir 12 V geçiş anahtarına sahibim ve bir Arduino dijital girişine göndermek için aynı anahtardan bir tetikleyici sinyal kullanmak istiyorum. Arduino'nun sadece 5 V max tutabildiğini biliyorum. Anahtardan çıkan 12 V'u giriş için 5 V'a düşürmenin en iyi yolu nedir?

EDIT: Sistem arabada kullanım içindir. Araç aküsünün amperi bir şekilde bileşenleri patlatmayacak şekilde düşürülmeli midir?


3
otomobilin amperi ilgisizdir - parçalar sadece ihtiyaç duydukları kadar akım kullanırlar. Otomobil aküsü, marş motoru için gerekli olan yüzlerce Amper sağlayabilir. Bu, her zaman yüzlerce amperin aktığı ve bir şeylere zarar verebileceği anlamına gelmez. :)
KyranF

Yanıtlar:


44

İyi haberler! Bu ucuz olacak! :-)

Basit bir direnç bölücü, 12 V'u bir Arduino'nun sindirebileceği 5 V'a düşürür. Çıkış gerilimi olarak hesaplanabilir

VOUT=R2R1+R2VIN

10 kΩ aralığında direnç değerleri iyi bir seçimdir. Eğer R2'niz 10 kΩ ise, R1 14 kΩ olmalıdır. Şimdi 14 kΩ standart bir değer değil, 15 kΩ. Giriş voltajınız 5 V yerine 4,8 V olacaktır, ancak Arduino bunu hala yüksek bir seviye olarak görecektir. Ayrıca, 12 V'un biraz fazla olması gerektiğinde, bir miktar tavan boşluğunuz da vardır. 18 kΩ bile, size hala yeterince yüksek bir 4.3 V verecek, ancak daha sonra 12 V hakkında biraz fazla düşünmeye başlamanız gerekir. Gerilim hala yüksek olarak mı görülüyor? 15 kΩ ile yapışırdım.

Düzenle
Bir otomotiv ortamından bahsediyorsun ve sonra biraz ekstra korumaya ihtiyacın var. Aracın 12 V'u asla oldukça 12 V değildir, ancak çoğu zaman yüksek, nominal 12 V'un üzerinde birkaç volt tepe noktasına sahiptir (Aslında nominal, hücre başına 2.15 V'de 12.9 V'a benzer.) 5 V zener yerleştirebilirsiniz R2'ye paralel olarak diyotun yapılması ve bunun zener'in 5 V değerinden daha yüksek olan herhangi bir voltajı kesmesi gerekir, ancak bir zener voltajı akımla değişir ve düşük giriş akımında dirençler size düşük voltajlarda keser. Arduino'nun girişi ve 5 V kaynağı arasında bir Schottky diyot olması daha iyi bir çözüm olacaktır. Ardından, yaklaşık 5,2 V'den daha yüksek herhangi bir giriş voltajı, Schottky diyotun çalışmasını sağlar ve giriş voltajı 5,2 V ile sınırlandırılır. Bunun için gerçekten bir Schottky diyotuna ihtiyacınız vardır, ortak bir PN diyotunun 0 değeri vardır.

Daha iyi
Michael'ın optocoupler biraz daha pahalı olsa da, iyi bir alternatif. Sıklıkla girişi çıkıştan izole etmek için bir optocoupler kullanacaksınız, ancak burada istediğiniz gibi bir girişi korumak için de kullanabilirsiniz.

görüntü tanımını buraya girin

Nasıl çalışır: giriş akımı, fototransistör üzerinden bir çıkış akımına neden olan dahili kızılötesi LED'i yakar. Akım Aktarım Oranı için giriş ve çıkış akımı arasındaki oran TO olarak adlandırılır . CNY17 4 mA çıkışı için 10 mA giriş gerekir aracı en az% 40 TO sahiptir. 10 mA girişi için gidelim. O zaman R1 (12 V - 1.5 V) / 10 mA = 1 kΩ olmalıdır. Çıkış direnci 4 mA'da 5 V düşüşe neden olacak, o zaman 5 V / 4 mA = 1250 Ω olmalıdır. Biraz daha yüksek bir değere sahip olmak daha iyidir, voltaj yine de 5 V'tan daha fazla düşmez. 4.7 kΩ, akımı yaklaşık 1 mA ile sınırlar.

Vcc, Arduino'nun 5 V'luk kaynağıdır, Vout, Arduino'nun girişine gider. Girişin tersine çevrileceğini unutmayın: 12 V varsa düşük, olmadığında yüksek olur. Bunu istemiyorsanız, optocoupler'in çıktısının ve çekme direncinin konumunu değiştirebilirsiniz.

düzenleme 2
Optocoupler çözümü aşırı gerilim sorununu nasıl çözmüyor? Direnç bölücü orantısaldır: çıkış gerilimi girişin sabit bir oranıdır. 12 V girişinde 5 V çıkışı hesapladıysanız, 24 V giriş 10 V verir. Tamam değil, bu nedenle koruma diyot.

Optocoupler devresinde, Arduino'nun giriş pinine bağlanan sağ tarafın 5 V'tan daha yüksek bir voltaj olmadığını görebilirsiniz. Eğer optocoupler açıksa, transistör akımı çekecektir, yukarıdaki örnekte 4 mA kullandım. 1,2 kΩ, Ohm Kanunu nedeniyle (mevcut zaman direnci = voltaj) 4,8 V'luk bir voltaj düşmesine neden olur. Ardından çıkış voltajı direnç boyunca 0,2 V (Vcc) - 4,8 V olacaktır, bu düşük bir seviyedir. Akım düşük olursa, voltaj düşüşü de daha küçük olacaktır ve çıkış voltajı yükselecektir. Örneğin 1 mA akım 1,2 V düşüşe neden olur ve çıkış 5 V - 1,2 V = 3,8 V olur. Minimum akım sıfırdır. O zaman direnç boyunca bir voltajınız olmaz ve çıkış 5 V olur.

Giriş voltajı çok yükselirse ne olur? Yanlışlıkla 12 V yerine 24 V batarya bağlarsınız. Sonra LED akımı iki katına çıkar, 10 mA - 20 mA oluşturur. % 40 TO, hesaplanan 4 mA yerine 8 mA çıkış akımına neden olur. 1,2 kΩ dirençten 8 mA, 9,6 V düşüş olacaktır. Ancak negatif olacak bir 5 V'luk tedarikten bu imkansız; Burada 0 V'den daha düşük olamazsınız. Bu yüzden optocoupler 8 mA çekmek isterken, direnç bunu sınırlayacaktır. Üzerindeki maksimum akım, 5 V'nin tam karşısında olduğu zamandır. Çıkış daha sonra gerçekten 0 V olacak ve akım 5 V / 1,2 kΩ = 4.2 mA olacaktır. Böylece, hangi akım kaynağını bağlarsanız besleyiniz, bundan daha yüksek olmayacak ve voltaj 0 V ile 5 V arasında kalacak.

Eğer aşırı gerilimine bekliyorsanız için o kıyafetleri, üstelik sen Optokupler LED akımı artmış işleyebilir olmadığını kontrol etmek gerekir, ancak 20 mA çoğu optokuplörleri için bir sorun olmayacaktır (genellikle 50 mA maksimum puan konum) ve çift muhtemelen IRL olmayacak olan giriş voltajı.


Sistem arabada kullanım içindir. Bileşenleri patlatmamak için araç aküsünün amperinin bir şekilde düşürülmesi gerekir mi? Bunda yeniyim. Teşekkürler
DW

@DW Uh-oh, araba! :-(. Cevabımı güncelleyeceğim.
stevenvh

@DW - Hayır, araç aküsünün kapasitesi önemli değil. Akım gerilim (12 V) ve dirençle (toplam 25 kohm) belirlenir. O halde Ohm Yasasına göre , akım 12 V / 25 kohm = 0,5 mA olacaktır. Pilin 40 Ah tipinde veya 400 Ah tipinde olması önemli değildir; dirençler daha fazla izin vermiyor.
stevenvh

Bu harika. Yardımınız için teşekkürler. Sadece merak ediyorum ama böyle bir şey olur mu? robotshop.com/ca/productinfo.aspx?pc=RB-Spa-750&lang=en-US
DW

2
@ stevenvh Teşekkürler Steve. Elektronik konusunda yeni olan birine, kendime güvendiğimde iyilik yapmak için sabırsızlanıyorum. Teşekkürler
DW

15

12V anahtar sinyalini izole etmenin iyi bir yolu bir opto kuplörden geçirmektir. Devre aşağıdakine benzer şekilde yapılandırılmış olacaktır.

görüntü tanımını buraya girin

Diyagramdaki Vi, anahtarınız (S1) tarafından değiştirilen devrenizdeki 12V'yi temsil eder. Akımı opto kuplörün D1 kısmı boyunca seçtiğiniz bileşenin derecelendirme sınırları içindeki bir seviyeyle sınırlamak için R1'i seçin.

Opto kuplörleri, dünyanın en hızlı komponentleri, özellikle en ucuz komponentler değil, insan kontrollü bir anahtar gibi yavaş bir hareket durumunda, kuplörün hızı çok az endişe vericidir.


15

Ayrıca, aşağıdaki gibi bir diyot ve bir direnç kullanabilirsiniz:

şematik

bu devreyi simüle et - CircuitLab kullanılarak oluşturulan şematik

Direnci oldukça sert bir şey yapardım, aksi halde bu devreden çok fazla güç kaybedersiniz. Bu devrenin güzelliği (voltaj bölücüyle karşılaştırıldığında), orijinal voltajınızın 12V, 14V veya 15V olup olmadığını umursamadığıdır: ne olursa olsun, 5V (aslında 5.2-5.3V) olacaktır giriş gerilimi.


Bu oldukça zekice, gerilim bağımsızlığı için +1!
Florian Castellane

5
Pim mutlak maksimum değerinde aşırı gerilim olmasına dikkat edin. Örneğin, ATmega32u4 veri sayfası: Toprak (8) 'e göre herhangi bir Pimdeki Gerilim: -0.5V - VCC + 0.5V. Normal bir diyot kullanılıyorsa, 170kOhm dirençten daha az bir şey kullanıyorsanız, voltaj VCC + 0,5V'den yüksek olacaktır. Schottky diyotların bunun için en güvenli olduğunu düşünüyorum.
cyberponk

13

Voltaj bağımsızlığı için, akımı düzenlemek için bir direnç ve voltajı ayarlamak için bir Zener kullanın.

şematik

bu devreyi simüle et - CircuitLab kullanılarak oluşturulan şematik

30k'luk bir dirençle, bu 4.99V'luk bir çıktı verecek ve sadece yaklaşık 234uA @ 12Vin kullanacaktır.
Bu durumda:
R1 234uA x (12V - 4.99V) = 1.64mW tüketmektedir.
D1 234uA x 4.99V = 1.17mW tüketmektedir.

Toplam güç tüketimi: 2,81mW (giriş yüksek olduğunda)


Görünür bir şey için, LED'de 5V sinyal vermek için seri olarak LED + direnç bölücü kullanırım ve zener diyodunu aşırı gerilime karşı korumak için bölücünün alt yarısına paralel olarak yerleştirir ve LED'i kullanırdım. Bu şekilde bir giriş sinyaliniz olduğunda LED yanar ve görsel geribildirim verir.
Goswin von Brederlow,

@GoswinvonBrederlow, devre led / diyot / direnç devresini dışarı çekebilir misiniz?
Sizzle

Yukarıdaki şemada R1 ila 770 Ohm'u ayarlayın ve Zener diyoduna paralel olarak bir 330Ohm ve kırmızı bir LED ekleyin. Sonra 12V girişinde ~ 9mA LED'den akacak ve 5V çıkış sinyali alacaksınız. Giriş gerilimi yükselirse, zener diyodu çıkış sinyalini 5.1V ile sınırlar ve hem arduino hem de LED'i korur.
Goswin von Brederlow

-2

Biraz geciktim ama arabamda LM7805 kullanıyorum. Harika çalışıyor ve ucuz.


1
2 direnç veya bir direnç ve bir diyot kadar ucuz değil.
Dave Tweed

7
@TonNies Soruyu yanlış anladınız. OP denetleyicisi için besleme gerilimi aramıyor. Sinyal koşullandırma hakkında daha fazla.
Ariser

1
LM7805'in 12V sinyallerini seviye kaydırma için kullanması yanlış bir şey değil.
chugadie

1
@chugadie: Eğer tek istediğin bir G / Ç iğnesi için 12V'i düşürmekse, çok nadir ve nispeten "pahalı" bir overkill yaklaşımı.
Rev1.0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.