помощь с энкодером
- Войдите на сайт для отправки комментариев
Всем привет.
Помогите , пжл))
Что имею:
2 оси, на каждой по такому набору.
1. Диск с прорезями ( 25 шт на оборот, диаметр 25 мм)
2. Сдвоенный энкодер оптический. ( т.е. в ардуину входит 2 пина)
3. Шаговый двигатель ( драйвер L298N, но планирую поменять на DRV8825)
4. Физический ограничитель угла поворота в видео металлического стопора, который не дает поворачиваться дальше.
При включении необходимо чтоб устройство крутило каждую ось до упора против часовой стрелки.
В программировании не силен, но интуитивно понимаю как это может выглядеть.
Например,
Двигатель крутится.
Если задержка между тиками (переходами из 0 в 1 или из 1 в 0 ) больше скольки-то милисекунд, то он считает это нулевой точкой и отправляет на 20 шагов в обратную сторону.
Либо так.
Если скорость вращения энкодера 0 , то считать , что ось встретилась с упором и это начальная точка, а потом прибавить 20 шагов в обратную строну.
А помощь-то Вам в чём нужна? Вы не задали ни одного вопроса!
И, да, прочитайте пожалуйста вот этот топик. особенно обратите внимание на п.5 (но, прочитайте все).
А помощь-то Вам в чём нужна? Вы не задали ни одного вопроса!
Точно) Сорри!)) Просто думал обрисовать задачу и будет все понятно. Но!
Исправляюсь и уточняю.
Как мне реализовать такой скетч?
Я так понимаю, что нужно испольть Библиотеку TimerOne ?
Полностью согласен с правилами)) Но я прям не знаю с чего мне начать...прям ступор какой-то)) Сейчас попробую набросать то как это я вижу)) Но потом вы же в меня палками и будете кидать))
Полностью согласен с правилами)) Но я прям не знаю с чего мне начать...прям ступор какой-то)) Сейчас попробую набросать то как это я вижу)) Но потом вы же в меня палками и будете кидать))
Начните с алгоритма - обычными словами опишите, что вам надо сделать. Типа, сделать чай - После появления желания, встать со стула, подойти к чайнику, протянуть руку, взяться за крышку, снять крышку, положить крышку, протянуть руку, взяться за ручку чайника, поднять чайник, подойти к крану и т.д. Надеюсь поняли. Задача должна быть разбита на минимальные действия, которые могут быть исполнены оператором языка. Если выполнение одной командой-функцией невозможно, подзадача дробится на более мелкие.
Потом берете свой алгоритм и транслируете его в операторы Ардуино.
Когда человек пишет сам, пусть и с ошибками, нормально воспринимает критику и пытается исправить ошибки, никто над ним смеяться не будет.
Хм, пока это не алгоритм, а все теже хотелки. Вы хотя бы раздел программирование, проштудировали? Напомню: "Если выполнение одной командой-функцией невозможно, подзадача дробится на более мелкие."
Подключаете библиотеки, какие? Используя библиотеку надо знать ее систему команд, иначе писать в алгоритм будет нечего.
Определяете переменные и вместо оператора присваивания (=), пишете оператор сравнения (==). Старайтесь имена переменных делать более менее осмысленными.
"МК определяет наличие......" - МК не умеет ничего определять, он умеет считывать нолики-единички и исполнять команды языка.
и т.д. Незачет.)))))
Может поставить два концевика, а не страдать с энкодером?
Может поставить два концевика, а не страдать с энкодером?
К сожалению, нет.
во-первых, их просто некуда ставить.
во-вторых, У этого устройства уже есть мешаническая часть и ее переделать будет сложнее, чем придумать как реализовать програмную часть.
Хотя, вы правы, так было бы намного удобнее.
НО почему во всех подобных штуках именно энкодеры стоят
Незачет.)))))
Совершенно с этим согласен)) Но я сделал своими простыми словами))
Дальше , как вы и говорили будем наращивать и переводить на другой язык))
Алгоритм действий есть, просто он не совсем структурирован, но в целом понятно, думаю, что именно должно происходить))
Судя по описанию - двигатель ходит туда-сюда на расстояние 20 шагов. Т.е. длина пробега известна. Если железка крепкая, то достаточно один раз пойти по часовой на 20 шагов, точно упереться, попропускать шаги и потом туда-сюда мотать по 20 шагов.
Я не против вашей идеи с энкодером, просто боюсь, что не дотянете до финала.
туда-сюда на расстояние 20 шагов.
Не, немного не так. до полного стопа около 1200 шагов. 20 шагов нужны тогда, когда ось уперлась, и обратно отмотать 20 шагов чтоб без напряжения ось была и была готова крутиться.
Я не против вашей идеи с энкодером, просто боюсь, что не дотянете до финала.
Все может быть, но я настройчивый)) В любом случае сделаю. Уверен, что на этом форуме есть добрые люди, которые напрявят в нужное русло эту реку))
Ну в общем, что-то родил)) Совершенно запутался местами. Хочется услышать критику)))
Работает?
Еще не проверил))) В телефоне накидал
Тогда понятно. Как считаете - есть шанс у "a" перекатится в значение 2?
Тогда понятно. Как считаете - есть шанс у "a" перекатится в значение 2?
Как только spdX ,будет равна нулю, то почему бы и нет)
Или я ошибся где -то? к чему эта интрига ? Если видите ошибку, то направьте, пжл
Главное - строки 46 и 47. Два обработчика на одно прерывание повесить нельзя.
По мелочи - не вижу, для чего переменным spdX и spdY тип float.
Работает?
С чего бы?
Тогда понятно. Как считаете - есть шанс у "a" перекатится в значение 2?
Как только spdX ,будет равна нулю, то почему бы и нет)
Или я ошибся где -то? к чему эта интрига ? Если видите ошибку, то направьте, пжл
Да какая тут интрига. Я считаю, что у "a" и "b" нет шансов получить значение 2. Поэтому и спрашиваю - работает или нет.
Тогда понятно. Как считаете - есть шанс у "a" перекатится в значение 2?
Как только spdX ,будет равна нулю, то почему бы и нет)
Или я ошибся где -то? к чему эта интрига ? Если видите ошибку, то направьте, пжл
Да какая тут интрига. Я считаю, что у "a" и "b" нет шансов получить значение 2. Поэтому и спрашиваю - работает или нет.
Так а почему вы так считаете?
Хочется услышать критику)))
а чего Вам ещё хочется?
Запустите, проверьте, и, если после этого будут конкретные вопросы, - задавайте.
А то, ведёте себя как ленивая задница. Накидал он! В телефоне! Да хоть в телевизоре, запустите, проверьте и задавайте конкртеные вопросы. Сам он видите-ли не проверял, занят шибко, а все остальные щас должны кинуться проверять за него. С какого перепугу? И, да, кстати, накидывают бабы платки на плечи, а набрасывают навоз на грядки.
Так а почему вы так считаете?
Да, посмотрите ж Вы, наконец, на строки №№ 60 и 69 и скажите: при каких обстоятельствах условие в строке 60 НЕ сработает, а в строке 69 - сработает?
Посмотрите и ответьте.
Да какая тут интрига. Я считаю, что у "a" и "b" нет шансов получить значение 2. Поэтому и спрашиваю - работает или нет.
Так а почему вы так считаете?
Строки 60 и 69 - какая из них будет выигрывать?
И зачем аксельстеппер присобачен в сетапе?
Спасибо за замечания :) Теперь давайте подробнее:)
Главное - строки 46 и 47. Два обработчика на одно прерывание повесить нельзя.
Нужно завести второй таймер? или какая-то другая библитека?
По мелочи - не вижу, для чего переменным spdX и spdY тип float.
Могу предполождить, что нужно int ? Пока не особо понимаю чем они отличаются кроме того, что float для цифр с плаваюбщей запятой, а int для целых
Нужно завести второй таймер?
или какая-то другая библитека?
Нет, тут нужен другой разработчик, которому религия позволяет сделать обе операции в одном обработчике.
А то, ведёте себя как ленивая задница. Накидал он! В телефоне! Да хоть в телевизоре, запустите, проверьте и задавайте конкртеные вопросы.
Благодарю Вас за столь откровенное высказывание и напутствие, но пока нет необходимости проверять на физическом уровне, так как я и не рассчитывал, что програмно сделаю все верно с первого раза. Если и так очевидно, что есть ошибки, то смысл запускать? Мне очень гордо, что вы не прошли мимо и все-таки указали на ошибки, что реально мне помогло. НО если вам совсем тяжело и даже противно от моих скудных знаний, то я очень извиняюсь, что потревожил вас.
Когда человек пишет сам, пусть и с ошибками, нормально воспринимает критику и пытается исправить ошибки, никто над ним смеяться не будет.
А вы говорите :))) тут уже околоОскорбления и какой-то злорадный юмор на тему "не той религии" пошли.
Ты умеешь это делать? Хотелось бы посмотреть.
Могу ошибаться, но насколько мне известно в arduino 3 таймера можно запустить.
Решил убрать пока одну ось. Думаю, что будет правильно решить вопрос с одной, а потом по аналогии за вторую браться. Ну и чтоб место сэкономить.
Когда человек пишет сам, пусть и с ошибками, нормально воспринимает критику и пытается исправить ошибки, никто над ним смеяться не будет.
А вы говорите :))) тут уже околоОскорбления и какой-то злорадный юмор на тему "не той религии" пошли.
А кто тут пишет сам? Ты не пишешь, ты "накидываешь", а отлаживать "не видишь смысла", хочешь чтобы другие за тебя ляпы вылавливали. Это и называется "ленивая задница".
Могу ошибаться, но насколько мне известно в arduino 3 таймера можно запустить.
Я и спросил, "ты умеешь это делать"?
Вот вы считаете, что правы? Прямо с порога заявляя, я не запускал, зачем? Никто и никогда не написал программу с первого раза, она пишется, заливается и начинается отлов багов. Иначе никак.
Sadman задал вопрос, вы начали искать интригу. А интриги нет, вы сами должны найти ошибку, а найти ее можно только запустив в работу.
Прямо с порога заявляя, я не запускал, зачем? Никто и никогда не написал программу с первого раза, она пишется, заливается и начинается отлов багов. Иначе никак.
Все верно. Так и будет сделано, но чуть позже, когда хотя бы логично всё будет. Я благодарен каждому кто хотя бы прочитал то, что я тут пишу. Но реально сейчас я понимаю, что запуск ( всего механизма) не даст вообще ничего...будет просто тишина, а как я пойму ошибки, если я в этом не очень понимаю и каких-то сигналов мне наподаст устройство. Так как это не программа а ПОКА #кучамала , и на это мне уже несколько человек указали. Работаю и думаю дальше и ни разу не думал о лени в заднице.
И вот как раз сейчас занимаюсь этим :)
Все верно. Так и будет сделано, но чуть позже, когда хотя бы логично всё будет. Я благодарен каждому кто хотя бы прочитал то, что я тут пишу. Но реально сейчас я понимаю, что запуск ( всего механизма) не даст вообще ничего...будет просто тишина, а как я пойму ошибки, если я в этом не очень понимаю и каких-то сигналов мне наподаст устройство. Так как это не программа а ПОКА #кучамала , и на это мне уже несколько человек указали. Работаю и думаю дальше и ни разу не думал о лени в заднице.
Лень в заднице родилась из неочевидного для вас факта: ЕвгенийП, обычно берет чей-то код, заливает и смотрит как это работает. Какая должна быть его реакция? Лучше извинитесь.
Получить от устройства сигналы очень просто, ставите в ключевых точках вывод в сериал и смотрите как себя ведет программа. В случае сомнений, также через сериал мониторите значения переменных.
Перед каждым, кого расстроил в этой ветке искренне извиняюсь.
ЕвгенийП , bwn , Sadman41 , Ворота и другие, если про кого-то не заметил.
Спасибо вам большое за помощь :) И давайте чуть-чуть меньше агрессии, пжл. Если можно) Я только учусь
Я только учусь
В том-то и дело, что не учишься. а пытаешься всех заставить на себя работать, сам нихера не делая. Тебе это уж тут несколько человек пытаются объяснить.
Я только учусь
В том-то и дело, что не учишься. а пытаешься всех заставить на себя работать, сам нихера не делая. Тебе это уж тут несколько человек пытаются объяснить.
Опять 25ть... вроде проехали уже.
Да! я нихрена не умею в этой области! Сразу в первых строках темы это написал. Но про "НЕ УЧИШЬСЯ" - ошибка. и лишний вывод. Я сегодня третий раз IDE открыл и уже что-то попробывал сделать. Уверен, что это уже прогресс. Откуда и почему у тебя столько негатива?
Такие как ты здесь появляются несколько раз в неделю. Главные тезисы:
1. Я навичёк!
2. Я ни хера не знаю!
3. Изучать мне "некогда"/"не охота"/"зачем на один раз" ... и т.д., вот ты выдал "не вижу смысла"
4. Вы должны мне пабыстрому помочь сделать модуль посадки на Луну, для Вас же это на 5 минут (ну и минет, заодно)
5. Иначе, зачем вообще такой форум?
Знаешь, как задрало уже?
Да! я нихрена не умею в этой области! Сразу в первых строках темы это написал. Но про "НЕ УЧИШЬСЯ" - ошибка. и лишний вывод. Я сегодня третий раз IDE открыл и уже что-то попробывал сделать. Уверен, что это уже прогресс. Откуда и почему у тебя столько негатива?
Для Вас этот проект пока сложен. Разбивайте на маленькие части - отдельно кнопки, двигатели, энкодеры, прерывания и т.д. Осваивайте всё по частям. Пишите код, запускайте, проверяйте, исправляйте - пока он не заработает так как Вам нужно и в нём не будет понятна каждая строка. А сейчас советы по решению Вашей задачи будут Вам просто не понятны.
p.s. Почитайте форум. Про энкодеры, помню, большая тема была. Да и не одна.