Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 25 gru 2024, o 23:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 15 lip 2015, o 12:48 
Offline
Użytkownik

Dołączył(a): 01 cze 2015
Posty: 30
Pomógł: 2

Obrazek
Witam wszystkich.

Pracując nad projektem wykorzystuję klawiaturę membranową 4x4. Do tej pory łączyłem ową klawiaturę do uC wykorzystując 8 pinów uC.
Czytając niebieską książkę natknąłem się na rozdział 4.8.1 o klawiaturze analogowej.
Postanowiłem wykorzystać pomysł i zastosować w moim projekcie.

Założenia:
- wykorzystanie klawiatury 4x4 (16 przycisków)
- minimalne wykorzystanie pinów
- wybudzenie uC z uśpienia

Schemat:
Obrazek

Podłączona klawiatura do zestawu ATB:
Obrazek
Obrazek

Działanie:

Objaśnienie co jest na wyświetlaczu:
U: [mierzone_napięcie] V [minimalny_adc]
C: [licznik] [mierzone_adc] [maksymalne_adc]

ObrazekObrazekObrazek
ObrazekObrazekObrazek

Przy założeniu, że napięcie nie będzie się zmieniać klawiatura działa bardzo dobrze. Wszystkie założenia zostały spełnione:
- klawiatura działa poprawnie
- wykorzystanie pinów z ośmiu (8) zmniejszyło się do jednego (1)!
- rezystory zostały dobrane, aby stanem wysokim wybudzić uC z uśpienia

Kod w załączeniu z wykorzystaniem uC Atmega644P.
Kod wykorzystuje bibliotekę LCD napisaną przez pana Mirka, ale nie umieściłem jej w załączeniu.

Pozdrawiam,
Grzegorz


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 17:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

Fajny pomysł z tą klawiaturką, żeby zaoszczędzić trochę pinów w procku.
Z tego co wiem to rozwiązanie działa jednak dość powolnie. Jednak z tego co widać na zdjęciach raczej dość stabilnie (min i max wskazanie ADC jest praktycznie identyczne). Ciekawe jak to się sprawdzi w jakimś konkretnym przykładzie. Testowałeś to jakoś kolego?

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 19:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Witam rozwiązanie jest bardzo dobre i bardzo użyteczne używam klawiatury ADC w moim projekcie już ponad dwa lata i nie mam z nią żadnych problemów.
Warto dodać mały kondensator i feryt na wejście.
Wszystkie rezystory z tolerancją 1% lub lepszą.
Warto też kupić markowe przyciski np firmy Omron.
Obrazek
Obrazek

Kod napisany w Bascom AVR

Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 22:20 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

Bardzo fajny projekt - nawet gdyby miał być tylko do celów edukacyjnych. Ja wręcz POLECAM początkującym w dziedzinie ADC zrobienie czegoś takiego dla treningu - wtedy ADC wchodzi o wiele szybciej do głowy ;)

A tak nawiasem mówiąc to widziałem sam na własne oczy klawiaturki analogowe na więcej niż 5-10 klawiszy i to w urządzeniach krótkofalarskich ;) ... co ciekawe były akurat realizowane na AVR'ku (ATmega48 albo 88) ... spisywały się świetnie. Ale też trzeba przyznać, że nie była to jakaś mega masowa produkcja.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lip 2015, o 07:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Przy odpowiednim dobraniu rezystorow można wciskać kilka przycisków na raz i rozpoznawac ukryte funkcję



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lip 2015, o 08:06 
Offline
Użytkownik

Dołączył(a): 01 cze 2015
Posty: 30
Pomógł: 2

mokrowski napisał(a):
Coś tam w kodzie można oczywiście jeszcze poprawić.

Kod był pisany na kolanie i zawsze można coś poprawić :) Z miłą chęcią przyjmę każdą zmianę, która pomoże!

gordon10 napisał(a):
Testowałeś to jakoś kolego?

Jeśli odczyty będą stabilne, to wynik będzie prawidłowy. Ważne jest aby odczyty nie nachodziły n a siebie wartościami. To jest coś o czym pisze kolega mokrowski.

Podłączyłem inną klawiaturę i odczyty się zmieniły.
Potrzebuję więc stabilniejszych odczytów.

pikczu napisał(a):
Warto dodać mały kondensator i feryt na wejście.
Wszystkie rezystory z tolerancją 1% lub lepszą.

Niestety nie mam na daną chwilę lepszych rezystorów.
Nie wiem co to jest feryt, do czego służy i gdzie go można kupić?

pikczu napisał(a):
rozwiązanie jest bardzo dobre i bardzo użyteczne używam klawiatury ADC w moim projekcie już ponad dwa lata i nie mam z nią żadnych problemów.

Dla mnie sygnał jest jeden - idziesz w dobrą stronę :)

-----------------------
Edit
-----------------------
Zmieniony schemat:
Obrazek

Po po zmianie kodu - dostosowaniu wartości do nowej klawiatury oraz dodaniu kondensatora ceramicznego 100uF (dzięki pikczu!) wartości są bardzo stabilne.
Obrazek


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lip 2015, o 20:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Feryty stosuje się do blokowania zakłóceń. Klawiatura działa jak antena więc wskazane jest dołożenie ferytu aby zablokować zakłócenia wysokiej częstotliwości.
Dodatkowo przydał by się warystor lub dioda dwu kierunkowa zabezpieczająca przed ESDhttp://www.tme.eu/pl/katalog/#id_category=112928&search=feryt&page=1&s_field=accuracy&s_order=DESC



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2015, o 08:27 
Offline
Użytkownik

Dołączył(a): 01 cze 2015
Posty: 30
Pomógł: 2

pikczu napisał(a):
Feryty stosuje się do blokowania zakłóceń. Klawiatura działa jak antena więc wskazane jest dołożenie ferytu aby zablokować zakłócenia wysokiej częstotliwości.
Dodatkowo przydał by się warystor lub dioda dwu kierunkowa zabezpieczająca przed ESD

Bardzo cenna wskazówka!

Opiszę rezultaty jak tylko dostanę w swoje ręce brakujące komponenty!
Dziękuję wszystkim za rady aby ulepszyć projekt!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2015, o 09:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Wiem - funkcja float jest tylko do prezentacji wyników, ale zabiera 3%(3064B) zasobów flash. To tylko taka uwaga ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lip 2015, o 08:37 
Offline
Użytkownik

Dołączył(a): 01 cze 2015
Posty: 30
Pomógł: 2

mokrowski napisał(a):
1. Myślę że podejście ze zdefiniowaniem wartości centralnej oraz tolerancji, uczyni wykrywanie wciśnięć klawiszy mniej podanym na błędy związane z niedokładnością rezystorów lub zmianami warunków zewnętrznych.
2. Po zgłoszeniu przerwania zewnętrznego INT0 w obsłudze, warto uruchomić pomiar ADC i poczekać na zgłoszenie przerwania związanego z zakończeniem jego obsługi (obsługi przerwania zakończenia konwersji ADC). Takie podejście uwolni moc obliczeniową traconą w aktywnej pętli while() (linia 53 przykładu).
3. Wyszukiwanie liniowe z linii 124, średnio do znalezienia klawisza potrzebuje przeglądu 8 wartości tablicy klawiszy (optymistycznie 1 bo od razu trafi, pesymistycznie 16 bo dopiero ostatni dopasuje... przypadek braku dopasowania już pomijam). To mało efektywny algorytm jeśli wartości są posortowane. Warto wtedy użyć wyszukiwania binarnego. W tym przypadku będą to średnio 4 porównania do znalezienia wartości.


1. Zyskujemy tylko miejsce w pamieci FLASH i RAM.
2. Bardzo dobry pomysł. Zrobione.
3. Również bardzo dobry pomysł. Zrobione.

Poprawiony kod zostawiam w załączniku.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO