Подскажите алгоритм управления для 2ух шаговиков (Camera Slider)

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Поставил 500.
Да, всё работает . При запуске homeY . Никакого несинхрона нет. Всё синхронно. Супер
Круто смотрится плавный стоп. Старт без плавного.
При многократном запуске homeХ - сначала все движется и крутится, где то с пятого нажатия только крутится... а ещё после 5 нажатий начинает и ехать и крутиться... Возможно это было задумано... Но тоже синхронно и медленно.
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Круто смотрится плавный стоп. Старт без плавного.
Поясните, не понял что это значит.
При многократном запуске homeХ - сначала все движется и крутится, где то с пятого нажатия только крутится...
При нажатии на homeX должна только крутиться Y на 180, опять не понял.
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Круто, это значит отлично. Не ожидал что такое может быть.
А при нажатии на homeX - что видел, то и написал. Я точно не помню, в одном случае поворот был на 90 градусов а в другом на 180.
Ща запущу, уточню.
Уточняю. Если включить питание и запустить homeX то крутит на 180. Если потом запустить homeУ, он едет быстрои крутит на 90, а потом homeX то он крутит на 180 и при этом едет, но едет и крутит медленно...
 
Изменено:

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Круто, это значит отлично. Не ожидал что такое может быть.
Что такое круто я знаю :ROFLMAO: Я не понял, что значит "старт без плавного"

Если включить питание и запустить homeX то крутит на 180. Если потом запустить homeУ, он едет быстрои крутит на 90, а потом homeX то он крутит на 180 и при этом едет, но едет и крутит медленно...
А ну так и должно быть. homeX крутит ось Y на 180 туда и обратно. homeY гоняет ось X и Y синхронно.

Сейчас сделаю зануление X и Y. Потом задание прохода.
Концевик по X у вас при нажатии дает низкий сигнал или высокий?
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
По разгону. Еслиб и вначале он был, смотрелось бы просто супер. Но это актуально при быстрых перемещениях. На медленных не сильно заметно.
Концевик при срабатывании замыкает на минус. Там идет подтяжка к плюсу через INPUT_PULLUP
У меня пока один концевик.
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
По разгону. Еслиб и вначале он был, смотрелось бы просто супер.
То есть разгоняется резко, а тормозит плавно? Это косяк, динамика должна быть одинаковой. Сейчас посмотрю.
Поэтому и попросил тестировать в железе, у меня просто голые шаговики, динамики не видно.

Если не сложно запишите видео, погоняйте пару раз homeX, а потом homeX.

У меня пока один концевик.
Я понял, да и смысла нет ставить концевик на Y, если разные могут крепиться по разному. По Y я собираюсь сделать ручное обнуление - ставите камеру в определенное положение и нажимаете, это будет ноль. С другой камерой просто зануляете в том же направлении. Тогда можно будет использовать записанные треки.
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Да, торможение как у метро :) гудит... а потом с понижением гудения уууууу и остановился, примерно (не замерял, на глаз) на 5см происходит останов . А разгоняется более резко. Или там просто меньший отрезок для разгона.

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

@rGlory,
Вот ссылочка на видео https://dropmefiles.com/lVqQa
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Спасибо, теперь все понятно! Он не должен был ездить по homeY, это баг. Сейчас поправлю. Чуть освобожусь сделаю правильный homeX и homeY. По поводу структуры меню есть идеи? Например:
Код:
main menu
   homeX занулить X
   homeY вручную занулить Y
   begP - установка начального положения проезда
      begX нач положение по X
      begY нач положение по Y
   endP установка конечного положения проезда
      endX кон положение по X
      endY кон положение по Y
   start - начинаем проезд
      loops - количество повторов
      exec - исполнить
 
Изменено:

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Наверно давайте так и оставим. Мне пока сложно сказать про удобство, хотя судя по меню, практически как и было у меня. В целом не сильно отличается ...
Вопрос по 2 и 3 пункту. 2- это проезд до концевика вероятно, а 3 пока не понял для чего.
В 11 можно при установке 0 ездим до бесконечности, или указываем кол-во проходов...
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Получилось довольно большое обновление.

Изменил библиотеку вывода на экран, Adafruit жрал слишком много памяти. Также пришлось поменять библиотекy обрабатывающую энкодер.

Проверьте стоят ли библиотеки:
  • Encoder by Paul Stoffregen
  • U8g2 by oliver

Если енкодер не будет двигаться, попробуйте уменьшить encoderDIV (это делитель) из src/settings.hpp если двигается слишком много, наоборот увеличить.

homeX() пока не имплементирована. Выхода из движения тоже пока нет, поэтому если выставите loop в 0, то придется перегружать чтобы отстановить.

В установке X и Y одно нажатие меняет дельту, двойное - установка текущего и выход из меню.

Попробуйте и отпишитесь какие проблемы вылезли. Завтра сделаю homeX и паузу/выход из цикла движения, ну и пофиксю баги, которые сообщите.

Памяти категорически не хватает, если перейти на мега то меню можно обновлять гораздо быстрее.
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
На мегу переходить не хочется, прежде всего это размер блока управления, а он и так большой...
Давайте попробуем что то урезать, но остаться в пределах этой ардуинки.
По остальному понял. Проверю, отпишусь...

@rGlory,
Что то не понял как взять библиотеку U8g2lib... Другая сама нашлась и установилась.
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Насчет цифр. Попробуйте на них просто не смотреть. Вы крутите и она едет. Если за шаг едет слишком далеко или поворачиается слишком сильно, кликаете и тем самым увеличиваете точность перемещения, но перемещается медленнее. Просто не смотрите на градусы и дистанцию по X.

homeX еще не реализована, это я уже говорил.
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
Видео по вашему скетчу - https://dropmefiles.com/anmLM (пока грузится... через пару минут...)
Я не знаю задумано это или ещё что то, когда крутишь, не сразу происходит и перемещение по меню, и движение по осям. Где то пауза 2 сек. И ты не понимаешь, толи не сработало, то ли что... По жизни, на коротких слайдерах по оси Х шаг перемещения 20-30мм а на длинных 50-70. Там точность не особо нужна. Тогда по У нужно начать с малых величин. 90 градусов это почти крайний предел вращения.
Забыл написать. После установки конечной координаты, мы остаемся в конце пути. Нужно сделать что то типа превью, чтоб вернуться к начальной (стартовой) позиции. И запускать с начальной точки а не с конечной.
 
Изменено:

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Задержки идут в основном из-за медленного обновления экрана. Я из-за чего сокрушался, что памяти мало. Хотя скорость я немного увеличил, увеличив размер буфера вдвое. Но пауза 2сек это слишком много. Попробую разобраться, в чем проблема.

Тогда по У нужно начать с малых величин. 90 градусов это почти крайний предел вращения.
Ну это как раз не проблема, можно сделать 45, 10, 1 для Y например. Для X к примеру - 50, 10, 1.

Или подобный интерфейс не устраивает в принципе?
Нужно ли менять разрешение по Y меньше градуса? Я тут не подумал, тогда придется немного переделывать для этого. Сейчас функция принимает целые числа.

По видео: скорость задается в мм/c. Могу написать явно, не проблема. Координаты при перемещении показывает - сверху текущие X Y, снизу цель, куда едем. Потом могу убрать, сейчас пусть будет для отладки.

Инверсирование Y - в settings.hpp меняете флаг stepperY_INV, вращение поменяется на противоположное.
INF в скорости это infinity - бесконечность.
Сейчас погляжу, что с задержками и дребезгом энкодера.
 
Изменено:

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
Интерфейс супер, Это если нужно что то настроить. А так очень много дополнительных движений и переключений... один раз нажать... 2 раза... Вы сделали очень класно. Мне даже не удобно... вы столько труда вкладываете, а я по сути, по рукам вам стучу...
Всё же хотелось что то ближе к тому, что было. Там минимум, но достаточный для работы. Без указаний расстояний и углов поворота.. т.к. всё настраивается только визуально.
 
Изменено:

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
вы столько труда вкладываете, а я по сути, по рукам вам стучу...
Да ладно, интерфейс должен быть удобным.
Всё же хотелось что то ближе к тому, что было.
Вы же сами жаловались, что было неудобно гонять по X, рука уставала. Это одно из решений сократить количество кручений.

Без указаний расстояний и углов поворота.. т.к. всё настраивается только визуально.
Так не смотрите на экран, когда настраиваете, смотрите визуально. Просто сначала идет грубая настройка, потом более точная.

Так, вам будет нужно поднапрячься и поставить вот эту библиотеку https://github.com/soligen2010/encoder

В стандартных ее скорее всего нет, так что придется ставить вручную. Но оно того стоит, энкодер работает небо и земля. Кроме того библиотека поддерживает ускоренное передвижение - крутите энкодер быстро, он еще ускоряется. С ускорением наверное дельту можно будет просто убрать. Сейчас попробую без дельты просто с ускорением. Пока поставьте библиотеку. Библиотеку OneTimer ставить не обязательно.

Так перевел энкодер на новую библиотеку, меню сделал линейным, убрал дельту, ускорил печать на экран.

Попробуйте, отпишитесь. homeX homeY save и load пока не работают.
 
Изменено:

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Согласен, интерфейс должен быть удобным. Но в то же время простым. А он получается немного перегруженным выбором настроек.
Согласен, по Х можно оставить изменение шага 100 и 50мм, но если вы говорите что отрабатывается скорость вращения энкодера, то переключений шага уже может и не быть. А в принципе я же собирался переходить на кнопки. Это упрощало в целом моменты кручения.
По Y оси, не нужно делать шагание по углам. Там нужно сделать чистое управление от энкодера. Без выбора грубо или тонко. Как правило там очень небольшие углы поворота. Когда снимается ближний план в пределах 45 градусов, а для дальних планов может быть и всего 5 градусов. То что я показывал в первом видео, почти 10 оборотов энкодера для 90 градусов, это нормально. Проверено и испытано.

По ссылке скачал архив encoder-master. скопировал его в папку с библиотеками. А в скетче что то нужно менять ? Или это будет уже для следующего скетча.
Мне кажется я купил какие то кривые энкодеры. Я сделал несколько слайдеров, в каких то работает идеально, на моей старой прошивке, а другие колбасит не пойми куда... Всё однотипное, прошивка та же... уже подтяжку к плюсу сделал сопротивлениями... как то это немного поправило ситуацию, но не до конца... Уже не знаю что делать... какие энкодеры покупать. На тестовом слайдере, я даже когда касался ручки энкодера, качал её просто, курсор по меню прыгал на вашем скетче... В общем купил какой то отстой...
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Или это будет уже для следующего скетча.
"Скетч" я уже обновил, скачайте попробуйте. Там правда какойто косяк с проездом, один раз проехал и все, сейчас разберусь. Попробуйте установки начального и конечного положения.

Мне кажется я купил какие то кривые энкодеры.
Бывает, у меня тоже не фонтан, хотя он с платой на которой стоят резисторы с подтяжкой. С новой библиотекой должно заработать получше. Попробуйте, отпишитесь.

Обновил еще раз:
добавил меню "goto start" двигаемся в начальную точку
добавил меню "goto end" двигаемся в конечную точку
меню "start" переименовал в "action" там по моему понятнее, иначе смешивается с командами стартовой точки
меню "save" записывает текущий путь (нач конеч точку, скорость, количество повторов в EEPROM)
меню "load"читает последний сохраненный.
 
Изменено:

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Поменял управление, теперь должно быть более отзывчиво. Попробуйте. Также должно работать homeX/homeY и из проезда можно выйти.

Обновитесь и попробуйте. Позиционирование стало грубее, если нужно позиционировать более точно, то двойной щелчек (так сказать скрытое меню, тссс)
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Уже что то ! Отзывчивость значительно лучше. Даже мой кривой энкодер не сбоил.
начну по порядку-
1- хоум Х - двойной проезд я думаю не нужен. Достаточно до срабатывания концевика, и отскок буквально 2-5мм. Этого достаточно. Главное чтоб микрик освободился, а не стоял поджатым. Скорость можно чуть меньше... или пока не трогаем.

2 - хоум У - Нужно реверснуть мотор. Немного не понял, вероятно из-за моего энкодера, но шагает с разными шагами , если с 0 ушел, то в нуль я уже не попадаю :) Шагает то по 4, то по 5, то по 6... число постоянно плавает... думаю это энкодер. Шаг великоват. думаю если сделать по 1 на клик, будет нормально. Двойного клика не обнаружил.

3-Движение по Х уже хорошо, шаг маловат, 10мм мало даже для короткого слайдера. 50-70мм для грубой и 10 для точной будет лучше.. Двойной клик работает.
4- Движение У, вероятно из-за обновления дисплея, задержка на отработку. Если на Х это не ощущается из-за длинного перемещения, то тут должно работать в реальном времени. Я думаю по У отображение позиции нужно отключить. Просто оставить надпись SET Y или типа того. И не обновлять её. Тогда будет быстрее отрабатывать (наверно). Двойной клик работает. Вращение по 1 градусу нормально. Тут наверно вообще можно оставить только один вариант, хотя, если будет без задержек, то можно и 2 режима, шаг по 10 и по 1 градусу, (тонкий шаг нужно уже смотреть в работе)... Пока просто на столе смотрю. В старом у меня было 16 импульсов на шаг энкодера, получалось, при делении на драйвере 16, то на 1 импульс энкодера приходил 1 импульс на мотор. А с учетом редуктора, делилось ещё почти на 4. Из э того имеем, 4 импульса от энкодера это почти 2 градуса поворота. Надеюсь правильно (примерно) посчитал.

5 - goto start - Скорость сильно великовата. Нужно примерно как на позицию хоум. На голове стоит камера до 2ух кг веса, и иногда на шарнире, на высоте порядка 10см. При таких ускорениях её будет колбасить !
6 - goto end - все аналогично как и на goto start.

7- выбор скорости у меня не сработал ????
8- кол-во проходов тоже не работает.

9 - запуск на движение работает. но очень медленно... Вероятно из-за того что выбор скорости был не доступен.
10 - ПАУЗА просто супер !!!!!

Сохранение и запуск сохраненного работает,, но пока не понял как её обыграть. Вероятно нужно при выборе из памяти, как то отправлять каретку в позицию хоум по Х оси, а потом ставить на позицию по данным из памяти.
Кстати, после выбора настроек из памяти, возможность выбора скорости и кол-ва проходов заработали. Перепроверил. если просто включил питание, то не дает в них зайти.

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

В общем что нашел, всё расписал.
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
1- хоум Х - двойной проезд я думаю не нужен. Достаточно до срабатывания концевика, и отскок буквально 2-5мм. Этого достаточно. Главное чтоб микрик освободился, а не стоял поджатым. Скорость можно чуть меньше... или пока не трогаем.
Пусть пока будет, хуже не будет от большей точности
2 - хоум У - Нужно реверснуть мотор.
В settings.hpp меняете параметр stepperY_INV на противоположный. Я поменял у себя, вам теперь менят не надо, мне то все равно, куда Y крутится, это так на заметку на будущее. Вообще надо будет в readme или firmware.ino написать инструкцию на русском, какая за что отвечает. Как добьем отладку сделаю.

Исправил проблему с двойным щелчком.

3-Движение по Х уже хорошо, шаг маловат,
Добавил параметры в settings.hpp

fineXmovement = 10 - количество мм на шаг энкодера по X при тонкой настройке
coarseXmovement = 50 количество мм на шаг энкодера по X при грубой настройке
fineYmovement = 1 количество градусов на шаг энкодера по Y при тонкой настройке
coarseYmovement = 10 количество градусов на шаг энкодера по Y при грубой настройке

4- Движение У, вероятно из-за обновления дисплея, задержка на отработку.
Уменьшил период отработки энкодера с 200мс на 100мс попробуйте. Надо ли выносить этот параметр в settings.hpp?


5 - goto start - Скорость сильно великовата.
Для этого есть параметр xSpeedLimit = 100, поменяйте на безопасную, задается в мм/с

6 - goto end - все аналогично как и на goto start.
Аналогично - ySpeedLimit = 45 задается в град/c

7- выбор скорости у меня не сработал ????
8- кол-во проходов тоже не работает.
Хмм у меня работает. Странно. Лучше покажите на видео, может что угляжу.

Для смены направления отработки меню добавил флаг encoderMenuINV поменяйте, чтобы меню работало как хотите.

Сохранение и запуск сохраненного работает,, но пока не понял как её обыграть.
Идея такая. Устанавливаете нулевую позицию. По X она задается концевиком, по Y - вручную. То есть для себя выбираете какую позицию считать нулевой - например объектив перпендикулярно оси X, или вдоль. Далее при смене камеры или если туже камеру прикрутили и поставили, можете обнулится в такую же позицию и тогда сохраненный проход будет работать точно также, на разных камерах или на той же, но снятой и поставленной назад. Надеюсь понятно объяснил. На самом деле установить 0 по Y наверное можно проще - перед включением повернуть так, чтобы камера была в нулевой позиции. Ну пусть пока будет.

Скачайте обновления.
 
Изменено: