Skocz do zawartości

Łączenie Arduino


rezolut

Pomocna odpowiedź

Mam układ mikropresora z przyciskami sterującymi - standardowo zwieranymi do masy.

Układ zamknięty i nie chcę tworzyć nowego.

Czy jest możliwość wysterowania jego przyciskami z Arduino? Oba układy mają oddzielne zasilania (masa wspólna).

Czy mniej więcej taka byłaby idea połączenia?

Link do komentarza
Share on other sites

Co to są "przyciski z Arduino"?

Poza tym jakie masz tam napięcia i prądy i czy zasilanie dla mikroprocesora i dla Arduino jest wspólne, albo ma chociaż wspólną masę? Jeśli nie, to jakich poziomów logiki używa ten mikroprocesor?

Link do komentarza
Share on other sites

Przycisk Arduino - sorry, skrót myślowy. Oczywiście chodzi o pin/wyjście.

Część czarna to układ istniejący - ATmega16, 5V, przycisk to zwykły switch.

Część niebieska - to coś co chcę dorobić np. na Arduino 5V

Właściwie to zasilanie 5V mogłoby od biedy być wspólne. Choć rozważam oddzielne i wolałbym połączyć układy tylko masami.

Nie chcę używać przekaźników, chciałbym możliwie najprostsze rozwiązanie.

Link do komentarza
Share on other sites

Możliwie najprostszym rozwiązaniem jest po prostu połączenie obu gpio bezpośrednio (oraz mas). Skoro oba mikrokontrolery są zasilane tym samym napięciem i używają tych samych stanów logicznych, to nie powinno być żadnych problemów z komunikacją. Jeśli ten oryginalny przycisk ma być używany, to albo musisz dać jeszcze opornik ograniczający prąd, żeby w przypadku gdy Arduino da poziom wysoki a ty wciśniesz przycisk nie było zwarcia. Albo zamiast na Arduino dawać poziom wysoki, ustawiać gpio w tryb wysokiej impedancji -- wtedy nie będzie tego problemu, ale musisz pilnować żeby nigdy nie dać na tej nóżce 1.

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

Myślę, że Twój sposób jest dobry tylko dodaj na wszelki wypadek rezystor do bazy i kolektora tego tranzystora. Takim sposobem można nie ingerując nadmiernie w inne urządzenie (np. klawiaturka bankomatu, telefon, kamera, magnetofon szpulowy, tudzież inny lądownik marsjański) i sterować nim przez uC - taki powiedzmy odwrotny skimer 🙂

Powodzenia.

Link do komentarza
Share on other sites

Myślę, że Twój sposób jest dobry tylko dodaj na wszelki wypadek rezystor do bazy i kolektora tego tranzystora.

Niestety myślisz źle. Ten tranzystor nie ma zasilania, poza jakimś śladowym prądem z rezystora podciągającego na tym pinie, więc nie ma prawa działać. A gdyby nawet podłączyć mu zasilanie, to wypuści piękny niebieski dym gdy tylko wciśniesz przycisk.

Link do komentarza
Share on other sites

deshipu, na pewno wiesz jak działa tranzystor?

Rezystor przy kolektorze nie jest konieczny, ale jeśli dodamy rezystor przy bazie tranzystora układ powinien działać bez problemu. Można oczywiście dodać filtrację zakłoceń pochodzących z drgań przełącznika, ale jeśli to niewielki mikroswitch raczej nie powinno być z nimi problemu.

Czasem dodaje się jeszcze rezystor między bazę, a emiter. Jeśli zostanie wolny rezystor przeznaczony dla kolektora, to powinno być lepsze miejsce do jego wykorzystania.

Link do komentarza
Share on other sites

Opornik w bazie, jakieś 2-22k jest oczywiście konieczny, ale w kolektorze już nie. Przecież tranzystor jest zasilany z tego samego co przycisk - z jakiegoś podciągu po tamtej stronie. Skoro nie pali się przycisk a urządzenie poprawnie wykrywa zwarcie linii do masy to z tranzystorem będzie tak samo. Po wysterowaniu bazy popłynie prąd w kolektorze taki sam jak poprzednio przez zwarty przycisk. Na raz też można je zwierać, tak jak dwa przyciski połączone równolegle. Ważne, by masy obu urządzeń były połączone, bo lewy i prawy obwód korzystają z tego samego przewodu odniesienia.

Dodanie opornika, np. 100R w kolektorze zabezpieczy tranzystor gdyby niechcący zewrzeć mu kolektor do zasilania 5V lub gdyby lewej części udało się włączyć pin na wyjście w stanie 1. O tym już pisał deshipu.

W ten sposób można udawać przyciski tylko w bardzo prymitywnych urządzeniach, gdzie klawiatura nie jest matrycą no i gdzie zwieramy linie do masy.

EDIT: Pisaliśmy razem..

Link do komentarza
Share on other sites

Po wysterowaniu bazy popłynie prąd w kolektorze taki sam jak poprzednio przez zwarty przycisk.

A nie będzie on czasem za mały, żeby przez ten tranzystor przepłynąć? Zakładam, że tam jest użyty wewnętrzny podciąg na gpio, czyli jakieś 40kΩ -- to daje jakieś dziesiąte miliampera?

Poza tym pytanie było o najprostszy sposób połączenie, po co tam ten tranzystor?

[ Dodano: 02-02-2017, 01:10 ]

deshipu, na pewno wiesz jak działa tranzystor?

Niestety, okazuje się, że nie wiem. Pomyliłem z diodą, przepraszam.

Link do komentarza
Share on other sites

Dzięki za obszerne rozważania. Wiedza taka się na pewno przyda.

Układ oczywiście narysowany mocno ideowo. W docelowym układzie pin "A1" podciągnięty jest jeszcze do VCC przez rezystor 4,7k a na bazie tranzystora planowałem dać również rezystor.

Okazało się na szczęście, że układ posiada dwa wolne piny, na których w Arduino mogę stworzyć softwareserial. W poprzedniej wersji programu, tworzonej w BASCOM nie mogłem (może bardziej - nie umiałem).

Testowo układ działa: i na przycisk, i reaguje na rx/tx.

Link do komentarza
Share on other sites

A możesz wrzucić kod tego software serial? Może się przyda komuś do czegoś.

Nic odkrywczego. Układ działa na przykładach z https://www.arduino.cc/en/Reference/SoftwareSerial choć mam problemy z komunikacją dwustronną - że tak powiem - dłuższą wymianą zdań między procesorami 🙂

Problemem jest że procesor na raz może słuchać tylko jednego UARTa programowego, więc trzeba się między nimi przełączać [listen()]. To wymaga albo zwrotnych danych z układu do Arduino, albo timeoutu w Arduino. Z pierwszym mam problem, drugiego jeszcze nie umiem napisać.

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.