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



Teraz jest 28 mar 2024, o 23:30


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 13 mar 2019, o 18:24 
Offline
Nowy

Dołączył(a): 08 kwi 2013
Posty: 12
Pomógł: 0

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 :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 mar 2019, o 18:30 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3187
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 89

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 mar 2019, o 22:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

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 postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 mar 2019, o 09:45 
Offline
Nowy

Dołączył(a): 08 kwi 2013
Posty: 12
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 mar 2019, o 12:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Pewnie tak :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 mar 2019, o 21:17 
Offline
Nowy

Dołączył(a): 08 kwi 2013
Posty: 12
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 mar 2019, o 21:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

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. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 mar 2019, o 22:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

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.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 mar 2019, o 18:12 
Offline
Nowy

Dołączył(a): 08 kwi 2013
Posty: 12
Pomógł: 0

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



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: 9 ] 

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO