подскажите про ик приёмники

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем ga2bi, 15 сен 2015.

  1. ga2bi

    ga2bi Нерд

    сколько ик приёмников можно подключить к ардуино уно,
    правильно ли я думаю что их можно подключить к любому пвм пину коих там 6 шт
     
    Последнее редактирование: 15 сен 2015
  2. AlexU

    AlexU Гуру

    ИК приёмники стабильно будут работать, если приём будет вестись в асинхронным режиме. Сделать это проще всего с помощью аппаратных прерываний. Аппаратные прерывания в Arduino Uno поддерживаются для 2 и 3 порта. А PWM тут ни при чем.
     
  3. Unixon

    Unixon Оракул Модератор

    Можно PCINT использовать (pin change interrupt), тогда пинов поболее двух будет доступно.
     
    AlexU нравится это.
  4. ga2bi

    ga2bi Нерд

    так сколько ик приёмников можно подключить ?
     
  5. Unixon

    Unixon Оракул Модератор

    Еще 19 PCINT сверху после 2-х обычных INT0,1.
     
  6. AlexU

    AlexU Гуру

    Спасибо за информацию.
    Но есть одно но. В таблице векторов прерываний есть векторы INT0, INT1, PCINT0, PCINT1, PCINT2. Прерывания INT0 и INT1, срабатывают на 2 и 3 пин соответственно. А вот остальные PCINTx -- срабатывают на группу пинов (0..7, 8-14, 16-23). Реализация асинхронного ввода на таких пинах может стать непростой задачей.
    Поэтому можно сделать вывод, что без особых проблем можно подключить два ИК приемника, а остальные с применением "бубна".
     
    Последнее редактирование: 16 сен 2015
  7. Megakoteyka

    Megakoteyka Оракул Модератор

    Никаких бубнов, просто в обработчике добавится проверка для определения конкретного пина.
     
  8. AlexU

    AlexU Гуру

    Это в теории -- все гладко, а на практике нужно понимать, что эти ИК приемники должны будут принимать. В случае с последовательными данными, важными характеристиками будут: скорость передачи данных и способ кодирования данных. Может сложиться такая ситуация, что Arduino не будет успевать принимать данные одновременно с нескольких ИК приемников. Например, пульты ДУ (по крайней мере те, с которыми проводил эксперименты) выдавали сигнал, который кодировался RC5 -- "1" передавалась как переход с 0 в 1, "0" -- с 1 в 0. Каждый бит передавался парой 01 или 10 в течении 1.778 мс, что приводило к запуску обработчика прерывания с частотой ~562 кГц. Учитывая, что Arduino Uno работает на 16 МГц, получается, что между прерываниями происходит ~28 тактов, часть из которых будет использовано обработчиком прерывания для сохранения данных, а остаток для работы основной программы. (В цифрах мог напутать, скажем так -- не профи, мануал по A328P только начал изучать).
    Вот, исходя из всего выше сказанного, и предполагаю, что без "бубнов" не обойтись. Есть сомнения, что даже при использовании только INT0 и INT1, при одновременном приеме последовательных данных, можно гарантированно обеспечить корректный прием данных.

    PS: все сказано исходя из предположения, что ИК приемники не имеют собственных буферов.
     
    Последнее редактирование: 16 сен 2015
  9. Megakoteyka

    Megakoteyka Оракул Модератор

    Длительность такта: 1/16000000 = 0,0000000625 с = 62,5 нс.
    1,778 мс = 0,001778 с.
    0,001778 / 0,0000000625 = 28448 тактов, целая вечность :)

    А если производительности будет хватать впритык, то лучше взять более шустрый контроллер.
     
  10. AlexU

    AlexU Гуру

    Вы правы -- в моих вычислениях есть ошибка.
    Надеюсь, что наша дисскуссия будет полезна автору темы.
     
  11. ga2bi

    ga2bi Нерд

    есть задумка собрать лазертаг тир, с уточками на серве, поэтому надо хотябы подключить 5 ик приёмников
    излучатель будет http://poligon64.ru/lasertag-equipment/product/60-l10emitter минимальный диаметр пятна 5мм то что надо, 1 ардуина будет получать сигнал другая отправлять через ик лазер
    в каждую утку засунуть 1 ик приёмник + 2 светодиода ( 1 горит постоянно до паподания 1 при попадании, после срабатывает серва утка падает) вот бы ещё звук выстре на пьезе прикрутить в wav формате
     
  12. ga2bi

    ga2bi Нерд

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