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

Jak odczytać wciśnięty klawisz z zewnętrznej klawiatury 32 klawisze?

Cover 08 Lis 2004 16:53 2676 10
REKLAMA
  • #1 970314
    Cover
    Poziom 11  
    Posty: 14
    Witam
    Zastanawiam się nad rozwiązaniem problemu sterowania siłownikami przez pc.
    Rozwiązałem problem wyjścia. Port lpt steruje optotriakami.
    Zbudowałem odpowiedni program, który powinien sterować urządzeniami wg ustalonego cyklu, a wybór cyklu odbywa się z zewnętrznej klawiatury 32 klawisze. Nie jestem pewien jak rozwiązać czytanie który klawisz został wciśnięty.
    Jak rozwiązać problem szybkości, ponieważ jeśli komputer będzie zajęty wykonywaniem danej sekwencji na wyjściu (pracuje w pętli) to nie będzie mógł przeczytać informacji na wejściu (który klawisz został wciśnięty.
    Chciałbym jak najwięcej rozwiązać sprzętowo. Który port ma czytać klawiaturę, czujniki, a który wysyłać rozkazy do triaków.
    Zastosowanie sterowników programowalnych odpoada w moim przypadku (cena i umiejętność ich programowania)
    Jeśli ktoś z Was, grupowicze elektronicy ma doświadczenie w tej dziedzinie, to proszę o kontakt.
    pozdrawiam Robert
  • REKLAMA
  • #2 970340
    Paweł Es.
    VIP Zasłużony dla elektroda
    Posty: 6981
    Pomógł: 1236
    Ocena: 693
    Klawisze obsługuje się w przerwaniach tzn. Układ kontroli klawiatury wysyła przerwanie do komputera, który odczytuje kody klawiszy z bufora układu kontroli. Jest taki gotowy scalak 8279

    http://www.aldec.com/IP_Services/Datasheets/8279.pdf

    Ma on wyjście równoległe.

    Można też zrobić klawiaturę przeglądaną przez jakiś mikrokontroler (Atmel albo inny) wysyłający dane szeregowo przez port COM.

    Jeszcze prostsze to zrobić odejście z klawiatury PC-ta z wykorzystaniem rzadko uzywanych kodów klawiatury.
    Układ zewnętrzny czytający 32 klawisze steruje kluczami cmos zwierającymi odpowiednie wiersze i kolumny klawiatury i wymulujący wciskanie klawiszy (np. kody z jednocześnie wciśniętym Ctrl i Alt).

    Sekwencja:

    Wciśnięcie:

    zewrzyj Ctrl
    zewrzyj Alt
    zewrzyj Klawisz_jeden z 32
    czas 0.2 s

    Zwolnienie
    zwolnij klawisz
    zwolnij Alt
    zwolnij Ctrl.

    W Pc odczyt jak z normalnej klawiatury.
  • #3 970918
    Cover
    Poziom 11  
    Posty: 14
    Hi!
    Podoba mi się pomysł z przeglądaniem klawiatury i wysyłaniem na com.
    Nie dodałem, iż chodzi mi o laptopa. Dlatego też montaż czegokolwiek na elestyczne paski wewnątrz byłby palcem na wodzie pisanym połączeniem.
    Jednakże jeśli wykorzystałbym zwykłego pc to najprostrzym rozwiązaniem byłoby podłączenie do klawiatury. Dobry pomysł! Dziękuję - nie pomyślałem o takim rozwiązaniu.
    Projekt będę musiał zamontować w kilku maszynach, dlatego też pewnie dopracuję i kilka razy będę zmieniał sposób czytania klawiatury.
  • REKLAMA
  • #5 976301
    _jta_
    Specjalista elektronik
    Posty: 49109
    Pomógł: 3212
    Ocena: 4254
    a jaka ma byc do tego klawiatura, co ona juz umie?
    raczej nie warto konstruowac sterowania klawiatury od podstaw,
    lepiej wziac stara klawiature od PC; wystarcza dwie linie, zeby
    odczytywac nacisniecia i puszczenia 83 lub wiecej klawiszy.
  • REKLAMA
  • #6 976514
    Cover
    Poziom 11  
    Posty: 14
    Witam
    Dzięki za linki Neuron !
    Hall 2002 to niezły projekt. Właściwie to co robię jest zbliżone.
    W programie zastosowałem możliwość programowania wykonywanych funkcji bez konieczności zmian w oprogramowaniu.
    Klawiatura (_jta_) jet to zestaw przełączników różnego typu i przeznaczenia. Część z nich ma być wykożystana do wstępnego wyboru funkcji, część do natychmiastowego uruchomienia mechanizmu, a część np. to awaryjnego zatrzymania. Dodatkowo jako przyciski nazwałem małe moduły czujników wysyłających informację jako 1 lub 0 (fotoelementy, termoelementy, czujniki promieniowania itp.). Finalnie ma być ok 167 klawiszy dla całej maszyny i ok 35 elementów czujnikowych, oraz 56 elementów sterowanych.
    Cała maszyna posiada elementy nie zawsze uruchamiane. Dlatego też operator przed startem ustawia przełącznikami AUTO (jeśli ma się włączyć w czasie i wg ustalonego programu) MANUAL (jeśli operator chce natychmiast włączyć element) Null jeśli ma element być niewrażliwy na rozkazy komputera.
    Panowie, w załączniku screeny z niedokończonej jeszcze aplikacji.
    Widać jednak w pliku programowanie.jpg że można zaprogramować 9 poleceń (np sprawdzenia czujników i stanu klawiszy przed zezwoleniem na start) i max 12 poleceń nastawów czasowych dla każdego sterowanego elementu.
    Załączniki:
    • Jak odczytać wciśnięty klawisz z zewnętrznej klawiatury 32 klawisze? kontrola.jpg (16.13 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Jak odczytać wciśnięty klawisz z zewnętrznej klawiatury 32 klawisze? klawisze.jpg (15.04 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Jak odczytać wciśnięty klawisz z zewnętrznej klawiatury 32 klawisze? programowanie.jpg (24.32 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #7 977709
    _jta_
    Specjalista elektronik
    Posty: 49109
    Pomógł: 3212
    Ocena: 4254
    Czyli masz miec ponad 200 sygnalow, i rozumiem, ze masz zrobic cos, co je pozbiera;
    mozna zrobic matryce diodowa 16x16, i teraz albo znalezc mikrokontrolor, ktory by mial
    16 wyjsc, 16 wejsc, i jeszcze pare sygnalow do komunikacji z PC, albo dalej kombinowac
    z multiplekserami i demultiplekserami, zeby uzyc mniej linii wejscia/wyjscia tego
    mikrokontrolera; moze mialoby sens dac demultipleksery na 32 wyjscia, matryca 32x8,
    odczyt 8 sygnalow - bedziesz na to potrzebowal 13 linii, wiec wystarczy mikrokontroler,
    ktory ma 16 linii (w tym 10 wejsciowych, 6 wyjsciowych). Czy moze chcesz to zrobic bez
    mikrokontrolera, na samych ukladach sredniej skali integracji?
  • #8 978169
    Cover
    Poziom 11  
    Posty: 14
    Witam!
    Od długiego czasu zabieram sie do przyswojenia sobie programowania µP, ale nic z tego. Zawsze brakuje czasu.
    Dlatego niestety siedze i obmyslam nad wykorzystaniem cyfrowki.
    Przedstawiam swoj projekt, aby podzielic sie doswiadczeniem i poprosic o komentarze, sugestie, rady.
    pozdrowienia
  • #9 978619
    _jta_
    Specjalista elektronik
    Posty: 49109
    Pomógł: 3212
    Ocena: 4254
    Oglądam i oglądam, i nie mogę wypatrzeć tego projektu.

    Jak robić na cyfrowych, to można by zacząć jakoś tak: multiplekser i demultiplekser
    po 16 wejść/wyjść, między każde wyjście a wejście można włączyć przełącznik
    z diodą (może Schottky, żeby nie za duży spadek napięcia, katodą do wyjścia; diody
    są po to, żeby prąd nie mógł popłynąć przez kilka wyłączników szeregowo - jak są, to
    zawsze któraś będzie zaporowo); demultiplekser daje 0 na jednym wyjściu, ono (0)
    przechodzi przez wyłącznik na wejście multipleksera, jeśli to jest akurat aktywne, to
    dostajesz sygnał na wyjściu multipleksera; multiplekser i demultiplekser dostają
    adresy z dwóch liczników 4-bitowych, w ten sposób układ daje liczbę 8-bitową, która
    jest numerem wyłącznika, i sygnał 0/1, który określa stan tego wyłącznika; dalej
    trzeba by jakoś zapamiętywać stany, i badać, które się zmieniły - do tego to już
    przydałaby się jakaś pamięć - najlepiej statyczna o organizacji 256x1; jeśli stan
    aktualny różni się od stanu w pamięci, to wysyłać aktualny stan i numer wyłącznika
    do komputera... trochę tylko niewygoda, że to razem 9 bitów, od biedy mozna by
    przez COM-a, stan przełącznika jako bit parzystości i rozpoznawać parity error.

    Nie jest to strasznie skomplikowane - choć i nie takie proste, żeby to były "cztery
    kości na krzyż" - liczniki, multi/demultipleksery to 6 kości, do tego generator (no,
    może być w jednej kości z licznikiem 7-bitowym - ale taki będzie dośc wolny),
    pamięć, parę bramek/przerzutników, i może taki chip portu szeregowego, najlepiej
    żeby nie wymagał programowania, tylko sygnałów podanych na stałe na nóżki - są
    jakieś takie - w sumie wychodzi z 11-12 kości.
  • #10 980009
    Cover
    Poziom 11  
    Posty: 14
    Witaj!!
    Właśnie nabyłem, drogą kupna 74150 i zamierzam połączyć dwa.
    Jeśli każdy czyta 10 x klawisz to stosując dwa -jeden czyta wiersze a drugi kolumny - mamy 10 x 10 = 100 klawiszy kontrolowanych.
  • #11 987060
    _jta_
    Specjalista elektronik
    Posty: 49109
    Pomógł: 3212
    Ocena: 4254
    Ale 74150 to multipleksery, i będziesz jeszcze potrzebował demultipleksera (np. 74154);
    jak podasz z demultipleksera sygnał dla kolumny, a na multiplekserze odbierasz go
    w jakimś rzędzie, i masz szeregowo włączone diody, to wiesz, że na przecięciu rzędu
    i kolumny jest włączone; przy innych układach możesz mieć falszywe sygnały
    - jeśli nie dasz diód (bo wtedy trzy odpowiednie wyłączniki załączone razem generują
    przejście tak, jakby był włączony czwarty), lub jak używasz tylko multipleksera
    (bo jak wlączysz wyłączniki kolumna1/rząd1 i kolumna2/rząd2, to sygnał masz taki sam,
    jakbyś włączył kolumna1/rząd2 i kolumna2/rząd1) - czy może masz pomysł na jakiś
    inny układ, niż multiplekser+demultiplekser, który będzie działał?

    Aha, 74150+74154 (po 1) pozwalają obsługiwać do 256 przełączników :)
    Również 256 przełączników obsłużą 2*74150+74155 - ale to zbędna komplikacja.
    Tylko jeszcze potrzebne są liczniki, pamięć...

Podsumowanie tematu

✨ Dyskusja dotyczy problemu odczytu wciśniętych klawiszy z zewnętrznej klawiatury 32-klawiszowej do sterowania siłownikami przez komputer PC, przy jednoczesnym zachowaniu płynności działania programu sterującego wyjściami portu LPT. Proponowane rozwiązania obejmują obsługę klawiatury za pomocą przerwań, wykorzystanie dedykowanego układu kontrolera klawiatury 8279 z wyjściem równoległym, a także zastosowanie mikrokontrolera (np. Atmel) do skanowania klawiatury i przesyłania danych szeregowo przez port COM. Wskazano również możliwość symulowania wciskania klawiszy PC poprzez sprzętowe zwieranie linii klawiatury z kombinacją klawiszy Ctrl i Alt. W kontekście dużej liczby sygnałów (ok. 200) sugerowano budowę matrycy diodowej 16x16 lub 32x8 oraz wykorzystanie multiplekserów i demultiplekserów (np. 74150, 74154) do odczytu wielu klawiszy przy ograniczonej liczbie linii wejścia/wyjścia. Podkreślono konieczność stosowania diod Schottky w matrycy, aby uniknąć fałszywych sygnałów. Autor projektu preferuje rozwiązania sprzętowe bez użycia programowalnych sterowników ze względu na koszty i brak doświadczenia w programowaniu mikrokontrolerów. Wskazano także na możliwość wykorzystania starej klawiatury PC, która umożliwia odczyt ponad 80 klawiszy na dwóch liniach. Całość projektu ma służyć do sterowania rozbudowanym systemem z wieloma klawiszami i czujnikami, z podziałem na tryby AUTO, MANUAL i Null.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA