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

Sterowanie urządzeniami i pomiar temperatury za pomocą LPT

alfam17 29 Lut 2008 01:29 3329 9
  • #1 29 Lut 2008 01:29
    alfam17
    Poziom 19  

    Witam.

    Prosił bym o wszelakie porady dotyczące zbudowania prostego układu którego zadaniem było by sterowanie (zał/wył) kilku urządzeń 230V, oraz pobieranie temperatury z kilku czujników. Wszystko to miało by być realizowane za pomocą portu LPT. Co do sterowania urządzeniami sprawa jest dosyć prosta ponieważ wykorzystał bym ten fragment schematu

    Sterowanie urządzeniami i pomiar temperatury za pomocą LPT.

    Powiedzmy można by było sterować czteroma urządzeniami.

    Pojawia się tylko problem z podłączeniem powiedzmy 4 czujników temperatury np. DS1820. Czy ktoś ma jakiś schemat jak podłączyć taki czujnik do LPT. Do których pinów LPT podłączyć te czujniki. Czy da się je bezpośrednio podłączyć do lpt?

    Oprogramowanie planuję napisać w C++

    0 9
  • #2 29 Lut 2008 12:59
    nemo07
    Poziom 36  

    Witam.

    alfam17 napisał:
    Pojawia się tylko problem z podłączeniem powiedzmy 4 czujników temperatury np. DS1820. Czy ktoś ma jakiś schemat jak podłączyć taki czujnik do LPT. Do których pinów LPT podłączyć te czujniki. Czy da się je bezpośrednio podłączyć do lpt?
    Tak to widze:
    Z wolnych linii DATA mozesz uzyc dwu linii do sterowania multipleksera "1 z 4", ktory wybierze dany czujnik (znaczy, do niego posle clock). Mozesz ponadto uzyc np. linii STROBE, jesli multiplekser bedzie wymagal pracy w trybie "latch" oraz np. SelectIn do przelaczania wyjsc multipleksera w stan "Hi-Z", kiedy jest czytane z czujnika.
    Kolejna linia DATA mozesz posylac takt do adresowanego multiplekserem DSxxxx.
    Wyjscia z czujnikow mozesz podac - rowniez przez multiplekser "1 z 4" - na ktoras z wolnych linii kontrolnych portu LPT: ACK (uwaga: pin inwertowany), BUSY PError, Select, albo FAULT.
    Takim sposobem mozesz adresowac co najmniej 16 czujnikow.
    Mozesz tez dla kazdego z czujnikow zarezerwowac po jednej linii DATA i jednej kontrolnej. Na cztery sztuki akurat wystarczy i nie wymagaloby dodatkowej elektroniki, oprocz wskazanego, jak zwykle, buforowania linii LPT.
    Info nt. LPT szukaj http://www.google.pl/search?hl=pl&q=parallel+port+centronics+pins+signals&meta=
    Pozdrawiam

    0
  • #3 29 Lut 2008 16:34
    alfam17
    Poziom 19  

    A nie dało by się zrobić tego w ten sposób:

    Sterowanie urządzeniami i pomiar temperatury za pomocą LPT

    dołączając poprostu kolejne czujniki i odczytując z nich dane?. Myślę że to by było prostsze niż zabawa w mulitpleksowanie. Niewykorzystane piny służyły by natomiast do sterowania urządzeniami 230V.

    Jeszcze pytanie czy prosto jest oprogramować taką komunikację z czujnikiem w języku C++

    0
  • #4 29 Lut 2008 18:27
    nemo07
    Poziom 36  

    alfam17 napisał:
    A nie dało by się zrobić tego w ten sposób: ... dołączając poprostu kolejne czujniki i odczytując z nich dane?. Myślę że to by było prostsze niż zabawa w mulitpleksowanie. Niewykorzystane piny służyły by natomiast do sterowania urządzeniami 230V.

    Cos jak to. Nie rozumiem jednak tego, jak chcesz "dołączac poprostu kolejne czujniki". Masz dosc linii aby podlaczyc wszystkie cztery sztuki na raz.
    alfam17 napisał:
    Jeszcze pytanie czy prosto jest oprogramować taką komunikację z czujnikiem w języku C++
    To proste klocki. Jesli nie wiesz jak, pogooglaj http://www.google.pl/search?hl=pl&q=Programming+LPT+port+windows+linux&lr=
    http://www.google.pl/search?hl=pl&q=Programming+LPT+port+DS1820&lr=
    Najlepiej napisac sobie DLL z potrzebnymi rutynami, obslugujacymi wszelkie sprawy I/O, gadanie z tymi DSxxxx i takie tam. Do takiej DLL mozna robic calls z roznych aplikacji; mozna ja tez zmodyfikowac bez potrzeby ingerencji w aplikacje. Wszystko pieknie, jesli sie opanowalo sztuke programowania.

    0
  • #5 01 Mar 2008 01:40
    alfam17
    Poziom 19  

    ---- --------------------------------------------------
    ----czujka1---------czujka2--------czujka3--------itd...
    -------------------------------------------------------

    chodzi o to że w 1 wire podpinamy kolejne urządzenia do jednej lini danych odwołując się do unikalnego adresu każdego urządzenia(no chyba że źle rozumuję). A do pinów D0-D3 rejestru danych podpiął bym sterowanie urządzeniami 230V. I z tego rejestru sterował bym raz załączaniem wyłączaniem urządzeń a raz odczytem z czujek

    0
  • #6 01 Mar 2008 19:57
    alfam17
    Poziom 19  

    Pojawił się jeszcze jeden problem. Skoro rejestr danych można ustawiać raz jako wyjście a raz jako wejście to jak pogodzić sytuację w której 4 piny powinny pracować jako wyjścia do sterowania urządzeniami a jeden pin jako wejście czytając po 1 Wire

    0
  • #7 01 Mar 2008 21:13
    nemo07
    Poziom 36  

    Przeciez to juz zostalo przegadane do bolu!
    Linie DATA sa per default w trybie OUT. I tak je uzywasz. A jedno z wejsc kontrolnych LPT uzywasz do sluchania.
    Na obrazku z interfejsem MLOG podsuneli Ci wszystko, pod sam nos:
    D4 (pin 6) ustawiona na HIGH zasila te Twoje DSxxxx. STROBE (pin 1) nadaje, a BUSY (pin 11) odbiera. D0...D3 (piny 2...5) uzywasz do swoich wyjsc.
    I gdzie tu problem?

    0
  • #9 22 Mar 2008 11:53
    alfam17
    Poziom 19  

    Witam nadal męczę się z tym układem i nie mogę dojść jak wymyślić algorytm odczytu temperatury z tych 4 czujników, zaznaczam że to moje pierwsze doświadczenia z tym układem i portem lpt.

    Z dokumentacji coś tam wyczytałem ale nie zadużo z tego rozumiem. Czy ktoś życzliwy mógł by mi podpowiedzieć jak to oprogramować w c++. Skorzystam z biblioteki winIO.

    Wystarczą mi informacje jakie stany wymuszać na pinach strobe i busy i o jakich czasach. Aby odczytywać temp z 4 czujników.
    Na stronie mlog niestety autor nie udostępni kodu źródłowego więc muszę się męczyć sam ;(

    0