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

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

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
@Андрей К., Я примерно так же представлял, но тогда что то должно меняться за этот час...Хотя если снимать 3д печать, то возможно. Еще убирать голову принтера на момент съемки и вообще будет красота. Про 3д печать забыл
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Всё отлично, но опять вылезли ноги...

Загрузил предыдущий вариант, там та же проблемка. Значит не последние изменения внесли ошибку.

И по скорости, я прикинул скорость 0.1мм, это почти 3 часа для 1 метра. нормальная скорость. Больше и не нужно.

@rGlory,
В дополнение к ранее описано ошибке. Если несколько раз останавливать при движении в одну сторону, то ошибка плюсуется. Если столько же раз остановить при движении обратно, то все выходит в нули.
Я ранее написал что только при движении вправо ошибка, но был не точен. Ошибка одинаково срабатывает при любом направлении. Как вправо так и влево.
 
Изменено:

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@Старик Похабыч,
Съемка звездного неба, хода строительства или сборки чего-то... И печать тоже можно.
Я пока не решаюсь принтер трогать, у меня стоковая прошивка, что по мне, работает отлично. Да и конфигурировать марлин я что то не готов...И не понятно что в итоге получишь... А без этого бошку не убрать... да, получается красиво без башки, но не понятно как оно растет.... ничего не шевелится... А когда все мельтешит, хотя бы понятно что что то работает и печатает :)

 
Изменено:

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Одинаково накапливается ошибка и влево и вправо. Проблема одинаковая в обе стороны.
Если с накопленной ошибкой остановить, и дать команду в начало, То по оси Х он едет в начало а по оси У не докручивает до стартового положения.
Это хорошо видно на высоких скоростях. На малых оно менее заметно.
 
Изменено:

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Одинаково накапливается ошибка и влево и вправо. Проблема одинаковая в обе стороны.
Я уже понял, просто когда писал свое сообщение, не увидел, что тема перешла на новую страницу.

Скачайте обновление, проверьте, исправлена ли проблема.

Кстати мне пришли платы с jlcpcb со схемой подавления дребезга с того видео. Запаял туда голый энкодер, работает как часы!
 
Изменено:

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
А я просто купил на круглой плате энкодеры... у меня тоже как часы :) По деньгам наверно аналогично будет... Но я на рынке покупал, поэтому пока получилось вероятно не бюджетно... у нас в магазине 220руб. На АЛИ дешевле... но ждать долго...
А скетч сейчас проверю.

@rGlory,
На данном этапе ничего пока не обнаружил. Ещё погоняю, но надеюсь все в норме.
Сейчас запустил медленную скорость на тест... На пол пути из 500мм, нажал на паузу... он остановился только дойдя до конца проезда. На скоростях менее 10мм/сек пауза не работает. Если на паузу нажать ближе к концу прохода, то он уезжает за пределы слайдера... При этом не останавливаются обе оси. Если выбрать 10мм или бОлее вопросов нет. Идеально. Если виноват плавный стоп, то можно его вообще выключить на этих скоростях. При скорости менее 10мм ничего не произойдет. там резкого и так не будет...

Вопрос по скорости, можно как-то реализовать выбор скорости менее 1сек/мм. Сделать от 0.1сек/мм.

И вы обещали некоторые пункты в скетче написать по русски. В принципе меня интересуют такие настройки в скетче
Скорость перемещения для "сброс Х"
Скорость перемещения "к началу" вероятно она же и к концу
Максимальная скорость которую мы задаем в меню "Скорость"
Максимальная длинна слайдера (прохода )

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

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Залил исправление для остановки, попробуйте.

Для скоростей по X
const auto xSpeedLimit = 100; - лимит скорости по X (мм/c) она же используется для позиционирования в конец и начало.
const auto xSpeedHoming = 40; - скорость при поиске концевика

Для Y
const auto ySpeedLimit = 45; лимит скорости по Y (градусов в сек)

Для скоростей ниже 1мм/c нужно переделывать логику, чуть позже погляжу.
 

Андрей К.

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

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Я поменял тут -
// Accleleration divisor
const uint16_t accelerationN = 4;
const int16_t minSpeed = 512;

Разгон стал бОлее длинным, а стоп остался резким везде.
 
Изменено:

Андрей К.

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

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Попробуйте сейчас, это по идее больше хак, чем решение, но пока лезть глубоко нет времени.
 

rGlory

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

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Домашка поправилась. пробежался по остальному, в целом всё работает как и было задумано.
Нужно погонять...
Вопрос, в режиме "Сброс Х" можно ли добавить хотя бы ещё 1см пробега мотора, для поиска концевика. Я не люблю когда крайние точки упираются в края изделия. Соответственно я указываю расстояние на 2-4 мм меньше. Но если он идет от крайнего положения, то он не может дойти до концевика, он останавливается...
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
В остатке скорость менее 1мм (0.1-1.0мм/сек )
Ну качайте и тестируйте тогда, надеюсь сильно не накасячил. Если у вас есть сохранение, то нужно будет считать, поменять скорость и сохранить, а то скорость уменьшится в 10 раз.
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
Сохранений у меня штук 10 наверно... пока идет доделка...

const auto xSpeedLimit = 100; - лимит скорости по X (мм/c) она же используется для позиционирования в конец и начало.
У меня пока гипотетический вопрос, дабы опять не заниматься исправлениями... Можно разъединить лимит и позиционирование ? Иногда нужен очень быстрый проезд 200мм/сек, но если там поменять, то творятся чудеса.... не в лучшем понимании.
Пусть позиционирования останутся где то 100, а добавится возможность увеличивать скорость рабочего прохода до 200мм/с

@rGlory,
Едет медленно, отлично. НО! Пропал плавный останов везде. Трогается нормально, плавно везде.
 
Изменено:

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
У меня пока гипотетический вопрос, дабы опять не заниматься исправлениями... Можно разъединить лимит и позиционирование ? Иногда нужен очень быстрый проезд 200мм/сек, но если там поменять, то творятся чудеса.... не в лучшем понимании.
Немного не понял, поясните.

НО! Пропал плавный останов везде. Трогается нормально, плавно везде.
Исправил, обновитесь.