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

putnik
Рядовой
Сообщения: 18
Зарегистрирован: 16.03.2019{, 18:00}
Репутация: 0
Имя: Андрей

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

#1

Сообщение putnik » 12.02.2023{, 20:51}

контролер управления поворотным столом

niko191
Рядовой
Сообщения: 17
Зарегистрирован: 29.01.2023{, 19:29}
Репутация: 0
Откуда: Москва
Имя: Николай

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

#2

Сообщение niko191 » 22.02.2023{, 01:52}

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

niko191
Рядовой
Сообщения: 17
Зарегистрирован: 29.01.2023{, 19:29}
Репутация: 0
Откуда: Москва
Имя: Николай

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

#3

Сообщение niko191 » 22.02.2023{, 17:22}

После 160 строки коменты отсутствуют, и разобраться в коде-проблема(лично для меня).
Прошу прокомментировать хотя бы принцип подсчета и минимизации накопления ошибки. Какая переменная для чего существует?
Вложения
Delit_golovka.ino
(12.49 КБ) 52 скачивания

putnik
Рядовой
Сообщения: 18
Зарегистрирован: 16.03.2019{, 18:00}
Репутация: 0
Имя: Андрей

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

#4

Сообщение putnik » 28.02.2023{, 22:55}

Кто автор этой прошивки? Интересует(очень) описание и схема.
Спасибо!

niko191
Рядовой
Сообщения: 17
Зарегистрирован: 29.01.2023{, 19:29}
Репутация: 0
Откуда: Москва
Имя: Николай

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

#5

Сообщение niko191 » 03.03.2023{, 02:52}

Кто автор уже не вспомню, скачивал с гитхаба. Вот все что есть у меня по данной теме
https://github.com/volmir/dividing-devi ... device.ino
Вложения
delitelnaya golovka.rar
(157.48 КБ) 34 скачивания

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#6

Сообщение Dryundel » 03.03.2023{, 15:40}

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

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

niko191
Рядовой
Сообщения: 17
Зарегистрирован: 29.01.2023{, 19:29}
Репутация: 0
Откуда: Москва
Имя: Николай

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

#7

Сообщение niko191 » 04.03.2023{, 18:52}

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

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#8

Сообщение Dryundel » 04.03.2023{, 19:48}

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}
ну и осталось желание разобраться как устранена проблема накопления ошибки
Она понятна и по моему даже предположительно описана автором.
Накопление ошибки связано с ошибками обработки сигналов энкодера, в том числе из-за возможных помех.

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

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

Abay1
Рядовой
Сообщения: 31
Зарегистрирован: 01.03.2022{, 08:03}
Репутация: 0
Имя: Александр

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

#9

Сообщение Abay1 » 04.03.2023{, 20:13}

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

niko191
Рядовой
Сообщения: 17
Зарегистрирован: 29.01.2023{, 19:29}
Репутация: 0
Откуда: Москва
Имя: Николай

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

#10

Сообщение niko191 » 05.03.2023{, 02:59}

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

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

Аватара пользователя
ViktorPetrov
Лейтенант
Сообщения: 678
Зарегистрирован: 09.04.2018{, 23:56}
Репутация: 49
Имя: Виктор

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

#11

Сообщение ViktorPetrov » 05.03.2023{, 09:41}

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

Abay1
Рядовой
Сообщения: 31
Зарегистрирован: 01.03.2022{, 08:03}
Репутация: 0
Имя: Александр

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

#12

Сообщение Abay1 » 05.03.2023{, 09:42}

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

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#13

Сообщение Dryundel » 05.03.2023{, 10:30}

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 / угол) а потом умножить это на количество шагов (микрошагов) в обороте. Только так!

Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 100
Откуда: москва

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

#14

Сообщение Nikan » 05.03.2023{, 13:06}

.
Последний раз редактировалось Nikan 24.03.2023{, 02:46}, всего редактировалось 1 раз.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#15

Сообщение Dryundel » 05.03.2023{, 13:16}

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

Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 100
Откуда: москва

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

#16

Сообщение Nikan » 05.03.2023{, 13:30}

.
Последний раз редактировалось Nikan 24.03.2023{, 02:46}, всего редактировалось 1 раз.

Abay1
Рядовой
Сообщения: 31
Зарегистрирован: 01.03.2022{, 08:03}
Репутация: 0
Имя: Александр

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

#17

Сообщение Abay1 » 05.03.2023{, 13:40}

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

ЗЫ. Да и погрешность (отклонение от заданного угла) приятнее в безразмерных процентах считать! Наверное...
Последний раз редактировалось Abay1 05.03.2023{, 13:46}, всего редактировалось 1 раз.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#18

Сообщение Dryundel » 05.03.2023{, 13:43}

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

Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 100
Откуда: москва

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

#19

Сообщение Nikan » 05.03.2023{, 13:57}

.
Последний раз редактировалось Nikan 24.03.2023{, 02:46}, всего редактировалось 1 раз.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#20

Сообщение Dryundel » 05.03.2023{, 14:03}

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

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

Ответить

Вернуться в «Проекты различных устройств на Arduino»