Фоторезистор и com-порт

Тема в разделе "WASM.ELECTRONICS", создана пользователем mr_death, 26 апр 2008.

  1. mr_death

    mr_death New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2005
    Сообщения:
    42
    Доброго времени суток уважаемы участники форума. Столкнулся с проблемой следующего плана: есть фоторезистор, который считывает информацию с лазерного луча, когда луч падает – резистор открыт, когда не падает – соответственно закрыт. Собственно вопрос на какие ножки com-порт’a нужно подвязать данное изобретение, чтобы потом в дальнейшем написать программу по считыванию состояния ком порта…

    Адрес на мануал к железке, страница 8-9 (http://www.sick-rus.ru/files/products/w2.pdf)
     
  2. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    К цифровому сигналу, так тем более serial, нельзя подключить. Нужно использовать адаптер, типа такого:

    http://www.olimex.com/dev/avr-io.html
     
  3. mr_death

    mr_death New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2005
    Сообщения:
    42
    А где можно купить данный адаптер? и каким образом производить подключение?
     
  4. dag

    dag New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2004
    Сообщения:
    446
    А на LPT не пойдёт ?
     
  5. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    На LPT может пойдет - только проблема с matching voltage/input resistance, и так же есть возможность сломать LPT порт (или даже материнку) если сигнал не отфильтрован. Но вообще то с фоторезистором можно и без этого AVR адаптера (который можно заказать с www.olimex.com - или самому спаять. схема на сайте - компоненты стандартные - BJTs, resistors, diodes, и т.д.)
     
  6. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Погугли ИК-порт схема Найдётся много интересного.
    Конкретно по теме - зависит от параметров фоторезистора и условий работы. Для очень стабильного сигнала (постоянное расстояние от передатчика, отсутствие всякой внешней засветки и помех) Можно подобрать подтягивающий резистор так, чтобы порт срабатывал именно на сигнал - вся схема будет состоять из фотоприбора, резистора и блокировочного конденсатора (по желанию). Если необходим приём с движущегося передатчика, а не закреплённого на штативе, схему нужно усложнять. Советую воспользоваться готовым приёмопередатчиком (будут по тому же запросу в поисковике). Также можно погуглить "светотелефон", но у него несколько другой принцип работы, т.к. сигнал аналоговый.
     
  7. ksacvet777

    ksacvet777 Александр

    Публикаций:
    0
    Регистрация:
    9 ноя 2006
    Сообщения:
    180
    Адрес:
    Кемеровская обл.
    для этого используют развязку из оптопары
     
  8. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Элементарно Ватсон! :)
    Данное ТЗ :) воспринимаю буквально, т.е.:
    1. светодатчик у тебя - дискретного типа(!)
    2. нужно максимально просто его считывать, оценивать, мониторить компортом...
    Приступим.
    Поступаем таким образом, как когдато использовали компортовую мышь, т.е. запитку будем осуществлять самим же ком портом используя его выходы для организации слаботочного питающего.
    Известно, что компорт имеет помимо последовательных данных (линий, регистров...) еще
    и дискретные. Именно они нам и нужны!
    Берем один дискретный вход, например, один из сигналов статус-модемых "CTS" и паяем его к одному концу фоторезистора, другой его конец припаяем на выход компорта, например "RTS". Для того, чтобы схема была надежной и НЕ срабатывала на всякие импульсные помехи, прилепим еще один постоянный, "подтягивающий" резистор на другой выходной провод "DTR" R = (4..6)xR открытого фотосопр .
    Получился элементраный резистивный делитель! С преобладающим плечём фоторезистора, если он... если он ОБЛУЧЁН, освещен...!
    Гуглим методы и софт и пр. как работать с ком портом, скажем в винде. И...
    - о прелесть! Драйвера не нужны! Все есть в системе, контроллера никакого не надо, программ полно, даже готовых вот есть чудненькая терминалочка
    http://www.softoman.ru/windows/internet/connection/14933.html
    (или http://softsearch.ru/programs/123-258-wterm-download.shtml)
    http://packages.ubuntu.com/ru/source/hardy/wterm
    Помятуя о том, что ВСЕ выходы/входы компорта ДВУПОЛЯРНЫЕ подадим на выходы DTR и RTS ПРОТИВОПОЛОЖНЫЕ состояния (полярности).
    Теперь в зависимости от сотояния фоторезистора облучён/темнота средняя точка резистивного делителя, являющегося нашим программно-отслеживаемым входом CTS будет менять свой статус (полярность).
    Вот и ВСЁ!!!
    Заработал глоток пивка, однако! :)
     
  9. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    VaStaNi Согласен.
    Програмно доступно 4 линии на ввод и 3 линии на вывод.
    А как их использовать это уже дело каждого.
    Когдато подклучал последов. АЦП (ADS1286P) с опто-развязкой и линиями "дергал", работало.
    В КПИ спихнули такой девайс. Они там что-то меряли.

    Установить и опросить состояние линий можно таким макаром.
    Код (Text):
    1. f_SET_TD    proc hDlg:DWORD
    2.         invoke IsDlgButtonChecked,hDlg,ID_SET_TD
    3.         .if eax==BST_CHECKED
    4.             invoke  SetDlgItemText,hDlg,S_TD,ADDR szPlus12
    5.             invoke  EscapeCommFunction,hCOM1,SETBREAK  
    6.            
    7.         .else; eax==BST_UNCHECKED
    8.             invoke  SetDlgItemText,hDlg,S_TD,ADDR szMinus12
    9.             invoke  EscapeCommFunction,hCOM1,CLRBREAK  
    10.  
    11.         .endif
    12.         ret
    13. f_SET_TD    endp
    14. ; -------------------------------------------------------------------------
    15. f_SET_RTS   proc hDlg:DWORD
    16.         invoke IsDlgButtonChecked,hDlg,ID_SET_RTS
    17.         .if eax==BST_CHECKED
    18.             invoke  SetDlgItemText,hDlg,S_RTS,ADDR szPlus12
    19.             invoke  EscapeCommFunction,hCOM1,SETRTS
    20.         .else; eax==BST_UNCHECKED
    21.             invoke  SetDlgItemText,hDlg,S_RTS,ADDR szMinus12
    22.             invoke  EscapeCommFunction,hCOM1,CLRRTS
    23.  
    24.         .endif
    25.         ret
    26. f_SET_RTS   endp
    27. ; -------------------------------------------------------------------------
    28. f_SET_DTR   proc hDlg:DWORD
    29.         invoke IsDlgButtonChecked,hDlg,ID_SET_DTR
    30.         .if eax==BST_CHECKED
    31.             invoke  SetDlgItemText,hDlg,S_DTR,ADDR szPlus12
    32.             invoke  EscapeCommFunction,hCOM1,SETDTR
    33.            
    34.         .else; eax==BST_UNCHECKED
    35.             invoke  SetDlgItemText,hDlg,S_DTR,ADDR szMinus12
    36.             invoke  EscapeCommFunction,hCOM1,CLRDTR
    37.  
    38.         .endif
    39.         ret
    40. f_SET_DTR   endp
    41. ; -------------------------------------------------------------------------
    42. f_WM_TIMER  proc    hDlg:DWORD
    43. LOCAL   lpModemStat:DWORD
    44.  
    45.         invoke  GetCommModemStatus,hCOM1,ADDR lpModemStat
    46.        
    47.         mov     eax,lpModemStat
    48.         and     eax,MS_CTS_ON
    49.         .if     eax!=0
    50.             invoke  SetDlgItemText,hDlg,S_CTS,ADDR szPlus12
    51.         .else
    52.             invoke  SetDlgItemText,hDlg,S_CTS,ADDR szMinus12
    53.         .endif
    54.  
    55.         mov     eax,lpModemStat
    56.         and     eax,MS_DSR_ON
    57.         .if     eax!=0
    58.             invoke  SetDlgItemText,hDlg,S_DSR,ADDR szPlus12
    59.         .else
    60.             invoke  SetDlgItemText,hDlg,S_DSR,ADDR szMinus12
    61.         .endif
    62.  
    63.         mov     eax,lpModemStat
    64.         and     eax,MS_RING_ON
    65.         .if     eax!=0
    66.             invoke  SetDlgItemText,hDlg,S_RI,ADDR szPlus12
    67.         .else
    68.             invoke  SetDlgItemText,hDlg,S_RI,ADDR szMinus12
    69.         .endif
    70.  
    71.         mov     eax,lpModemStat
    72.         and     eax,MS_RLSD_ON
    73.         .if     eax!=0
    74.             invoke  SetDlgItemText,hDlg,S_DCD,ADDR szPlus12
    75.         .else
    76.             invoke  SetDlgItemText,hDlg,S_DCD,ADDR szMinus12
    77.         .endif
    78.  
    79.         ret
    80. f_WM_TIMER endp
     
  10. mr_death

    mr_death New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2005
    Сообщения:
    42
    Доброго времени суток. Прочел, подумал… подскажите а где взять схему разводки ком-потра, т.е. на какой ножке что находится. И где взять техническую схему сего изобретения чтобы потом, это изобретение, его спаять…
     
  11. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    http://hardwarebook.info/
    Гугл вам в помощь.