Skocz do zawartości

Arduino piny jako wejścia a zakłócenia na nich


kolomir

Pomocna odpowiedź

Witam

Jakkolwiek dziwnie brzmi tytuł to właśnie o to mi chodzi. 

Poniżej jest bardzo poglądowy przykład mojego projektu. Może to się wydawać banalne ale jest to maleńka część większego projektu.

 

Przechwytywanie.thumb.PNG.b81bdff9cf8835c2b87333dbe4a6a672.PNG

Z tym jednak fragmentem mam problem.

Zasada działania jest taka że:

- do złączy NO przekaźników podłączony jest stan wysoki na stałe

- złącza NC przekaźników podłączone są na stałe do wejść. 

- przekaźniki działaj w pętli czyli załączają się jeden po drugim sprawdzając stan wejść. W jednej chwili załączony jest tylko jeden przekaźnik.

- Po zwarciu 2 (lub więcej pinów wejść) mamy jakaś określoną akcję

- na schemacie mam tylko 3 przekaźniki natomiast normalnie może być ich 8 (powinno być ale tu mam problem) a finalnie  będę starał się ich mieć jeszcze więcej

Tak jak wspomniałem problemem są piny 0 (RX) oraz 1 (TX). Gdy te piny użyję jako wejścia to mam dziwne zakłócenia, nie wiem... stany nieokreślone... ponieważ nawet niepodłączone generuj że podany jest stan wysoki. Przyznaję że trochę to dziwne i tracę przez to 2 piny. Poza tym chciałem podłączyć zestaw przekaźników do WeMOS D1 (4 szt. da się podłączyć) ale dziwne "sianie" również tam występuje. Wygląda jakby piny WEJŚCIE były zwarte pomimo że np. nic nie podłącze. 

Czy ja coś robię nie tak czy może płytki są uszkodzone? Wszystkich jednak trafić nie może.

Może ma ktoś jakiś pomysł?

PS. Nie zamieszczam kodu ponieważ jest to zwykłe odpalenie przekaźnika oraz sprawdzenie wejścia. Poza tym podłączone tak jak na schemacie ... zaczynając od pinu 2 wszystko działa świetnie na UNO.

Dziękuję za każda pomoc.

 

 

Przechwytywanie.PNG

Link do komentarza
Share on other sites

Na początek zastanów się albo przeczytaj jaką drogą program który napisałeś dostaje się pamięci procesora i jaką rolę pełnią w tym piny TXD, RXD. 

Poza tym trudno patrzeć na takie próby bez uśmiechu. Po co tu przekaźniki? Usłyszałeś o nich i postanowiłeś użyć, rozumiem, ale ludzie wymyślili znacznie lepsze, cichsze, szybsze i mniej prądożerne rozwiązania do przełączania sygnałów. Jeśli chcesz komutować jakieś linie na piny procesora, to użyj multipleksera albo zwykłych bramek. W jednym scalaku 74HC151 masz przełącznik (mówimy: multiplekser) 8:1 sterowany tylko 3 liniami. W 74HC152 masz 2 przełączniki 4-wejściowe, itd itp. To samo w drugą stronę: masz dekodery. I dalej: do komutacji sygnałów analogowych masz multipleksery analogowe np. 74HC4051. Spróbuj o przekaxnikach mysłeć raczej w kategoriach załączania silniczków (i to też prymitywnego) albo koniecznej izolacji między obwodem cewki a stykami. To nie jest ten przypadek jak widzę.

Link do komentarza
Share on other sites

Dzięki. Zastanowię się nad tym co powiedziałeś na temat roli TX i RX ale nie wiedzieć czemu pomyślałem że transmisja odbywa się po ich aktywowaniu a normalnie są to piny we/wy - tak jak PWM na przykład. Poza tum dlaczego na WeMOS to nie działa tak jak na UNO tylko sieje coś

Tak wiem o czymś takim jak multiplekser i mam to również na uwadze jak również MCP23017 (myślę że to będę chciał potem adoptować) - ekspander wyprowadzeń I2C a zamiast przekaźników mechanicznych coś takiego MAX333ACPP+. Tak, to wszystko się zgadza. Teraz jednak miałem tylko mechaniczne przekaźniki. Ponieważ to jest bardzo wczesny początek więc do testów to wystarczało (2 płytki po 4 przekaźniki + 2 arduino ) docelowo może być podłączonych ... nie wiem ... 10 x arduino i 60 - 80 przkaźników i wszystko komunikujące się między sobą

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

To może napisz po prostu co chcesz zrobić, zamiast rzucać ochłapy o tym jak. Jeśli zaczniesz od czegoś głupiego, to potem system się rozrasta i coraz trudniej wrócić na właściwe tory. A wygląda, że plany masz szerokie. Często początkujący widzą tylko mały wycinek problemów i używają pierwszego znalezionego narzędzia, zwykle nieoptymalnego. Ekspander portów to nie to samo co multiplesker, ale rozumiem, że chcesz go użyć do załączania kluczy analogowych - z resztą firmy chyba jednej z najdroższych na świecie. Po co? Masz aż takie wymagania na szybkość, na signal integrity czy nie bardzo czujesz co robisz? Czy możesz pokrótce opisac strukturę całości? Może jakiś schemat blokowy docelowego rozwiązania? Skąd będą pochodziły sygnały, które chcesz wprowadzić do procesora? Po co w ogóle ta komutacja? Jak szybkie będą to sygnały i co procesor ma z nimi robić? Nie warto fiksować się na pierwszym pomyśle (a na coś takiego mi to wygąda), napisz coś więcej i może ktoś znajdzie zupełnie inne rozwiązanie problemu niż planowana plątanina Arduino. Wiele procesorów to rosnące lawinowo kłopoty z komunikacją i utrzymaniem systemu w działaniu. Wyobrażasz sobie zmianę oporgramowania w tylu płytkach i opanowanie protokołów komunikacyjnych między nimi? Już nie wspominam o zasilaniu czy prowadzeniu mas.

Link do komentarza
Share on other sites

@marek1707 - jeśli masz jakiś namiar na tańsze ekspandery portów to z chęcią zerknę na to. Poniżej opis mojego przedsięwzięcia. Coś więcej mogę na PM dodać.

@deshipu - tak jak mówię, nie mam teraz nic innego a docelowo użyte będą MAX333ACPP+ - wiem że strasznie drogie ale nie znalazłem za bardzo zamienników. 

Ok. Sprawa jest prosta. Urządzenia budowane w oparciu o arduino - WeMos (bo liczy się wielkość a racze minimalizacja oraz komunikacja bezprzewodowa) to ... drony to za dużo powiedziane ale moduły które są indywidualnymi urządzeniami. Każdy z nich musi komunikować się bezprzewodowo. Każdy z nich ma swój indywidualny i unikatowy numer ID. Sterowanie nimi odbywa się za pomocą centralnie usytuowanego komputera ... również bezprzewodowo. 

Całość ma za zadanie test kabli i wiązek dlatego tez potrzebne są te przekaźniki. te piny wejściowe z mojego pierwszego schematu to nic innego jak piny testowe. wiadomo że jeden pin musi stanowić wejście i wyjście stąd takie a nie inne rozwiązanie. Przekaźnik w stanie spoczynku ma podłączony pin arduino na wejscie a gdy podamy mu sygnał to ustawia się na wyjście czyli przełącza sie na 5V. 

Reszta pracy jest a raczej powinna być wiadoma... przekaźniki załączają się po kolei, po kolei podając 5V. Gdzieś na drugim końcu jest inny taki moduł który odnotowuje stan wysoki. Informacje słane są do komputera a ten przedstawia nam wynik testu. W jednej chwili można będzie wykonywać kilka - kilkanaście różnych testów - wiem że będzie działać bo potwierdziłem to już.

To tak w wielkim skrócie wygląda.

Udało mi się już napisać szablon programu sterującego w C#, skomunikować moduły z programem, tak jak mówiłem w pierwszym poście... gdy zacznę używać piny w arduino od 2 i nie sieje mi zakłóceń to mam już gotowe moduły. Muszę je tylko rozbudować - będą min 2 przekaźniki a maksymalna liczba ... raczej ma być nieokreślona. Na końcu jeszcze zminimalizować to tak bardzo jak się da. 

Link do komentarza
Share on other sites

52 minuty temu, kolomir napisał:

Reszta pracy jest a raczej powinna być wiadoma... przekaźniki załączają się po kolei, po kolei podając 5V. Gdzieś na drugim końcu jest inny taki moduł który odnotowuje stan wysoki. Informacje słane są do komputera a ten przedstawia nam wynik testu. W jednej chwili można będzie wykonywać kilka - kilkanaście różnych testów - wiem że będzie działać bo potwierdziłem to już.

A skąd ten drugi moduł wie jaki stan to wysoki, skoro nie są ze sobą połączone masy i nie masz wartości odniesienia?

Link do komentarza
Share on other sites

Wiem co masz na myśli i przewidziałem to również. To nie będą wielkie odległości. Będzie różnie od około 0,5m do 4-5m całość raczej na stołach do budowy takich wiązek. Nic nie stoi na przeszkodzie aby moduły były przypinane do tych w miejscach gdzie będą podłączane. Przypinki będą pod stołem łączyć się razem tworząc wspólną masę. Lepiej? Myślę że zadział 😉

Link do komentarza
Share on other sites

W mojej ocenie sytuacja jest przykra, bo masz entuzjazm, narobiłeś się sporo i teraz szkoda tego wszystkiego gdy okazuje się, że wyważałeś otwarte drzwi, że lepiej było myśleć wcześniej zamiast realizować pierwszy, nieskonsultowany pomysł. Przede wszystkim napisz co chcesz testować/sprawdzać  w tych kablach. Czy będziesz coś mierzył ilościowo (rezystancje, izolacje, przesłuchy, pojemności) - ale z tego co widzę to raczej nie, czy wystarczy Ci tylko informacja "jest przejście - nie ma" oraz "jest zwarcie żył - nie ma". Jeżeli ma to być prosty tester, to w ogóle nie potrzebujesz inteligencji procesora po drugiej stronie. Jeden koniec kabla wtykasz do gniazda w testerze a na drugim końcu wystarczy, że zrobisz odpowiednią, pasywną zaślepkę. Nie jest wtedy potrzebne całe to radio i mnóstwo komputerków. Wystarczy jedno Arduino obsługujące np. 10(100?)  gniazd testowych umieszczonych blisko siebie i 10/100 zaślepek.

A jeżeli już te żałosne przekaźniki: ekspendery portów są drogie, bo muszą mieć w środku silnik I2C oraz są konfigurowalne. Tobie coś takiego nie jest potrzebne więc możesz do sterowania użyć zwykłych rejestrów 74HC594/595 (po 1.50zł/szt) podłączonych do szyny SPI. Wtedy za pomocą 3 pinów (SCK, MOSI, LOAD) obsługujesz w zasadzie nieograniczoną liczbę wyjść cyfrowych. W takim testerze nie potrzeba jakiejś wielkiej prędkości transmisji ani nie ma jakichś megabajtów danych więc połączenia równoległe do procesora jakie masz zamiar zastosować nie są potrzebne. Idąc dalej: wejścia także możesz zrobić na łańcuchu rejestrów np. 74HC165 podłączonych do tej samej szyny SPI więc w sumie 5 pinów procesora (SCK, MOSI, MISO, LOAD, READ) może obsłużyć setki wejść/wyjść cyfrowych. Reszta zostanie na komunikację z PC, jakieś LEDy, wyświetlacz czy co tam wymyślisz. 

Co więcej, przemyśl co się będzie działo gdy kabel będzie miał zwarcia, czy np. piny procesora w Twoim podejściu będą bezpieczne? Bo zwierać do masy ich nie wolno.

Rozwiązania siłowe (muszę wykorzystać 100% pinów procesora a i tak mi brakuje, ratujcie) są słabe i wskazują na brak doświadczenia.

Ja bym jednak zrobił to  np. na pomiarach napięć z drabinki rezystorowej umieszczonej w pasywnej zaślepce po drugiej stronie kabla.

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.