Kiedy stosować rezystory pull-up vs. pull-up


42

Po nauce i eksperymentowaniu z mikrokontrolerami zrozumiałem koncepcję rezystorów podwyższających i obniżających. Teraz rozumiem, kiedy i jak ich używać oraz jak działają. Używałem głównie pull-upów, ponieważ mnie tego nauczono, ale zawsze wydawało mi się to trochę wstecz, ponieważ zamknięcie przełącznika ustawia wejście MCU na LOW. Myślę, że bardziej sensowne byłoby użycie rezystora obniżającego, aby wejście było NISKIE, gdy przełącznik jest otwarty, ale to tylko mój sposób myślenia.

Czy powinienem zwiększać lub zmniejszać liczbę moich rzutów pojedynczych? Kiedy preferuje się ściąganie w dół, a nie odwrotnie?


3
Jako (inna) elektronika nowej pszczoły muszę powiedzieć, że to pytanie w żaden sposób nie jest głupie. Nie stawajcie się też nie wiem, ale dlatego, że: „Oglądano: 1989 razy”.
steenhulthin

* ponieważ * 12998 razy
Mike Causer

Odpowiedzi:


29

Odpowiedź zależy od tego, jaka ma być konfiguracja „domyślna”. Załóżmy na przykład, że masz MOSFET z niższego kanału N i chcesz, aby domyślnie był wyłączony. Następnie użyłbyś rezystora obniżającego, aby zapewnić to zachowanie, jeśli wejście stanie się wysokiej impedancji.

schematyczny

symulacja tego obwodu - Schemat utworzony za pomocą CircuitLab

Z drugiej strony załóżmy, że masz nadrzędny kanał MOSFET i chcesz, aby domyślnie był wyłączony. Tym razem wymagany jest rezystor podciągający, aby stworzyć to zachowanie.

schematyczny

zasymuluj ten obwód

Istnieje również alternatywny przypadek, w którym chcesz, aby urządzenie było domyślnie włączone, w którym to przypadku powyższe dwa przypadki zostałyby odwrócone (pull-up dla N-channel MOSFET, pull-down dla P-channel MOSFET).

Kilka innych uwag:

  1. Linie I2C określają rezystory podciągające, ponieważ „oczekuje się”, że urządzenia będą miały otwarty odpływ do ziemi, a zatem potrzebują sposobu na zwiększenie potencjału linii.

  2. Komparatory analogowe są zwykle konfigurowane jako urządzenia z otwartym drenem, a zatem potrzebują również rezystorów podwyższających, aby uzyskać wysoki potencjał wyjściowy.

  3. Możesz pobierać więcej prądu za pomocą rezystorów pullup / pulldown, w zależności od tego, co jest podłączone do wejścia / wyjścia.

  4. Każda konfiguracja może działać równie dobrze w twojej aplikacji (tj. Nie ma znaczącej przewagi w ten czy inny sposób).

... I dowolna liczba bardzo specyficznych dla aplikacji powodów, dla których jedna konfiguracja może być preferowana.


16

Jeśli sygnał nie ma jeszcze specyfikacji, użyj tej, która ma dla ciebie najlepszy sens. To twój wybór, aby wejście było aktywne-wysokie lub aktywne-niskie .

Jeśli są to przyciski, upewnij się, że używasz obwodu debounce (lub zrób to w oprogramowaniu).

schematyczny

symulacja tego obwodu - Schemat utworzony za pomocą CircuitLab


+1 za jedyne porównanie aktywne-wysokie vs. aktywne-niskie, jakie widziałem. Fajnie, wszystko wyjaśnia.
TomServo,

15

Jeśli Twój projekt obwodu jest taki, że możesz wybrać - innymi słowy, nie jest wymagane, aby reszta obwodu korzystała z podciągania lub opuszczania - wtedy powinieneś rozważyć bezpieczeństwo i ochronę w przypadku awarii.

Jeśli twój mikrokontroler ulegnie awarii lub tylko to wyjście ulegnie awarii, nastąpi pociągnięcie w górę lub w dół. Jak to zmieni działanie twojego urządzenia? Czy narazi użytkownika na niebezpieczeństwo - na przykład przez wymuszenie włączenia elementu grzejnego? Czy wpłynie to na bezpieczeństwo, takie jak wyłączenie zamka drzwi?

Rezystory ciągnące w górę / w dół określają domyślny stan drutu. Decyzja, jaki powinien być stan domyślny, zależy od bezpieczeństwa, ochrony i wreszcie pożądanej funkcjonalności obwodu.


5

Jeśli pracujesz z Arduino / ATmega328, możesz użyć wbudowanego rezystora podciągającego .

W chipie Atmega wbudowane są rezystory podciągające 20 KB, do których można uzyskać dostęp z poziomu oprogramowania. Dostęp do tych wbudowanych rezystorów pullup można uzyskać, ustawiając pinMode () na INPUT_PULLUP. To skutecznie odwraca zachowanie trybu WEJŚCIE, gdzie WYSOKA oznacza, że ​​czujnik jest wyłączony, a NISKA oznacza, że ​​czujnik jest włączony.

Wartość tego pullupu zależy od zastosowanego mikrokontrolera. Na większości płyt opartych na AVR gwarantowana jest wartość od 20 kΩ do 50 kΩ. W Arduino Due wynosi od 50 kΩ do 150 kΩ. Dokładną wartość można znaleźć w arkuszu danych mikrokontrolera na płycie.

Podczas podłączania czujnika do pinu skonfigurowanego z INPUT_PULLUP, drugi koniec powinien być podłączony do uziemienia. W przypadku prostego przełącznika powoduje to, że pin odczytuje WYSOKA, gdy przełącznik jest otwarty, i NISKI, gdy przełącznik jest wciśnięty.

Raspberry Pi też je ma .


4

Często chcesz pull-up lub downs - często downs - na wyjściach programowalnych urządzeń, takich jak mikrokontrolery, aby określić ich stan podczas sekwencji rozruchu. Takie wyjścia często mają wysoką impedancję przy włączaniu zasilania, a podłączone urządzenia mogą otrzymywać niezamierzone sygnały, jeśli nie zostanie to zrobione. Jeśli na przykład zaangażowanych jest wiele dostaw, najlepiej jest zaprojektować każdą sekcję jako bezpieczną z zerowymi woltami na wejściach i zastosować rozwijanie.

Nieco bardziej niejasne niż inne odpowiedzi, ale widziałem przykłady dotyczące niebieskiego dymu i groźby działań prawnych.


Wyjaśnienie: pytanie nie brzmiało, dlaczego należy stosować rezystory podciągające lub podciągające, ale czy należy podciągać, czy podciągać.
osvein
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.