Вопрос по работе линейного энкодера
- Войдите на сайт для отправки комментариев
Всем привет!
Проектирую линейный энкодер, состоящий из "расчески" (с одинаковыми зубьями и расстоянием между ними ) и ИК-пары (эмиттер и диод). При перемещении ИК-пары относительно "расчески", считываются срабатывания, обрабатываются математически и мы получаем положение пары относительно точки начала движения.
Но тут возникает вопрос - так это работает, если двигать пару в сторону от начала движения. А, если в какой-то момент ее начать двигать в обратную сторону? Как дать понять Ардуине, что пара переместилась в обратную сторону? А потом снова - от начала движения? Как это реализовать своими руками?
Возможен вариант с установкой стандартного датчика для Ардуино - с гироскопом и акселерометром. Он ведь сможет определить момент остановки, начала движения в обратную сторону и т.д.?
Блин пока тебя с говном не съели... купи дешовую мышь, разбери ее... и прикрути к ардуине... ВСЕ. там в мышки есть все что тебе надо... Забуть про гироскопы аксилерометры, GPS модули...
да... к ардуине есть библиотека работы с клавой и мышкой... И да в твоем случаи эмитр/диот не определить направление... если у тебя опять все независимо... и не понятно что чем управляетьсся... обычно в таких системах два датчика, считывают "гребенку" расположенных 1/2 гребенки... и сравнивают где раньше, где позже... а не только импульсы ;-)
квадратурный энкодер погуглите.
И на свалку загляните за принтером.
будут новости развития в предложенном мною ключе - тоже интересно.
Но тут возникает вопрос - так это работает, если двигать пару в сторону от начала движения. А, если в какой-то момент ее начать двигать в обратную сторону? Как дать понять Ардуине, что пара переместилась в обратную сторону? А потом снова - от начала движения? Как это реализовать своими руками?
Вы, похоже, не знаете как устроен энкодер. Тут нужны прорези на "расчёске" специального вида (размера) и две пары "светодиод/фототранзистор".
Могу нарисовать как это должно выглядеть, но Вы, наверное уже и сами догадались.
Либо гребенку с асиметричными прорезями и анализировать фронт импульса.... \_|\_|\_|\_|\_| тогда можно и без пары...
Ну, такую упаришься резать :)
можно не резать, а распечатать и в отраженном варианте? Ну а резать... ЧПУ нарежит хоть слоников =))
Но тут возникает вопрос - так это работает, если двигать пару в сторону от начала движения. А, если в какой-то момент ее начать двигать в обратную сторону? Как дать понять Ардуине, что пара переместилась в обратную сторону? А потом снова - от начала движения? Как это реализовать своими руками?
Вы, похоже, не знаете как устроен энкодер. Тут нужны прорези на "расчёске" специального вида (размера) и две пары "светодиод/фототранзистор".
Могу нарисовать как это должно выглядеть, но Вы, наверное уже и сами догадались.
Не угадали), как раз изучил. Но спасибо за помощь!
В общем, нашел такое решение, выложу здесь, может, кому-то пригодится.
"Расческа" у меня будет состоять из трех рядов, их будут считывать соответственно три ИК-пары (диод + транзистор). Прорези будут идти в таком порядке:
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1,
где 0 - свет перекрыт, 1 - свет открыт. "Зубья" и "окошки" будут одинаковой длины и ширины. Из таких повторяющихся отрезков и будет состоять "расческа". МК будет получать информацию, на каком столбце находится считывающая головка (и перемещающийся объект), а простенькая функция будет сравнивать с предыдущим показанием, и делать вывод, куда направляется объект. Переходы между отрезками тоже обрабатываются в этой функции. Ее написал мой сын-школьник, правда, на своем Паскале. Осталось перевести на язык Ардуины.
avex, конечно, похвально, что Ваш сын изобретает велосипеды. Но неплохо бы ему быть в курсе, что для данной задачи 3 оптопары - избыточно: достаточно одного светодиода, двух фотодатчиков и одной "расчески". Шаг зубьев "расчески" равен расстоянию между фотодатчиками (при условии, что светодиод и фотодатчики находятся от расчески на одинаковом расстоянии).
Если уж изобретать решение самому, все равно нужно заботиться, чтобы оно было простым и элегантным.
не понимаю логики... зачем три датчика? Тоже самое на двух... и на одной гребенки... Вы как то сильно усложнили за раз себе задачу. В три раза =)
Вот в вашем варианте мысленно уберите третью гребенку... что получаеться да тоже самое... а теперь из двух сделайте одну... сместив считывающие головки на 1/2 зуба
на в ходе получаем вот такие данные
00011110000111000/меняем направления/0000111100001111000
11000111100001110/меняем направления/1100001111000011110
Ну, чё, - молоток! Вам есть чем гордиться! Дайте ему вот это - он сам переведёт, заодно и новому научится.
Ну, про некоторое пересложнение аппаратной части Вам уже написали, не буду повторяться.
А сделать своими руками "велосипед" считаю очень полезным, мы вон с внуком посмотрите что делали.
avex, конечно, похвально, что Ваш сын изобретает велосипеды. Но неплохо бы ему быть в курсе, что для данной задачи 3 оптопары - избыточно: достаточно одного светодиода, двух фотодатчиков и одной "расчески". Шаг зубьев "расчески" равен расстоянию между фотодатчиками (при условии, что светодиод и фотодатчики находятся от расчески на одинаковом расстоянии).
Если уж изобретать решение самому, все равно нужно заботиться, чтобы оно было простым и элегантным.
Ваше решение справедливо для системы, в которой известна скорость перемещения и когда она постоянна. Есть на ютьюбе уроки по созданию прибора, замеряющего скорость пульки. У нас в проекте скорость меняется все время.
Ну, чё, - молоток! Вам есть чем гордиться! Дайте ему вот это - он сам переведёт, заодно и новому научится.
Ну, про некоторое пересложнение аппаратной части Вам уже написали, не буду повторяться.
А сделать своими руками "велосипед" считаю очень полезным, мы вон с внуком посмотрите что делали.
Спасибо за ссылки и за добрые слова! Когда-то давно узнал из психологии о "кругах развития" - чем больше дел ("кругов") мы делаем с детьми с самого раннего возраста, чем более эти дела разнообразны, тем больше круг интересов и выше степень усваиваемости материала, к которому прикоснулись, у них будет в более старшем возрасте.
Ваше решение справедливо для системы, в которой известна скорость перемещения и когда она постоянна.
скорость не имеет хначения. постояннство - тем более. Лишь бы датчики успевали.
Ваше решение справедливо для системы, в которой известна скорость перемещения и когда она постоянна.
скорость не имеет хначения. постояннство - тем более. Лишь бы датчики успевали.
Хотел было возразить, но, когда стал представлять детально, понял, что да, это возможно. Но тут нужно рассчитать точные расстояния между "окошками", между "зубьями" и между двумя ИК-приемниками и точно их исполнить. В моем варианте пара соток в ту или иную сторону роли не играют, так как во всех трех рядах шаг одинаков. Ну и программно проще считать, нужно лишь перевести двоичное число, которое мы получаем на вход, в нормальное. Там, если присмотритесь, как раз происходит увеличение при движениии вправо - от 0 до 7, и наоборот. К тому же, получившиеся отрезки по х и по у (тайлы, если по-геймдевски) кратны 8, а у меня именно из таких квадратов и планировалось изначально поле. Так что совпадение в тему.
andriano, Степан и Евгений, спасибо! Мой Паскаль пришел из школы, посмотрел на рисунок Степана и "прозрел". Сказал, что можно решить одной гребенкой и одной ИК-парой. Но он видоизменил гребенку - теперь она будет состоять из спаренных 11 и спаренных 00. И всегда можно будет узнать, куда направился объект - вперед или назад, потому что после первой единички должна быть вторая, после второй - первый нолик и т.д. Если после первой единички повляется снова единичка, значит, объект свернул назад. Это обсуждение привело к отличному результату, всем спасибо!
П.С. Я уже отправил на лазерную резку первый заказ с тремя рядами. Позвонил, сказали еще бы несколько минут и сделали бы по-старому)) Отменил и выслал новый чертеж - с одним рядом.
Мой Паскаль пришел из школы, посмотрел на рисунок Степана и "прозрел".
Ну и моложец! а можно было не ждать Степана, а самому найти в гугле, как устроен квадратурный энкодер...
а можно фотку потом гребенки соспареными 00 и 11, может и мне пригодиться =))) я че то плохо представляю это.
Забейте в гугле "линейный энкодер" и/или "линейный энкодер своими руками". Через сколько страниц, минут, часов вам встретится "квадратурный энкодер"? Но я теперь знаю, как поступлю в следующий раз - сначала к сыну, потом в поисковик.
а можно фотку потом гребенки соспареными 00 и 11, может и мне пригодиться =))) я че то плохо представляю это.
Представьте, что шаг в энкодере 1см. Горка - это единичка, впадина - нолик (или наоборот, не важно). Вначале идут две единички, потом два нолика: 11001100 и т.д. А дальше, как я объяснил ранее. Вот так все оказалось просто.
а можно фотку потом гребенки соспареными 00 и 11, может и мне пригодиться =))) я че то плохо представляю это.
Нефига себе... Это серьезно отличаеться от того, что я говорил и рисовал... ;-)
Нефига себе... Это серьезно отличаеться от того, что я говорил и рисовал... ;-)
честно говоря, в ваш рисунок я не вглядывался :) Но то, что описывает avex с его двойными единичками и нуликами - и вот это - это суть одно и то же.
...для данной задачи 3 оптопары - избыточно: достаточно одного светодиода, двух фотодатчиков и одной "расчески".
Ваше решение справедливо для системы, в которой известна скорость перемещения и когда она постоянна.
Если известно направление, а скорость не известна, достаточно всего по одному.
А если направление тоже требуется определять, то имено, как я написал: 1+2+1.
А штангель на 150мм вам не cгодится?
https://habr.com/ru/post/133088/
Спасибо. Но у него ход маловат, а нужно до 50 см.