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

[Atmega8] długość ładowania kondensatora

lonerpl 07 Sty 2012 19:27 4037 12
REKLAMA
  • #1 10363403
    lonerpl
    Poziom 10  
    W załączniku zamieszczam prosty schemat. Jest to podłączenie pola dotykowego do mikrokontrolera w sposób jaki to robi Atmel w swojej technologii QTouch. Trzeba porównywać czasy ładowania samego kondensatora i pojemności gałęzi ( kondensatora+ewentualnie przyłożonego palca). Jednak jak ustawię wyprowadzenia na wejście i dam stan wysoki, to kondensator naładuje się praktycznie natychmiast. Mierzę w pętli while jak długo stan na pinie jest niski i wyświetlam TCNT0. Kondensator to rysunku, czyli 22nF, ładuje w 4-5 cykli procesora 8MHz. Wydaje mi się, że ten kondensator jest strasznie duży w porównaniu do dołączonej pojemności palca która ma kilka pF i która ma znacząco zmieniać czas ładowania. Zresztą, mam wrażenie że sposób w który to mierze jest zły, bo wystawiam stan wysoki i mierzę stan na wyprowadzeniu jednocześnie. A może w ogóle działa to w inny sposób? Jakieś sugestie?
  • REKLAMA
  • #2 10363480
    excray
    Poziom 41  
    Kosmos. Wszystko źle. Nawet jakby schemat był poprawny to powiedz mi jak chcesz zauważyć różnicę kilku-kilkunastu pF wynikających z przyłożonego palca jeśli dodatkowo mierzysz pojemność 22000000pF która samoistnie również się zmienia bo elektrolity tak mają? Poza tym jak już wspomniałem na schemacie gdzieś zgubiłeś opornik przez który ten kondensator się ładuje.

    Schemat z aplikacji ST:
    [Atmega8] długość ładowania kondensatora
  • REKLAMA
  • #3 10363533
    lonerpl
    Poziom 10  
    Tyle, że cały ten schemat jest Atmela z materiałów dot QTouch Library i podobno jak się użyje gotowego programu Atmela i odpowiednio się go skonfiguruje to działa. Od razu napiszę, że nie udało mi się tego uruchomić, dlatego kombinuje samemu z softem. W pierwszym poście miało chodzić o 22nF. Co i tak jest dużą różnicą.

    Układ z STM złożyłem i działa. Niestety muszę zrobić taki jak ma Atmel.
  • #4 10363687
    excray
    Poziom 41  
    To życzę powodzenia.
  • #5 10363938
    tmf
    VIP Zasłużony dla elektroda
    excray: trochę przeliczanie ci nie wyszło, 22nF to 22000pF, także trochę cię poniosło.
    lonerpl: zobacz notę AN1101 i podobne z microchipa. QTouch to nie tylko Atmelowy wymysł, z drugiej strony Atmel produkuje i mikrokontrolery ze zintegrowanym modułem QTouch i osobne kontrolery QTouch, może warto z nich skorzystać?
  • REKLAMA
  • #6 10364107
    lonerpl
    Poziom 10  
    To ja się pomyliłem na początku z tą pojemnością, także obliczenia kolegi wyżej są OK.

    Znam rozwiązania innych firm. Z tego co wiem to rozwiązania Atmela to: AVR + biblioteka atmela lub właśnie gotowy kontroler dedykowany dla takich klawiatur. Mi niestety nie udało się uruchomić AVR + biblioteki, a niestety muszę to tak zrobić jak na schemacie z AVRem, więc staram się własnym programem to uruchomić. Jakoś to Atmelowi działa, więc powinno dać się zrobić.
  • REKLAMA
  • #7 10364134
    Press
    Poziom 24  
    Polecam przeczytanie opisu jednego z mini projektów w bieżącej EP.
    Na jego podstawie udało mi się to uruchomić na układzie podobnym do podanego przez excray.

    Nie testowałem tego jeszcze w jakimś urządzeniu, ale na biurku i płytce prototypowej działa obiecująco.
    Do pomiaru czasu rozładowania testowanej pojemności zaprzężony jest jeden z timerów uP.
  • #8 10364293
    lonerpl
    Poziom 10  
    Zrobiłem poprzez ładowanie przez rezystor, ale problem w tym że MUSZĘ tak jak na schemacie w pierwszym poście.
  • #9 10364601
    excray
    Poziom 41  
    tmf napisał:
    excray: trochę przeliczanie ci nie wyszło, 22nF to 22000pF, także trochę cię poniosło.

    tmf: trochę nie na bieżąco jesteś. W pierwszym poście przed zmianą było 22uF więc nie wypowiadaj się w kwestii w której nie wiesz o co chodzi.

    lonerpl: Załącz link do kompletnego pdf'a z którego wziąłeś schemat może doczytamy o co chodzi.
  • Pomocny post
    #11 10365068
    excray
    Poziom 41  
    1. Zerujesz kondensator - PC1 i PB1 = OUT 0
    2. Ustawiasz na PC1 stan wejście wysokiej impedancji
    3. Ustawiasz na PB1 = OUT 1
    4. Czekasz kilka uS żeby się naładował kondensator złożony z dielektryka i ew. palca
    5. Ustawiasz na PB1 stan wysokiej impedancji
    6. Ustawiasz na PC1 = OUT 0
    7. Sprawdzasz czy na PB1 jest 1 logiczna. Nie? Wracasz do punktu 2
    Liczysz cykle. Jeśli jest przyłożony palec to na PB1 stan 1 ustali się po np. 50 takich cyklach, jeśli nie to po kilkuset albo nigdy dlatego w punkcie 7 warto dać sprawdzanie ilości cykli i po przekroczeniu ich założyć że palec nie został przyłożony i wracamy do punktu 1. Idea jest taka że ładujemy kondensator złożony z czujnika i palca i ładunkiem z tego kondensatora ładujemy kondensator wzorcowy Cs. Jeśli palec został przyłożony kondensator naładuje się szybciej. Jeśli nie to kondensator naładuje się później a może nawet nigdy.
  • #12 10365367
    janbernat
    Poziom 38  
    To nie palec ma pojemność- to jest pojemność całego ciała przeciętnego człowieka do masy.
    Stadardowo ma 150pF.
  • Pomocny post
    #13 10365888
    excray
    Poziom 41  
    janbernat napisał:
    To nie palec ma pojemność- to jest pojemność całego ciała przeciętnego człowieka do masy.
    Stadardowo ma 150pF

    Kolego swoją wypowiedź powyżej uprościłem ale niestety z Twoją również nie do końca się zgodzę, gdyż człowiek nie dotyka bezpośrednio elektrody ale dielektryka na tej elektrodzie. Więc pojemność w większości będzie zależała od powierzchni styku pod dielektrykiem, rodzajem i grubością dielektryka oraz powierzchnią palca na dielektryku co zazwyczaj daje tutaj kilka góra kilkanaście pF. Reszta czynników jest raczej pomijalna. Załączam zdjęcie z noty aplikacyjnej:
    [Atmega8] długość ładowania kondensatora
REKLAMA