Страница 1 из 6

Электронная делительная головка

Добавлено: 12.02.2023{, 20:51}
putnik
контролер управления поворотным столом

Электронная делительная головка

Добавлено: 22.02.2023{, 01:52}
niko191
Так густо с ответами это потому что вопрос не понятен?
Тема про электронную делилку мне интересна. Хотелось бы сделать, но просто деление окружности на произвольное количество секторов. На каком то сайте скачал скетч для ардуины, но там слишком много лишнего и хотелось бы узнать формулу минимизации накопления ошибки.

Электронная делительная головка

Добавлено: 22.02.2023{, 17:22}
niko191
После 160 строки коменты отсутствуют, и разобраться в коде-проблема(лично для меня).
Прошу прокомментировать хотя бы принцип подсчета и минимизации накопления ошибки. Какая переменная для чего существует?

Электронная делительная головка

Добавлено: 28.02.2023{, 22:55}
putnik
Кто автор этой прошивки? Интересует(очень) описание и схема.
Спасибо!

Электронная делительная головка

Добавлено: 03.03.2023{, 02:52}
niko191
Кто автор уже не вспомню, скачивал с гитхаба. Вот все что есть у меня по данной теме
https://github.com/volmir/dividing-devi ... device.ino

Электронная делительная головка

Добавлено: 03.03.2023{, 15:40}
Dryundel
putnik, niko191, Вы вообще про одно и то же говорите?
Оба такие не многословные. :)
putnik, Вам точно нужна делительная головка для автоматического нарезания шестеренок с помощью червячной фрезы?
Или Вы просто хотите задавать энкодером(кнопками) угол ?
niko191 писал(а):
22.02.2023{, 01:52}
Хотелось бы сделать, но просто деление окружности на произвольное количество секторов.
niko191, тот скетч, который Вы выложили, к озвученному желанию отношения не имеет.

Вообще, если есть сам механизм с шаговиком и драйвером, сделать просто деление окружности на произвольное количество секторов, совсем не сложная задача. Блоков для шаговика не мало. Подойдет даже штатный.
В чем сложности, господа?

Электронная делительная головка

Добавлено: 04.03.2023{, 18:52}
niko191
Dryundel » При небольшой переделке скетча можно использовать и для поворотного стола и для деления окружности. В данном скетче много лишнего. Можно сделать как есть, а лучше выкинуть энкодер, в поворотном столе он лишний как и в делении окружности. Что бы глобально изменить программу- выкинуть все лишнее, нужно хороша разбираться в прерываниях и досконально понимать (разобраться ) в используемых формулах, поэтому я и просил прокомментировать строки после номера 160. Что касаемо меня то я закомментировал строки относящиеся к энкодеру. Пришли драйвера для шагового двигателя и завтра начну эксперименты. Минимальная задача- выкинуть лишние строки меню и энкодера, ну и осталось желание разобраться как устранена проблема накопления ошибки.

Электронная делительная головка

Добавлено: 04.03.2023{, 19:48}
Dryundel
niko191 писал(а):
04.03.2023{, 18:52}
В данном скетче много лишнего.
Ключевые слова
niko191 писал(а):
04.03.2023{, 18:52}
При небольшой переделке скетча
Проще сделать заново на штатных блоках.
niko191 писал(а):
04.03.2023{, 18:52}
а лучше выкинуть энкодер, в поворотном столе он лишний
Мудрая мысль.
niko191 писал(а):
04.03.2023{, 18:52}
Минимальная задача- выкинуть лишние строки
Не занимайтесь мазохизмом.
niko191 писал(а):
04.03.2023{, 18:52}
ну и осталось желание разобраться как устранена проблема накопления ошибки
Она понятна и по моему даже предположительно описана автором.
Накопление ошибки связано с ошибками обработки сигналов энкодера, в том числе из-за возможных помех.

Однако судя по рассуждениям. Осмелюсь предположить, что вы не до конца понимаете для каких целей был написан данный скетч автором.
Суть задачи заключается в том, чтобы синхронизировать два вращающихся объекта и сделать это в зависимости от параметров червячной фрезы. А не просто разделить окружность на градусы.
Для пониманияПоказать

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

Электронная делительная головка

Добавлено: 04.03.2023{, 20:13}
Abay1
Dryundel писал(а):
04.03.2023{, 19:48}
Ваша же задача, на сколько я понял, всего навсего сводится к тому, что бы запустить шаговик на определенное количество шагов в одну или другую сторону, относительно базовой фиксации.
Самая сложная задача в Рабочем Проекте делительной головки, это жесткая механика планшайбы и патрона и надежный тормоз поворотного стола, очень желательно - автоматически-электрический (одно забывание за полтора часа работы, и - заготовка шестерни в Ж...), управляемый контролером!
А уж разложить оборот шпинделя на число зубов с заданной точностью и без требований к скорости и быстродействию ШД, это не задача и для Ардуинки и инженера!

Электронная делительная головка

Добавлено: 05.03.2023{, 02:59}
niko191
Обеспечить жесткость делительной головки это проблема, но не такая большая. Коль уж сделал самодельную фрезерную приставку для токарного станка и сверлильный станок самодельный с хорошей жесткостью ,то и делительное устройство я думаю смогу сделать.
Для меня большую проблему представляет устранение накопления ошибки при делении окружности.
Предположим нужна шестерня на 53 зуба.
Шаговый двигатель 400 шагов на оборот. Режим полшага- 800 шагов.
800:53= 15.09433962264151 шага на один зуб. 15 шагов сделать не проблема, а что делать с цифрами после запятой, они будут накапливаться на каждом зубе, а если делать два прохода (два оборота заготовки) то последний зуб будет испорчен.
Я думаю ошибку надо прибавлять к вычислению следующего шага
Может я не прав со своей математикой, в школе была твердая тройка с минусом :smile250: Вот я и прошу, подскажите как правильно учитывать накопление ошибки.
Можно поставить редуктор к мотору, но это не решает проблему .

Отправлено спустя 8 минут 21 секунду:
Dryundel писал(а):
04.03.2023{, 19:48}
Осмелюсь предположить, что вы не до конца понимаете для каких целей был написан данный скетч автором.
Задумка автора скетча мне понятна, Этот скетч может работать и как делительное устройство, чего мне и нужно.
Меню имеется, настройки имеются. а больше ничего и не нужно. Механика нужна но это другой вопрос.

Электронная делительная головка

Добавлено: 05.03.2023{, 09:41}
ViktorPetrov
Автор шкивы меняет ,чтобы не набегала погрешность.
Примечание:Возможно частичное (без подсоединения энкодера) использование делительной головы. Нарезание шестеренок в этом случае возможно путем простого деления окружности на части. В случае, когда число требуемых шагов ШД (необходимых для одного полного оборота заготовки) без остатка делится на число частей, на которые делится окружность - то деление будет точным. В случае деления с остатком эта погрешность тем меньше, чем больше передаточное соотношение между ШД и УДГ; чем более мелкий микрошаг выставлен на драйвере.

Электронная делительная головка

Добавлено: 05.03.2023{, 09:42}
Abay1
Дополню решение Уважаемого ViktorPetrov:
niko191 писал(а):
05.03.2023{, 03:07}
15 шагов сделать не проблема, а что делать с цифрами после запятой, они будут накапливаться на каждом зубе
Я понял Вас; проблема решается математическим методом и, кажется,имеет название "разложение ряда Фурье для заданного диапазона значений...", попробую донести до Вас алгоритм ее решения:
СпойлерПоказать
Берется окружность в 360 градусов, делиться на число зубов, угол поворота ШД, на коф. редукции привода (если это червячный редуктор, то число сразу дробное - <Float>). Далее определяется число импульсов ШД, необходимое для поворота патрона или планшайбы в каждое из фиксируемых положений. Потребное число импульсов ШД на поворот планшайбы равномерно распределяются в соответствии с ранее рассчитанным коэффициентом в пределах полного (360 град.) угла поворота планшайбы (к примеру: 1-0-0-1-0-0-1 и тд ("1" - шаг ШД, "0" - пропуск шага в последовательности управляющих импульсов ШД)). Рассчитываем последовательность подачи импульсов ШД для вращения планшайбы от начальной позиции до Каждой из промежуточных промежуточных точек заданного останова и для конечной точки (0 град. = 360 град.). После этого считаем угловую ПОГРЕШНОСТЬ приведения планшайбы в каждое из фиксированных положений; если погрешность превышает допустимую (по вашему желанию или по допуску из соотв. ГОСТ) - увеличиваем множитель ШД или редукцию в приводе (уменьшаем угол поворота планшайбы на один импульс ШД) и повторяем вычисления До достижения требуемой точности.
При всей страшности задачи решается все весьма просто:
СпойлерПоказать
пишется "на коленке" простейшая программка для производства циклических вычислений (мне в экселе приятнее!), она же равномерно раскладывает импульсы ШД в пределах фиксированных (заданных Вами) углов поворота и считает и погрешность (самое главное !!!).
Полученная последовательность импульсов ШД для поворота планшайбы на заданные углы вносится в простой массив двоичных данных (или командоаппарат, если достаточно ресурсов МК) и, после прокрутки массива (или командоаппарата) на рассчитанное прожкой число шагов и фиксирование ротора ШД и стола от самопроизвольного перемещения - Ваша деталь оказывается повернутой на заданный угол с точностью намного выше, чем имеющиеся у Вас средства измерений!
"Один массив двоичных данных - один тип шестеренки" (например - Масив "78 зубов"). Храните каждый из ранее рассчитанных и упакованных в массивы комплектов данных в ЕЕПРОМ МК (оператива не бесконечна в МК) отдельно и вызываете в для выполнения по требованию!
Программку я вам помогу на коленке в экселе сваять, если сами не справитесь!
И, никакие погрешности не будут накапливаться!

Электронная делительная головка

Добавлено: 05.03.2023{, 10:30}
Dryundel
niko191 писал(а):
05.03.2023{, 03:07}
Шаговый двигатель 400 шагов на оборот. Режим полшага- 800 шагов.
800:53= 15.09433962264151 шага на один зуб. 15 шагов сделать не проблема, а что делать с цифрами после запятой, они будут накапливаться на каждом зубе
Какой двигатель? Какой драйвер? Какая передача(редуктор)?

1. Без редуктора шаговик не удержит. А с коэффициентом хотя бы 10 ошибка уменьшается.
2. У нормального драйвера есть деление не только на полушаг, а на много больше. К примеру какой нибудь DM556 имеет на борту делитель 256 - а это, (если у Вас двигатель действительно с шагом 0,9гр) будет 102400 микрошагов на оборот. Получается разрешение 0,0035... градуса на микрошаг и это еще без редуктора.
3. Есть в нем и другие (не бинарные) делители. Самый большой 200. А это с вашими двигателем 80000 шагов на оборот. При этом микрошаг будет четко 0,0045 градуса.
4. С таким делителем получается что максимум погрешности на каждом зубе будет 0,0045 : 2 = 0,00225 гр (по закону округления). А это на диаметре 100мм меньше 2 микрон. И это ещё без редуктора!
Да Вы на люфтах и термо расширении в десятки раз больше "согрешите". :)

Ну и последнее. Самое важное. Если рассматривать накопительную ошибку при постоянном вращении, то ЕЁ НЕ СУЩЕСТВУЕТ!
Сделав 400 или 800 шагов или 102400 микрошагов, шаговик вернется в НУЛЕВУЮ точку БЕЗ ПОГРЕШНОСТИ. То же самое произойдет и при следующем обороте и через 1000 оборотов.

Погрешность может накапливаться если только у Вас редуктор "кривой". (Имеет дробный коэффициент)

Отправлено спустя 2 часа 27 минут 8 секунд:
---------------------------------------------------
И к стати. Почитайте то, что написал Abay1, повнимательнее. Он хоть и сложно (через Фурье :) ) но простые принципы объясняет.
Если в двух словах и на пальцах, то выглядит это так.

Нельзя.
360 градусов разделить на количество шагов и потом этот "кривой" дробный угол использовать для расчета перемещения простым умножением. Это ересь. Здесь и кроется Ваша "накопительная погрешность".

Можно.
Сначала взять соотношение угла положения к полному обороту (360 / угол) а потом умножить это на количество шагов (микрошагов) в обороте. Только так!

Электронная делительная головка

Добавлено: 05.03.2023{, 13:06}
Nikan
.

Электронная делительная головка

Добавлено: 05.03.2023{, 13:16}
Dryundel
Ээээ... Nikan, Не усложняй. :) Минутами и секундами пользуется только Паганель. Даже GPS в десятичном формате.

Электронная делительная головка

Добавлено: 05.03.2023{, 13:30}
Nikan
.

Электронная делительная головка

Добавлено: 05.03.2023{, 13:40}
Abay1
Nikan, ТС поднял вопрос о Принципе деления 360 градусов на не кратный 360 угол (напр., шестерня на 52 зуба попросит: 360град./52 = 6,923076923077 градуса, не считал сколько это в градусах-минутах-секундах (крепости :smile427: напитка :D )

ЗЫ. Да и погрешность (отклонение от заданного угла) приятнее в безразмерных процентах считать! Наверное...

Электронная делительная головка

Добавлено: 05.03.2023{, 13:43}
Dryundel
Nikan писал(а):
05.03.2023{, 13:30}
не усложняю, наоборот так проще. только малька подумать надо
Люди давно подумали за нас и снабдили драйвера не бинарными делителями, которые не дают бесконечной дроби.

Электронная делительная головка

Добавлено: 05.03.2023{, 13:57}
Nikan
.

Электронная делительная головка

Добавлено: 05.03.2023{, 14:03}
Dryundel
Dryundel писал(а):
05.03.2023{, 12:57}
360/52 = 6°55'23"
Таааак. Отлично! Nikan, а подскажите пожалуйста тип переменной для такого расчёта в С++? :D

Отправлено спустя 7 минут 56 секунд:
Ну можно конечно создать и свой тип. И библиотеку под него написать....
Но как то это уж сильно заморочно.
Однако вот с этим...
niko191 писал(а):
22.02.2023{, 01:52}
думать не не можно....
Я не могу не согласится!
Жаль что не все это знают. 😊