Искажение импульса на проводе

Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт окт 28, 2010 03:49:33
Откуда: откуда все люди родятся

Сообщение Mytilus G. »

Привет!
Продолжаю играться с фотоприемниками. Ситуация такая:
Изображение

VD0 освещает оба фотоприемника. ШИМ микрухи обеспечивает нужную частоту мерцания светодиода VD0. Двигаем некий барьер вдоль приемников. Барьер перекрывает свет VD0 сначала одному приемнику, потом - второму. Таким образом, МК определяет направление движения этого барьера. При одном направлении МК включает VD1, при обратном направлении - выключает. Решение о включении/выключении принимается, когда оба приемника облучены, на основании сохраненных данных о их предыдущем состоянии.

Код:

Код: Выделить всё

.def CUR_VALUE = R16 ; текущее значение PIND
.def OLD_VALUE = R17 ; предыдущее значение PIND
.def TMP_VALUE = R18 ; вспомогательный регистр

ser TMP_VALUE
out DDRB, TMP_VALUE ; порты B - на вывод, D - на ввод
out PORTB, TMP_VALUE
out PORTD, TMP_VALUE
ldi TMP_VALUE, 0b01110011 ; настраиваем ШИМ
out TCCR0A, TMP_VALUE
ldi TMP_VALUE, 0b00001001
out TCCR0B, TMP_VALUE
ldi TMP_VALUE, 7
out OCR0A, TMP_VALUE
clr OLD_VALUE

LOOP:
  in CUR_VALUE, PIND ; считываем данные с приемников
  andi CUR_VALUE, 3 ; обнуляем биты старше второго
  cp OLD_VALUE, CUR_VALUE ; если данные те же, что и в пред. витке цикла, ...
  breq LOOP ; ... продолжаем цикл
  mov TMP_VALUE, OLD_VALUE ; запоминаем старые данные с приемников
  mov OLD_VALUE, CUR_VALUE ; замещаем старые данные новыми
  cpi CUR_VALUE, 0 ; если хотя бы один приемник не облучен, ...
  brne LOOP ; ... продолжаем цикл
  ; оба приемника облучены
  cpi TMP_VALUE, 1 ; если только первый приемник в пред. витке цикла не был облучен, ...
  breq LIGHT_ON ; ... включаем VD1
  cpi TMP_VALUE, 2 ; если же только второй приемник в пред. витке цикла не был облучен, ...
  breq LIGHT_OFF ; ... выключаем VD1
  rjmp LOOP ; иначе продолжаем цикл

LIGHT_OFF:
  sbi PORTB, 0
  rjmp LOOP

LIGHT_ON:
  cbi PORTB, 0
  rjmp LOOP
Собрал это на макетке, все работает. После повесил VD0 на кабель и началось черт-те что. VD1 горит постоянно, если оба приемника облучены. В противном случае - гаснет.

Кабель - телефонный, около метра длиной. Падение напряжения на нем - 150 мВ. Расстояние от VD0 до приемников роли не играет. Как так?
Вложения
1.png
(13.07 КБ) 883 скачивания
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 454
Зарегистрирован: Вс янв 09, 2011 19:13:18
Откуда: Brody

Сообщение PETRO »

Замените кабель.
я кот - сам по себе.
Реклама
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт окт 28, 2010 03:49:33
Откуда: откуда все люди родятся

Сообщение Mytilus G. »

В смысле, на кабель другого сечения/длины?
Друг Кота
Аватара пользователя
Сообщения: 16990
Зарегистрирован: Пт мар 30, 2012 05:17:29
Откуда: Екатеринбург

Сообщение mickbell »

Прежде всего, надо бы не гадать, а проверить осциллографом форму импульсов на выходах TSOP-ов. А там видно будет, что делать.
И хрюкотали зелюки,
Как мюмзики в мове.

На каждый РКН
Найдётся VPN.
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт окт 28, 2010 03:49:33
Откуда: откуда все люди родятся

Сообщение Mytilus G. »

Взял более короткий кабель с сечением 2,5. Все работает. Получается, проблема была в сопротивлении, только вот не пойму, каким образом сопротивление выдало такой результат.

К сожалению, осциллографа нету. Если проблема в искажении частоты импульса, то из-за чего это вообще может происходить? Из-за сопротивления, опять же?

Как я понимаю, импульс превращается в синусоиду, да? И может ли это влиять таким образом?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 16990
Зарегистрирован: Пт мар 30, 2012 05:17:29
Откуда: Екатеринбург

Сообщение mickbell »

Например, может влиять индуктивность длинного тонкого провода. Жалко, что нет осциллографа, было бы любопытно увидеть, как сравнительно короткий провод заваливает импульсы.
И хрюкотали зелюки,
Как мюмзики в мове.

На каждый РКН
Найдётся VPN.
Реклама
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт окт 28, 2010 03:49:33
Откуда: откуда все люди родятся

Сообщение Mytilus G. »

Мне самому интересно. Только вот не могу сейчас себе позволить приобретение осциллографа. Из-за ремонта в квартире каждая копейка на счету. :(
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Скорее всего, помешала емкость кабеля. Попробуйте поставить подтягивающие резисторы 4.7 кОм с PD0, PD1 на VCC.
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт окт 28, 2010 03:49:33
Откуда: откуда все люди родятся

Сообщение Mytilus G. »

Ок, спасибо! Прикуплюсь резисторами - буду экспериментировать.
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт окт 28, 2010 03:49:33
Откуда: откуда все люди родятся

Сообщение Mytilus G. »

Увы, но не помогло. Как я понимаю, ТСОП при облучении замыкает вывод OUT на землю, а при отсутствии облучения - на "плюс". Так что подтягивающие резисторы тут не обязательны. Проверил мультиметром, при использовании и телефонного, и толстого проводов облученный приемник выдает 5,5 мВ на OUT. Мне остается предположить, что телефонный провод искажает импульс на светодиод, из-за чего ТСОП при постоянном облучении кратковременно изменяет сигнал OUT, запутывая этим микруху.

Как уже писал, импульсы на выходе телефонного провода тестить нечем. Но если следовать предположению, что индукция поганит импульсы - что посоветуете? Ведь мне нужно будет посадить VD0 на кабель в несколько метров длиной. Тут и толстый провод может нарожать помех.
Друг Кота
Сообщения: 7774
Зарегистрирован: Сб янв 29, 2011 00:28:48

Сообщение Enman »

поставь последовательно в сигнальный провод возле фотоприёмника 75-100 Ом...да и питание на фоториёмники через RC-фильтры(47 Ом 47 мкФ).
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт окт 28, 2010 03:49:33
Откуда: откуда все люди родятся

Сообщение Mytilus G. »

Фильтры стоят. Сопротивление тоже ставил - толку нет. :(
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Mytilus G. писал(а):ТСОП при облучении замыкает вывод OUT на землю, а при отсутствии облучения - на "плюс". Так что подтягивающие резисторы тут не обязательны
На "плюс" он не замыкает. Внутри стоит транзистор с открытым коллектором, и слабый подтягивающий резистор на 100 кОм.

Если фотоприемники висят на длинном кабеле, прямо на их ножках нужны конденсаторы с земли на питание. Хотя бы 0.1 мкФ.
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт окт 28, 2010 03:49:33
Откуда: откуда все люди родятся

Сообщение Mytilus G. »

В моем случае, на длинном кабеле висит светодиод. А на светодиод конденсатор не поставишь. Иначе импульс совсем изуродуется. Но в будущем приемники тоже должны быть на кабеле.
Друг Кота
Сообщения: 7774
Зарегистрирован: Сб янв 29, 2011 00:28:48

Сообщение Enman »

Mytilus G, тебе написали про практичекси открытый коллектор на выходе фотоприёмника, который "валит" положительный фронт импульса, если в фотоприёмнике 100 кОм на выходе. И никто не предлагает в эту цепь ставить конденсаторы. Есть обычные варианты буферов, например, на серии 74НСхх, или двухтактный повторитель на пнп-нпн транзисторах. И лучше бы ты уж приводил реальную схему со своими фильтрами и светодиодами (которые без резисторов ???!!!), а не картинку общего вида.
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт окт 28, 2010 03:49:33
Откуда: откуда все люди родятся

Сообщение Mytilus G. »

О'кей! То, что на схеме светодиоды без резисторов - согласен, мой косяк. Остальные отличия приведенной схемы от реальной появлялись после создания этой темы, в процессе поиска решения проблемы. Поэтому в схеме они не отображены.

Но давайте по порядку. Не догадался я на принципиальной схеме обозвать ТСОПы, поэтому буду называть их PD0 и PD1, по названию ног МК, к которым их привязал. Двигаем барьер между парой ТСОПов и светодиодом в направлении PD0-PD1 (то есть "справа налево" на схеме). Когда барьер прошел, и оба приемника облучились (на портах D0 и D1 логический ноль), МК "смотрит", какой приемник облучился последним - PD1. Это значит, что надо зажечь VD1.

Пускаем барьер обратно. После его прохождения последним облучился ТСОП PD0, и VD1 погас. Так получается, если VD0 непосредственно на макетке или на толстом кабеле.

А теперь возьмем тонкий кабель. При подаче питания на схему VD1 загорается сразу. То есть МК принял на порты D0 и D1 логические ноль и единицу соответственно, а следом за этим - два логических нуля. И это без всякого барьера.

Едем дальше. Закрываем приемник PD0 от облучения (на портах D должно быть 0b00000001). При этом VD1 гаснет. Получается, МК сначала прочитал PIND как 0b00000001, а потом - как 0b00000000. Снова облучаем оба ТСОПа (на портах D должно быть 0b00000000). Но вместо этого МК читает PIND как 0b00000010, а потом - 0b00000000. И VD1 снова горит. Получается такая таблица:

Код: Выделить всё

┌─────────────────────────────┬──────────────────────┐
│Подаваемые поочередно сигналы│Как их воспринимает МК│
╞═════════════════════════════╪══════════════════════╡
│0b00000000, 0b00000001       │0b00000001, 0b00000000│
├─────────────────────────────┼──────────────────────┤
│0b00000000, 0b00000010       │0b00000001, 0b00000000│
├─────────────────────────────┼──────────────────────┤
│0b00000001, 0b00000000       │0b00000010, 0b00000000│
├─────────────────────────────┼──────────────────────┤
│0b00000010, 0b00000000       │0b00000010, 0b00000000│
└─────────────────────────────┴──────────────────────┘
"Либо что-то случилось, либо одно из двух" (© "Следствие ведут колобки")

ИМХО, если определить причину такого поведения, решение проблемы придет само собой.
Друг Кота
Аватара пользователя
Сообщения: 16990
Зарегистрирован: Пт мар 30, 2012 05:17:29
Откуда: Екатеринбург

Сообщение mickbell »

Mytilus G. писал(а):Мне самому интересно. Только вот не могу сейчас себе позволить приобретение осциллографа. Из-за ремонта в квартире каждая копейка на счету. :(
А занять у кого, или сходить к осциллографу в гости? :) Тут наверняка тащить немного придётся. Потому что не очень весело искать чёрную кошку в тёмной комнате, точно не зная, а не собака ли там на самом деле.
И хрюкотали зелюки,
Как мюмзики в мове.

На каждый РКН
Найдётся VPN.
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт окт 28, 2010 03:49:33
Откуда: откуда все люди родятся

Сообщение Mytilus G. »

Увы, но владельцы осциллографов в кругу моих знакомых отсутствуют. :(
Друг Кота
Сообщения: 7774
Зарегистрирован: Сб янв 29, 2011 00:28:48

Сообщение Enman »

а ты что подаёшь на светодиоды? надо несущую 36 кГц, а не потенциал...Для схемы барьера на основе простой подсветки надо к фотодиодам подключить компараторы, а с них - на мк...
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт окт 28, 2010 03:49:33
Откуда: откуда все люди родятся

Сообщение Mytilus G. »

Безусловно, подаю несущую, только в моем случае, это 38 кГц (TSOP1738). Решил компараторы не использовать в целях удешевления конструкции. Тем более, что при засветке приемника его сигнал со стабильных 5 В падает практически до 0 В. Это МК прекрасно фиксирует без компаратора, используя собственные подтягивающие резисторы.

Более того, проблема решилась заменой МК. То ли потому что новая микруха имеет более шустрый RC-генератор, то ли после пересчета параметров ШИМа под новую тактовую частоту импульсы стали больше нравиться ТСОПам... Одним словом - получилось.

:beer:
Ответить

Вернуться в «Практика»