Skocz do zawartości

Wejścia cyfrowe - jak płynie prąd?


jugan1

Pomocna odpowiedź

Dzień dobry,

W internecie ( też i na blogu forbota ) można znaleźć wiele schematów, gdzie mamy wejścia cyfrowe. Niestety zrozumienie ich sprawia mi ogromny problem. Poprosiłbym zatem o naprawdę łopatologiczne wyjaśnienie moich niejasności. Podejrzewam, że problemy są naprawdę banalne, natomiast aż tak bardzo tego nie rozumiem, że nawet ciężko mi będzie zadać dobre pytania. Proszę zatem o wyrozumiałość!

Pytania będą pojawiały się stopniowo. Na podstawie odpowiedzi będę zadawał kolejne, bo nie wiem o co zapytać. Jak Wam ułatwić zrozumienie, o co mi dokładnie chodzi.

 

1) Załóżmy, że mam ARDUINO i chcę sprawdzać, czy przycisk jest wciśnięty, czy nie. Pomijam aktualnie problem związany z brakiem rezystora podciągającego ( o to też zapytam 😄 ); załóżmy po prostu chwilowo, że nie ma problemów ze stykami w przyciskach i zawsze otrzymuję poprawny stan. Tutaj przykład takiego połączenia ( link do strony ze zdjęciem: https://roboticsbackend.com/arduino-push-button-tutorial/ )

obraz.thumb.png.cd933ac4dfb63898827f0acdcf8a9fd9.png

Chcę teraz odczytać stan przycisku. Co się dokładnie dzieje w momencie wykonywania przez procesor Arduino instrukcji digitalRead?

Mogą być 2 możliwości:

a) przycisk jest wciśnięty. Jest zatem droga między GND, a PINem nr 4.

b) przycisk nie jest wciśnięty. Nie ma drogi między GND, a PINem nr 4 ( jest przerwa w obwodzie )

Gdyby PIN był cyfrowym wyjściem to pomiędzy GND, a PINem popłynąłby prąd. Czy tutaj też popłynie? Skąd ARDUINO wie, jaki jest STAN ( czy przycisk jest wciśnięty, czy też nie )?

Powiedzmy, że mam dzielnik napięcia i baterię 5V. Jestem w stanie za pomocą woltomierza zmierzyć napięcie w tym dzielniku na jakimś rezystorze i przykładowo dla zakresu 3.5-5V powiedzieć, że jest stan wysoki, a dla 0-1.5V powiedzieć, że jest niski. Tutaj jednak nie widzę żadnego miejsca, które bym mógł zmierzyć.

 

Link do komentarza
Share on other sites

@fribble3 Widzę, że podrzuciłeś rysunek związany z rezystorami podciągającymi. O to też na pewno zapytam, ale wydaje mi się, że aktualnie tylko one mi zaciemnią obraz ( oczywiście mogę się mylić i być może są one niezbędne do zrozumienia mojego pytania ). Czytałem, że rezystor podciągający jest ważny przy przycisku w momencie, gdy nie jest on wciśnięty ( aby nie zbierać "śmieci" z otoczenia ). U mnie jednak może być sytuacja, że przycisk jest wciśnięty ( wtedy rezystor podciągający nie jest potrzebny ) i chciałbym wiedzieć, skąd ARDUINO wie, że powinien być stan wysoki.

Link do komentarza
Share on other sites

Na początek uwaga ogólna. Do wejścia Arduino (dotyczy to także innych procesorów) nie wpływa praktycznie prąd - liczy się tylko napięcie.

W Twoim przykładzie przy wciśniętym przycisku do wejścia podłączona jest masa, napięcie 0V, co jest interpretowane jako stan niski.

Jeśli przycisk jest puszczony, to na wejściu jest "niewiadomoco", co może być interpretowane całkiem przypadkowo. Dlatego musimy podłączyć opornik podciągający do zasilania, co będzie interpretowane jako stan wysoki.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

7 minut temu, jugan1 napisał:

przycisk jest wciśnięty ( wtedy rezystor podciągający nie jest potrzebny )

Przecież nie jest wciśnięty bez przerwy - opornik jest potrzebny, gdy przycisk jest puszczony.

Link do komentarza
Share on other sites

(edytowany)

@jand 

6 minut temu, jand napisał:

W Twoim przykładzie przy wciśniętym przycisku do wejścia podłączona jest masa, napięcie 0V, co jest interpretowane jako stan niski.

I właśnie tego nie rozumiem chyba najbardziej. Skąd Arduino wie, że coś, co jest podłączone, to jest właśnie masa?

EDIT: Po prostu nie widzę niczego tam ( woltomierza itd. ) co po wyliczeniu wartości powiedziałoby "Jest podłączona masa"

Edytowano przez jugan1
Link do komentarza
Share on other sites

(edytowany)

Odpowiednie układy są inicjowane, takie którą są zdolne odczytać stan wejściowy i ten stan jest odczytywany. Np. z RP2040:

1505267640_Screenshot2024-04-21at17-26-06RP2040Datasheet-rp2040-datasheet_pdf.thumb.png.5357f99ff0399628d70644eaaf86e5b3.png

A poziom szczegółowości głębiej, to już na tutaj, slajd na stronie 8 - bidirectional pads. Rysunek wyżej: po lewej z układ wyjścia zaprezentowany za pomocą symboli bramek, pewnie dla czytelności (wyjaśniony poniżej). Z prawej już mniej skomplikowany układ wejścia, tutaj dwa zestawy par tranzystorów P i N (co tworzy komplementarną parę CMOS) w szeregu pewnie, żeby dostosować napięcie IO to tego wewnątrz, a pierwsza para odwróci stan wejścia, a druga odwróci ten odwrócony, więc 0 na padzie, będzie 0 na wejściu. Pewnie jedno z weilu rozwiązań.

Edytowano przez matsobdev
Link do komentarza
Share on other sites

(edytowany)
8 minut temu, jugan1 napisał:

Skąd Arduino wie, że coś, co jest podłączone, to jest właśnie masa?

Nie wie, że to masa - wie natomiast, że jest to 0V, mierzone pomiędzy tym wejściem, a masą procesora (która z kolei  jest połączona z masą ogólną).

Edytowano przez jand
Link do komentarza
Share on other sites

Jak pisałem - na wejściu jest bramka tranzystora MOSFET. Jeśli napięcie na bramce jest w okolicach zera, to tranzystor nie jest wysterowany i nie przewodzi prądu.

Jeśli na wejściu pojawi się odpowiednie napięcie względem masy, to tranzystor zaczyna przewodzić.

I to są te dwa stany logiczne, które dalej są przekazywane do dalszych układów.

 

Link do komentarza
Share on other sites

(edytowany)

@jand

To jeszcze może takie pytania ( ciągle do tematu nr 1 ) :

Załóżmy, że chcę to wszystko jeszcze bardziej uprościć. Co muszę zrobić, aby odczytać stan niski, a co, żeby wysoki?

Czy, żeby odczytać stan niski wystarczy połączyć GND oraz pin nr 4 ( który jest ustawiony jako wejście )?

Czy, żeby odczytać stan wysoki wystarczy połączyć pin 5V oraz pin nr 4 ( wejście )?

 

Edytowano przez jugan1
Link do komentarza
Share on other sites

Podanie na wejście:
0% - 30% napięcia zasilania oznacza logiczne zero (0),
30% - 70% napięcia zasilania jest przedziałem zabronionym,
70% - 100% napięcia zasilania oznacza logiczną jedynkę (1).

Link do komentarza
Share on other sites

3 godziny temu, jugan1 napisał:

Czy, żeby odczytać stan niski wystarczy połączyć GND oraz pin nr 4 ( który jest ustawiony jako wejście )?

Czy, żeby odczytać stan wysoki wystarczy połączyć pin 5V oraz pin nr 4 ( wejście )?

Generalnie tak, z tym że do 5V lepiej połączyć pin przez opornik (to jest właśnie ten opornik podciągający).

Procenty podane przez @fribble3 mają charakter orientacyjny; dokładne wartości znajdziemy w karcie katalogowej danego układu. Dotyczy to nie tylko Arduino czy innego mikrokomputera, ale i innych układów cyfrowych.

Link do komentarza
Share on other sites

@jand Zostańmy przy tych prostych połączeniach tzn. GND - Pin nr 4 ( INPUT ) oraz 5V - Pin nr 4 ( INPUT ). Zakładam na razie, że nie dodaję żadnego opornika. Czy tam płynie jakiś prąd? Jeśli tak, to jak duży? Ma to w ogóle sens? I jeśli płynie to skąd dokąd? Prąd płynie od plusa do minusa. Tutaj są 2 sytuacje:

a) GND - Pin nr 4 ( INPUT ) ; GND ma potencjał 0V, zatem Pin nr 4 musi mieć albo coś większego np. 2V, albo coś mniejszego np. -2V, aby mógł płynąć prąd

b) 5V - Pin nr 4 ( INPUT ) ; 5V ma potencjał 5V, zatem Pin nr 4 musi mieć albo np. 7V, albo np. 3V

Obstawiałbym zatem coś koło 2.5V, aby nie było zbyt wysokie napięcie w dowolnej z tych sytuacji. Z tym, że prąd płynąłby tak:

a) z Pin INPUT do GND, bo wyższy potencjał miałby INPUT

b) z 5V do INPUT, bo wyższy potencjał miałby 5V

 

Drugie pytanie dotyczy tego, co napisałeś o oporniku podciągającym w układzie z 5V. Dlaczego jest on tam potrzebny? Z tego, co czytałem to taki opornik ma 2 zadania: niwelować szumy przy przycisku ( tu nie ma przycisku, więc do tego nie jest potrzebny ) i aby ograniczyć prąd. Z tym, że to drugie to nie wiem, czy płynie i nie wiem jak duży. Może po coś jeszcze jest potrzebny?

Link do komentarza
Share on other sites

16 minut temu, Santiago napisał:

Zakłócenia nie pochodzą od przycisku tylko z otoczenia . Co do reszty to najlepiej przejdź kursy na Forbocie to wspaniały start w świat elektroniki i programowania.

Niestety nie potrafię znaleźć odpowiedzi na moje pytania. Co do zakłóceń to masz rację

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.