logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Sterowanie dużą ilością urządzeń przez komputer

ptrebacz 28 Sie 2006 01:14 3075 13
REKLAMA
  • #1 2960737
    ptrebacz
    Poziom 11  
    Posty: 35
    Jak wysterować dużą ilość urządzeń np. 64 urządzenia, poprzez dowolny port komputera (com, lpt, usb) wiem że ten temat już był ale w żadnym poście w grę nie w chodziła taka ilość urządzeń. Czekam na pomysły?? Jak to sterowa ć na komputerze, powiedzmy że uprościmy sprawę i przykładowo będzie to 64 LEDY i teraz chcę mieć możliwość każdego z osobna włączyć. Jak??


    Pozdrawiam
  • REKLAMA
  • #2 2960755
    syriuszblack
    Poziom 22  
    Posty: 718
    Pomógł: 29
    Ocena: 31
    W grę wchodzi chyba tylko USB, masz tam w sumie teoretyczną możliwość sterowania nieograniczoną ilością urządzeń. Ale to wiąże się z programowaniem mikrokontrolerów, pisaniem programów no i zbudowaniem kontrolera USB do sterownika + procesor + kupa innych bajerów. No i program do komputera też trzeba napisać. Chyba gra nie warta jest przysłowiowej świeczki.
  • Pomocny post
    #3 2960924
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 131
    To zależy jaką masz wprawę w programowaniu i jak szybkiej komunikacji potrzebujesz ;) Interfejs (komputerowy) dowolny, wystarczy rozsądnie wykorzystać potęgę drzemiącą w magistralach szeregowych.
    Np. I2C -> dostępne są układy wejść/wyjść z 8/16 wyprowadzeniami (np PCF8574, MCP23016) które można połączyć do 8 sztuk na magistrali co w zupełności wystarczy do Twoich potrzeb. Gotowe jest również uniwersalne oprogramowanie na PC potrafiące sterować magistralą ( podłączoną do np LPT).
    http://www.i2ctools.com
    http://www.i2ctools.com/Downloads/LPT-to-I2C_SE_Software_Users_Manual.pdf
  • #4 2961000
    przemo.t
    Poziom 27  
    Posty: 994
    Pomógł: 79
    Ocena: 30
    Kazdym portem to wysterujesz przy uzyciu dodatkowych ukladow. Zalezy do czego to ma sluzyc, jaka predkosc transmisji potrzebujesz. Okresl dokladniej do czego to ma sluzyc.

    Pozdrawiam
  • REKLAMA
  • #5 2963984
    ptrebacz
    Poziom 11  
    Posty: 35
    Prędkość nie gra tu dużej roli (byle nie czekać minute :) ), układ ma sterować (włączać i wyłączać urządzenia różnego typu oświetlenia, komputery, linie telefoniczne, itd. planuje użyć przekaźniki. Niestety na elektronice nie znam się za dobrze, więc jest mi trudno samemu coś wymyślić.
  • Pomocny post
    #6 2963991
    _jta_
    Specjalista elektronik
    Posty: 49109
    Pomógł: 3212
    Ocena: 4254
    można tak: demultiplekser 1->8 (3 wejścia adresowe, 1 danych, 8 wyjść); dalej 8 układów
    adresowalnych zatrzasków (addressable latch - każdy ma 8 wyjść, 3 wejścia adresowe,
    1 wejście danych, 1 strob); w sumie masz 8 wejść, 64 wyjścia. Podłączasz do LPT, i już.
  • #7 2964145
    ptrebacz
    Poziom 11  
    Posty: 35
    A mógł byś podać jakieś konkretne typy i oznaczenia tych elementów co powyżej, i jakiś schemacik
  • REKLAMA
  • #9 2967745
    ptrebacz
    Poziom 11  
    Posty: 35
    Mam już wszystko układy, 74LS259 x8 i 74LS138 x1 i teraz jakbyś mi ktoś jakiś schemacik narysował i opisął co i jak
  • REKLAMA
  • #10 2967924
    _jta_
    Specjalista elektronik
    Posty: 49109
    Pomógł: 3212
    Ocena: 4254
    LS138: 8=masa, 16=zasilanie(5V), 1,2,3=A,B,C (wejścia adresowe), 4=G2A, 5=G2B, 6=G1;
    15-9,7=wyjścia Q0-Q7 (czyli 15=Q0,14=Q1...,7=Q7). Podłączasz A,B,C,G1 do D4-D7 LPT1.
    LS259: 8=masa, 16=zasilanie(5V), 1,2,3=A,B,C (wejścia adresowe), 4-7,9-12=wyjścia Q0-Q7,
    13=D, 14=E, 15=CLR; A,B,C podłączasz do D1-D3 LPT1; E do wyjścia LS138 (każdy LS259 do
    innego wyjścia), D do D0 LPT1. Wejścia CLR... przydałoby się chyba móc wyzerować wyjścia,
    pytanie czy sygnałem z LPT1 (tam jest jakiś sygnał do resetowania drukarki, polaryzacja akurat
    nie taka, jak trzeba - CLR jest aktywny niski, a komputer daje normalnie niski na wszystkich pinach
    sterujących drukarki... trzeba np. zastosować tranzystor jako inwerter, albo zerować ręcznie).

    Ewentualnie możesz podać sygnał STROBE (pin1 LPT1) na G1 w LS138 (pewnie polaryzacja
    nie pasuje, więc G1 do +5V, a STROBE podajesz na G2A - i już polaryzacja pasuje), wtedy
    D7 możesz wykorzystać do resetowania układu. Uwaga, reset ustawia '0' na wyjściach.

    Zasilanie pewnie dobrze podłączyć z komputera - te wtyczki 4-pinowe z zasilacza na czerwonym
    przewodzie mają +5V, na czarnych masę (na żółtym +12V - za dużo dla układów 74xxx).

    A do wyjść LS259 podłączasz LED-y przez oporniki ze 330R do masy. Jak podłączyłeś D7
    do wejść CLR, STROBE do G2A, pozostałe D0-D6 tak, jak napisałem na początku, to:
    - "wypisanie na drukarkę" czegoś <80h powinno zgasić wszystkie LED-y;
    - "wypisanie na drukarkę" 80h+2*N+1 (N od 0 do 63) powinno zapalić N-tego LED-a;
    - i "wypisanie na drukarkę" 80h+2*N (N od 0 do 63) powinno zgasić N-tego LED-a.

    Opis portu LPT1: http://freefm.pluton.one.pl/mike/lpt.html

    Aha: nóżki układów scalonych liczymy tak: stawiamy go nóżkami do dołu, i patrzymy
    na niego z góry. Na jednym końcu jest wcięcie. Od tego wcięcia w lewo: 1 do 8 wzdłuż
    jednego boku (jak ma 16 nóżek - te tyle mają), i potem od 9 do 16 wzdłuż drugiego:
    16 15 14 13 12 11 10 .9.
    wcięcie
    .1. .2. .3. .4. .5. .6. .7. .8.
    i najczęściej 8 to masa, a 16 to zasilanie (dla tych tak jest) - uważaj by nie pomylić!
    (jak się źle podłączy inną nóżkę, to układ często to przeżywa, ale te muszą być dobrze;
    a, i jak patrzysz od strony nóżek, to wtedy liczysz w prawo, tylko tego wcięcia nie widać)
  • #11 2977706
    ptrebacz
    Poziom 11  
    Posty: 35
    Dobrze a jak teraz można odczytać stany z poszczególnych wyjść.
  • #12 2978581
    _jta_
    Specjalista elektronik
    Posty: 49109
    Pomógł: 3212
    Ocena: 4254
    Najwygodniej chyba wziąć LED-a i opornik ze 330R, połączyć szeregowo, jeden koniec do masy,
    do drugiego przewód, spróbować go połączyć do +5V - jak LED zaświeci, to dobrze, jak nie, to go
    podłączyć odwrotnie, wtedy zaświeci. Teraz dotykamy przewodem do wyjścia, jak jest '1', to LED świeci.

    Oczywiście można podłączyć LED-y (z opornikami) do wszyskich wyjść, i widzieć całość na bieżąco.

    Chyba, że masz na myśli odczytywanie z komputera - ten układ nie daje takich możliwości,
    jak chcesz móc coś takiego zrobić, to będzie potrzebna 8-wejściowa bramka AND (LS30?),
    i jakieś multipleksery (np. 8 sztuk 8-wejściowych, jeszcze miały aktywownie '0'-m i dawały
    na wyjściu '1', kiedy nie mają sygnału aktywującego, to już z tego byłby cały układ...).
  • #13 2981620
    yuleeda
    Poziom 14  
    Posty: 47
    Pomógł: 9
    Stanow wyjsc sie nie czyta bo wtedy bylyby to wejscia:D

    Starczy zaladowac w programie sterujacym na kompie tablice i zapamietywac stan przy kazdej zmianie.

    Jakis czas temu budowalem karte i/o i wykorzystalem 74ls238 jako dekodery adresu - 3 wejscia adresowe i 3 enable, z czego dwa aktywne na niskim. Kazda z linii byla podlaczona do enable w buforze 74ls573, wejscia bufora podlaczylem do 8bitowej magistrali danych - na 1 74537 przypada wiec max. 8x8=64 linii. najpierw wybieralo sie adres na wejsciach 238, potem ustawialo odpowiadajace danej kombinacji 8 linii.

    Moja karta:
    https://www.elektroda.pl/rtvforum/topic554910.html
    kliknij na ostatni z linkow(isa-pcb.png) - czesc sterujaca wyjsciami oparta jest na wspomnianym 238

    Jesli masz doswiadczenie w programowaniu mikrokontrolerow mozesz wziasc cos co ma duzo i/o i port szeregowy i zbudowac cos podobnego. Rozwiazanie byloby eleganckie w obsludze z pc i wglednie szybkie (waskim gardlem jest predkosc uarta na uC). I2C na LPT jakos mnie osobiscie nie przekonuje - wysylanie bit po bicie po liniach rownoleglych?
  • #14 2985307
    _jta_
    Specjalista elektronik
    Posty: 49109
    Pomógł: 3212
    Ocena: 4254
    Casem się czyta stany wyjść, żeby sprawdzić, czy wyjścia dobrze działają. Np. w porcie drukarki.
    Metoda dekoder adresu + 8-bitowe zatrzaski jest dobra pod warunkiem, że mamy więcej linii, na
    które można podawać sygnały - do tego nie wystarczy posyłanie danych na drukarkę, trzeba by
    jeszcze użyć kilku dodatkowych linii sterujących, a z tym mogą być jakieś problemy software-owe.

    Aha: w tej wersji też będą chyba problemy, jak się nie sprzęgnie odpowiednio sygnałów sterujących
    i statusów (np. STROBE z ACK - tylko czy tam nie jest potrzebny inwerter?), żeby komputer "widział"
    to jako normalnie działającą drukarkę, i nie miał nic przeciwko szybkiemu wysyłaniu danych...

Podsumowanie tematu

✨ Dyskusja dotyczy sterowania dużą liczbą urządzeń (np. 64 LEDów) z poziomu komputera przez porty COM, LPT lub USB. Najbardziej praktycznym rozwiązaniem jest wykorzystanie magistrali szeregowych, takich jak I2C, z układami rozszerzającymi wyjścia (np. PCF8574, MCP23016), które można łączyć szeregowo, co pozwala na sterowanie wieloma urządzeniami z jednego portu LPT. Alternatywnie proponowano układ z demultiplekserem 74x138 i ośmioma adresowalnymi zatrzaskami 74x259, co daje 64 wyjścia sterowane z portu LPT. Szczegółowo opisano podłączenie pinów tych układów do linii portu LPT oraz kwestie związane z resetowaniem i strobowaniem. Wskazano, że odczyt stanu wyjść nie jest bezpośrednio możliwy, dlatego zaleca się zapamiętywanie stanów w programie sterującym. Poruszono także temat budowy własnej karty I/O z wykorzystaniem układów 74LS238 i 74LS573 jako dekoderów adresu i buforów, co umożliwia sterowanie 64 liniami. Wskazano, że USB teoretycznie pozwala na nieograniczoną liczbę urządzeń, ale wymaga zaawansowanego programowania mikrokontrolerów i budowy dedykowanego kontrolera. Całość rozwiązania wymaga znajomości elektroniki i programowania, a szybkość transmisji nie musi być bardzo wysoka (np. włączenie/wyłączenie urządzeń w czasie krótszym niż minuta jest akceptowalne).
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA