Как стать автором
Обновить

Простейший инфракрасный счётчик на Arduino. С мелкими гадостями

Время на прочтение6 мин
Количество просмотров2.8K
Всего голосов 7: ↑5 и ↓2+6
Комментарии24

Комментарии 24

Откуда 2 Вт на резисторе взялись?

В действительности на этом резисторе выделяется 0,5 Вт. Но если поставить в устройство резистор именно с такой максимальной рассеиваемой мощностью, резистор будет работать на пределе. Из-за малой площади поверхности и, как следствие, плохой теплоотдачи в воздух он будет сильно нагреваться. Сгореть он не сгорит, но может случайно обжечь вам пальцы. Резистор на максимальную мощность 2 Вт по размерам очень большой, теплоотдача в воздух у него прекрасная, поэтому и греется он в этом устройстве не слишком сильно. На ощупь он даже не горячий, а тёплый. Только и всего. )

Вообще, стандартная же формула есть, для нахождения рассеиваемой мощности: P = I^2 * R, просто этот результат произведения, для нормальной работы, обычно умножают на 2..

Кажется, одна из "гадостей" это pnp транзистор вместо, например, эмиттерного повторителя на npn. Я не могу в полной мере объяснить что делает эта схема приёмника, но pnp настораживает. Мне кажется, что у вас на схеме приёмника - усилитель мощности, а может быть нужно взять более популярный npn и получить усилитель тока? Возможно, R2 подобран таким чтобы гадкий УМ не выдавал чрезмерно большое напряжение, неужели фотодиод выдающий слабый сигнал нуждается в ограничителе тока?

php и npn транзисторы ничем не отличаются, кроме полярности. R2 нужен, что бы не сжечь транзистор и что бы транзистор не ушёл в генерацию; величина позволит транзистору работать как ключу.

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

Лучше увеличить резистор R1 в полтора раза, а если использовать случайный светодиод, то в 4 раза. Работать будет, для экспериментов хватит.

интересный у вас фильтр дребезга

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

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

rc-фильтра нет, гистерезиса нет.

плюс температурные эффекты присутствуют.

Здесь описывается очень простой (возможно, самый простой в мире) самодельный однолучевой горизонтальный инфракрасный счётчик (людей) на Arduino. Его сенсорная система содержит лишь инфракрасный светодиод, фотодиод, биполярный транзистор и три резистора.

Можно еще проще.

Если используете микроконтроллер, то транзистор и один(два или даже три) резистора лишние.

Сумрачный китайский гений ;)

Наберите скетч с картинки, буква за буквой.

Э.. зачем, если есть OCR? ;) Набирание буков руками не учит ничему, только время занимает.

ЗЫ а зачем volatile?

ЗЗЫ против насилия над переменной в стиле Therac ничего не имею.

signal_flag++ должна быть атомарна или какой-нибудь другой способ синхронизации

Что-то сомнительный какой-то скетч!

После выполнения signal_flag++ значение этой переменной станет равно 2. И больше программа не будет делать ничего, так как никогда более не выполнится условие ни в цикле loop, ни в обработчике прерывания.

Я не прав?

В схеме - одна явная ошибка:

неверная полярность фотодиода.

В тексте - фантастическое допущение

об отсутствии помех при передаче сигнала от считывателя на Ардуино на дистанции 5 метров.

Не говоря уже о подверженности таких простейших схемы и программы

посторонним засветкам приёмника.

Задумано как ребус. Если бы это было оформлено в виде модели для симулятора - было бы забавно. А так, кто ошибки увидел - это не для них, кто не увидел - тоже не для них. Паять и набирать буквы вряд ли кто станет, скучно это.

И желательно бы базу этого самого биполярника, подтянуть к +5V, резистором порядка 100k.. в любом случае из схемы видно, что R2 вы так или иначе не рассчитывали..

Самая большая "гадость" это такая реализация идеи, которая совершенно не соответствует самой идее. Вернее там будет столько ограничений, что весь смысл теряется.

Например:

Сама идея - "счетчик людей"

Каких людей? Если я выйду в соседнюю комнату мимо "аппарата" и вернусь, я уже буду "двумя людями"? Или если мы с другом Васей, толкаясь помчимся на обед, мы станем "одним людём"? и т.д. Дьявол кроется в мелочах, и "простейшие" решения становятся бесполезны. С таким же успехом можно положить кнопку на стол и следить, чтобы каждый проходящий обязательно нажимал ее один раз и чтобы не толпились. Это будет еще более простейший "счетчик людей".

Скрипт не прилагаю, подойдет и старый. ))

Открываем документацию на светодиод, раздел absolute maximum ratings: предельный долговременный ток - 100мА. При 130 его надёжную работу никто не гарантирует.

Ох пипец пипец. Сколько же ложных срабатываний эта схема словит?!... Не подсчитать. А если какой-нибудь приколист ПДУ от какого-нибудь телека притащит, то вообще хана?

Вообще, чтоб такое работало, надо чтоб передатчик не просто постоянно был включен, а передавал хоть какой-то сигнал(010111010...), чтоб микроконтроллер срабатывал только тогда, когда увидит "правильную" последовательность импульсов.

В вашем случае - на уровне совсем начинающего радиолюбителя.

на уровне совсем начинающего радиолюбителя.

Совсем начинающий возьмёт в том же магазине готовый датчик, в симпатичном корпусе и с микроконтроллером внутри ;) Городить датчик из рассыпухи - отдельное развлечение, требующее сначала прочитать пару глав из Хоровица и Хилла. Ну, или соединять в каком-то порядке какие то детали, и молиться чтобы белый дым не вышел. А если начал читать "Искусство" - это уже не начинающий ;)

Обычно триггер Шмитта (для гистерезиса) в таких схемах должен присутствовать.. И частотное разделение канала приёма-передачи.. Чтобы исключить ложные срабатывания..

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации