Drabinka rezystorowa – czyli jak podłączyć wiele przycisków do jednego złącza

Drabinka rezystorowa – czyli jak podłączyć wiele przycisków do jednego złącza

Czy zadaliście sobie kiedyś pytanie: a co gdy będę robił jakiś większy projekt z dużą ilością przycisków i zabraknie mi złącz? Niedawno wkroczyłem w grono szczęśliwych posiadaczy płytki Arduino UNO i też zadałem sobie to pytanie. 13 wejść cyfrowych + 5 analogowych – zbyt dużo do tego nie podłączę, a gdybym chciał np. zrobić jakąś klawiaturkę jako kontroler MIDI powiedzmy na 2 oktawy to mamy już 24 przyciski + dodatkowo kilka funkcyjnych. I tu z pomocą przychodzi mały „patent”…

Drabinka rezystorowa to element zbudowany z kilku takich samych rezystorów. Możemy kupić je w gotowych obudowach, bądź zrobić samemu ze zwykłych oporników.

Zasada ich działania jest podobna do potencjometru, z tym, że zamiast kręcić pokrętłem, rezystancję zmieniamy podłączając się do kolejnych nóżek. Można by zadać pytanie – „Po co takie coś? Do czego to mi się przyda? Nie lepiej dać potencjometr – w nim mam płynną regulację?”  Otóż podłączając sygnał przez taką drabinkę (sterując przepływem odpowiednimi przyciskami) do wejścia analogowego możemy dzięki zmianom napięcia odczytać który przycisk wcisnęliśmy. W teorii można by podłączyć aż 1022(!) rezystory, jednak w praktyce ciężko byłoby to wykonać ze względu na tolerancję oraz chociażby zależność rezystancji od temperatury.

Przykład mój zaprezentuje na prostym układzie składającym się z diody i trzech przycisków. Po naciśnięciu pierwszego dioda zamiga raz, drugiego, dwa, i analogicznie dla trzeciego – trzy.

Opublikuj swój projekt i odbierz 50% rabatu do wykorzystania w sklepie Nettigo.pl

Na początek schemat podłączenia. (Już poprawny)

Drabinka rezystorowa - czyli jak podłączyć wiele przycisków do jednego złącza

s1,s2,s3 – przyciski; p – potencometr; A0 – analogowe wejście nr 0; DIG4 – wyjście cyfrowe nr4; R – rezystory; LED – dioda led

Na początek napiszemy prosty program, dzięki któremu dowiemy się, jakie wartości są odczytywane gdy naciśniemy poszczególne przyciski.

kod

Ustawiamy potencjometr mniej więcej w połowie. Pozwoli nam to w przyszłości na ewentualną kalibrację.
Oczywiście możemy go równie dobrze pominąć. Odpalamy program i wciskamy po kolei przyciski.

Dzięki temu po wciśnięciu poszczególnych przycisków w SerialMonitorze uzyskamy coś takiego:

Drabinka rezystorowa - czyli jak podłączyć wiele przycisków do jednego złącza

Dzięki tym danym możemy zabrać się za pisanie kolejnego kodu, tym razem już wykonującego jakąś czynność – czyli w tym wypadku miganie diodą.

Drabinka rezystorowa - czyli jak podłączyć wiele przycisków do jednego złącza

Ze względu na to, że wartości zawsze będą miały jakąś małą granicę błędu, w warunkach zaznaczyłem, że wybieramy wartości z pomiędzy.

I to by było na tyle, program możemy modyfikować w zależności od naszych potrzeb (zmieniamy kod w warunkach if). Możemy też oczywiście dodać więcej przycisków,

dodajemy pary rezystor- przycisk oznaczone czerwonym prostokątem na pierwszym rysunku.

Miłej zabawy :)

wideo:

PS:Dobra, ze schematem były przeboje, ale dzięki Waszej interwencji wszystko powinno być już OK.

Ocena: 4.02/5 (głosów: 86)
Nettigo - patron działu Elektronika

Podobne posty

Regulator PID na arduino.

Regulator PID na arduino.

Witam wszystkich majsterkowiczów! Chciałbym przedstawić wam moje nagranie dotyczące realizacji regulatora PID przy użyciu arduino.Regulatory…

58 komentarzy do “Drabinka rezystorowa – czyli jak podłączyć wiele przycisków do jednego złącza

    • Autor miał na myśli rozdzielczość przetwornika ADC w AVR-kach. Niestety nie jest to prawda. Jak by nie zrobić takiego dzielnika, jeśli przełączników jest n to ilość kombinacji jest 2^n i tyle właśnie poziomów napięcia. Jeśli mają być odróżnialne od siebie dla mikrokontrlolera to w każdy fragment zakresu jego ADC musi wpadać dokładnie jedna wartość napięcia. Czyli dla rozdzielczości DAC 1024 mamy teoretycznie jedynie 8 przycisków. Teoretycznie również istnieje do tego drabinka, tyle, że inna, która wymaga od przycisku by przełączał masę i napięcie maksymalne. Zwykły przycisk zwierający styki to za mało, ale można to obejść wprowadzając mały błąd do idealnej drabinki. W praktyce jednak dochodzą szumy odczytu DAC, co oznacza, że liczba 8 jest teoretyczna. Przy pomocy filtrów programowych można podpiąć 6 przycisków co sprawdziłem. Może przy dokładnej drabince i 7 ale 8 to fikcja. Oczywiście daje to możliwość detekcji jednoczesnego wciśnięcia kilku przycisków w odróżnieniu od popularnych kombinacji z matrycami.

      Odpowiedz
  • Wybitnie bezsensowny sposob. Widac z reszta, nawet w tresci artykulu, ze trzeba jakies okraczne IFy na zakresy robic, bo nijak nie ma jednoznacznosci stanow. I to wciskajac kilkukrotnie w tych samych warunkach. A co, jak zmieni sie temperatura? Zapewne blad pomiaru wzrosnie.
    Dalej – przy seryjnej produkcji – to jeden rezystor bedzie mial 99,8Ohm, drugi 101,2 Ohm, a trzeci nominalne 100Ohm. Znowu czynnik wplywajacy na blad pomiaru.

    Dosyc standardowym sposobem multipleksowania przyciskow jest zbudowanie matrycy – wtedy wejsc jest co prawda koniecznych n*m, ale pozwala na jednoznaczna identyfikacje wcisnietego przycisku i jest niezalezna od humoru aury pogodowej i dostawcy czesci.

    Odpowiedz
    • Kolega jeszcze raz przeczyta artykuł bo autor ewidentnie wskazuje na problem ze zmianą temperatury i fakt, że „. . . a co gdy będę robił jakiś większy projekt z dużą ilością przycisków i zabraknie mi złącz? . . .” A „IFy” na zakresy i tak będą stosowane i tak ;] Nie ma rzeczy idealnych, a zabezpieczenia są potrzebne. Arduino ma po prostu „rozpoznać” przycisk zakładając, że rezystancja znajdzie się w ustalonym zakresie. A tak swoją drogą to matryce się stosuje i to z powodzeniem, natomiast kiedy już wejście nie ma służyć do obsługi przycisku, a np. do enkodera to aura pogodowa i nawet dostawca części Ci nie pomoże jak nie poradzisz sobie z zakłóceniami na złączach czy powszechnym szumem. A tu jest prosty przykład ćwiczenia i rozwoju z Arduino.

      Odpowiedz
  • witam, wystepowal u Ciebie ten drazniacy problem czyli efekt „Bounce” switcha ?? zrobilem, taki uklad – ogolnie dziala, no ale czasami musze po kilka razy kiknac…

    Odpowiedz
  • Arduino ma nie 13 tylko 14 złączy cyfrowych i 6 analogowych, poza tym złącza analogowe można wykorzystać jako cyfrowe, czyli mamy 20 złączy cyfrowych.
    Radzę się poduczyć z tematu AVRów, ponieważ Arduino, mimo, że ułatwia tworzenie układów nakłada też niektóre sztuczne ograniczenia, na przykład ATmega8 ma bodajże maksymalnie 23 piny do dowolnego korzystania(po przestawienia fusebitów i zastosowaniu wewnętrznego kwarcu) a Arduino Uno R3 (tylko) 14 cyfrowych i 6 wejsc analogowych.

    Odpowiedz
  • Nie jest to najlepsze rozwiązanie. Właśnie mam z tym problem w miniwieży JVC, gdzie panel przycisków rozwiązano w ten sposób. Okazało się, że z czasem styczniki przestały zwierać na zero omów i tym samym na wyjściu otrzymujemy sumę oporu przycisku i oporników z drabinki. Efektem tego jest błędna interpretacja przycisku.

    Odpowiedz

Odpowiedz

anuluj

Drabinka rezystorowa - czyli jak podłączyć wiele przycisków do jednego złącza

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?