Sensor dotykowy na AVR, udało się bez Qtouch library

IMAG0328W końcu udało mi się zmusić AVR’ki do odczytu dotykowych przycisków. Biblioteka Atmel Qtouch kusiła, ale za nic nie byłem wstanie jej rozgryźć, a o rozmiarze nie wspomnę. Poczytałem trochę teorii, znalazłem jakieś przykłady i udało się. Pierwszym efektem jest ten moduł. Jak działa w praktyce:

Jak działa w teorii:
Płytki czujników dotyku działają jak kondensatory, ładowane przez rezystor. Mikroprocesor ładuje ten układ RC, mierząc czas. Ponieważ R jest stałe, czas ładowania jest zależny od pojemności. Pojemność zmienia się gdy przykładamy palec – staje się on dielektrykiem. Aby układ działał, należy zadbać o kilka elementów:
-Pojemność takiego “kondensatora” jest bardzo mała. Aby wydłużyć czas ładowania, stosuje się rezystory o dużej wartości (ja użyłem z braku innych 10M, lepsze byłyby około 2-5M om).
-Jeden sensor wymaga jednego pinu do odczytu, i jednego do ładowania, z tym że ten drugi może obsługiwać jednocześnie wiele czujników.
-Czasy są tu bardzo niewielkie; nie ma po co używać funkcji opóźniających; sam obrót pętli pomiarowej jest wystarczająco długi.
-Zmiany pojemności są także niewielkie, dlatego ważne jest aby ta zmiana po przyłożeniu palca była możliwie duża. Dlatego płytki mają powierzchnię w postaci siatki, aby zmniejszyć ich własną pojemność. Wbrew intuicji, im większe pola sensorów, tym niekoniecznie lepiej.
-W takich układach bardzo ważne jest zastosowanie jak najkrótszych ścieżek, aby zmniejszyć szkodliwe pojemności.
-Ważne jest też wylanie dookoła masy, która będzie ekranować zakłócenia i stanowić drugą elektrodę kondensatora.
-Jak wynika z powyższego opisu, pomiar nie polega na wykryciu pojemności ludzkiego ciała względem ziemi, ani niczego takiego. Palec człowieka jest dielektrykiem w polu elektrycznym kondensatora utworzonego z pola czujnika i pobliskiego pola masy.

Download:

Tiny13_2x_touch_sources_firmware

tiny13_2x_touch

Mini płytka testowa ATMega8 AVR dla początkujących – jeszcze kilka słów

Płytka testowa jest bezpośrednią reakcją na informacje prezentowane na blogu mikrokontrolery.blogspot.com odnośnie startu z mikrokontrolerami AVR. Chciałem zaprezentować praktyczną i satysfakcjonującą realizację minimalistycznego podejścia do tematu nauki ich obsługi. Płytka wymaga znajomości podstaw elektroniki oraz umiejętności lutowania. Moim celem nie było zaprojektowanie układu, który wykona przedszkolak. Chciałem po pewnym czasie spędzonym z lutownicą mieć możliwość podłączenia do mikroprocesora maksymalnie łatwo jakiś peryferii, aby potem zająć się jedynie obsługą programową oraz oglądaniem efektów.

Bez lutowania można się obejść wtedy przez naprawdę długi czas. Ważne jedynie jest przygotowanie sobie odpowiednich “klocków” do zabawy. A są to w moim przypadku:

  • Wspomniana płytka testowa
  • Programator USBAsp z kabelkiem IDC10
  • Konwerter USB/RS232 zakończony kabelkiem z 4 oddzielnymi gniazdami goldpin (Vcc, GND, RxD, TxD)
  • Płytka stykowa
  • Różne kabelki zakończane wtykami i/lub gniazdami goldpin
  • Różne moduły

Dlaczego Atmega8A?

  • Bardzo dobry stosunek możliwości/cena (jak nie jeden z najlepszych wśród AVR)
  • Szeroki zakres zasilania (2,7-5,5V), nie ma problemów z konwersją napięć przy peryferiach na 3,3V.
  • Taktowanie do 16MHz. W końcowych rozwiązaniach trzeba dbać o oszczędność energii, ale w celach testowych zawsze lepiej mieć zapas mocy, a potem dopieszczać program.

Trwają prace nad podobną płytką, tylko z MCU w obudowie TQFP.

Drobna uwaga: płytka nie zawiera zabezpieczenia przed odwrotnym podpięciem zasilania. Jeśli będzie trzeba, dodam takowe w postaci diody Schottkiego oraz bezpiecznika polimerowego.