logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

2-przewodowa klawiatura z użyciem timera 555

Kubald 15 Sie 2012 17:53 4599 12
  • 2-przewodowa klawiatura z użyciem timera 555

    Klawiatury są jednymi z najczęściej używanych interfejsów wejściowych w systemach mikroprocesorowych. W podstawowej konstrukcji przyciski klawiatury są ułożone w kolumnach i wierszach, aby ograniczyć ilość potrzebnych wyprowadzeń mikroprocesora. Dla przykładu, 12-przyciskowa klawiatura w układzie 4x3 „zużywa” 7 pinów mikrokontrolera. Kiedy przycisk zostaje zwarty, powstaje połączenie pomiędzy odpowiednim rzędem a kolumnom. Mikroprocesor musi skanować wszystkie rzędy/kolumny po kolei, aby stwierdzić, który przycisk został naciśnięty.

    2-przewodowa klawiatura z użyciem timera 555

    Poniżej przestawiono układ umożliwiający podłączanie klawiatury do mikroprocesora z wykorzystaniem jedynie dwu jego wyprowadzeń: jednego sygnalizującego fakt naciśnięcia klawisza i drugiego – przesyłającego informacje, który klawisz został wciśnięty. Układ bazuje na timerze 555 w konfiguracji multiwibratora astabilnego. Autor zapewnia, że ten sposób działa bardzo dobrze – do przetestowania wykorzystano układ z mikroprocesorem PIC16F628A i wyświetlaczem LCD, na którym pojawiają się informacje o naciśniętym klawiszu.

    Metoda bazuje na wykorzystaniu timera 555, którego częstotliwość wyjściowa opisana jest następującą zależnością:

    2-przewodowa klawiatura z użyciem timera 555

    Jeśli wartość R1 i C zostanie ustalona, częstotliwość impulsów będzie zależała od wartości R2. Dlatego też każdy klawisz w opisywanym rozwiązaniu powoduje przyłączenie różnych wartości R2 do układu i generowanie impulsów o różnych częstotliwościach. Mikroprocesor może ją określić i zdefiniować, który klawisz został naciśnięty:
    Kiedy przycisk zostanie zwarty, opornik R2 o określonej wartości włączany jest pomiędzy piny 7 (Discharge) i 6 (Treshold) timera 555, uzupełniając układ multiwibratora. Impulsy na wyjściu są zliczane przez procesor w czasie 100 ms. Procesor określa, który klawisz został naciśnięty poprzez zliczanie ilości przepełnień timera.

    Poniżej przedstawiono schemat układu i tabelę z wartościami R2 i odpowiadającymi im częstotliwościami impulsów.

    2-przewodowa klawiatura z użyciem timera 555
    2-przewodowa klawiatura z użyciem timera 555

    Ważne: dla bardziej niezawodnego działania należy użyć elementów o niższej tolerancji wartości w przypadku kondensatora C i rezystora R2. Autor w urządzeniu zastosował elementy o tolerancji 5%.

    W oryginalnym artykule autor szczegółowo omawia rolę poszczególnych elementów i sposób łączenia klawiatury z mikrokontrolerem. Kod dla procesora został napisany w języku C i jest dostępny do pobrania. Działanie kodu pokazano na przykładzie algorytmu:

    2-przewodowa klawiatura z użyciem timera 555

    Źródło

    Fajne? Ranking DIY
    O autorze
    Kubald
    Poziom 15  
    Offline 
    Specjalizuje się w: spektroskopia exafs/xanes, uc, it
    Kubald napisał 188 postów o ocenie 112. Mieszka w mieście Kraków. Jest z nami od 2004 roku.
  • #2 11213045
    karol17
    Poziom 15  
    No dobry patent , równie dobrze można by to chyba zrobić poprzez podłączenie do każdego switcha rezystora o różnych wartościach, i podciągnąć do zasilania, tylko ,że wymagało by to miernika który definiował by napięcia. Przy podzespołach o małej tolerancji można teoretycznie zrobić n guziczków na 2 kablach, tylko co jeśli trzeba nacisnąć kilka na raz :D ?
  • #3 11213133
    SylwekK
    Poziom 32  
    Trochę niepraktyczne... 100ms to długo, już szybciej się to zrealizuje na drabince + ADC. Poza tym w takim rozwiązaniu w zasadzie bardzo utrudniona jest sensowna realizacja rozpoznania krótki/długi wcisk. Mimo to na pewno są sytuacje gdzie rozwiązanie zda egzamin (np. przy Attiny 2313, który to nie posiada ADC).
  • #4 11213161
    Kubald
    Poziom 15  
    Taką klawiaturę można też podpiąć pod CPLD :-)
    Choć rzeczywiście możliwość odczytu naciśnięcia kilku klawiszy na raz albo długości wciskania klawisza jest ciężka do zrobienia...
  • #5 11213796
    MaThiR
    Poziom 16  
    Proponuję problem wciśnięcia kilku klawiszy na raz rozwiązać lutując do przycisków rezystory o takiej oporności, aby przy każdej kombinacji dostawać inną, unikatową rezystancję wypadkową. Wtedy obsługę interesujących nas kombinacji (będą to konkretne częstotliwości lub napięcia) moglibyśmy obsłużyć bez problemu :)
  • #6 11213820
    perlon
    Poziom 20  
    Super pomysł kolego MaThiR. Na moje oko dla klawiatury 4x3 tylko 4095 różnych rezystancji (częstotliwości) trzeba by było rozpoznać i obsłużyć.
  • #7 11213863
    MaThiR
    Poziom 16  
    Na moje oko też :wink: Możesz dodać kombinajcę 4096, kiedy żaden nie jest wciśnięty. Czyli wbudowany w AVR'y 16-bitowy timer do pomiaru długości okresu sygnału z NE555 powinien wystarczyć.
  • #8 11214625
    Kubald
    Poziom 15  
    Taka klawiaturka jest tylko do prostych rozwiązań, gdzie nie potrzeba obsługiwać dużej ilości przycisków/naciskania wielu na raz. Jak ktoś będzie miał potrzebę bardziej zaawansowanego rozwiązania, nie będzie się bawił w NE555 tylko sięgnie po gotowe rozwiązanie (i pewnie też tańsze) jak MAX7360 czy -7365...
  • #9 11214653
    Urgon
    Poziom 38  
    AVE...

    74HC165 + 74HC595 + 64 diody + 64 microswitche i można zrobić klawiaturę 8x8 identyfikującą kombinacje klawiszy. Kolejne takie zestawy i klawiatura może być dowolnie duża. Zużyje to maksymalnie 6 pinów plus zasilanie, choć można pewno zegary i piny Enable multipleksować. Więc dałoby się zrobić taką klawiaturę za pomocą ośmiopinowego mikrokontrolera, który wysyłałby do głównego dane o klawiszach szeregowo...
  • #10 11216326
    KJ
    Poziom 31  
    Najlepsze rozwiązanie 2/3 przewodowej klawiatury to dla mnie jest PCF8574P/AP lepsze nawet niż podpinanie klawiszy prosto pod piny uC. Dlaczego ? To proste - przy każdym naciśnięciu dowolnego klawisza podpiętego pod ten układ mamy od razu sygnał przerwania co z grubsza oznacza zwolnienie procesora ze sprawdzania czy został naciśnięty jakiś klawisz wystarczy tylko odczytać dane z i2c i wykonać odpowiednia akcję. Ktoś powie że odczytanie i2c trwa dłużej niż przemiatanie matrycy - owszem ale odczytuje tylko jak coś zostanie wciśnięte a nie cyklicznie tak jak odświeżanie normalnych klawiszy.
  • #11 11216731
    Urgon
    Poziom 38  
    AVE...

    Równie dobrze można poświęcić jakiś tani mikrokontroler by realizował takie funkcje. Można użyć jeden lub więcej układów 74HC595 i uzyskać klawiaturę 8x8, a nawet 8x256, jak ktoś się uprze, mając PIC16F628A...
  • #13 11219906
    Popak
    Moderator na urlopie...
    Ponieważ już istnieje taki sam temat, więc ten zamykam.
REKLAMA