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

Przyciski dotykowe jak rozwiązać czas odświezania klawiszy.

ElektroTME 18 Paź 2009 22:06 5481 23
REKLAMA
  • #1 7145966
    ElektroTME
    Poziom 14  
    Witam,

    Ostatnio kombinowałem z avr'ką i chciałem zrobić sobie klawiaturę dotykową.
    Idea jest prosta, klawiaturka, a raczej płytka z "przyciskami" w formie niewytrawionej miedzi (i podświetlenie od spodu), połączona z drugą płytką "bazową".

    Przyciski dotykowe jak rozwiązać czas odświezania klawiszy.
    (po lewej nadruk na płytkę, białe plamki obok cyfr to otwory przez które połącze pola przycisków z płytką bazowa)

    ale zanim zrobię płytkę muszę przetestować moje przyciski na dotyk i tu pojawił się problem, a mianowicie po takim połączeniu:
    Przyciski dotykowe jak rozwiązać czas odświezania klawiszy.
    (r1..r4 = 1,2k c1..c4 = 1nF ppx -> Pole przycisku)

    wszystko działa szybko ale dla max 2 przycisków.
    (dodam że korzystam z funkcji "getrc()" w języku BascimAVR)

    Czyli program mierzy po kolei czas rozładowania kondensatorów, im krótszy tym odświeżanie przycisków jest szybsze. Czas przy dobraniu "eksperymentalnie" wartości kondensatorów i rezystorów wynosi 5, po dotknięciu palcem do "pola przycisku" wartość ta spada do 4, czyli praktycznie mam sprawę załatwioną.
    Pozostaje tylko problem czasu odświeżania przycisków, który wydłużył się 5 krotnie dla 10 przycisków.

    Pytanie jest takie, jak prosto wykonać taki czujnik, aby jego próbkowanie było na tyle szybkie żeby można było szybko wpisać "kod dostępu" na danej klawiaturce?
    Albo jak połączyć tą klawiaturkę aby działała na tej samej zasadzie, czyli była dotykowa?

    (chcę tą klawiaturkę zastosować w moim przyszłym zamku kodowym do szafki ze skarbami :D )


    inventco.eu - poprawiłem tytuł. Regulamin p.11.1.
  • REKLAMA
  • #2 7146054
    globus
    Poziom 24  
    Może warto zmienić podejście i oprzeć detekcję na zmianie rezystancji na danym porcie? Pomiar taki nie ma stałych czasowych tylko sprawdzenie chwilowych wartości napięcia na przetworniku. Wrto też pomyślec o uodpornieniu go przed zabrudzeniem i powolnym zmianom które mogą wystąpic. Zam zdecyduj jak to dalej pociagniesz.
  • #3 7146092
    ElektroTME
    Poziom 14  
    Czyli mam wykorzystać wbudowane przetworniki analogowo-cyfrowe i czy dotknięcie palcem do pola przycisku spowoduje znaczną zmianę rezystancji, ciekawe też jak to będzie reagowało na zmiany temperatury?
    A może da się zrobić jakiś prosty układ dla jednego przycisku, który to by miał wyjście cyfrowe i po przekroczeniu danej rezystancji generowałby "1" lub też "0"? No i jakoś wpływ zmian temperatury wyeliminować?
  • #4 7146274
    globus
    Poziom 24  
    Raczej coś pomiędzy jednym a drugim, pierwszy przypadek to niewykonalny w takim przetworniku i przy rezystancjach z jakimi ma sie do czynienia . w drugim stracisz możliwość programowego eliminowania zakłóceń w całości zdając się na zastosowany układ. Potrzebny Ci przetwornik rezystancji na napięcie z zakresu przetwarzania tego przetwornika.


    inventco.eu - regulamin p.15. Tym razem poprawiłem.
  • #5 7148436
    ElektroTME
    Poziom 14  
    Czyli wykorzystać ADC i przetwornik rezystancji, zapewne da się połączyć to matrycowo 4x3 i multipleksować.
    Najgorszy jest w tym ten przetwornik, w sprzedaży niema czegoś takiego(przynajmniej nie znalazłem), a nie bardzo wiem jak to samemu wykonać.
    Macie jakieś wskazówki, schematy?
  • #6 7148673
    m.bartczak
    Poziom 16  
    Możesz użyć pary Darlingtona, jak np. na poniższym schemacie:

    Przyciski dotykowe jak rozwiązać czas odświezania klawiszy.

    To jest jeden ze sposobów (prosty) wykonania włącznika dotykowego, wymaga niestety dwóch kontaktów.

    ((obrazek wzięty ze strony http://www.kpsec.freeuk.com/trancirc.htm))
  • #7 7149056
    ElektroTME
    Poziom 14  
    Właśnie, jeżeli miałbym zrobić to na dwóch kontaktach dla przycisku to problemu by nie było. Ja chcę zrobić przycisk(i) na jednym kontakcie i tu zaczynają się schody.
    Ma ktoś jeszcze jakiś pomysł?
  • REKLAMA
  • Pomocny post
    #8 7149287
    kordirko
    Poziom 22  
    Tu masz opis jak to zrobić z jednym rezystorem 500K i wprost na porcie procesora (bez upll-upa)
    http://www.bytecraft.com/Touch_Sensitive_Switch
    Dodaj do tego multiplexer 4051 i na 4 pinach procka zrobisz 8-mio klawiszową klawiaturę, a 9-ty klawisz na 5-tym pinie.
  • #9 7149356
    ElektroTME
    Poziom 14  
    Czyżby to było aż takie proste?
    Czyli mogę zrobić 12 oddzielnych przycisków na 12 pinach dowolnych portów, wykorzystując tylko 12 rezystorów?
  • #10 7149394
    kordirko
    Poziom 22  
    Czy proste to nie wiem - facet pisze że mu to działa .... pisać każdy może ;)
    Przetestuj i napisz co ci wyszło
  • #11 7149623
    ElektroTME
    Poziom 14  
    przetestowałem tą wersję z jednym przyciskiem(r do masy)
    Przyciski dotykowe jak rozwiązać czas odświezania klawiszy.
    i powiem tak,
    rezystancję trzeba będzie dobrać eksperymentalnie w zależności jak duże jest pole stykowe przycisku,
    u mnie palec w odległości ok 3-4cm wywoływał załączenie więc muszę tę rezystancję zwiększyć i to o dużo,
    bo załączenie ma następować przy dobrze dotkniętym klawiszu, a nie przy przeciąganiu palcem nad nim.
    Jak zakupię potencjometry montażowe (myślę że lepsze będą potencjometry ponieważ ustawię sobie
    załączanie tak samo dla każdego przycisku) 1M lub większe to przetestuję dla kilku klawiszy,
    co do czasów działania to problemu nie będzie bo teraz działa b. szybko, a jak jeszcze zoptymalizuje kod
    to może coś z tego wyjdzie :)
  • #12 7150057
    Dr.Vee
    VIP Zasłużony dla elektroda
    A nie lepiej skrócić czas oczekiwania na przełączenie pinu? Ile czasu czekałeś zanim ponownie sprawdziłeś stan pinu?

    Pozdrawiam,
    Dr.Vee
  • REKLAMA
  • #13 7150315
    ElektroTME
    Poziom 14  
    Jeżeli chodzi o kod dla ostatniego rozwiązania:
    
    Do
    
    Config Porta = Output
    Porta = 0
    Waitms 1
    
    Config Porta = Input
    Waitus 5
    
    If Pina.0 = 0 Then
    Sound Portc.7 , 150 , 520
    End If
    
    Loop
    

    Tutaj jeszcze będę mógł zoptymalizować kod pod względem czasu odświeżania wszystkich przycisków.



    Jeżeli natomiast mówisz o moim pierwszym rozwiązaniu z wykorzystaniem funkcji getrc() to tam skrócić czasu nie mogłem, ponieważ funkcja mierzy czas rozładowania kondensatora, im większa pojemność tym więcej tego czasu upłynie, a nawet czasy o wartości 4-5 były zbyt ogromne, nie mówiąc już o tym że niewykonalne było by uzyskanie czasu 2 i spadku po dotknięciu na czas = 1, ponieważ spadek czasu osiągał max 40%.
  • #14 7150319
    kordirko
    Poziom 22  
    ElektroTME napisał:
    przetestowałem tą wersję z jednym przyciskiem(r do masy)
    i powiem tak,
    rezystancję trzeba będzie dobrać eksperymentalnie w zależności jak duże jest pole stykowe przycisku,
    u mnie palec w odległości ok 3-4cm wywoływał załączenie więc muszę tę rezystancję zwiększyć i to o dużo,

    Poczytaj dokładnie jak gość to zrealizował - to nie jest przycisk "dotykowy" ale "zbliżeniowy",
    on tam pisze że na piny jest nałożona plastikowa izolacja żeby nie można było dotknąć przycisku
    (i słusznie - jak dotknie ktoś w nylonowym sweterku naelektryzowany do 5kV,
    to przeskoczy iskierka i procesor pójdzie do krainy wiecznych bitow),
    a reguła pomiaru oparta jest na różnicach pojemności - palec w pobliżu wprowadza dodatkową dużą pojemność do układu
    (dużą w stosunku do pojemności płaszczyzny przycisku do masy)
    i ładunek z tej "malutkiej pojemności" przechodzi do "dużej pojemności palca" obniżając napięcie na tej pojemności (i na pinie procesora).
    Zamiast zwiększać rezystor, należy tam raczej dodać jakiś kondensator do masy (kilka-kilkanaście pF).
  • #15 7150386
    ElektroTME
    Poziom 14  
    Aha, czyli na panel z przyciskami grubsza folia, a między rezystor a masę jeszcze kondensatorki (kilkanaście pF).
    Masz racje, tak zrobię :)
  • #16 7150549
    ShEvU_elektro
    Poziom 25  
    Jest sens dłubać? Spójrz na to :)

    Link
  • #17 7151101
    ElektroTME
    Poziom 14  
    Fajne układy, nawet obsługa dotykowego suwaka, jednak ja pozostanę przy moim rozwiązaniu, ponieważ bardziej jestem Ciekawy jak zadziała to z rezystorami niż pójście na łatwiznę i wykorzystanie jednego układu.
    Nie mówię że w przyszłości nie skuszę się na budowę klawiatury właśnie z takim układem.
    Dzięki za link ;)
  • #18 7151448
    Freddy
    Poziom 43  
    Jest jeszcze coś takiego jak Proximity Capacitive Touch Sensor Controller MPR084 i inne z tej rodziny, produkcja Freescale i cena bardziej przystępna, bo około 2 Euro.
  • #19 7522702
    kubiaczek1982
    Poziom 12  
    Podłącze sie do tematu. Ja potrzebuje coś dotykowego właśnie. Ma ktoś może jakiś pomysł jak to rozwiązać na98s52?
  • #20 7522994
    seba_x
    Poziom 31  
    kubiaczek1982 napisał:
    Podłącze sie do tematu. Ja potrzebuje coś dotykowego właśnie. Ma ktoś może jakiś pomysł jak to rozwiązać na98s52?


    Może QRD1114 ?
  • #21 7523147
    kamyczek
    Poziom 38  
    Proponuje zerknąć na stronę ATMELA jest tam bezpłatna biblioteka
    Qtouch libary dla AVR:Link
  • REKLAMA
  • #22 7525836
    kubiaczek1982
    Poziom 12  
    QRD1114 odpada, ponieważ to ma załączać/rozłączać obwód z dotkniętym halogenem. Co do stronki atmela to mógłbyś podać bezpośredni link? Dość słabo znam angielski i przeszukanie tego wszystkiego nie napawa mnie optymizmem.
  • #23 7525866
    kamyczek
    Poziom 38  
    Może tak :Link trzeba tylko wypełnić formularz.
  • #24 7528199
    seba_x
    Poziom 31  
    kubiaczek1982 napisał:
    QRD1114 odpada, ponieważ to ma załączać/rozłączać obwód z dotkniętym halogenem. Co do stronki atmela to mógłbyś podać bezpośredni link? Dość słabo znam angielski i przeszukanie tego wszystkiego nie napawa mnie optymizmem.


    nie widzę problemu , ja też aktualnie zajmuję się podobnym tematem , u mnie QRD1114 załącza optotriaka i triaka a potem są już halogeny (300wat)
REKLAMA