Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Регистрирование световых сигналов в Делфи


Автор: Alex103 7.7.2006, 22:53
У меня задача следующая. Мне нужно регестрировать световые сигналы которые создаються в окружающей среде. Фоторезистор будет играть роль приемника. Он в свою очередь изменяет сопротивление от определенного освещения. Далее он может менять напряжение. Каким образом сделать программу которая могла бы распознавать эти изменения. Программа может работать с любыми портами компа.
Заранее благодарен!!!!!!! 

Автор: Alexeis 7.7.2006, 23:51
Можно попробовать промодулировать сигналом с фоторезистора звуковой генератор и затем подать этот сигнал на АЦП звуковой карты, дальше получить сигнал(записать например с line in) Цифровой сигнал детектировать будет легко, а полученная амплитуда пропорциональна освещению. 

Автор: Alex103 8.7.2006, 00:50
Цитата(alexeis1 @ 7.7.2006,  23:51)
Можно попробовать промодулировать сигналом с фоторезистора звуковой генератор и затем подать этот сигнал на АЦП звуковой карты, дальше получить сигнал(записать например с line in) Цифровой сигнал детектировать будет легко, а полученная амплитуда пропорциональна освещению.

Хороший вариант! Подскажи что-то еще! 

Автор: Alexeis 8.7.2006, 01:01
Alex103, Если есть глубокие познания в электроние, можно вообще АЦП самому спаять, а уже цифру гнать например по COM порту, а если совсем в этом деле дока и Ethernet к АЦП приделать или USB.  Если использовать последнее, то без драйвера вообще не обойтись. В любом случае понадобится оцифровка сигнала, так как комп с аналоговым вообще работать не умеет. 

Автор: Alex103 8.7.2006, 09:50
ОК подскажи как можно сделать оцифровку сигнала!!!!!!

Добавлено @ 09:53 
А как можно загнать в компьютер сигнал без оцифровки. Может на звуковую карту ведь там цифровой сигнал необязателен!

Добавлено @ 09:58 
О и еще каким образом можно считывать програмно сигналы на звуковой карте и сравнивать их! 

Автор: Wing 8.7.2006, 14:21
Еще как вариант через микроконтроллер какой-нибудь. У ATMega например и встроенный АЦП и интерфейс UART, если я не ошибаюсь это тот же COM только назвали по другому. 

Автор: Alexeis 8.7.2006, 14:28
Цитата(Wing @  8.7.2006,  14:21 Найти цитируемый пост)
 интерфейс UART, если я не ошибаюсь это тот же COM только назвали по другому. 
 да все правельно.
Цитата(Alex103 @  8.7.2006,  09:50 Найти цитируемый пост)
А как можно загнать в компьютер сигнал без оцифровки. Может на звуковую карту ведь там цифровой сигнал необязателен!

Звуковая карта и делает оцифровку.

Добавлено @ 14:33 
дело в том что звуковая карта не пропускает сигналы с частотой менее 20 Гц, такой с которой и получается от датчика

Добавлено @ 14:36 
поэтому нужно либо делать свой АЦП с частотой от 0 до ... Гц, либо модулировать амплитуду генератора на более высокой частоте, чтоб проходила ч/з звуковую карту.

Добавлено @ 14:40 
Цитата(Alex103 @  8.7.2006,  09:50 Найти цитируемый пост)
 считывать програмно сигналы на звуковой карте и сравнивать их! 
 либо ручками писать с помощью встроенного mmSystem на Api , либо использовать DSPACK, либо BASS.dll, или другие библиотеки - таких море.  

Автор: Alex103 8.7.2006, 15:59
От какого датчика! 

дело в том что звуковая карта не пропускает сигналы с частотой менее 20 Гц, такой который и получается от датчика  

Автор: Alexeis 8.7.2006, 16:12
Цитата(Alex103 @  8.7.2006,  15:59 Найти цитируемый пост)
От какого датчика

Цитата(Alex103 @  7.7.2006,  22:53 Найти цитируемый пост)
Фоторезистор будет играть роль приемника

С каких пор фоторезистор не является датчиком smile

Добавлено @ 16:15 
датчик дает плавно меняющийся сигнал с очень низкой частотой. 

Автор: Alex103 8.7.2006, 16:21
Можешь конкретно подсказать что мне делать!

Добавлено @ 16:22 
И плиз Все по-порядку!

Добавлено @ 16:23 
Каким еще способом можно увеличить частоту. Ато микроконтролеры дорогое нужно подешевле! Мне не обязательно это делатьчерез звуковуху можно и через ЛПТ или СОМ 

Автор: Alexeis 8.7.2006, 16:29
Цитата(Alex103 @  8.7.2006,  16:21 Найти цитируемый пост)
И плиз Все по-порядку! 

Сигнал с фоторезистора имеет низкую скорость наростания и убывания, потому что освещение обычно меняется медленно. Аналоговый блок звуковой карты не пропускает медленно меняющиеся сигналы - попросту на выходе будет ноль. Если использовать свое АЦП с собственным аналоговым входом (без разделительного конденсатора), то можно оцифровывать сигналы сколь угодно медленно меняющиеся.

Добавлено @ 16:31 
с цифровым сигналом все просто - чем больше число тем выше или ниже освещенность (зависит от схемы включения фоторезистора). 

Автор: Alex103 8.7.2006, 16:35
ОК. Подскажи какой АЦП мне использовать. И смогу ли я его купить в Киеве. И какая его стоимость. И еще расскажи если можешь как с ним работать! И еще у тебя есть ICQ дай номер! 

Автор: Alexeis 8.7.2006, 16:35
Цитата(Alex103 @  8.7.2006,  16:21 Найти цитируемый пост)
Каким еще способом можно увеличить частоту.

Частоту можно увеличить если дополнительно использовать электрический звуковой генератор, сигнал с фоторезистора будет менять его амплитуду - точь в точь как в АМ радиоприемнике. 

Автор: Romikgy 8.7.2006, 16:36
Имхо проще уже через микрофоный вход 

Автор: Alexeis 8.7.2006, 16:41
Цитата(Alex103 @  8.7.2006,  16:35 Найти цитируемый пост)
Подскажи какой АЦП мне использовать

На этом мои познания в радиоэлектронике заканчиваются, подобного ни разу не делал, но в интернете это жутко популярная тема, так что с выбором микросхемы я думаю проблем не будет.
Мой ICQ 246-674-160(<offtop>только я в аське новичок даже не знаю толком что тут нажимать</offtop>)

Добавлено @ 16:43 
Цитата(Alex103 @  8.7.2006,  16:21 Найти цитируемый пост)
 Мне не обязательно это делатьчерез звуковуху можно и через ЛПТ или СОМ 

ЛПТ или СОМ могут работать только в случае использования внешнего АЦП

Добавлено @ 16:44 
Цитата(Romikgy @  8.7.2006,  16:36 Найти цитируемый пост)
Имхо проще уже через микрофоный вход 

Разве он идет без разделительного конденсатора? 

Автор: Romikgy 8.7.2006, 16:55
Цитата(alexeis1 @  8.7.2006,  15:41 Найти цитируемый пост)
Разве он идет без разделительного конденсатора? 

имхо без, в этом и прелесть , к данной задаче, т.к. надо же еще на фоторезистор напругу подать дабы что то измерить 

Автор: Alex103 8.7.2006, 16:59
Цитата(Romikgy @ 8.7.2006,  16:36)
Имхо проще уже через микрофоный вход

А что с микрофонным входом! 

Автор: Alexeis 8.7.2006, 17:03
Цитата(Romikgy @  8.7.2006,  16:55 Найти цитируемый пост)
надо же еще на фоторезистор напругу подать дабы что то измерить 

Не только напругу, надо будет и схемку согласования сделать с ограничирелем амплитуды, а то не дай бог сдохнет звуковуха. 

Автор: Mechanic 10.7.2006, 01:13
А как насчет встроенного в Game Port примитивного ADC (АЦП)?  smile 
Это там, куда допотопный джойстик втыкается. При отсутствии можно найти звуковуху с таким девайсом на борту. Там принцип простой, от подключенного сопротивления изменяется скорость разряда встроенного кондесатора. Примерный вес резистора на входе = 100 К. Подробнее можно почитать в доках про подключение аналогового джойстика. И дрова генерик джойстика в винде есть. И ДиректИнпут с ним работать должен..

А если делать на микроконтроллере, то посоветовал бы Atmel типа AT90S2313 - там ресурсов более чем достаточно, можно даже несложную логику обработки датчика организовать, его калибровочные данные, к примеру на борту микрика (EEPROM) хранить.  Сделать отслеживание допустимых "алярмовых" диапазонов, чтоб комп без нужды его не опрашивал, но чтоб он сам в комп кричал при превышении некоторых заданных порогов. Такой датчик можно будет даже без компа использовать после предварительной настройки и калибровки. 

Автор: Romikgy 10.7.2006, 10:05
Цитата(Mechanic @  10.7.2006,  00:13 Найти цитируемый пост)
А как насчет встроенного в Game Port примитивного ADC (АЦП)?

Логично и для данной задачи имхо само то, только управление его как ? 

Автор: Mechanic 10.7.2006, 11:35
Цитата(Romikgy @  10.7.2006,  10:05 Найти цитируемый пост)
Логично и для данной задачи имхо само то, только управление его как ?

Вот как раз с управлением (получением данных) проблем-то должно быть меньше всего. Если залезть в MSDN, и в строке поиска набрать "Joysticks", то найдётся всё, что нужно.

Другое дело - помехоустойчивость. Скорее всего, датчик должен стоять вдали от компа, а передача уровня на большие расстояния... Понятно, что точность таких измерений оставит желать лучшего.
Нужно что-то, что без потерь можно передавать на приличные расстояния. Вариант с контроллером в этом смысле намного предпочтительнее, т.к. сам микрик можно расположить в непосредственной близости от датчика (внутри корпуса), и передавать оцифрованные данные можно например через RS232 (RS485), а для токовой петли, да на 9600, даже километр - не расстояние.
Или же можно передавать не уровень, но частоту, обычный аудио-сигнал, который тоже дойдёт без искажений, и который можно усиливать при необходимости. Тогда понадобится преобразователь Уровень-частота. Помнится, была книжица "Подключение измерительной аппаратуры к ZX-Spectrum", так там такой генератор был ядром всех подключений, и обслуживался через 1-битный вход (магнитофонный, с разделительным конденсатором). Просто частота сигнала этого генератора должна изменяться в зависимости от значения измеряемой величины. И если настроить этот генератор так, чтоб предельные значения с датчика умещались в звуковой диапазон, понимаемый звуковой картой, то проблем при распознавании этой частоты на аудио-входе не должно быть. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)