Elektroda.pl
Elektroda.pl
X
Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterowanie RS 232 w Delphi 7

19 Kwi 2005 16:53 12265 31
  • Poziom 15  
    Chciałbym napisać program w Delphi 7 sterujący dwoma przekaźnikami podpiętymi pod port RS 232. Proszę o jakieś materiały, www, porady, etc.

    Dzięki za wszelką pomoc.
  • Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
  • Poziom 28  
    Hi !

    Od strony programowej to nie jest skomplikowane zadanie. Napisz tylko jak chcesz rozwiązać część sprzętową: sterownik, zasilanie itp.

    Pozdrawiam...
  • Poziom 16  
    Jest pełno komponentów obsługujących RS232 pod Delphi np Torry's Delphi Pages.
  • Poziom 15  
    Ogólnie chce napisać program, który będzie sterował dwoma przekaźnikami (napięcie zależy od tego jakie przekaźniki kupię, myślę że na 5V), przekaźniki mają działać jako wyłączniki chwilowe, a to będzie wykorzystane w ukłądzie sterownika silnika krokowego.
    Sam układ jest zasilany napięciem 12V, natężenie 0,15A (tyle pobiera sam silnik), nie wiem czy cały układ mógłby być zasilany poprzez RS 232?
    Więc tak to wygląda w skrócie.
    Mam już komponent do Delphi, ComPort.
  • Poziom 16  
    Obawiam się, że bezpośrednio z portu nie będzie można bezpośrednio sterować układem. Trzeba będzie zastosować układ typu MAX232 lub coś podobnego.
  • Poziom 15  
    Bezpośrednio to ja nie chce sterować układem, tylko przekaźnikami.
    Co to jest MAX232?
  • Poziom 16  
    wesol napisał:
    Bezpośrednio to ja nie chce sterować układem, tylko przekaźnikami.
    Co to jest MAX232?


    zamienia poziomy rs232-TTL

    bez max232 trzeba sie troche pobawic bo chyba wiesz jakie sa zakresy napiec na tym porcie? :> -12 - 12V :)
  • Poziom 15  
    Ale czy ty stanowi jakiś problem w sterowaniu przekaźnikami na 5V, jak nawet to nie ma problemu kupić przekaźniki na 12V.
  • Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
  • Poziom 34  
    niepolecam pobierania 12V z rs232 do bezpośredniego sterowania przekaźnikiem:
    1. mała wydolność prądowa wyjść - 40mA max
    2. można przepalić płytę główną lub karte rozszeżeń
    3. przekaźniki indukują spory prąd
    do tego trzeba zastosować zewnętrzne źródło zasilania oraz tranzystory lub tym podobne.. gdy stosuje sie tranzystory można pominąć konwersje z rs232 na TTL.. jeśli ktoś używa buforów typu L298N (tak jak ja) lub inne to wtedy powinno sie przekształcić sygnał na TTL.
  • Poziom 15  
    BoskiDialer użyłeś pełno nie zrozumiałych dla mnie pojęć.
    Od strony programowej już sobie poradzę.
    Martwi mnie jedynie budowa samego układu wykonawczego, nie mam pojęcia jak to zrobić. Możecie mi wyjaśnić jak to najlepiej zrobić z tymi przekaźnikami? Przypominam chcę sterować dwoma przekaźnikami poprzez RS 232. Dzięki za wszelkie rady, pomysły, rozwiązania.
  • Poziom 24  
    Heja!
    Wesol - może to będzie pomocne:
    {Komponent TRsPin służy do kontroli pinów portu szeregowego.
    Zastosowanie - elektronika amatorska : sterowania, programatory itp.
    Autor : Jerzy Szczesiul jerzy.szczesiul(malpa)ep.com.pl
    Kod Open Source do swobodnego wykorzystywania }
    Pozdrawiam,
    Kuba
  • Pomocny post
    Poziom 20  
    Tak, można. (Ale....)
    Na podanej stronie masz opis układu wykonawczego włączającego przekaźnik na podstawie stanu logicznego (to, co na obu schematach zaczyna się od końcówki 12 mikrokontrolera PIC). Możesz takie same układy podpiąć do pozostałych wolnych portów mikrokontrolera.
    Tak, jak pisali to przedmówcy - potrzebny Ci będzie oprócz tego max232, aby procek mógł rzomawiać z komputerem.
    Jeżeli wystarczy Ci sterowanie ośmioma urządzeniami - podobne układy możesz sterować bezpośrednio z linii portu LPT.
  • Poziom 15  
    OK,
    myślę że wykorzystam układ opisany na stronie podanej przez mnie wcześniej i tego max232, tylko co to jest właściwie???

    Mam jeszcze takie pytanie, w układzie sterownika silnika krokowego znajduję się potencjometr odpowiedzialny z prędkość silnika, czy można zastąpić ten potencjometr czymś czym mógłbym również sterować za pośrednictwem rs 232? Chodzi o to żebym mógł sterować w pełni całym układem kompem a nie manulanie, przyciskająć wyłącznik chwilowy lub kręcąc potencjometrem.
  • Poziom 20  
    IMHO nie da się bezpośrednio sterować silnikiem, przekaźnikiem itp za pomocą rs232. lepiej się nadaje do tego port LPT. zobacz temat "tworzymy faq..."

    W wypadku rs232:
    Urządzeniem steruje program mikrokontrolera, (w tym przypadku PIC) a rs 232 jest wykorzystywany do przesyłania komunikatów. Aby mikrokontroler mógł odebrać sygnał z rs232, przydaje się układ max232, o czym już ktoś pisał w tym wątku.

    Z tego, co widzę na stronie, której adres podałeś:
    http://www.mikroelektronika.co.yu/english/product/books/PICbook/7_10chapter.htm
    pic16f84 nie ma sprzętowego interfejsu rs. Trzeba go realizować programowo.
  • Poziom 15  
    Jestem amatorem i nie znam się na tym.
    W sumie mówicie mi więcej niż na początku chciałem, za co Wam dziękuję.
    Teraz chciałbym podsumować to wszystko, bo powiem szczerze trochę się pogubiłem. Podsuneliście kilka rozwiązań. Mniej więcej wiem już jak to zrobić, jak mówiliście wykorzystam układ max232 (poszukałem trochę i już wiem co to jest) i schemat ze stronki. Szukałem na avt takiego układu, mają tam 3 rodzaje http://sklep.avt.com.pl/go/_search/full_searc...cae6&search_query_words=max232&search_by=name nie wiem teraz który powinienem wziąść. Jakie są wyprowadzenia w tym układzie? Może ktoś narysował by mi schemat jak to podłączyć. Czy układ pic16f84 trzeba prorgamować? Ile ja mam jeszcze pytań:]
  • Poziom 20  
    obudowa dip16 to taka "klasyczna", sop16 to smd.

    Tak, pic trzeba programować. Więcej się dowiesz na forum "mikrokontrolery".

    Nie chcę robić antyreklamy, ale sklep avt nie ma zbyt solidenj opinii. Osobiście najczęściej korzystam z www.seguro.pl.
  • Poziom 15  
    No to takie rozwiązanie chyba odpada, bo nie mam jak zaprogramować układu.
    Co tu teraz robić?
  • Poziom 10  
    Siema!!
    Mam Delphi 7 i komponent ComPort. Nie wiem jak uruchomic piny (tzn. Chcem zrobić program w który po naciścięciu Button1 będzie sie załączałą lampka) nie wiem do jakich pinów podłączyć coś. POMOCY!!!
  • Poziom 11  
    Ja mam inne pytanie ale nawiazujace do rs232 i delphi

    Jak wiadomo z Rs232 potrzba nam GND RxD i TxD
    (+max232)
    I naprzyklad uklad do ktorego chcemy sie podlaczyc jest zasilany 5V
    wiec trzeba uzywac owego maxa i brac zasilanie skads...

    A czy da sie zamiast RS232 uzyc USB ??
    Jak wiemy mamy tam 5V czyli zasilanie juz mamy i sa tez tam dwie linie do przesylania danych.
    Tylko czy tak mozna ?? czy moze te dwie linie dzialaja na innej zasadzie ??

    Dziekuje
  • Poziom 29  
    Hej...
    --> Kano15x
    Co do wypowiedzi to żeby ustawiać stany na pinach rs232 nie używam komponetów bo łatwiutko można to zrobiś za pomocą funkcji EscapeCommFunction(hCommDev, YYYY); gdzie YYYY to:
    CLRDTR
    CLRRTS
    SETDTR
    SETRTS
    SETXOFF
    SETXON
    SETBREAK
    CLRBREAK

    przed tym jednak trzeba uzyskać uchwyt do danego portu np:

    hCommDev := CreateFile
    ('COM1',GENERIC_READ,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0 );

    --> Remx

    Ja ustawiam na pinach stan wysoki i mogę wtedy z nich pobierać zasilanie ale trzeba się liczyć z tym, że obciążalność tego portu jest mała (ok.10mA na pin) i zależna od typu układu UART czyli od komputera. Napięcie też jest różne ok.8-13V dla stanu wysokiego ale wystardzy dać diodę zenera 5V2 i można zasilać układy cyfrowe.

    Jeśli nie trzeba jednoczesnej transmisji w obu kierunkach (Half-Duplex) to wystarczy poniższy prosty układ na jednym tranzystorku/jedną stronę zamiast MAX232...
    UKŁAD jest sprawdzony i działa napewno....

    Pozdrawiam.
    PROKOPCIO
  • Poziom 10  
    Sorry że pytam(jestem troche ciemny w programowaniu) ale co to za funkcja "EscapeCommFunction"... Mógł byś mi troche więcej wytłumaczyć na ten temat...
  • Poziom 29  
    Więc tak...

    hCommDev - jest to zmienna typu THandle:
    var
    hCommDevice : THandle;


    Najpierw tworzymy uchwyt do danego portu np:
    hCommDev := CreateFile('com1', GENERIC_READ or GENERIC_WRITE, 0,NIL, OPEN_EXISTING, 0, 0);

    jak już mamy uchwyt to możemy sterować poszczególne piny i tak np.
    EscapeCommFunction(hCommDev,SETRTS);
    ustawi stan wysoki na pinie wyjściowym RTS.

    jak jeszcze będziesz miał jakieś pytania to pisz.

    Dodano po 2 [minuty]:

    Acha przed zakończeniem programu należy zwolnić port:
    CloseHandle(hCommDev);
  • Poziom 10  
    Ok
    Udało mi się, skompilowałem i działa... ale :/ ... do którego pinu i jak podłączyć przekaźnik czy tesh diode... (to będzie ten schemat u góry?)
  • Poziom 36  
    Kano15x napisał:
    Ok
    Udało mi się, skompilowałem i działa... ale :/ ... do którego pinu i jak podłączyć przekaźnik czy też diode... (to będzie ten schemat u góry?)


    RTS w złączu DB9 to pin numer 7

    Oczywiście przekaźnika tam bezpośrednio nie dołączaj, bo po pierwsze może nie starczyć prądu, a po drugie jak pójdzie przepięcie przy rozłączaniu, możesz spalić nie tylko RSa, ale coś więcej.

    Diodę między ten pin i masę (jakiś oporniczek ograniczający np. 1k).

    W przypadku przekaźnika proponuję tranzystor (tak jak w tym układzie z PICem), albo lepiej - najpierw transoptorek np. 4N25 (strona pierwotna tak, jak ta dioda, emiter tranzystora wyjściowego transoptora na bazę tranzystora sterującego przekaźnikiem, kolektor do plusa). PECET kosztuje znacznie więcej od przekaźnika, więc szkoda go zniszczyć. W ostateczności na bazie tranzystora transil zabezpieczający (do masy).
    No i jeszcze zasilanie, oczywiście niezależne od PC.
  • Poziom 10  
    Ja mam jeszcze takie pytanie co do tego zaprogramowania programu:P
    na xp chodzi bez zarzutow(wyłącza sie, włącza się:D) a pod 98 .... tylko załącza nie da sie wyłączyć, dopiero jak wyłącze i z powrotem włącze Port Com1 w Menadrzerze urządzeń. Jak mam to naprawic? Może ktoś zna skrypt ktoty wyącza urządzenia i je załącza w Delphi 7. Pomocy...
  • Poziom 29  
    U mnie działa - w Windows 98 se - '?w?
  • Poziom 15  
    Już nie mogę patrzeć na Wasze skomplikowane rozwiązania układowe !

    Po co komu qr... max232 (konwerter poziomów stanów logicznych) do sterowania 2 przekaźnikami?

    Poza TXD i RXD masz jeszcze linie sterujące pracą modemu - mozesz je wykorzystac bgez kombinowania...

    Tutaj jest opis wraz z przykładowym kodem źródłowym dla 2 diód LED - zamień diody na tranzystorki BC337 połączone przez rezystory ~10k, do tego diody BAT albo coś w tym stylu przy przekaźnnikach (zwróć uwagę na polaryzację) i masz po problemie...

    http://kudlaty-website.kom.pl/podstrony/kursy/serial/porty_delphi.pdf

    Możesz zrobić to też na rejestrach przesównych...

    btw. pytanie zadałeś po prostu w złym dziale, trzeba było to zrobić w "Mikrokontrolery...

    Pozdrawiam
    Patryk

    Dodano po 15 [minuty]:

    ps. jeśli bardzo zależy Ci na bezpieczeństwie swojego kompa, możesz zastosować optoizolację na optotriakach pomiędzy portami a tranzystorami, wtedy nawet jak będziesz miał przebicie na cewce przekaźnika i popłynie przez układ 230V, to najwyzej stracisz przekaznik, diodę rezystor i optotriak - jakieś 2.5 zł, taniej niż PC'et - prawda?
  • Poziom 29  
    Nikt nie pisał o tym żeby sterować Rx/Tx -> przecież przykład (program) steruje linią RTX...
    co do układu ze schematu - to tylko jest idea przejącia ze stanów RS232 na TTL i może być zastosowany dla każdej linii portu - poza tym nie uważam żeby układ był skomplikowany jak pisał xPatryk (cytuję):
    "Już nie mogę patrzeć na Wasze skomplikowane rozwiązania układowe ! "
  • Poziom 15  
    Hmm... zakładam, że użycie MAX232 wymagać będzie od wesol'a:

    - wykonania płytki
    - wlutowania podstawki (domyślam się, że nie wlutuje od razu max232 bez jego spalenia)
    - umieszczenia max'a,
    - umieszczenia 5 kondensatorków
    i dopiero potem reszta układy w tym stylu, co pisałem...

    Ponadto proponowałbym zastosować układ opisywany w CHIP'ie (również na forum Download), on ma 8 wyjść i daje większe możliwości - koszt do 8-10 zł z przekaźnikami...

    Pozdrawiam
    Patryk