Skocz do zawartości

Translacja enkodera za pomocą przerzutników typu D


_bombel_

Pomocna odpowiedź

Chciałbym zamienić dwa przyciski takt (+/-) enkoderem obrotowym. Jako, że problem nie jest nietypowy, to znalazłem takie rozwiązanie za pomocą przerzutników typu D. Kupiłem EC12P24L14 i UCY7474 oraz podpiąłem jak na obrazku poniżej  - do wyjść X i Y wpiąłem diody LED żey obserwować stan wyjść. Układ działa prawie tak,jak oczekiwałem, tzn. 

  • Po włączeniu układu, X oraz Y są zgaszone
  • Po wykonaniu obrotu w jedną stronę X się zapala (i nie gasnie), a Y pozostaje zgaszone
  • Po wykonaniu kolejnego obrotu w tę samo stronę X gasnie na chwilę i ponownie się zapala i pozostaje w takim stanie, a Y pozostaje cały czas zgaszone
  • Wykonując obroty w drugą stronę dzieje się to podobnie, ale oczywiście to Y się zapala, a X gaśnie

Tutaj pojawia się mój problem: skoro chcę zastąpić przyciski takt, to chciałbym, żeby sygnały na wyjściach X i Y były "chwilowe", tzn. tak jak przy zwieraniu przycisku takt. Według informacji, na której bazowałem, to mój układ powinien własnie tak pracować (a przynajmniej tak to zrozumiałem). Będę wdzięczny za rzucenie okiem gdzie popełniłem błąd, w rozumowaniu rozwiązania, czy przy podpięciu układu, a może kupiłem zły przerzutnik (wejście RES jest u mnie oznaczone z negacją i nie do końca jestem pewien jak to rozumieć).

d-type_flip_flop.png

Link do komentarza
Share on other sites

Jeżeli impulsy wyjściowe pojawiają się na wyjściu X a po zmianie kierunku na wyjściu Y, tu układ z 7474 działa poprawnie. Na schemacie brakuje kółek przy wejściach CLR, ale wykresy są OK i całość pasuje do 7474 - zarowanie przerzutnika ma następować po podaniu stanu niskiego na wejście /R.

Kilka zupełnie podstawowych rzeczy to:

  • brak kondensatora 100nF na zasilaniu (między 5V a GND) ,
  • brak podciągania wejść (bazujesz na tym, że niepodłączone wejście układu TTL to stan 1, ale to zły zwyczaj),
  • wejścia 1S i 2S powinny być podpięte do zasilania.

Na szczęście są to tylko "dobre praktyki", nie mające znaczenia dla funkcjonalności. A ta jest poprawna.

Jeśli układ nie spełnia Twoich oczekiwań, to może napisz wyraźniej czego się spodziewałeś. Co to znaczy "chwilowe"? Przycisk oddaje stan "aktywny" przez cały czas gdy go wduszasz. Tutaj układ oddaje stan aktywny gdy enkoder "stoi na impulsie" - trochę więcej obrotu i sygnał spadnie, ale przecież to nie ma znaczenia. Układ odbierający sygnały X/Y (co to jest u Ciebie?) ma liczyć zbocza narastające a nie to jak długo jest stan wysoki na poszczególnych liniach. 

Nie, enkoder SE055 działa tak samo. Ma przycisk na osobnym wyjściu, ale chyba nie tego potrzebujesz?

EDIT: Nie możesz wycinać kawałków układu z czegoś większego, podmieniać otoczenia i zakładać, że to zadziała. W oryginale gość użył 74HC74 i on w tym schemacie jaki zrobiłeś nie zadziała albo zrobi to źle. Jeśli kupiłeś prawdziwy, historyczny 7474 bez żadnych literek w środku, to miałeś sporo szczęścia że to w ogóle ruszyło, bo akurat technologia bipolarna robi pewne sztuczki, których HCMOS nie robił. Zobacz, że w oryginale między enkoderem a przerzutnikami stoją bramki 74HC14 i one naprawdę są tam potrzebne. To oczywiście niczego nie zmienia w długości impulsów wyjściowych. Kluczowe jest sprawdzenie (nawet woltomierzem) w jakich pozycjach zatrzymuje się Twój enkoder. To czysto mechaniczna "grzechotka" na ośce, ale jeśli nieofrunnie pozycje zatrzymania wypadają w miejscach, gdzie sygnały są wysokie (czyli oba zestyki A/B są otwarte) , to trzeba będzie trochę zmienić układ.

Edytowano przez marek1707
  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

(edytowany)

Dziękuję za "dobre praktyki". Układ odbierający to płytka sterowania menu ekranu LCD, przycisk z enkodera też wykorzystam (jako wywołanie Menu), ale o tym nie wspominałem, bo z tym sprawa prosta - gorzej z samym impulsatorem. Obecnie na płytce z przyciskami takt (menu/+/-) następuje zwarcie do masy (w sumie to tylko tak się domyślam - swoją drogą, to jak to sprawdzić jeżeli na płytce nie widać oznaczeń gdzie idą ścieżki?). "Menu" przejmie przycisk z enkodera, a "+" i "-" z obrotów enkodera. Założyłem, że jeżeli płytka obecnie ma przyciski takt, to zostawienie stanu wysokiego po wykonaniu obrotu może nie być dobrym pomysłem. Z tego co piszesz, to nie powinno mieć to znaczenia. W zasadzie mogę sprawdzić jak to się zachowuje obecnie, gdy wcisnę takt i go przytrzymam. EDIT: Sprawdziłem i niestety nie mogę zostawić "zwarcia" (jeszcze muszę ustalić czy do stanu wysokiego, czy niskiego) ponieważ gdy wciskam i przytrzymuję przycisk takt, to w efekcie jest to rozumiane jako wielokrotne jego wciśnięcie. 

Swoją drogą znalazłem też Przełącznik obrotowy, impulsator, enkoder z przetwornikiem - MOD-16 który wydaje się być gotowym rozwiązaniem, ale w sumie wykorzystanie go odbierze mi całą zabawę ze zrobienia tego samemu :).

Edytowano przez _bombel_
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dobra, już rozumiem. Jeśli chcesz dopasować wyjście tego co masz teraz do wejść "przyciskowych", to nic prostszego jak dodanie dwóch tranzystrów nie przychodzi mi do głowy. Dodajesz zatem na każdym X/Y tak samo:

  • opornik 1k od wyjścia 7474 do bazy tranzystora npn
  • emiter tranzystora npn stawiasz na masie GND
  • kolektor podłączasz do tegjlinii przycoisku, która nie jest podłączona do masy tamtego urządzenia (tylko do wejścia jakiegoś scalaka czy coś)
  • obowiązkowo łączysz masy obu urządzeń.

Dodatkowo tranzystory odwrócą sygnały X/Y i bedą "open collector" więc:

  • urządzenie będzie widziało zwieranie przycisków do masy w czasie gdy na wyjściu 7474 jest stan 1
  • nic się nie stanie, jeśli naciśniesz przycisk - sygnał z niego będzie się sumował logicznie z tranzystorem. Gorzej, gdy Twoje cudo zatrzyma się w stanie załączonego tranzystora, wtedy ten przycisk będzie zablokowany w stanie "wciśnięty". Dlatego ważna jest taka konstrukcja samego enkodera, by zapadał się mechanicznie do stanu stabilnego gdy oba zestyki A/B są zwarte. Taki stan spoczynku gwarantuje, że żaden przycisk tranzystorowy nie będzie wciśnięty. Jeśli jest inaczej, daj znać.

Jeśłi chcesz sprawdzić jak działają przyciski, podłącz się minusem woltomierza do masy urządzenia i sprawdź, czy przyciski na jednym końcu mają 0V a na drugim napięcie (2V? 3V? 5V?), które znika do zera gdy wciśniesz. Jeśli tak, to do tej linii podłączasz kolektor tranzystora. 

Edytowano przez marek1707
  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

(edytowany)

Super. Dziękuję. Widzę, że mam na stanie tranzystor NPN BC546B więc, dzisiaj wieczorem do tego siądę i dam znać jak efekty

UPDATE:

Podpiąłem wszystko jak należy (póki co na diodach LED żeby zobaczyć efekt i faktycznie tranzystory załatwiły mi możliwość zwarcia do masy (i sprawdziłem, że orginalne przyciski tact w panelu sterującym faktycznie zwierają do masy), ale wciąż zostaje problem ze zrobieniem "chwilowego zwarcia", zamiast ciągłego (czyli uniknięcie sytuacji odpowiadającej wciśnięcie i przytrzymanie przycisku tact, które jest rozumiane przez panel sterujący jako wielokrotne wciskanie przycisku). Jeżeli na wyjściu 7474 mam ciągle 1, to tranzystor zwiera do masy cały czas. Zastanawiam się czy ja w dobrą stronę idę z tymi przerzutnikami typu D żeby uzyskać efekt przycisków tact. Może jednak załatwić to mikrokontrolem? Ale znowu, czy to nie będzie wyciąganie armaty na taki problem...?

UPDATE 2:

Jeszcze się nie poddaję. Póki co staram się sobie przypomnieć o co chodziło z siatką Karnaugha i z czym to się jadło (dawno temu miałem układy logiczne na studiach, więc coś mi w głowie dzwoni, ale jeszcze nie wiem gdzie 😉 )

UPDATE 3:

Poddaję się. Spróbowałem złożyć 3 różne układy (źródło) - każdy z nich powinien rozwiązać mój problem, ale żaden z nich nie zadziałał tak, jak powinien. W międzyczasie zorientowałem się, że moje nowa płytka prototypowa miewa luzy na łączeniach, a z kolei od ciągłego poprawiania kabelków i szukania błędu, wpiąłem zasilanie na odwrót i nie wiem czy nie uszkodziłem scalaków, eh... Chyba jest już zbyt późna pora na takie zabawy i szukanie rozwiązania metodą prób i błędów.

1.jpg

3.thumb.jpg.7fe1adcf0af58a5da5751811589814e8.jpg

2.GIF

 

 

Edytowano przez _bombel_
Link do komentarza
Share on other sites

Zrobiłem drugie podejście i wygląda na to, że spaliłem układy scalone. Chyba skończy się na tym, że zamówię gotowca (ewentualnie nowe układy + gotowca, żeby spróbować trzeci raz i mieć rozwiązanie w razie porażki 😉 ). 

Link do komentarza
Share on other sites

Ech, chłopie. Szkoda czasu na montowanie różnych układów i zgadywanie jak też one będą działały. Albo usiądź i rozkmiń to porządnie albo.. zapytaj? Przecież to jakieś przedszkole elektroniki a Ty kręcisz się jakoś w kółko. Już pisałem, że w układzie (tym pierwszym) na 7474, kluczowe jest to w jakiej pozycji zestyków zatrzymuje się (mechanicznie) gałka enkodera. Potwierdź albo zaprzecz czy Twój też tak ma, ale znakomita większość enkoderów (łącznie z tym w kółku myszy) przeznaczonych do kręcenia nimi przez ludzi ma mechaniczną zapadkę - pewnie na jakiejś kulce - która "ściąga" ośkę do najbliższego położenia stabilnego. No i teraz zauważ, że Twój 7474 nigdy nie oddda stanu wysokiego na żadnym wyjściu, gdy na obu wejściach dostanie stany niskie (widzisz to na wykresie i na schemacie - dlaczego tak jest?). To kluczowa cecha a Ty szukasz gdzieś po sieci. Jeżeli więc zapewnisz, że gałka będzie zatrzymywała się właśnie w takim położeniu, to nigdy po jej puszczeniu układ nie zostawi przycisku "wciśniętego" tranzystorem. Weź zwykły woltomierz, podłącz się do styków enkodera (lub do wejść 7474) i upewnij się, że tak jest. W układzie jaki zbudowałeś enkoder musi mechanicznie zatrzymywać się w położeniu z obydwoma stykami zwartymi. To daje stany niskie na wejściach 7474 i wyklucza pozostawienie "zapomnianego" stanu wysokiego na wyjściu. Natomiast jeśli jest odwrotnie, jeśli gałka enkodera "zapada" się do stanu z obydwoma stykami rozłączonymi, to wystarczy odwrócić konfigurację wejść. Nie ma sensu żebym to tutaj teraz opisywał, ale weź coś pomierz zamiast budować kolejne wersje. Opisz wyniki.

BTW: Najgorszy rezultat to taki, że zapadka enkodera w ogóle nie jest zsycnchronizowana z jego stykami mechanicznymi i zatrzymuje się w położeniach przypadkowych (raz zwiera ten, raz tamten a raz oba albo żaden), ale na to też jest sposób: możesz za pomocą prostej modyfikacji zamienić sygnały wyjściowe tak, by były w stanach aktywnych tylko przez krótki czas niezależnie od tego jak długo trwa stan wysoki na wyjściu 7474. Do roboty. I następnym razem kup 74HC74 a nie jakąś historyczną cegłę. To ważne w kontekście swobodnej konfiguracji wejść. Układy serii 74.. są nie tylko logiczne, ale i elektryczne i czasem ważne jest jaka elektryka tam w środku siedzi.

  • Lubię! 2
Link do komentarza
Share on other sites

Tak, enkoder zatrzymuje się w stanie stabilnym, a styki są wtedy rozwarte - gdy obracam gałką to następuje zwarcie do środkowego pinu (który jest z kolei zwarty z masą). Na chwilę obecną mój 7474 podaje na wyjściach stan wysoki bez względu na to co i jak podłączę, więc zakładam, że muszę załatwić nowy - tym razem obiecuję, że zamówię coś nowego (wcześniej nie zwróciłem uwagi, że jest to stary układ prawdopodobnie pochodzący z odzysku).

Link do komentarza
Share on other sites

No to jeśli zatrzymuje się na rozwartych stykach, a Twój 7474 musi mieć wtedy na obu wejściach zera, to zbuduj układ taki jak wrzuciłeś jako ostatni - ten z dwoma LEDami na wyjściach. Tam oporniki ciągną wejścia do stanu niskiego - i to jest stan zatrzymania, a dopiero zwarcie któregoś styku enkodera podnosi wejścia do stanu wysokiego i produkuje impuls wyjściowy. Musisz zatem podłączyć ten wspólny pin enkodera do plusa zamiast do masy. Odwróci się też działanie tego dodatkowego, trzeciego styku enkodera i bedzie teraz podawał stan wysoki, ale skoro na razie z niego nie korzystasz, to bez znaczenia.

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dziękuję, udało się! Chciałbym przyznać, że może i faktycznie to przedszkole elektroniki (spodobało mi się to określenie 🙂), ale udało mi się sporo nauczyć dzięki temu ćwiczeniu. Głównym problemem okazał się brak zrozumienia po co są oporniki ściągające/podciągające i dlaczego nie warto zostawiać niepodłączonych wejść, o których wspominałeś na samym początku oraz nauczyłem się podstawowego wykorzystania tranzystorów. Bardzo pomocne okazało się też wpięcie kilku dodatkowych diod LED na wejścia D, zegar oraz wyjścia żeby dokładnie zobaczyć jak zachowuje się cały obwód.

W każdym razie osiągnąłem efekt dokładnie taki, jak potrzebowałem. Przycisk w enkoderze wyzwala "Menu" (jest niezależny od samego enkodera, więc nie było kłopotów), a obroty "zwierają" do masy i zastąpiły "+" oraz "-". Oczywiście mój impulsator jest mechaniczny i kupiony za parę groszy, więc nie zawsze każdy obrót wyzwala "zwarcie", a czasem obrót "w lewo" jest odbierany jako obrót "w prawo" - w sumie nie jest to wielki problem, bo funkcjonalność jest dostępna, a wymaganie zostało spełnione, aczkolwiek zastanawiam się, czy mogę to jakoś prostym sposobem zminimalizować.

Mój obwód odpowiada temu z ostatniego schematu, tylko zamiast diod LED mam tranzystory npn. Może właśnie przy tranzystorach powinienem mieć oporniki podciągające (ale wydaje mi się, że to by raczej dotyczyło problemu z "samoczynnym zwieraniem do masy", a nie brakiem zwarcia wtedy, gdy powinno wystąpić). Z tego co czytam, to stosuje się jeszcze przerzutniki Schmitta, ale tutaj też nie wiem czy to coś zmieni. W zasadzie, to wydaje mi się, że budowa i jakość samego enkodera nie pozwala na łatwe i sprzętowe rozwiązanie związanych z tym problemów. A może wystarczy wymienić mój enkoder na coś odrobinę lepszego niż to, co kupiłem?

  • Lubię! 2
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.