Spisu treści:

Jak odczytać wiele przełączników za pomocą jednego pinu MCU: 4 kroki
Jak odczytać wiele przełączników za pomocą jednego pinu MCU: 4 kroki

Wideo: Jak odczytać wiele przełączników za pomocą jednego pinu MCU: 4 kroki

Wideo: Jak odczytać wiele przełączników za pomocą jednego pinu MCU: 4 kroki
Wideo: Ukryta funkcja w iPhone 2024, Czerwiec
Anonim
Jak odczytać wiele przełączników za pomocą jednego pinu MCU?
Jak odczytać wiele przełączników za pomocą jednego pinu MCU?

Czy kiedykolwiek zdarzyło Ci się pochłonąć projekt (projekty), a projekt wciąż rośnie i rośnie, podczas gdy dodajesz do niego więcej rzeczy (nazywamy to Feaping Creaturism)? W ostatnim projekcie budowałem miernik częstotliwości i dodałem pięciofunkcyjny generator sygnału/syntezator częstotliwości. Wkrótce skończyłem z większą liczbą przełączników niż zostało mi dostępnych pinów, więc co może zrobić facet?

Jednak wkrótce miałem jeszcze siedem przełączników na moim Funboxie (tak, tak nazwałem mój generator funkcji… wiem, nie mam kreatywności) i oto krótka instrukcja pokazująca, jak możesz zrobić to samo. Nie wymaga żadnych rejestrów przesuwnych ani określonych układów scalonych. W rzeczywistości nie wymaga też mikrokontrolera, jeśli chodzi o dyskretne półprzewodniki. Oto jeden ze sposobów, w jaki możesz odczytywać/zarządzać wieloma przełącznikami za pomocą jednego pinu w twoim AVR (lub innym mikrokontrolerze… Słyszałem, że oprócz AVR są inne mikrokontrolery, ale nie mogę sobie wyobrazić…).:)

Krok 1: Podstawy (niezupełnie)

Aby to osiągnąć, potrzebujesz kilku komponentów. Pomaga mieć wiele przełączników, którymi trzeba zarządzać. Potrzebne będą również rezystory i albo mikrokontroler, który ma ADC (konwersja analogowo-cyfrowa), albo w inny sposób, który chciałbyś wskazać, że był aktywowany przełącznik i który to był.

Jeśli chcesz, możesz użyć oscylatora sterowanego napięciem, aby to wskazać, być może za pomocą migających świateł lub alternatywnie, za pomocą dźwięku. W tym „ible” zamierzam udawać, że używamy AVR, ale w twoim świecie możesz udawać, co cię uszczęśliwia. Tęsknię za Bobem Rossem.

Krok 2: Dzielnik napięcia

Dzielnik napięcia
Dzielnik napięcia
Dzielnik napięcia
Dzielnik napięcia

Zasadniczo zamierzamy to zrobić za pomocą techniki i obwodu zwanego dzielnikiem napięcia. Dzielniki napięcia, jak można się domyślić, dzielą napięcie V,, in,, przez określoną wartość. Możesz podzielić napięcie za pomocą kilku elementów, w tym kondensatorów i cewek, ale tutaj zrobię to za pomocą dobrego rezystora ol. Idea To, co robimy, to połączenie dwóch elementów szeregowo, co spowoduje, każdy z osobna, spadek napięcia na elemencie. Spójrz na pierwsze zdjęcie, jeśli nie mam sensu. Istnieje różnica potencjałów 9V między szynami. Pomiędzy 9V a 0V są połączone szeregowo dwa rezystory. Każdy z nich doświadczy spadku napięcia, w zależności od rezystancji, jak prawdopodobnie pamiętasz z V = IR. Jeśli zmierzysz napięcie między dwoma rezystorami, uzyskasz pewną wartość między 9V a 0V, w zależności od tego, ile napięcia spadło na pierwszym rezystorze i ile pozostało do spadku na drugim rezystorze, przed 0V. W tej sytuacji istnieje prosty wzór na obliczenie spadku napięcia na rezystorze i wygląda on tak. Niech napięcie na rezystorze 1 (R1) wynosi V1, a napięcie na rezystorze 2 (R2) wynosi V2. Ponieważ nie mogę już używać formatowania, spójrz na rysunek 2 poniżej, aby uzyskać wzór… Tak więc w naszym dzielniku rezystancyjnym napięcie Vout można określić za pomocą naszego wzoru na V2 (ponieważ będziemy odnosić się do GND do 0V). Co to ma wspólnego z wykrywaniem kilku przełączników z jednego pinu? Cóż, przewróć stronę, a ja ci pokażę!

Krok 3: Drabina dzielnika napięcia

Drabina dzielnika napięcia
Drabina dzielnika napięcia

Załóżmy teraz, że mamy wszystkie nasze przełączniki, może sześć, osiem lub szesnaście, wszystkie połączone za pomocą rezystorów, z których każdy działa jako dzielnik napięcia, tak że gdy zmienia się stan styku przełącznika, napięcie jest odczytywane i na podstawie poziomu napięcia może wiedzieć, który przełącznik został właśnie aktywowany. Zobacz poniżej. Na poniższym obrazku podłączyłem dwa bloki przełączników. Najwyższy blok ma dwa przełączniki, a najniższy blok ma pięć przełączników. W ten sam sposób można podłączyć oddzielne przełączniki dwustanowe, chwilowe, dotykowe itp. Ważną rzeczą do zauważenia jest rezystor, do którego podłączony jest twój przełącznik. W moim przykładzie prawie podwoiłem rezystancję następnego rezystora, aby stworzyć przerwę napięciową, którą można łatwo zmierzyć i nie pomylić z przełącznikiem przed lub po. Jeśli wcześniej tego nie zauważyłeś, spójrz ponownie i zdaj sobie sprawę, że wracamy do naszego starego przyjaciela, rezystancyjnego dzielnika napięcia. Pierwszy rezystor, 10 kΩ, jest podłączony do 5 V, a drugi rezystor - rezystor, który określi Vna zewnątrz dla pinu SWITCH_ADC jest podłączony do każdego przełącznika, a zatem każdy przełącznik jest powiązany z określonym napięciem Vout, które można odczytać z pinu ADC podłączonego do SWITCH_ADC. Następnie określ oczekiwany Vout z każdego przełącznika, tak

Vout = Vin * (R2 / (R1 + R2))

dla przełącznika jeden:

Vout = 5 V * (500 / (10000 + 500)) = 5*0,048 = 0,24 V lub 240 mV

dla drugiego przełącznika:

Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0,18 = 0,9V lub ~900mV

i tak dalej.. Jeśli masz pod ręką tylko określone rezystory, możesz zastąpić R2 własnymi wartościami… Kluczową sprawą jest tutaj zachowanie wystarczająco dużej przerwy w napięciu między przełącznikami, aby każdy margines błędu na ADC zadziałał. t umieścić cię w napięciu oczekiwanym od sąsiedniego przełącznika. Odkryłem, że najłatwiejszą rzeczą do zrobienia jest zbudowanie drabinki rozdzielającej i umieszczenie multimetru/woltomierza na pinie ADC i wciśnięcie każdego pinu i sprawdzenie, jakie wartości uzyskasz. Powinny być dość trafne w stosunku do tego, co obliczysz. Po uzyskaniu wszystkich oczekiwanych wartości napięcia z każdego przełącznika przy użyciu określonego rezystora, możesz poprosić MCU o odczytanie pinu ADC i porównanie go ze znanymi wartościami, aby określić, który przełącznik został naciśnięty. Na przykład, powiedzmy, że zarejestrowałeś procedurę obsługi przerwań, która będzie wywoływana za każdym razem, gdy wykryta zostanie zmiana na pinie ADC. Wewnątrz tego ISR możesz odczytać ADC i porównać tę wartość z tabelą przełączników. Jeśli używasz 8-bitowej wartości ADC, twoje napięcie zostanie przekonwertowane na liczbę od 0 do 255, która odpowiada napięciu od 0 V do 5 V. Zakłada się, że masz skonfigurowany ADC w ten sposób.

Krok 4: Podsumowanie

Więc teraz powinieneś wiedzieć, jak oszczędnie używać pinów GPIO do przełączników. Ilekroć brakuje Ci pinów GPIO lub prawie nie masz ich na początek, lub jeśli zdajesz sobie sprawę, że będziesz korzystać z zestawu przełączników, dzielnik rezystancyjny jest sposobem na zapisanie pinów GPIO, jednocześnie zapewniając solidny mechanizm wykrywania dostępu do przełącznika.

Zalecana: