ATNEL tech-forum
https://forum.atnel.pl/

Jak zasymulować naciśnięcie przycisku
https://forum.atnel.pl/topic22074.html
Strona 1 z 1

Autor:  przebor [ 13 mar 2019, o 18:24 ]
Tytuł:  Jak zasymulować naciśnięcie przycisku

Załóżmy że mamy urządzenie zamknięte w pudełku (P) zasilane napięciem 5V. Nieważne do czego służy urządzenie, ważne że możemy uruchomić pewną funkcję wciskając przycisk. Przycisk jest wyprowadzony na zewnątrz urządzania i mamy na wierzchu kabelki. Jedno wyprowadzenie przycisku jest podpięte do masy a drugie do układu w środku urządzenia. Załóżmy, że tym układem jest mikrokontroler atmega. Czyli mamy sytuację jak na rysunku poniżej.

Obrazki wstawiamy tak topic44.html

Teraz załóżmy że projektujemy nasze własne urządzenie (NU) oparte na uC atmega, ale chcemy aby to urządzenie wykorzystało ten sam przycisk. Podłączenie będzie wyglądać jak poniżej. Tzn. przecinamy połączenie pomiędzy przyciskiem a P i wstawiamy w środek nasze urządzenie.

Obrazki wstawiamy tak topic44.html

Teraz jeśli naciśniemy przycisk to NU odbierze sygnał i są możliwe dwie sytuacje.

1) NU obsłuży naciśnięcie przysku
2) NU nie będzie umieć obsłużyć tej sytuacji i "przekaże" sygnał naciśnięcia przycisku do P tak aby P mogło odpowiednio zareagować

Pytanie brzmi: jak zrealizować symulację wciśnięcia przycisku przez uC?

Przycisk działa tak (w pierwszym przypadku)
- Gdy przycisk nie jest wciśnięty to noga mikrokontrolera nie jest nigdzie podłączona (jest podłączona wewnętrznie do + wymuszając stan wysoki).
- Gdy przycisk jest wciśnięty to noga mikrokontrolera jest podpięta do masy

Po dłuższej chwili namysłu i poszukiwań w internecie wpadłem na taki pomysł. Może zamiast definiować pin NU jako wyjście i nim sterować zróbmy coś na pierwszy rzut oka dziwnego. Ustawmy na stałe PORT na stan niski i sterujmy DDR.

Mamy wtedy dwie sytuacje:
PORT = 0, DDR = 1 - wyjście ze stanem niski (czyli przycisk wciśnięty)
PORT = 0, DDR = 0 - wejście bez pull-up (Hi-Z) - czyli jakby symulujemy odseparowanie od linii i tym samym drugi układ (P) widzi to jako przycisk nie wcisnięty

Wydaje mi się że to powinno zadziałać, ale nie testowałem tego pomysłu. Prosiłbym o potwierdzenie czy to jest dobre rozwiązanie.

Nie testowałem tego ponieważ tak naprawdę problem jest odrobinę inny i przechodzimy teraz do sedna. Pudełko P jest zasilane 12V...

Ostateczne pytanie jest więc takie: Jaki układ powinien być pomiędzy moją atmegą a pudełkiem P żeby zasymulować wciśnięcie przycisku wiedząc jednocześnie że na linii do której był wcześniej podpięty przycisk jest 12v? Coś mi mówi że pewnie jest potrzebny tranzystor..., ale moja wiedza elektroniczna jest zbyt mała żeby opracować rozwiązanie. Prośba o pomoc.

Na koniec uzasadnienie skąd w ogóle takie pytanie.
Pracowałem kiedyś nad komputerkiem samochodowym. Urządzenie w stosunku do uniwersalnych urządzeń tego typu które można kupić ma dwie unikalne cechy. Po pierwsze łączy się ze sterownikiem silnika po protokole diagnostycznym KW1281 i wyciąga dane o różnych parametrach pracy silnika. Po drugie wyświetla informacje na fabrycznym wyświetlaczu wbudowanym w licznik samochodu który oryginalnie służy do wyświetlania komunikatów z radia. Podsłuchałem za pomocą analizatora stanów logicznych jak przesyłane są informacje i metodą reverse engineringu doszedłem jak są zbudowane obydwa protokoły. Zaimplementowałem komunikację w języku C i wgrałem do Atmegi. Niestety projekt zatrzymał się na prototypie złożonym na płytce stykowej i nigdy nie wdrożyłem go produkcyjnie do auta. Chciałem aby sterowanie urządzeniem odbyło się za pomocą przycisków w manetce które służą do sterowania fabrycznym komputerkiem, ale też żeby przekazać informacje o wciśnięciu przycisku do fabrycznego komputerka gdyby była taka potrzeba.

Dzięki za wszystkie podpowiedzi i pozdrawiam serdecznie :)

Autor:  Jaglarz [ 13 mar 2019, o 18:30 ]
Tytuł:  Re: Jak zasymulować naciśnięcie przycisku

Proszę poprawić umieszczenie obrazków, inaczej temat zostanie skasowany.

Autor:  SylwekK [ 13 mar 2019, o 22:47 ]
Tytuł:  Re: Jak zasymulować naciśnięcie przycisku

Jeden tranzystor w układzie z otwartym kolektorem załatwi sprawę. Emiter do masy, kolektor do wejścia przycisku. Sterowanie z Twojego procka - pin przez rezystor około 5k do bazy tranzystora no i oczywiście wspólna masa. To wszystko.

Autor:  przebor [ 14 mar 2019, o 09:45 ]
Tytuł:  Re: Jak zasymulować naciśnięcie przycisku

Bardzo proszę o nie usuwanie. Załączę prawidłowo obrazki dziś wieczorem jak wrócę z pracy.

SylwekK bardzo dziękuję za pomoc. Chyba niestety nie o to mi chodziło (albo nie zrozumiałem Twojego pomysłu), ale domyślam się że nie widziałeś moich obrazków i stąd nieporozumienie.

Autor:  SylwekK [ 14 mar 2019, o 12:20 ]
Tytuł:  Re: Jak zasymulować naciśnięcie przycisku

Pewnie tak :)

Autor:  przebor [ 14 mar 2019, o 21:17 ]
Tytuł:  Re: Jak zasymulować naciśnięcie przycisku

Załączam rysunki zgodnie z regulaminem forum :)

Rys 1.
Obrazek

Rys 2.
Obrazek

Zatem jeszcze raz w skrócie. Chodzi o to na atmedze z Rys 2. sterować "podaniem masy" na pin jakiegoś układu. Wiemy, że napięcie na tym pinie to 12v więc nie można tego zrobić bezpośrednio.

SylwekK jeszcze raz przeczytalem na spokojnie Twoją podpowiedź. Chyba jednak Twój pomysł jest dobry i świetnie mnie zrozumiałeś nawet bez rysunków, ale to niestety ja nie załapałem za pierwszym razem :)

Czy masz na myśli coś takiego?
Obrazek

Autor:  Daro69 [ 14 mar 2019, o 21:57 ]
Tytuł:  Re: Jak zasymulować naciśnięcie przycisku

myślę że w skrócie - coś takiego Sylwek miał na myśli.
należy pamiętać tylko o odwracaniu fazy.
jedynka na nasza atmega da zero na jakiś uc,
a zero na nasza_atmega da jedynkę na jakiś uc.
cóż to za jakiś uc, który ma 12V na weściu?
a...... nie istotne, pytania nie było. ;)

Autor:  SylwekK [ 14 mar 2019, o 22:21 ]
Tytuł:  Re: Jak zasymulować naciśnięcie przycisku

Tak, Właśnie tak to trzeba rozwiązać :) Tylko o wspólnej masie jeszcze pamiętaj. Wysłanie jedynki na bazę tranzystora da (jak wspomniał kolega przede mną) zero na wyjściu tranzystora czyli wciśnięcie przycisku.

Autor:  przebor [ 15 mar 2019, o 18:12 ]
Tytuł:  Re: Jak zasymulować naciśnięcie przycisku

Bardzo dziękuję za pomoc :)
Muszę kupić tranzystory i będę testować.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/