Zrób chwilowe przełączenie sterowania przełącznikiem

17

Jakie są najprostsze, najtańsze i najmniejsze sposoby, aby chwilowy przełącznik generował dwustanowe wyjście przełączające (chwilowy przełącznik zatrzaskowy)?

Innymi słowy, moc wyjściowa jest stale niska, a po chwilowym naciśnięciu przycisku / przełącznika taktowego moc wyjściowa zmienia się na ciągłą wysoką, a następnie po ponownym naciśnięciu przełącza się z powrotem na niską.

endolit
źródło
Myślę, że najlepsza odpowiedź na to pytanie zależy od pytającego i od tego, czy bardziej odpowiada ci sprzęt lub oprogramowanie.
J. Polfer,
Zależy to również od tego, gdzie znajduje się ten przełącznik wyjściowy i jakie napięcia (stany!) Masz dostępne.
XTL
Tylko dwa stany, wysoki i niski, jak każda logika cyfrowa. Jeśli chcesz wykonać wiele stanów, przez które jeździsz, myślę, że wymagałoby to mikrokontrolera. I tak prawdopodobnie miałbyś taki w swoim obwodzie.
endolith,
Podoba mi się rozwiązanie z 2 falownikami. Zastanawiam się tylko, co byłoby wymagane, aby umożliwić przełączenie 30 V @ 1A?
stevenrcfox
@Overlow: Wymień tranzystor wyjściowy na tranzystor mocy lub przekaźnik
endolith

Odpowiedzi:

9

Oto kolejna alternatywa z dwoma falownikami i zapowiedziami:

Two inverters

Do wyjścia logicznego potrzebne są tylko dwa falowniki, RC i rezystor sprzężenia zwrotnego:

enter image description here

NC7WZ14 kosztuje 0,06 $ z 2 falownikami, małym 6-pinowym pakietem i wejściami wyzwalającymi Schmitt, choć myślę, że ten obwód nie potrzebuje nawet wejść Schmitt z powodu RC. Może również zasilać 24 mA, więc możesz podłączyć diodę LED bezpośrednio do niej, jeśli używasz LED z dowolnego powodu.

Pokazano również tutaj i tutaj jako przełącznik dotykowy .

Myślę, że rezystor sprzężenia zwrotnego musi być znacznie mniejszy niż rezystor środkowy, aby zapobiec oscylacji, jeśli przytrzymasz przycisk, ponieważ połączenie impedancji o niskiej impedancji z wyjściem zapobiegnie ładowaniu kondensatora do średniego napięcia, dopóki go nie zwolnisz.

Warianty opisano w Press ON - Naciśnij OFF miękkie obwody zatrzaskowe :

AND gate variant

endolit
źródło
Czy po włączeniu po raz pierwszy uruchomi się z włączonym, wyłączonym lub losowym wyjściem? Po prostu sprawdzam obwód, domyślam się, że uruchomi się przy włączonym wyjściu.
Craig McQueen
@CraigMcQueen Po pierwszym włączeniu kondensator będzie miał napięcie 0 V. Pierwszy obwód rozpocznie się w pozycji ON. Podłącz kondensator do źródła zasilania zamiast do uziemienia, a rozpocznie się on w pozycji OFF.
endolith
@CraigMcQueen Czy to naprawdę jest gwarantowane? Nie jestem pewny. Niska impedancja wyjściowa falownika będzie dominować nad rezystorem 220k, więc może zacząć w losowym stanie.
endolith
@CraigMcQueen Ostatni pokazany obwód rozpocznie się od kondensatora 0,01 μF 0 V, więc Vout będzie wynosił 0.
endolit
@endolith Gdzie na ostatnim zdjęciu jest podłączony VCC? Widzę ziemię i Vouta.
Mike
7

Jedna możliwa metoda:

Użyj RC, aby ogłosić przełącznik

RC network connected to momentary switch to debounce

a następnie podaj go do przerzutnika typu D, a dane wyjściowe wracają do wejścia w celu wdrożenia przerzutnika typu T.

D flip-flop configured as toggle flip-flop

Przerzutnik D musi być wyzwalany tylko zboczem dodatnim i wymaga odwróconego wyjścia.

  • 8-pinowy NC7SZ74 powinien działać, jest bardzo mały i kosztuje 0,12 USD w ilości.
  • 74HC74 to podwójny przerzutnik D z 14 pinami za 0,05 $.

Czy są z tym jakieś problemy? Przełącznik musiałby zostać przytrzymany przez krótki czas, aby czas narastania uruchomił wejście zegara, co prawdopodobnie jest dobre. Jeśli przytrzymasz przycisk, zadziała on tylko raz, co jest dobre. Czy istnieje lepszy sposób na debugowanie w pętli sprzężenia zwrotnego lub coś takiego?

endolit
źródło
5
Naprawdę potrzebuje bufora wyzwalającego Schmitta na wejściu z przycisku (lub jeśli flip-flop ma wejścia wyzwalające Schmitta, które również by działały). W przeciwnym razie FF może chwilowo oscylować, gdy sygnał wejściowy zegara rośnie powoli po zwolnieniu przycisku. (Można to nieco złagodzić dzięki starannemu doborowi czapki i rezystora, ale nigdy nie wyeliminowano)
Connor Wolf
Czy nie możesz również użyć filtra RC na ścieżce sprzężenia zwrotnego, aby zapobiec odbiciu?
endolith,
6

Lub możesz to zrobić za pomocą jednego małego 6-pinowego mikrokontrolera i żadnych innych elementów. Może to kosztować nieco więcej, ale jest prostsze i zajmuje mniej miejsca. Zadeklarowanie przełącznika w oprogramowaniu jest proste, to tylko sposób na zapisanie wartości logicznej, jeśli wyjście powinno być wysokie lub niskie. Najmniejsza wersja tego mcu jest dostępna w pakiecie do montażu powierzchniowego 2 mm x 2 mm. W dużych ilościach może to być 0,50 USD.

toggle schematic

davr
źródło
+1 - Ale wierzę, że ta część pochodzi tylko z SMT.
J. Polfer,
1
Tak, ale nawet najtańszy mikrokontroler będzie kosztował więcej niż prosta cyfrowa logika. To dość skomplikowany system do wykonywania prostych zadań, a ty otwierasz się na świat błędów oprogramowania. Ponadto, czy programowanie każdej mikroskopy zwiększa koszty produkcji?
endolith,
Więc użyjesz wewnętrznego rezystora podciągającego na PB0 skonfigurowanego jako wejście cyfrowe, a następnie uziemisz go, aby go uruchomić, prawda? Nie powinieneś potrzebować rezystora szeregowego z przełącznikiem w ten sposób.
endolith,
1
@TokenMacGuy Prąd nie powinien płynąć z PB0 do GND, ponieważ PB0 będzie wejściem, a nie wyjściem. @ Endolith poprawne, użycie wewnętrznego podciągania oznacza, że ​​nie ma potrzeby zewnętrznego podciągania. (Ponadto podciąganie nie jest połączone szeregowo z przełącznikiem, zarówno z wewnętrznym, jak i zewnętrznym podciąganiem). @sheepsimulator pojawiający się w SMT to tylko problem dla hobbystów. W takim przypadku dodatkowy dolar lub dwa nie stanowiłyby problemu i można łatwo zwiększyć do 8-pinowego DIP ATtiny25.
davr,
@endolith To zależy od aplikacji. Zawsze są kompromisy. Wszystko poza najbardziej podstawowym urządzeniem ma logikę. Mówienie, że otwierasz się na świat błędów oprogramowania, nie jest wielkim problemem ... bez mcu otwierasz się na błędy sprzętowe, ponieważ budujesz coś w rodzaju obwodu cyfrowego / analogowego, aby wykonywać logikę.
davr,
1

Ten obwód (również tutaj opisany ) jest bardzo tani, ale jest bardziej złożony i zajmuje trochę miejsca ze wszystkimi komponentami. Jeśli tranzystory mają około 0,02 USD w dużych ilościach, byłoby to może 0,10 USD łącznie?

3-transistor latching switch

endolit
źródło
0,02 $ ... może jeśli kupisz 27 000 takich jak tutaj: search.digikey.com/scripts/DkSearch/…
davr
1
0,03 USD to okropnie dużo jak 0,02 USD w małych ilościach ...
SingleNegationElimination
3904 za 1,4 centów: newark.com/on-semiconductor/mmbt3904lt1g/... Przy dużych ilościach kondensatory mają około 1 cent, a rezystory około 1/10 centa.
endolith,
Wygląda na to, że tranzystor Q2 potrzebuje rezystora na bazie, aby ograniczyć prąd przepływający przez bazę.
Craig McQueen
1

Wykonaj flip-flop T, zwiekszając wejścia pozytywowego wyzwalanego zboczem jk flip-flop i podłącz wyjście przycisku do wejścia zegarowego jk flip-flop.

schematyczny

symulacja tego obwodu - Schemat utworzony za pomocą CircuitLab

Prayuktibid
źródło
0

Wiem, że to trochę „pośredni” sposób, ale możesz uzyskać czujnik Halla, taki jak Sparkfun: http://www.sparkfun.com/commerce/product_info.php?products_id=9312

i po prostu użyj magnesu, dowiedziałem się (na poważnie), że ten konkretny efekt Halla jest zatrzaśnięty, więc nie zadziała dla tego, czego potrzebuję, ale wygląda na to, że teoretycznie mógłby zadziałać dla tego, czego szukasz .

Właśnie podłączyłem go do płyty chlebowej, myślę, że mogłem użyć rezystora (prawdopodobnie minął już miesiąc, więc jestem trochę rozmyślny na szczegółach), a kiedy przesuwam magnes blisko (chwilowo) zamyka czujnik i tam ty idź.

onaclov2000
źródło
1
Jak byś to jednak „odblokował”? Przybliżenie magnesu do czujnika po raz drugi nie zakłóciłoby go, prawda?
davr,
Sądzę, że musiałbyś odwrócić biegunowość magnesu, aby go „wyczyścić”. Będę musiał ponownie podłączyć go w domu, aby go przetestować, aby się upewnić, jednak zastanawiam się, ile czasu zajmuje „zresetowanie” jeśli odłączysz zasilanie. Mogę być w stanie wykorzystać go do mojego projektu, który zamierzam, zabijając moc przez określony czas (pod warunkiem, że nie jest to zbyt długo)
onaclov2000,
0

Najłatwiejszą alternatywą jest użycie naprzemiennego przełącznika przyciskowego.

Jeśli zignorujesz fakt, że zatrzaskuje się w różnych pozycjach, to prawie dokładnie tak, jak chwilowa zmiana. Rozumiem, że to nie jest sedno pytania, ale jest to proste i kompaktowe rozwiązanie nie wymagające oprogramowania ani zewnętrznego sprzętu.

Kevin Vermeer
źródło
0

Nie jestem pewien, jaki dokładnie jest cel końcowy, ale pomyślałem, że przedstawię to tutaj:

To świetny mały obwód, który lubię wykorzystywać do napędzania przekaźników bistabilnych. Jest również dość tani w budowie.

Naciśnięcie chwilowego przełącznika przełącza stan przekaźnika i diody LED. To nie jest tak wybredne, jak długo przytrzymujesz przycisk. Ponieważ przekaźnik się zatrzaskuje, przez większość czasu nie pobiera dużego prądu.

W tej konfiguracji dioda LED włącza się, gdy przekaźnik znajduje się w ustawionym stanie, i gaśnie po zresetowaniu przekaźnika. Możesz także podłączyć R7 do zacisku + C3, aby dioda LED zaświeciła się po zresetowaniu przekaźnika.

Lubię to wykorzystywać w efektach gitarowych, dzięki czemu mogę omijać lub włączać urządzenie za pomocą chwilowego przełącznika nożnego. Oczywiście przełącznik 3PDT sam by zrobiłby to samo, ale przełączanie jest w ten sposób cichsze (bez dużego popu), a chwilowe miękkie przyciski nożne są znacznie ładniejsze niż duże 3PDT.

Mam nadzieję że to pomoże.

Blokujący przekaźnik sterownika

Narzędzie Avid Pro
źródło
0

Czy możesz to zrobić nie tylko w oprogramowaniu?

Czy przycisk będzie wejściem na programowalnym urządzeniu, czy też trzeba przełączać w dziedzinie sprzętowej?

Zapisując stan przycisku w pamięci, dość łatwo można użyć chwilowego przełącznika jako przełącznika.

boolean buttonState = false; // store for toggle state, false = off true = on

if(yourButton == HIGH && buttonState == false) // if button is pressed and toggled off
{
     Serial.println("Button Toggled On"); // do something while button is on

     buttonState = true // set button state to on
}

if(yourButton == HIGH && buttonState == true) // if button is pressed and toggled on
{
     Serial.println("Button Toggled Off");  // do something else while button is off

     buttonState = false // set button state to off
}

Przepraszam, jeśli nie jest to możliwe, oczywiście ta odpowiedź zależy od tego, czy używasz MCU lub programowalnego układu.

Jim
źródło
Osobiście potrzebuję samodzielnego rozwiązania, ale pytanie ma być ogólne.
endolith,
1
Tak, to z pewnością rozsądne rozwiązanie, jeśli masz mikroprocesor. Uwaga: powinieneś również wdrożyć „debounce”, ponieważ przełączniki i przyciski są głośne podczas przełączania.
Craig McQueen