|
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 249
|
|
Робот с управлением от ИК пульта ДУ.21.03.2011, 23:09. Показов 49995. Ответов 71
Метки нет (Все метки)
Здравствуйте! Недавно в голову пришла мысль сделать робота, управляемого пультом ДУ, с ИК излучателем. Т.е. в общих чертах схема должна, я думаю, выглядеть так:
С пульта задаем направление движения (вперед/назад), затем значение длины пути в сантиметрах, которое будет преобразовываться и передаваться как значение на сколько надо включить движки в мкс. Если будет нажато вправо/влево и какое то число то будет передаваться направление вращения и значение угла поворота вокруг своей оси, также в последствии преобразованное в мкс. И Enter - отослать пакет информации самому роботу. Усилитель ИК-приемника хочу взять отсюда: http://sxim.net/ik/2-5.php На роботе же будут стоять фото-тахометры, которые по сути будут следить за тем, чтобы движки вращались с одинаковой скоростью. У меня по этому поводу возникли следующие вопросы: 1) Как опрашивать фото-тахометры по таймеру или ещё как? 2) Если появится рассогласование скоростей, то по какому закону/принципу мне это исправить? 3) Передавать сигнал, я думаю надо при помощи PastPWM, а вот как принимать? UART, АЦП или ещё как то? 4) Какая частота смены уровня сигнала рекомендуется в таком случае при передаче? 5) Что можно на эту тему почитать? Может кто помнит похожие топики... Заранее благодарю!
0
|
|
| 21.03.2011, 23:09 | |
|
Ответы с готовыми решениями:
71
Частота пульта от телевизора совпадает с частотой пульта аудио системы Контроллер управлением оконных жалюзи и дистанционным управлением 2 пульта и 2 переключателя |
|
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 49
|
|
| 24.03.2011, 15:09 | |
|
Да и на счет подключения к звуковухе. Подаешь питание на TSOP, а информационный вывод через конденсатор к звуковухе. Запускаешь ченить типа Soumd Forge и включаешь запись. Тычешь пультом в TSOP, нажимаешь кнопку. Останавливаешь запись и смотришь че там за код.
0
|
|
|
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
|
|
| 24.03.2011, 16:27 | |
|
А зачем, извините, звуковухи и прочая фигня? Ведь есть/будет девайс, который будет этот код обрабатывать. Так просто захватить всю посылку и передать в комп (связь то всё равно есть/будет). А там уже килосекунды с микрогерцами рассматривать. Причём захватывать только фронты надо (Это если с TSOP) - любой пульт будет как на ладони.
А теперь немного наблюдений (почти все домашние пульты попробовал): - Даже один и тот же протокол у разных пультов имеет разброс 20-30% по времени. - Сам пульт гуляет в пределах 5-10% легко. А таймер нужно один использовать, который умеет InputCapture. У меня он тикает примерно в районе 1 МГц (в зависимости от тактовой контроллера). Если он переполнился, а нужное количество бит не пришло - посылка кончилась/прервалась/сбилась.
0
|
|
|
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 49
|
|
| 24.03.2011, 17:32 | |
|
Зачем городить огород с какойто передачей посылки в комп захватывать ее и непойми в чем рассматривать, когда тут раз и готово.
И биты тоже надо как то детектировать, чтобы посчитать нужное количество.
0
|
|
|
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 249
|
|||
| 24.03.2011, 21:01 | |||
А по поводу таймера, как использовать один? Я понимаю только так, как я писал выше: настраиваем таймер на 1333,5us снимаем логический уровень и толкаем в стек, потом не выходя из прерывания по совпадению меняем регистр сравнения так что бы таймер оттикал ещё 444,5us, потом опять всё сначала и так 14 раз. Это чисто моя теория. А как на практике? С AVRкой возможен такой фокус: что в самом прерывании по совпадению уменьшаем значение регистра OCR1A и таймер понимает, что он не дотикал ещё 444,5us и дотикивает их? Мне кажеться, что нет, хотя хотелось бы ошибаться. :) Уважаемые, кто нибудь может накидать блок схемку этого злосчастного алгоритма по приему, а то ведь кто то пишет для PIC-ов, кто то на С и т.д. и разобраться во всех этих чудесах мне как начинающему не легко, а блок схема вроде должна быть понятна всем и вся. Заранее спасибо!
0
|
|||
|
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 313
|
||
| 24.03.2011, 21:19 | ||
ща попробую раскурить код с кота с пояснениями.Если получится выложу или в личку скину.
0
|
||
|
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 249
|
||
| 24.03.2011, 21:35 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 313
|
||
| 24.03.2011, 21:48 | ||
|
как писал THT_BEAST
запустить таймер . настроить прерывания по изменению фронта на ноге внешнего прерывания. в прерывании проверить значение таймера, обнулить таймер снова запустить проверить значение на ноге прерывания,занести значение в стек.
0
|
||
|
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 249
|
||
| 24.03.2011, 22:19 | ||
|
[QUOTE="MyxoMyk"]как писал THT_BEAST
[QUOTE="Цитата:[/QUOTE]
запустить таймер . настроить прерывания по изменению фронта на ноге внешнего прерывания. в прерывании проверить значение таймера, обнулить таймер снова запустить проверить значение на ноге прерывания,занести значение в стек. Ну да, с таким разбросом мой метод не прокатит. А можно поподробней тот метод раскрыть, а то я не совсем понимаю зачем мы в прерывании проверяем значение таймера ведь с момента запуска таймера до прихода прерывания его значение может быть очень большим. Если я не ошибаюсь то мы сравниваем значение таймера с длинным или коротким промежутком? Т.е. если его длина равна 1778+-500us(как осуществить это самое +/-) то толкаем в стек 0, если 90us (т.е. интервал был короткий), то ставим 1. Так? Т.о. весь алгоритм будет выглядеть так: запустить таймер с тиком в 1us. настроить прерывания по изменению фронта на ноге внешнего прерывания. в этом прерывании проверить значение таймера, если оно равно 1778us то в стек пихаем 0, если 90us, то единицу (Это без инверсии)(всё равно значения чёткие получаются, как сделать 1778+-500us я не знаю или мне просто надо его замерить конкретно для моего пульта и оно будет постоянно?) Затем обнулить таймер и снова запустить и так 14 раз. Если что не так, прошу поправить.
0
|
||
|
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 313
|
|
| 24.03.2011, 23:11 | |
|
балин.Я как та собачка понимать понимаю,сказать не могу.
Давай сначала. создаём переменную flag. создаём стек stek[14](массив из 14 переменых). создаём счётчик принятых бит code. запускаем таймер. допустим у нас сработало прерывание. заносим значение таймера в переменную (допустим time) останавливаем таймер. проверяем какой по счёту бит пришёл. если первый(code==0),то запускаем таймер. stek[code]==инвертированное значение на входе прерывания=="1". (В RC5 по умолчанию первый сигнал всегда "1".) инкремент счётчика code++. flag=="1". если срабатывание не первое то: для короткого интервала(0,704..1,088мс) проверяем предыдущий сигнал(flag) если flag=1 то flag=0 иначе(flag был "1") то stek[code]=инвертированное значение на входе прерывания. code++ для длинного интервала(1,28..2,176мс ) заносим инвертированное значения на входе прерывания в stek[code] code++ лучше врядли объясню.
0
|
|
|
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 313
|
|||
| 24.03.2011, 23:25 | |||
|
ещё пока при памяти
как писал выше. короткий 0,704< time<1,088мс длинный 1,28< time<2,176мс как сделать на асме не знаю.
0
|
|||
|
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 249
|
||
| 24.03.2011, 23:27 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 313
|
||
| 24.03.2011, 23:30 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 249
|
||
| 26.03.2011, 13:36 | ||
Обязательно.
0
|
||
|
0 / 0 / 0
Регистрация: 15.02.2011
Сообщений: 176
|
|
| 26.03.2011, 16:05 | |
|
не знаю зачем 2 таймера... на одном отлично работает. Пока сделал на пульте от ТВ, т.к. с уартом что-то не заладилось.
http://www.youtube.som/watch?v=ZnC_qRKcUAA идея распознавания такая же как в статье в сообществе, но теперь на си и без кучи условий. Код легко правится почти под любой сигнал(настраивается время от стартового события до первого измерения и время между измерениями.)
0
|
|
|
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 249
|
|
| 26.03.2011, 20:03 | |
|
На выходных времени что то совсем не было, но блок-схемку набросать всё таки успел. Проверьте пожалуйста.
http://i.serverymoges.ru/1/1185/e893b4fb21c9cd8be3933f18913675b5_thumb.jpg
0
|
|
|
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 313
|
|
| 26.03.2011, 23:02 | |
|
для длинного интервала не надо вводить проверку флага.Просто занести инвертированное значение на входе в стек,и инкреминировать принятые биты.
Это первое что увидел.
0
|
|
|
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 313
|
|
| 26.03.2011, 23:15 | |
|
в самом начале ,после занесения значения таймера в переменную,останавливать таймер не надо,надо его всеголишь обнулить и пусть дальше тикает.
Это второе.
0
|
|
|
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 313
|
|
| 26.03.2011, 23:21 | |
|
соответсвенно из всех условий убрать команду TCNT1:=0.Это третье
0
|
|
|
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 313
|
|
| 26.03.2011, 23:23 | |
|
Какой у вас камень?В смысле МК?
0
|
|
|
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 313
|
||
| 27.03.2011, 11:54 | ||
0
|
||
| 27.03.2011, 11:54 | |
|
Протокол ИК пульта Копирование ИК пульта Разборка пульта lg mr21ga Получить радиосигнал от пульта Регулируемая с ИК пульта люстра Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|