Jaki rezystor przed switchem i dlaczego 10K?

Masz problem z Arduino? Tutaj możesz szukać pomocy.
hubertk
Młodszy majsterkowicz
Posty: 16
Rejestracja: 24 paź 2014, 10:50

Jaki rezystor przed switchem i dlaczego 10K?

Post autor: hubertk » 6 lis 2014, 13:36

Witam (jestem totalnym nowicjuszem) mam od wczoraj arduino uno i nie mogę spać tylko cały czas o nim myślę :)

Tak jak napisałem jestem totalnym nowicjuszem w świecie elektroniki, ale czytam ile się da i staram się coś zrozumieć. Moje pytanie jest takie jak w temacie czyli - Dlaczego (w przykładzie na stronie arduino.cc) przed switchem daje się rezystor i dlaczego ma być 10k? przeczytałem na elektroda:

Podciąga poziom napięcia,tak żeby wejście nie 'wisiało' w powietrzu tylko posiadało ustalony stan logiczny.
Wyobraź sobie układ w którym za pomocą przycisku zwierasz wejście mikroprocesora do masy. W stanie zwartym na wejściu panuje napięcie 0V. Ale przy rozwarciu przycisku wejście nie jest nigdzie podłączone - wisi w powietrzu - a ze względu na wielką impedancje wejściową jest bardzo podatne na zbieranie wszelkich zakłóceń. W efekcie stan przy puszczonym przycisku będzie się zmieniać losowo - urządzenie będzie działać niepoprawnie.
Żeby uniknąć takiej sytuacji należy użyć rezystora podciągającego do zasilania - w ten sposób wymusisz na wejściu poziom logiczny 1.
Teraz stan logiczny na wejściu jest w pełni przewidywalny - wcisniesz przycisk masz '0', puścisz masz '1'


- i niby coś tam rozumie, ale niby... Może ktoś może jeszcze to rozjaśnić tak jakby dziecku swojemu tłumaczył i najważniejsze tzn dlaczego 10k, a nie np 100R? Dziękuję za pomoc....

dziękuję, Hubert

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
cube
Złota rączka
Posty: 836
Rejestracja: 2 gru 2012, 17:02

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: cube » 6 lis 2014, 17:25

Piszę bardzo zgrubnie i pomijam a nawet naginam kilka faktów.
Informatyka i elektronika cyfrowa bazuje na systemie dwójkowym, zero i jeden. W elektronice cyfrowej, za logiczne zero przyjmuje się stan, gdzie wejście mikrokontrolera ma taki sam potencjał jak masa (minus) zasilania a logiczne jedne równe jest napięciu zasilania. W praktyce nigdy nie będą to dokładnie równe wartości a pewien przedział, więc wygląda to np. tak: zero to napięcie z przedziału od 0V do 0,5V; jeden to napięcie od 4,5V do 5V. Ale zauważ że jest spory przedział, który nie jest stanem wysokim 1 ani stanem niskim 0; występujący pomiędzy 0,5V a 4,5V. Podciągnięcie wejścia do plusa zasilania spowoduje że na wejściu będzie napięcie ok. 5V. Jeśli naciśniesz przycisk prąd zacznie płynąć od zasilania do masy, także i od wejścia mikrokontrolera zostanie ładunek odebrany. Jeśli nie zastosujesz rezystora, naciskając przycisk zrobisz zwarcie, czyli puścisz maksymalny prąd jaki jest w stanie zapewnić źródło zasilania (I=U/R - gdzie R jest bardzo, bardzo małe, równe tylko oporowi ścieżki - prawo Ohma), a to zabija elektronikę. Rezystor służy ograniczeniu prądu do bardzo małej wartości, nieszkodliwej dla portu wejściowego mikrokontrolera.
hubertk
Młodszy majsterkowicz
Posty: 16
Rejestracja: 24 paź 2014, 10:50

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: hubertk » 7 lis 2014, 11:03

Bardzo dziękuję za odpowiedzi i pomoc... Ale jeszcze tylko jedna sprawa @cube - dlaczego 10k?
hubertk
Młodszy majsterkowicz
Posty: 16
Rejestracja: 24 paź 2014, 10:50

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: hubertk » 7 lis 2014, 12:29

ok teraz rozumie po prostu mi dzielenie nie wychodziło, wiem że proste, ale jakoś mi nie szło... teraz wszystko jasne:)
Awatar użytkownika
hyena
Młodszy majsterkowicz
Posty: 34
Rejestracja: 28 lis 2013, 23:51

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: hyena » 19 lis 2014, 04:53

Zapomnieliście koledze powiedzieć że zamiast rezystora można użyć funkcji PULLUP i rezystor niepotrzebny.

Kod: Zaznacz cały

Przycisk podłączasz jedną nóżką pod GND drugą pod cyfrowy pin arduino. W programie włączasz rezystor podciągający na ten pin:

pinMode(buttonPin, INPUT_PULLUP);

i potem sobie sprawdzasz:
[code]
byte buttonState = digitalRead(buttonPin);
if(buttonState == LOW)
{
// przysisk wcisniety
}
else
{
// przycisk puszczony
}
lession72
Młodszy majsterkowicz
Posty: 6
Rejestracja: 20 wrz 2018, 17:25

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: lession72 » 20 wrz 2018, 17:27

hyena, czy to zadziała też na arduino pro mini (i klonach)?

czy przycisk zasilać 5V, czy lepiej 3V?
wchpikus
Młodszy majsterkowicz
Posty: 33
Rejestracja: 7 lut 2015, 20:59

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: wchpikus » 20 wrz 2018, 18:13

Szczerze lepiej dać rezystor, przy starcie nie wiesz jaki stan ma wejscie..przy rezystorze wiadomo..tak dla zasady, oszczednosc zadna a pewnosc masz.


Wysłane z mojego SM-G950F przy użyciu Tapatalka

Bob2462
Majsterkowicz
Posty: 79
Rejestracja: 13 mar 2016, 00:11

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: Bob2462 » 20 wrz 2018, 21:23

czy to zadziała też na arduino pro mini (i klonach)?
Tak, pod warunkiem, że będą bazowały na tym samym mikrokontrolerze.
czy przycisk zasilać 5V, czy lepiej 3V?
To zależy od tego jakie napięcie oznacza w danym systemie stan wysoki.
Zazwyczaj GND mikrokontrolera to stan niski a VCC to stan wysoki.
Tak więc przycisk powinien być podciągnięty pod VCC czyli napięcie jakim jest zasilany mikrokontroler.
Szczerze lepiej dać rezystor, przy starcie nie wiesz jaki stan ma wejscie..przy rezystorze wiadomo..tak dla zasady, oszczednosc zadna a pewnosc masz.
Awatar użytkownika
Marhef
Złota rączka
Posty: 1048
Rejestracja: 18 lis 2011, 02:18

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: Marhef » 20 wrz 2018, 22:20

lession72 pisze:
20 wrz 2018, 17:27
hyena, czy to zadziała też na arduino pro mini (i klonach)?
Tak, zadziała. Ustawienie wejścia jako INPUT_PULLUP działa na wszystkich arduino. To jest część składni języka arduino_C++
lession72 pisze:
20 wrz 2018, 17:27
czy przycisk zasilać 5V, czy lepiej 3V?
Jeżeli używasz INPUT_PULLUP nie podłączasz do zasilania! Jedną nóżkę przycisku do GND, drugą do wejścia arduino. Bez żadnego rezystora.
wchpikus pisze:
20 wrz 2018, 18:13
Szczerze lepiej dać rezystor, przy starcie nie wiesz jaki stan ma wejscie..przy rezystorze wiadomo..tak dla zasady, oszczednosc zadna a pewnosc masz.
Głupoty gadasz. Jeśli ustawiasz wejście jako INPUT_PULLUP, to zawsze jak przycisk jest nie wciśnięty, mikrokontroler odczytuje jego stan jako logiczne 1. Zawsze.
wchpikus
Młodszy majsterkowicz
Posty: 33
Rejestracja: 7 lut 2015, 20:59

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: wchpikus » 20 wrz 2018, 23:08

Sorry..pierwszy lepszy link

https://learn.sparkfun.com/tutorials/pull-up-resistors


https://www.eevblog.com/forum/microcont ... od-enough/

Proponuje poczytac.

Ja nie ufam wewnetrznemu pullup, ale jak kto woli.

Wysłane z mojego SM-G950F przy użyciu Tapatalka


Bob2462
Majsterkowicz
Posty: 79
Rejestracja: 13 mar 2016, 00:11

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: Bob2462 » 20 wrz 2018, 23:28

Szczerze lepiej dać rezystor, przy starcie nie wiesz jaki stan ma wejscie.
Głupoty gadasz.
Rejestry PORT i DDR resetują się do stanu 0x00 więc wszystkie piny będą miały stan niski i będą ustawione jako wejścia.
Wystarczy do dokumentacji zajrzeć.
wchpikus
Młodszy majsterkowicz
Posty: 33
Rejestracja: 7 lut 2015, 20:59

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: wchpikus » 20 wrz 2018, 23:41

Tego nie wiesz co autor miał na myśli..
Wystarczy ze odsunie button od uc na wiekszą odleglość, kiepskie zasilanie,zakłócenia i juz wejscie nie bedzie 1..szczególnie ze wisi w powietrzu..
Ogólna zasada jest taka,nie podlączone inputy up lub down..

Ale robta co chceta

Wysłane z mojego SM-G950F przy użyciu Tapatalka


gavron
Młodszy majsterkowicz
Posty: 31
Rejestracja: 17 sie 2018, 07:43

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: gavron » 21 wrz 2018, 07:04

Bob2462 pisze:
Szczerze lepiej dać rezystor, przy starcie nie wiesz jaki stan ma wejscie.
Głupoty gadasz.
Rejestry PORT i DDR resetują się do stanu 0x00 więc wszystkie piny będą miały stan niski i będą ustawione jako wejścia.
Wystarczy do dokumentacji zajrzeć.
Po zabootowaniu się jakiegokolwiek urządzenia tak. Ale w trakcie nie masz pojęcia jaki stan będzie

Wysłane z mojego Neffos Y5s przy użyciu Tapatalka

Awatar użytkownika
ethanak
Złota rączka
Posty: 782
Rejestracja: 21 lis 2015, 14:41
Kontakt:

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: ethanak » 21 wrz 2018, 10:21

A teraz jeden z drugim mądrale szybko do dokumentacji i sprawdzać, co znaczy INPUT_PULLUP.
Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie.
To jest ewidentna bezczelność!
wchpikus
Młodszy majsterkowicz
Posty: 33
Rejestracja: 7 lut 2015, 20:59

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: wchpikus » 21 wrz 2018, 10:25

Ok, mądralo, widzę że siejesz agresją, nie chce mi sie z tobą dyskutować.
Autorowi polecam sprawdzić obie wersje samemu i wybrać co pasuje.
Nie znam projektu i nie wiadomo jak to ma wyglądać, w skrajnym przypadku możesz mieć problemy ze stanami nieustalonymi.


Wysłane z mojego SM-G950F przy użyciu Tapatalka

gavron
Młodszy majsterkowicz
Posty: 31
Rejestracja: 17 sie 2018, 07:43

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: gavron » 21 wrz 2018, 11:01

ethanak pisze:A teraz jeden z drugim mądrale szybko do dokumentacji i sprawdzać, co znaczy INPUT_PULLUP.
Człowieku softwarowo możesz podbić up i down ale uruchomi się to dopiero po uruchomieniu urządzenia... W trakcie restartu może być różnie

Wysłane z mojego Neffos Y5s przy użyciu Tapatalka

stiven
Złota rączka
Posty: 1587
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: stiven » 21 wrz 2018, 13:04

gavron pisze:
21 wrz 2018, 11:01
Człowieku softwarowo możesz podbić up i down ale uruchomi się to dopiero po uruchomieniu urządzenia
wchpikus pisze:
20 wrz 2018, 18:13
Szczerze lepiej dać rezystor, przy starcie nie wiesz jaki stan ma wejscie
Ale jaki to ma negatywny wpływ na działanie programu i/lub na podłączony przycisk?
wchpikus
Młodszy majsterkowicz
Posty: 33
Rejestracja: 7 lut 2015, 20:59

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: wchpikus » 21 wrz 2018, 14:06

Załaduj bootloader przez uart, podłącz tak sobie button (dodatkowo zrób przerwanie na tym pinie, a co),button przypisany do uruchamiania bootloadera..ma wpływ czy nie?


Wysłane z mojego SM-G950F przy użyciu Tapatalka

stiven
Złota rączka
Posty: 1587
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: stiven » 21 wrz 2018, 16:04

wchpikus pisze:
21 wrz 2018, 14:06
Załaduj bootloader przez uart, podłącz tak sobie button (dodatkowo zrób przerwanie na tym pinie, a co),button przypisany do uruchamiania bootloadera..ma wpływ czy nie?
Czyli ogólnie nie ma żadnego wpływu, chyba że wynajdzie się taką wyjątkową sytuację, w której ma.
wchpikus
Młodszy majsterkowicz
Posty: 33
Rejestracja: 7 lut 2015, 20:59

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: wchpikus » 21 wrz 2018, 16:24

Ehh..ok nie ma,koniec dyskusji;)

Wysłane z mojego SM-G950F przy użyciu Tapatalka

lession72
Młodszy majsterkowicz
Posty: 6
Rejestracja: 20 wrz 2018, 17:25

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: lession72 » 21 wrz 2018, 16:56

Dzięki wszystkim za pomoc, dyskusja zawrzała, ale twórczo :)

Mam jeszcze taki pomysł pod uwagę, będę oczywiście testował wszystkie podpowiedzi, ale czy jest sens, czy to by wystarczyło, gdyby wszystkie (mam ich 6) przyciski podpiąć pod jeden rezystor 10k ?
stiven
Złota rączka
Posty: 1587
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: stiven » 21 wrz 2018, 17:09

Nie możesz tak zrobić, bo wtedy będziesz miał ze sobą połączone wszystkie piny i przy naciśnięciu obojętnie którego przycisku, stan niski (przy podciągnięciu to Vcc) będzie na wszystkich pinach.
lession72
Młodszy majsterkowicz
Posty: 6
Rejestracja: 20 wrz 2018, 17:25

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: lession72 » 24 wrz 2018, 13:01

pytanie skasowałem, bo jest już na nie odpowiedź w odpowiedziach
lession72
Młodszy majsterkowicz
Posty: 6
Rejestracja: 20 wrz 2018, 17:25

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: lession72 » 24 wrz 2018, 13:05

hyena pisze:
19 lis 2014, 04:53
Zapomnieliście koledze powiedzieć że zamiast rezystora można użyć funkcji PULLUP i rezystor niepotrzebny.

Kod: Zaznacz cały

Przycisk podłączasz jedną nóżką pod GND drugą pod cyfrowy pin arduino. W programie włączasz rezystor podciągający na ten pin:

pinMode(buttonPin, INPUT_PULLUP);

i potem sobie sprawdzasz:
[code]
byte buttonState = digitalRead(buttonPin);
if(buttonState == LOW)
{
// przysisk wcisniety
}
else
{
// przycisk puszczony
}
A gdybym podpinał +5 V (dla płytki 5V) zamiast gnd, czy to by działało poprawnie i nie byłoby szkody, ew. 3V ? i co wtedy z funkcją: INPUT_PULLUP?


W innym projekcie, ktoś mi poradził tak zrobić (wtedy do 5V podłączyłem przycisk pod napięciem 3V - z tv) i chyba to zadziałało, a przynajmniej tak to wyglądało, że działa. ?
Awatar użytkownika
Marhef
Złota rączka
Posty: 1048
Rejestracja: 18 lis 2011, 02:18

Re: Jaki rezystor przed switchem i dlaczego 10K?

Post autor: Marhef » 24 wrz 2018, 13:12

Jeżeli chcesz, żeby zadziałało odwrotnie, to musisz podłączyć przycisk rezystorem do GND (może być rezystor 10k). I wtedy nie deklarujesz przycisku jako INPUT_PULLUP, tylko jako INPUT

Mała uwaga, nie kasuj pytań. Robi się bałagan w wątku.
ODPOWIEDZ

Strony partnerskie: