Czy istnieje sposób, aby Arduino lub inny Mikrokontroler wykrył zmianę pojemności?
Mam na myśli ekran, który włącza się tylko po dotknięciu metalowej klamki.
Czy istnieje sposób, aby Arduino lub inny Mikrokontroler wykrył zmianę pojemności?
Mam na myśli ekran, który włącza się tylko po dotknięciu metalowej klamki.
Odpowiedzi:
Tak.
Najprościej byłoby użyć rezystora o wysokiej wartości (1-10M) i postępować zgodnie z instrukcjami na tym starym postu na forum arduino: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1171076259
Oto samouczek http://www.nerdkits.com/videos/halloween_capacitive_touch_sensor/
Rzeczywisty czujnik użyty do wykrycia obecności ręki jest szczegółowo wyjaśniony na filmie, ale tutaj jest przegląd. Nasz czujnik działa na tej samej zasadzie, że pojemnościowy czujnik dotykowy działa na touchpadzie laptopa. Te pojemnościowe czujniki dotykowe działają w oparciu o założenie, że ludzie są głównie wodą. Kiedy zbliżysz się do pola elektrycznego, zmień pojemność na tyle, aby być zauważonym przez czujnik.
W naszym systemie ustawiliśmy równolegle obwód RC z kondensatorem i rezystorem. Używamy MCU do ładowania kondensatora do 5 V (cyfrowe wysokie napięcie). Następnie przekształcamy pin w pin wejściowy, który zasadniczo rozłącza ten węzeł. Umożliwia to rozładowanie kondensatora przez rezystor. Czas potrzebny do rozładowania kondensatora będzie związany z wartością rezystora pomnożoną przez pojemność. Wybieramy wartość rezystora wystarczająco dużą, aby stała czasowa RC była wystarczająco długa, abyśmy mogli zmierzyć za pomocą MCU. W tym przypadku 100 000 omów działało świetnie. Czujnik w tym przypadku to dwa arkusze folii aluminiowej, jeden podłączony do styku MCU, a drugi do GND. Te dwa arkusze tworzą kondensator, który nasz MCU ładuje i rozładowuje. Kiedy dłonie poruszają się między dwoma arkuszami, zmienia to pole elektryczne, i dlatego pojemność naszego urządzenia z folii cynowej. Kondensator potrzebuje zatem więcej czasu na rozładowanie, co jest wykrywane przez kod naszego mikrokontrolera!
Jednym z najlepszych sposobów pomiaru pojemności jest użycie obwodu RC. Użyj cyfrowego portu we / wy mikroprocesora, aby naładować i rozładować czujnik pojemnościowy przez stały rezystor. Uruchom licznik czasu po rozpoczęciu cyklu ładowania / rozładowania. Następnie użyj komparatora do wykrycia, kiedy kondensator jest w pełni naładowany / rozładowany. Zatrzymaj stoper, gdy zadziała komparator. Wartość przechowywaną w zegarze można następnie wykorzystać do obliczenia pojemności czujnika.
Nie jest to odpowiedź specyficzna dla Arduino, ale Microchip ma wyjaśnienie jednego ze sposobów wykonania tego na PIC - który prawdopodobnie działałby na AVR
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en545264
Jedynym problemem związanym z tymi metodami jest brak ochrony przed wyładowaniami elektrostatycznymi
Pojemnościowy czujnik dotykowy można wykonać bez dodatkowego sprzętu. Sztuczka polega na tym, aby umożliwić wewnętrzne wyciągnięcie cyfrowego styku i policzyć cykle procesora potrzebne do wyciągnięcia styku.
Kod i wyjaśnienie: http://playground.arduino.cc/Code/CapacitiveSensor
Wolę zabrać analogową część pracy mikrokontrolerowi, używając testowanego kondensatora jako części oscylatora, a następnie kontrolera do pomiaru szerokości pauzy. To dodatkowa część, ale dzięki temu uzyskałem lepsze wyniki.