Jak mogę użyć wejścia 12 V na cyfrowym pinie Arduino?


38

Tworzę kontroler dla systemu 12 V za pomocą mikrokontrolera Arduino Uno. Do wyjść używam osłony przekaźnika do przełączania komponentów 12 V. Mam przełącznik 12 V, który włącza niektóre komponenty 12 V w systemie i chcę użyć sygnału wyzwalającego tego samego przełącznika, aby wysłać go na wejście cyfrowe Arduino. Wiem, że Arduino może obsłużyć tylko 5 V max. Jaki byłby najlepszy sposób na zmniejszenie napięcia wyjściowego 12 V przełącznika do 5 V dla wejścia?

EDYCJA: System jest przeznaczony do użytku w samochodzie. Czy natężenie akumulatora samochodowego należy obniżyć, aby nie wysadzić podzespołów?


3
natężenie samochodu nie ma znaczenia - elementy zużywają tyle prądu, ile potrzebują. Akumulator samochodowy może dostarczyć setki amperów, takich jak potrzebne do rozrusznika. Nie oznacza to, że zawsze płyną setki wzmacniaczy i mogą uszkodzić rzeczy. :)
KyranF

Odpowiedzi:


44

Dobre wieści! To będzie tanie! :-)

Prosty dzielnik rezystora obniży napięcie 12 V do 5 V, które Arduino może strawić. Napięcie wyjściowe można obliczyć jako

VOUT=R2R1+R2VIN

Wartości rezystorów w zakresie 10 kΩ są dobrym wyborem. Jeśli twój R2 wynosi 10 kΩ, wówczas R1 powinien wynosić 14 kΩ. Teraz 14 kΩ nie jest wartością standardową, ale 15 kΩ jest. Twoje napięcie wejściowe wyniesie 4,8 V zamiast 5 V, ale Arduino zobaczy to nadal jako wysoki poziom. Masz również trochę miejsca na wypadek, gdyby napięcie 12 V było nieco za wysokie. Nawet 18 kΩ nadal da ci wystarczająco wysokie 4,3 V, ale wtedy musisz zacząć myśleć o 12 V trochę za nisko. Czy napięcie będzie nadal postrzegane jako wysokie? Trzymałbym się 15 kΩ.

edytować
Wspominasz środowisko motoryzacyjne, a potem potrzebujesz dodatkowej ochrony. Samochód 12 V nigdy nie jest całkiem 12 V, ale przez większość czasu jest wyższy, z pikami kilkoma woltami powyżej nominalnego 12 V. (W rzeczywistości nominalny jest bardziej jak 12,9 V, przy 2,15 V na ogniwo). diody równolegle z R2, co powinno odciąć każde napięcie wyższe niż 5 zenera Zenera. Ale napięcie zenera zmienia się wraz z prądem, a przy niskim prądzie wejściowym oporniki dają ci odcięcie przy niższych napięciach. Lepszym rozwiązaniem byłoby zastosowanie diody Schottky'ego między wejściem Arduino a zasilaniem 5 V. Wtedy każde napięcie wejściowe wyższe niż około 5,2 V spowoduje, że dioda Schottky'ego przewodzi, a napięcie wejściowe będzie ograniczone do 5,2 V. Naprawdę potrzebujesz do tego diody Schottky'ego, wspólna dioda PN ma zero.


Transoptor lepszy od Michaela jest dobrą alternatywą, choć nieco droższą. Często używasz transoptora do izolowania wejścia od wyjścia, ale możesz także użyć go do ochrony wejścia, jak chcesz tutaj.

wprowadź opis zdjęcia tutaj

Jak to działa: prąd wejściowy oświetla wewnętrzną diodę podczerwieni, która powoduje prąd wyjściowy przez fototranzystor. Stosunek prądu wejściowego i wyjściowego nazywa się CTR (ang. Current Transfer Ratio). CNY17 ma minimum CTR 40%, co oznacza, że trzeba 10 mA wejście dla 4 wyjścia mA. Chodźmy na wejście 10 mA. Wtedy R1 powinien wynosić (12 V - 1,5 V) / 10 mA = 1 kΩ. Rezystor wyjściowy będzie musiał spowodować spadek 5 V przy 4 mA, wtedy powinno to być 5 V / 4 mA = 1250 Ω. Lepiej mieć nieco wyższą wartość, napięcie i tak nie spadnie więcej niż 5 V. 4,7 kΩ ograniczy prąd do około 1 mA.

Vcc to zasilanie 5 V Arduino, Vout przechodzi do wejścia Arduino. Zauważ, że wejście zostanie odwrócone: będzie niskie, jeśli obecne będzie 12 V, wysokie, gdy nie będzie. Jeśli tego nie chcesz, możesz zamienić pozycję wyjścia transoptora i rezystora podciągającego.

edytuj 2
Jak rozwiązanie transoptora nie rozwiązuje problemu przepięcia? Dzielnik rezystora jest ratiometryczny: napięcie wyjściowe jest stałym stosunkiem wejściowym. Jeśli obliczyłeś dla 5 V na 12 V na wejściu, to 24 V na wejściu da 10 V na wyjściu. Nie OK, stąd dioda zabezpieczająca.

W obwodzie transoptora widać, że prawa strona, która łączy się ze stykiem wejściowym Arduino, nie ma w ogóle żadnego napięcia wyższego niż 5 V. Jeśli transoptor jest włączony, tranzystor pobierze prąd, użyłem 4 mA w powyższym przykładzie. 1,2 kΩ spowoduje spadek napięcia o 4,8 V z powodu prawa Ohma (prąd razy rezystancja = napięcie). Wtedy napięcie wyjściowe wyniesie 5 V (Vcc) - 4,8 V na rezystorze = 0,2 V, to niski poziom. Jeśli prąd będzie niższy, spadek napięcia również będzie mniejszy, a napięcie wyjściowe wzrośnie. Na przykład prąd 1 mA spowoduje spadek 1,2 V, a moc wyjściowa wyniesie 5 V - 1,2 V = 3,8 V. Minimalny prąd wynosi zero. Wtedy nie ma napięcia na rezystorze, a moc wyjściowa wyniesie 5 V. To jest maksimum, tam

Co jeśli napięcie wejściowe stałoby się zbyt wysokie? Przypadkowo podłączasz akumulator 24 V zamiast 12 V. Następnie prąd diody LED podwoi się, od 10 mA do 20 mA. 40% CTR spowoduje prąd wyjściowy 8 mA zamiast obliczonego 4 mA. 8 mA przez rezystor 1,2 kΩ będzie spadać o 9,6 V. Ale przy zasilaniu 5 V byłoby to ujemne, a to niemożliwe; nie możesz tutaj spaść poniżej 0 V. Więc chociaż transoptor bardzo chciałby pobierać 8 mA, rezystor to ograniczy. Maksymalny przepływający przez niego prąd występuje, gdy przepływa przez niego pełne 5 V. Moc wyjściowa wyniesie wtedy naprawdę 0 V, a prąd 5 V / 1,2 kΩ = 4,2 mA. Tak więc niezależnie od podłączonego zasilacza prąd wyjściowy nie wzrośnie, a napięcie pozostanie między 0 V a 5 V. Nie jest wymagana dodatkowa ochrona.

Jeśli spodziewasz się przepięcia, musisz sprawdzić, czy dioda LED transoptora jest w stanie poradzić sobie ze zwiększonym prądem, ale 20 mA nie będzie stanowiło problemu w przypadku większości transoptorów (często mają maksymalną wartość 50 mA), a ponadto jest to podwójne napięcie wejściowe, które prawdopodobnie nie nastąpi IRL.


System jest przeznaczony do użytku w samochodzie. Czy natężenie akumulatora samochodowego należałoby jakoś obniżyć, aby nie wysadzić podzespołów? Jestem w tym nowy. Dzięki
DW

@DW Uh-oh, samochód! :-(. Zaktualizuję moją odpowiedź.
stevenvh,

@DW - Nie, pojemność akumulatora samochodowego nie ma znaczenia. Prąd będzie określony przez napięcie (12 V) i rezystancję (łącznie 25 kohm). Zatem zgodnie z prawem Ohma prąd będzie wynosił 12 V / 25 kohm = 0,5 mA. Nie ma znaczenia, czy bateria jest typu 40 Ah, czy 400 Ah; rezystory nie pozwalają na więcej.
stevenvh

To wspaniale. Dzięki za pomoc. Ciekawe, ale czy coś takiego mogłoby działać? robotshop.com/ca/productinfo.aspx?pc=RB-Spa-750&lang=en-US
DW

2
@stevenvh Dzięki Steve. Z niecierpliwością czekam na powrót do faworyzowania kogoś, kto jest nowy w elektronice, kiedy będę tego pewien. Dzięki
DW

15

Dobrym sposobem na izolację sygnału przełącznika 12V byłoby przepuszczenie go przez łącznik optyczny. Obwód byłby skonfigurowany podobnie do poniższego.

wprowadź opis zdjęcia tutaj

Vi na schemacie przedstawia 12 V w twoim obwodzie, który jest przełączany przez twój przełącznik (S1). Wybierz R1, aby ograniczyć prąd przez część D1 łącznika optycznego do poziomu, który mieści się w zakresie wartości znamionowych wybranego elementu.

Łączniki optyczne nie są najszybszymi komponentami na świecie, zwłaszcza najtańszymi, ale w przypadku powolnego działania, takiego jak przełącznik sterowany przez człowieka, prędkość łącznika nie ma większego znaczenia.


15

Możesz również użyć diody i rezystora, w następujący sposób:

schematyczny

symulacja tego obwodu - Schemat utworzony za pomocą CircuitLab

Uczyniłbym rezystor czymś dość sztywnym, w przeciwnym razie zużyjesz dużo energii z tego obwodu. Piękno tego obwodu (w porównaniu do dzielnika napięcia) polega na tym, że nie ma znaczenia, czy twoje pierwotne napięcie wynosi 12 V, 14 V, czy 15 V: będzie to 5 V (w rzeczywistości 5,2–5,3 V w zależności od diody) niezależnie od napięcie wejściowe.


to całkiem sprytne, +1 za niezależność od napięcia!
Florian Castellane

5
Ostrożnie z maksymalnym maksymalnym napięciem na styku. Na przykład karta danych ATmega32u4: Napięcie na dowolnym styku w stosunku do uziemienia (8): -0,5 V do VCC + 0,5 V. Jeśli używasz zwykłej diody, napięcie będzie wyższe niż VCC + 0,5 V, jeśli użyjesz czegoś mniejszego niż opornik 170 kOhm. Myślę, że diody Schottky'ego są do tego najbezpieczniejsze.
cyberponk

13

Aby uzyskać niezależność od napięcia, użyj rezystora do regulacji prądu i Zenera do regulacji napięcia, w następujący sposób:

schematyczny

symulacja tego obwodu - Schemat utworzony za pomocą CircuitLab

W przypadku rezystora 30k będzie on generować 4,99 V i zużywać tylko około 234uA @ 12Vin.
W tym przypadku:
R1 zużywa 234uA x (12V - 4,99 V) = 1,64 mW
D1 zużywa 234uA x 4,99 V = 1,17 mW

Całkowity pobór mocy: 2,81 mW (gdy wejście jest wysokie)


Dla czegokolwiek widocznego użyłbym dzielnika rezystorowego LED + szeregowo, aby dać sygnał 5 V przy napięciu 12 V i ustawiłbym diodę Zenera równolegle z dolną połową dzielnika i diodą LED w celu ochrony przed przepięciem. W ten sposób dioda LED zapala się, gdy masz sygnał wejściowy i przekazuje informacje zwrotne.
Goswin von Brederlow

@GoswinvonBrederlow, czy możesz wyciągnąć obwód obwodu led / diody / rezystora?
skwiercz

Na powyższym schemacie ustaw R1 na 770 Ohm i dodaj 330 Om i czerwoną diodę LED równolegle do diody Zenera. Następnie przy wejściu 12 V ~ 9mA przepłynie przez diodę LED i otrzymasz sygnał wyjściowy 5 V. Jeśli napięcie wejściowe wzrośnie, ale dioda Zenera ograniczy sygnał wyjściowy do 5,1 V i ochroni zarówno arduino, jak i diodę LED.
Goswin von Brederlow

-2

Trochę późno, ale w samochodzie używam LM7805. Działa świetnie i jest tani.


1
Nie tak tanie jak 2 rezystory lub rezystor i dioda.
Dave Tweed

7
@TonNies Masz błędne pytanie. OP nie szuka napięcia zasilania dla swojego kontrolera. Chodzi bardziej o warunkowanie sygnału.
Ariser

1
Nie ma nic złego w korzystaniu z LM7805 do zmiany poziomów sygnałów 12 V.
chugadie

1
@chugadie: Ale bardzo rzadkie i stosunkowo „drogie” podejście polegające na przesadzeniu, jeśli wszystko, czego chcesz, to obniżyć napięcie 12V na jeden pin IO.
Rev1.0
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.