Elektroda.pl
Elektroda.pl
X
Relpol
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Przycisk pojemnościowy dla Arduino

ghost666 15 Wrz 2015 15:20 6201 4
  • Przycisk pojemnościowy dla Arduino
    Przedstawiony poniżej poradnik, pokazuje w jak prosty sposób dodać można do modułu Arduino (lub podobnego, jak np. Raspberry Pi) przycisk pojemnościowy. Tego rodzaju przycisk może być dowolnego kształtu i rozmiaru i zamontowany może być w dowolny sposób na nieprzewodzącym podłożu. Czyni to go idealnym do integracji z rozmaitymi elementami o nietypowych kształtach czy wymiarach, jak na przykład klamka w drzwiach (co pozwoli na detekcję dotknięcia klamki przez człowieka).

    Warto pamiętać, że jeżeli brakuje nam zasobów w Arduino bardzo łatwo można przepisać zaprezentowany program na dowolny mały mikrokontroler - np. 8 pinowego PICa lub AVRa - i korzystać z tego jak z normalnego przycisku z pomocą jednej linii cyfrowej.

    Podstawy działania

    Podstawy pomiaru pojemności z wykorzystaniem Arduino opisane są bardzo dobrze na stronie https://www.arduino.cc/en/Tutorial/CapacitanceMeter, więc nie ma sensu ich tutaj powtarzać. Zasadniczo pomiar ten opiera się o pomiar czasu potrzebnego do naładowania mierzonej pojemności z cyfrowego wyjścia układu. Dwa elementy wpływają na ten czas - rezystor w układzie i badany kondensator. Im większa rezystancja i pojemność, tym dłuższy czas potrzebny jest na naładowanie układu do zadanej wartości.

    W prezentowanym układzie kondensatorem jest osoba dotykająca przycisk. Jeśli macie multimetr z opcją pomiaru pojemności, łatwo jest sprawdzić, że ludzka dłoń ma mierzalną pojemność - wystarczy w gniazdo kondensatora włożyć dwa druciki i złapać je dłońmi. Zmierzona pojemność jest niemała, w przypadku autora około 60 nF.

    Autor uprościł trochę algorytm, z uwagi na to, że nie potrzebny jest dokładny pomiar wartości pojemności użytkownika, a jedynie detekcja różnicy w czasie ładowania pojemności. Pozwoli to na wykrycie, kiedy przycisk został dotknięty. Zamiast wykorzystywać przetwornik analogowo cyfrowy lub precyzyjny pomiar czasu autor mierzy napięcie z pomocą wejścia cyfrowego i zlicza ile razy zdefiniowana w programie pętla zdąży się wykonać.

    Przełącznik

    Przycisk pojemnościowy dla Arduino Przycisk pojemnościowy dla Arduino






    W tym przypadku przełącznikiem jest coś metalowego. Cokolwiek, nawet goły drucik. W opisywanym projekcie autor wykorzystał kawałek metalowej taśmy na plastikowym, dielektrycznym podłożu. Do metalowej taśmy przylutował kabelek, który następnie umieścił w płytce stykowej.

    Można też wykorzystać inne materiały, np. samoprzylepną taśmę aluminiową, jednakże ciężko coś do niej przylutować, co znacznie utrudnia jej podłączenie do układu. Możliwości wykorzystania metalowych przedmiotów są ogromne (w granicach rozsądku), więc w zasadzie wszystko może pełnić rolę przycisku.

    Układ elektroniczny na płytce prototypowej

    Przycisk pojemnościowy dla Arduino Przycisk pojemnościowy dla Arduino Przycisk pojemnościowy dla Arduino


    Do złożenia układu potrzebne są:
    1 rezystor 1 MΩ,
    1 rezystor 220 Ω,
    Tranzystor NPN, np. BC547,
    Płytka stykowa i kilka kabelków,
    Moduł Arduino lub podobny.

    Autor d projektu dodał diodę LED zasilaną przez opornik (220 Ω) w celu wizualizacji działania przełącznika. Dioda podłączona jest do jednego z wyjść cyfrowych Arduino i nie oddziałuje w żaden sposób na układ.

    Kod programu

    Poniżej znajduje się kod programu napisany dla Arduino. Kod został przetestowany z Arduino Uno i działa bardzo dobrze.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Zasadniczo program realizuje kilka prostych kroków:

    Załącz pin ładowania (charge pin) - rozpocznie to ładowanie pojemności.
    Zliczaj ile pustych pętli wykona się do czasu naładowania (input pin przejdzie w stan wysoki).
    Wyłącz pin ładowania.
    Włącz pin rozładowania - rozładuje to pojemność przez opornik 220Ω.
    Wyłącz pin rozładowywania.

    Autor dodał w programie już debouncer przycisku, który pozwala uniknąć fałszywej detekcji naciśnięcia. Działa on bardzo prostu, odczekując po prostu 100 ms aby upewnić się, że przycisk na pewno został wciśnięty.

    Jedyne co trzeba w programie zmienić, to wartość LOOP_LIMIT. Szybszy procesor i wydajniejszy program wymagają wyższej wartości tej stałej. Jej wartość dobrać można eksperymentalnie.

    Żródło: http://www.instructables.com/id/Capacitive-Switch-for-Arduino/?ALLSTEPS


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Relpol
  • Relpol
  • #4 16 Wrz 2015 19:40
    japko1024
    Poziom 17  

    Myślę, że dałoby się to zrobić nawet analogowo. Równocześnie z badanym kondensatorem ładowałby się inny, wzorcowy, zawsze z taką samą prędkością. Zakończenie ładowania kondensatora badanego powodowałoby wykonanie pomiaru napięcia na wzorcowym - jeśli byłoby wyższe od zadanej wartości, na wyjściu układu pojawiałby się sygnał 1, a jeśli nie - 0. Do pomiaru napięcia na obu kondensatorach można zastosować np. komparator lub przerzutnik Schmidta.
    Inny sposób to podłączenie "przycisku" do bazy jakiegoś tranzystora i pomiar przepływającego prądu (po przefiltrowaniu filtrem dolnoprzepustowym). Kiedy do wejścia AUX radia podłączy się kabel z wolną końcówką, słychać buczenie, a po dotknięciu jej jest jeszcze głośniejsze.

  • #5 17 Wrz 2015 08:26
    michcior
    Poziom 30  

    @Urgon,
    Racja, im to wyszło przez przypadek, i myślę że większość przetworników ADC można tak wykorzystać.
    Nie mniej, nota Microchipa to tylko zarys, żeby to działało potrzebowałem bardzo rozbudować algorytm o filtracje, histerezy i auto-strojenie (dopasowanie do wielkości sensora) bo układ mierzy zmianę pojemności.

    60nF? Chyba pF, Tu nie chodzi o pojemność kondensatora tylko ładunku. Takie układy działają nawet jak się podskoczy i dotknie będąc w powietrzu. W rozwiązaniu PIC'a mamy dzielnik pojemnościowy, pojemność bramki i wejścia ADC to ok 15pF więc poruszam się w zakresie pF!