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

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
293
26
Москва. Щукино
Избыточное цитирование
Там в README таписано, какие библиотеки надо поставить. Скопирую потом в firmware.ino -

  • RotaryEncoder by Matthias Hertel
  • OneButton by Matthias Hertel
  • Adafruit GFX by Adafruit
  • Adafruit SSD1306 by Adafruit
Чем и удобна платформио - там в файле указаны настройки, и какая плата используется, и какие библиотеки нужны. И она их автоматически вытаскивает с репозиториев. Но вам придется вручную их поставить,
Нет проблем, библиотеки поставлю. Для меня это проще. Про кнопки до вас инфа добралась ? Выше смотрите. Но блока с кнопками пока нет, поэтому тестить не на чем. В выходные поеду на рынок, присмотрю что нибудь... и тогда сделаю версию блока управления на кнопках, если эта идея будет осущетвляться.

Библиотеки поставил, все скомпилировалось. Залил, меню работает. Всё быстро и четко... Только похоже у меня энкодер на 2 щелчка, для того, чтоб попасть на Y нужно энкодер поставить в промежуток между фиксироваными положениями... Алекс про это в обзоре как то рассказывал. Есть толстые и тонкие, и они дают 1 или 2 импульса. Но у меня вроде тонкие, а работают как буд то 2 импульса. Или может какую паузу между опросом поставить, чтоб второй импульс не проскакивал.
 
Изменено:

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Про кнопки до вас инфа добралась ? Выше смотрите.
Пусть будет пока энкодер, все равно уже прикрутил. Потом можно будет сделать и так и так.

Там кроме меню пока ничего нет, просто пока проверить и высветить подводные камни с вашим железом и окружением. Подменю есть в config. Выход назад либо двойным кликом либо выбрав back

Сейчас прикручу контроль шаговиков, можно будет попробовать погонять в тестовом режиме. Какие у вас параметры для X - шагов на мм и для Y шагов на градус? Кстати контроллеры выключать не будем, а то они грется могут если их все время включенными держать? С другой стороны не провернется само собой.
 
Изменено:

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
293
26
Москва. Щукино
Избыточное цитирование
Пусть будет пока энкодер, все равно уже прикрутил. Потом можно будет сделать и так и так.

Там кроме меню пока ничего нет, просто пока проверить и высветить подводные камни с вашим железом и окружением. Подменю есть в config. Выход назад либо двойным кликом либо выбрав back

Сейчас прикручу контроль шаговиков, можно будет попробовать погонять в тестовом режиме. Какие у вас параметры для X - шагов на мм и для Y шагов на градус? Кстати контроллеры выключать не будем, а то они грется могут если их все время включенными держать? С другой стороны не провернется само собой.
Ок, с кнопками понятно.
Про двойной клик не знал. А через выход, вышел.
Моторы 200 шагов на 360 градусов. Но плюсом ещё идет деление на 16 в драйвере. Итого имеем 3200 шагов на 360 градусов. На обе оси одинаково.
По расстоянию, на движении по Х стоит ролик диаметром 12мм, соответственно один оборот 37-38мм перемещения каретки (вроде так). А поворот он задается в процессе настройки... там угол без разницы.

На данном этапе моторы можно и отключать, но в дальнейшем нет. Они должны держать. Током питаются они пониженым, поэтому перегрев им не грозит.
 
Изменено:

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Моторы 200 шагов на 360 градусов. Но плюсом ещё идет деление на 16 в драйвере. Итого имеем 3200 шагов на 360 градусов. На обе оси одинаково.
Параметры шаговиков я знаю. Но мне нужны выходные параметры - на сколько мм передвигается каретка по оси X на один шаг, и насколько поворачивается крепление при повороте (там же редуктор). Второе, в принципе, не особо важно, но пусть будет, по фэншую.

Вернее лучше задать в обратную - сколько шагов шаговика на мм по оси X и сколько шагов на градус по Y

Про двойной клик не знал. А через выход, вышел.
Стало быть скомпилировалось и заработало? Меню устраивает? Там можно размер шрифта поменьше сделать, но мне тогда не очень видно. Потом, если надо, запилю.
 
Изменено:

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
293
26
Москва. Щукино
Избыточное цитирование
Параметры шаговиков я знаю. Но мне нужны выходные параметры - на сколько мм передвигается каретка по оси X на один шаг, и насколько поворачивается крепление при повороте (там же редуктор). Второе, в принципе, не особо важно, но пусть будет, по фэншую.


Стало быть скомпилировалось и заработало? Меню устраивает? Там можно размер шрифта поменьше сделать, но мне тогда не очень видно. Потом, если надо, запилю.
Шаг перемещения не плохо бы вывести как переменную в начало скетча. 2 слайдера, один маленький там шаг можно и по 3-5см сделать. А другой будет 1.5метра, шагать по 5см рука отвалится крутить, я делал по 13-15см... Вращение по У, я делал практически как и ручка энкодера. 1 оборот по У - примерно 1.5 оборота энкодера. По редукции там 16 зубов и 60 зубов шестерни. (60/16=3.75)

С дисплеем пока нормально. Вылизывать будем потом.
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Шаг перемещения не плохо бы вывести как переменную.
Сделаем проще - нажатие на энкодер будет менять шаг, двойной клик выйти из режима. По клику переключать между 0.1 - 1 - 10 - 50 мм к примеру.
По редукции там 16 зубов и 60 зубов шестерни. (60/16=3.75)
На оси X сколько зубов и какой ремень стоит?
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
293
26
Москва. Щукино
Сделаем проще - нажатие на энкодер будет менять шаг, двойной клик выйти из режима. По клику переключать между 0.1 - 1 - 10 - 50 мм к примеру.

На оси X сколько зубов и какой ремень стоит?
Я думаю что делать очень разветвленное меню не стоит. Иногда чем проще тем лучше. Возможно я не прав.
На оси Х стоит 20 зубов. Ремень стандартный от 3Д принтера 6мм.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,317
1,317
Москва
Можно вам предложить?
Я когда надо энкодером большие числа менять делаю поворот с нажатием в 10 раз больше чем шаг.
И потом я бы сделал задание чуть по другому.
2 режима, переключение по 2-му (например) клику энкодером
Первый режим как и было, поворот энкодером - смещение на шаг.
Второй поворот энкодера заставляет двигаться каретку непрерывно. еще поворот в ту сторону может увеличить скорость. Клик при этом может означать стоп.
Выход из режима например длительное удержание кнопки.
 
  • Лойс +1
Реакции: Андрей К.

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Я думаю что делать очень разветвленное меню не стоит. Иногда чем проще тем лучше. Возможно я не прав.
Это будет не меню. В режиме позиционирования нажатие будет менять шаг, а поворот - двигать. Все в одном флаконе.
Ремень стандартный от 3Д принтера 6мм.
Стандартные ремни для 3Д принтера бывают с шагом 2мм - GT2 и шагом 2.5мм - T2.5. Ширина ремня не важна. ;)
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
293
26
Москва. Щукино
Это будет не меню. В режиме позиционирования нажатие будет менять шаг, а поворот - двигать. Все в одном флаконе.

Стандартные ремни для 3Д принтера бывают с шагом 2мм - GT2 и шагом 2.5мм - T2.5. Ширина ремня не важна. ;)
Понял про шаги
Ремень GT2
 

rGlory

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

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

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
293
26
Москва. Щукино
Избыточное цитирование
Идеи всегда приветствуем.

Хмм, посмотрю. Мне просто пока неудобно будет такой режим тестировать - у меня энкодер воткнут в монтажку и нажимать и крутить одновременно сильно неудобно. Поэтому пока оставлю так, а чуть позже добавлю этот режим либо как вариант в меню, любо в качестве параметра в компиляции.


Интересный вариант, добавлю.
Вставлю свои 5 копеек. Энкодеры бывают с мягкими пружинами и жесткими... Сейчас у меня мягкие... и невольно когда крутишь, он нажимается... или от неаккуратности... в общем сдвоенную опцию по нажатию и кручению я бы не хотел рассматривать. В принципе интересно, но все таки нужно как то упрощать жизнь и пользование.:) А то без инструкции не разобраться будет...
Если делать с настройками шагов и углов через меню. То зашел 1 раз, этого достаточно, настроил как нужно, и дальше только пользуешься. Как правило там постоянно что то менять не нужно. Я почему сказал про переменную, когда 2 разного размера варианта, сделал 2 прошивки под оба, залил и всё. Это же не телескопическая удочка... каждый раз разный размер...
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Если делать с настройками шагов и углов через меню. То зашел 1 раз, этого достаточно, настроил как нужно, и дальше только пользуешься.
Ну идея в общем-то такая. Вы заходите в пункт позиционирование по X. Там сразу стоит грубая и быстрая настройка, например один клик энкодера = 50мм проезда. Вы быстро и примерно подгоняете в нужную область, затем кликаете и переключаетесь на более медленный, но аккуратный режим, и подгоняете более точно. Затем два клика - выход из позиционирования.
 
  • Лойс +1
Реакции: Андрей К.

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
293
26
Москва. Щукино
Ну идея в общем-то такая. Вы заходите в пункт позиционирование по X. Там сразу стоит грубая и быстрая настройка, например один клик энкодера = 50мм проезда. Вы быстро и примерно подгоняете в нужную область, затем кликаете и переключаетесь на более медленный, но аккуратный режим, и подгоняете более точно. Затем два клика - выход из позиционирования.
Я понимаю, вы хотите сделать просто супер... но у фотографа немного другие задачи, у него в голове кадрирование, очень тонкая настройка положения , особенно по Х оси, в целом не требуется. бОлее тонкая настройка нужна по У оси. Но там у нас и так все плавно. Как правило по У оси поворот камеры максимум это 180 градусов. Поэтому все эти вещи немного усложняют процесс выбора 2ух точек по Х и У. Базовый вариант был оптимален. Прост и доступен даже для женской половины. Проблема была в не синхроне. Не забываем, фотограф, это не инженер, натура тонкая и художественная.

Если хотите сделать по супер-суперу, то можно сделать как на дорогих слайдерах управление через телефон... Хотя на сколько это нужно не понимаю. Возможно только я :)
 
Изменено:

rGlory

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

Если хотите сделать по супер-суперу, то можно сделать как на дорогих слайдерах управление через телефон...
Ну это надо модуль будет добавлять, блютусовский наверное проще всего. Или поменять ардуину на ESP32. Поглядим потом.
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
293
26
Москва. Щукино
Ну более тонким режимом пользоваться то необязательно.

Я почему хотел от энкодера и отказаться. Хотел на кнопки перевести, нажатие короткое или длинное всем понятно...


Ну это надо модуль будет добавлять, блютусовский наверное проще всего. Или поменять ардуину на ESP32. Поглядим потом.
ЕСР не проблема, но там выводов мало вроде... На всё не хватит наверно.
Я сейчас подумал, может на будущее добавить и ось Z. Там параметры примерно как и на Y будут... минимальное вращение, оборот энкодера равен 3-4 оборотам мотора, или даже меньше.
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,317
1,317
Москва
Еще мысль в кучку: Если вместо рельсового мотора подключить мотор, что будет вращать платформу, а мотор, который поворачивает камеру зафиксировать так, что бы он поворачивал ее по вертикали, направив при этом на платформу, то получиться устройство съемки объекта со всех сторон на той же прошивке...
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Нужен тест. Скачайте последнее обновление и скомпилируйте. По команде homeX X должна проехать на метр в + со скоростью 10mm/s и остановиться. При повторном homeX, вернуться в начальное положение. По команде homeY - тоже самое, только синхронно должна повернуться Y на 90 градусов.

Если движение по X в противоположную сторону, поменяйте stepperX_INV в settings.hpp. Жду.

Ага нашел косяк, там скоросто в 10 раз больше :)

Обновил. Теперь торможение считает по честному.

homeX теперь должна крутить Y на 180 градусов со скоростью 45 в секунду. homeY гонять X на 1000мм вправо влево со скоростью 100мм/c, при этом Y должна синхронно поворачиваться на 90 градусов.

Протестируйте на железе, нужен фидбак.
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,317
1,317
Москва
@Андрей К.,
Не совсем понял про ось Z.
Сейчас есть 2 мотора. один двигает камеру,, второй поворачивает. И останется 2 мотора. один двигает платформу (крутит) а дрогой поворачивает камеру, но уже по вертикали, если надо. Если еще один мотор добавлять, то только для съемки предмета на поворотной платформе в движении
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
293
26
Москва. Щукино
@rGlory,

Погонять не получилось. Вероятно из-за того, что у меня стоит отключение моторов, т.к. пока загружается ардуино (с тем скетчем) моторы дребезжали... И я принудительно их отключил. А когда скетч запускается, то он включает моторы.

#define Enable 9 // пин на включение драйверов моторов
я ничего трогать у вас не стал, но нужно куда то вставить строчку
digitalWrite(Enable , LOW); // включаем драйверы EN=0
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Добавил, обновитесь. Вообще в main.cpp есть функция setup(); это она, если хотите что-то добавить
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
293
26
Москва. Щукино
@rGlory,
Моторы заработали. Всё отлично.
При нажатии в меню на Х, поворачивается ось на каретке на 180 градусов. При повторном нажатии поворачивается обратно. Только это ось считается Y. На данном этапе не важно.
Переходим в меню на Y, нажимаем, каретка пошла с вращением. Т.к. у меня на данном моменте маленький слайдер, там перемещение каретки всего 65см, полностью что происходит сказать не могу. Ну и автоматом дополню, перемещение по горизонтали, это ось Х.
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Только это ось считается Y.
Я в курсе. Сейчас homeX homeY просто используются как закладки, я уже писал:
homeX теперь должна крутить Y на 180 градусов со скоростью 45 в секунду. homeY гонять X на 1000мм вправо влево со скоростью 100мм/c, при этом Y должна синхронно поворачиваться на 90 градусов.
Поправьте в функции homeY вызов moveTo первый параметр скажем 500, а не 1000. Просто надо проверить синхронность и плавность. Y должна синхронно повернуться на 90 градусов при повторной команде вернутся обратно