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
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
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.
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
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
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
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 / C++
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
