Электронная делительная головка
-
- Рядовой
- Сообщения: 21
- Зарегистрирован: 29 янв 2023, 19:29
- Откуда: Москва
- Имя: Николай
- Благодарил (а): 1 раз
Электронная делительная головка
Так густо с ответами это потому что вопрос не понятен?
Тема про электронную делилку мне интересна. Хотелось бы сделать, но просто деление окружности на произвольное количество секторов. На каком то сайте скачал скетч для ардуины, но там слишком много лишнего и хотелось бы узнать формулу минимизации накопления ошибки.
Тема про электронную делилку мне интересна. Хотелось бы сделать, но просто деление окружности на произвольное количество секторов. На каком то сайте скачал скетч для ардуины, но там слишком много лишнего и хотелось бы узнать формулу минимизации накопления ошибки.
-
- Рядовой
- Сообщения: 21
- Зарегистрирован: 29 янв 2023, 19:29
- Откуда: Москва
- Имя: Николай
- Благодарил (а): 1 раз
Электронная делительная головка
После 160 строки коменты отсутствуют, и разобраться в коде-проблема(лично для меня).
Прошу прокомментировать хотя бы принцип подсчета и минимизации накопления ошибки. Какая переменная для чего существует?
Прошу прокомментировать хотя бы принцип подсчета и минимизации накопления ошибки. Какая переменная для чего существует?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронная делительная головка
Кто автор этой прошивки? Интересует(очень) описание и схема.
Спасибо!
Спасибо!
-
- Рядовой
- Сообщения: 21
- Зарегистрирован: 29 янв 2023, 19:29
- Откуда: Москва
- Имя: Николай
- Благодарил (а): 1 раз
Электронная делительная головка
Кто автор уже не вспомню, скачивал с гитхаба. Вот все что есть у меня по данной теме
https://github.com/volmir/dividing-devi ... device.ino
https://github.com/volmir/dividing-devi ... device.ino
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Dryundel
- Полковник
- Сообщения: 2426
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 30 раз
Электронная делительная головка
[ref]putnik[/ref], [ref]niko191[/ref], Вы вообще про одно и то же говорите?
Оба такие не многословные.
[ref]putnik[/ref], Вам точно нужна делительная головка для автоматического нарезания шестеренок с помощью червячной фрезы?
Или Вы просто хотите задавать энкодером(кнопками) угол ?
Вообще, если есть сам механизм с шаговиком и драйвером, сделать просто деление окружности на произвольное количество секторов, совсем не сложная задача. Блоков для шаговика не мало. Подойдет даже штатный.
В чем сложности, господа?
Оба такие не многословные.

[ref]putnik[/ref], Вам точно нужна делительная головка для автоматического нарезания шестеренок с помощью червячной фрезы?
Или Вы просто хотите задавать энкодером(кнопками) угол ?
[ref]niko191[/ref], тот скетч, который Вы выложили, к озвученному желанию отношения не имеет.niko191 писал(а): 22 фев 2023, 01:52 Хотелось бы сделать, но просто деление окружности на произвольное количество секторов.
Вообще, если есть сам механизм с шаговиком и драйвером, сделать просто деление окружности на произвольное количество секторов, совсем не сложная задача. Блоков для шаговика не мало. Подойдет даже штатный.
В чем сложности, господа?
-
- Рядовой
- Сообщения: 21
- Зарегистрирован: 29 янв 2023, 19:29
- Откуда: Москва
- Имя: Николай
- Благодарил (а): 1 раз
Электронная делительная головка
Dryundel » При небольшой переделке скетча можно использовать и для поворотного стола и для деления окружности. В данном скетче много лишнего. Можно сделать как есть, а лучше выкинуть энкодер, в поворотном столе он лишний как и в делении окружности. Что бы глобально изменить программу- выкинуть все лишнее, нужно хороша разбираться в прерываниях и досконально понимать (разобраться ) в используемых формулах, поэтому я и просил прокомментировать строки после номера 160. Что касаемо меня то я закомментировал строки относящиеся к энкодеру. Пришли драйвера для шагового двигателя и завтра начну эксперименты. Минимальная задача- выкинуть лишние строки меню и энкодера, ну и осталось желание разобраться как устранена проблема накопления ошибки.
- Dryundel
- Полковник
- Сообщения: 2426
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 30 раз
Электронная делительная головка
Ключевые слова
Проще сделать заново на штатных блоках.
Мудрая мысль.
Не занимайтесь мазохизмом.
Она понятна и по моему даже предположительно описана автором.niko191 писал(а): 04 мар 2023, 18:52 ну и осталось желание разобраться как устранена проблема накопления ошибки
Накопление ошибки связано с ошибками обработки сигналов энкодера, в том числе из-за возможных помех.
Однако судя по рассуждениям. Осмелюсь предположить, что вы не до конца понимаете для каких целей был написан данный скетч автором.
Суть задачи заключается в том, чтобы синхронизировать два вращающихся объекта и сделать это в зависимости от параметров червячной фрезы. А не просто разделить окружность на градусы.
[spoiler=Для понимания]
https://www.youtube.com/watch?v=8mAWuqqGyq4
https://www.youtube.com/watch?v=4z2rVMo5nhA
[/spoiler]
Ваша же задача, на сколько я понял, всего навсего сводится к тому, что бы запустить шаговик на определенное количество шагов в одну или другую сторону, относительно базовой фиксации.
Электронная делительная головка
Самая сложная задача в Рабочем Проекте делительной головки, это жесткая механика планшайбы и патрона и надежный тормоз поворотного стола, очень желательно - автоматически-электрический (одно забывание за полтора часа работы, и - заготовка шестерни в Ж...), управляемый контролером!Dryundel писал(а): 04 мар 2023, 19:48 Ваша же задача, на сколько я понял, всего навсего сводится к тому, что бы запустить шаговик на определенное количество шагов в одну или другую сторону, относительно базовой фиксации.
А уж разложить оборот шпинделя на число зубов с заданной точностью и без требований к скорости и быстродействию ШД, это не задача и для Ардуинки и инженера!
-
- Рядовой
- Сообщения: 21
- Зарегистрирован: 29 янв 2023, 19:29
- Откуда: Москва
- Имя: Николай
- Благодарил (а): 1 раз
Электронная делительная головка
Обеспечить жесткость делительной головки это проблема, но не такая большая. Коль уж сделал самодельную фрезерную приставку для токарного станка и сверлильный станок самодельный с хорошей жесткостью ,то и делительное устройство я думаю смогу сделать.
Для меня большую проблему представляет устранение накопления ошибки при делении окружности.
Предположим нужна шестерня на 53 зуба.
Шаговый двигатель 400 шагов на оборот. Режим полшага- 800 шагов.
800:53= 15.09433962264151 шага на один зуб. 15 шагов сделать не проблема, а что делать с цифрами после запятой, они будут накапливаться на каждом зубе, а если делать два прохода (два оборота заготовки) то последний зуб будет испорчен.
Я думаю ошибку надо прибавлять к вычислению следующего шага
Может я не прав со своей математикой, в школе была твердая тройка с минусом
Вот я и прошу, подскажите как правильно учитывать накопление ошибки.
Можно поставить редуктор к мотору, но это не решает проблему .
Отправлено спустя 8 минут 21 секунду:
Меню имеется, настройки имеются. а больше ничего и не нужно. Механика нужна но это другой вопрос.
Для меня большую проблему представляет устранение накопления ошибки при делении окружности.
Предположим нужна шестерня на 53 зуба.
Шаговый двигатель 400 шагов на оборот. Режим полшага- 800 шагов.
800:53= 15.09433962264151 шага на один зуб. 15 шагов сделать не проблема, а что делать с цифрами после запятой, они будут накапливаться на каждом зубе, а если делать два прохода (два оборота заготовки) то последний зуб будет испорчен.
Я думаю ошибку надо прибавлять к вычислению следующего шага
Может я не прав со своей математикой, в школе была твердая тройка с минусом

Можно поставить редуктор к мотору, но это не решает проблему .
Отправлено спустя 8 минут 21 секунду:
Задумка автора скетча мне понятна, Этот скетч может работать и как делительное устройство, чего мне и нужно.Dryundel писал(а): 04 мар 2023, 19:48 Осмелюсь предположить, что вы не до конца понимаете для каких целей был написан данный скетч автором.
Меню имеется, настройки имеются. а больше ничего и не нужно. Механика нужна но это другой вопрос.
- ViktorPetrov
- Капитан
- Сообщения: 807
- Зарегистрирован: 09 апр 2018, 23:56
- Имя: Виктор
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Электронная делительная головка
Автор шкивы меняет ,чтобы не набегала погрешность.
Примечание:Возможно частичное (без подсоединения энкодера) использование делительной головы. Нарезание шестеренок в этом случае возможно путем простого деления окружности на части. В случае, когда число требуемых шагов ШД (необходимых для одного полного оборота заготовки) без остатка делится на число частей, на которые делится окружность - то деление будет точным. В случае деления с остатком эта погрешность тем меньше, чем больше передаточное соотношение между ШД и УДГ; чем более мелкий микрошаг выставлен на драйвере.
Примечание:Возможно частичное (без подсоединения энкодера) использование делительной головы. Нарезание шестеренок в этом случае возможно путем простого деления окружности на части. В случае, когда число требуемых шагов ШД (необходимых для одного полного оборота заготовки) без остатка делится на число частей, на которые делится окружность - то деление будет точным. В случае деления с остатком эта погрешность тем меньше, чем больше передаточное соотношение между ШД и УДГ; чем более мелкий микрошаг выставлен на драйвере.
Электронная делительная головка
Дополню решение Уважаемого ViktorPetrov:
[spoiler]Берется окружность в 360 градусов, делиться на число зубов, угол поворота ШД, на коф. редукции привода (если это червячный редуктор, то число сразу дробное - <Float>). Далее определяется число импульсов ШД, необходимое для поворота патрона или планшайбы в каждое из фиксируемых положений. Потребное число импульсов ШД на поворот планшайбы равномерно распределяются в соответствии с ранее рассчитанным коэффициентом в пределах полного (360 град.) угла поворота планшайбы (к примеру: 1-0-0-1-0-0-1 и тд ("1" - шаг ШД, "0" - пропуск шага в последовательности управляющих импульсов ШД)). Рассчитываем последовательность подачи импульсов ШД для вращения планшайбы от начальной позиции до Каждой из промежуточных промежуточных точек заданного останова и для конечной точки (0 град. = 360 град.). После этого считаем угловую ПОГРЕШНОСТЬ приведения планшайбы в каждое из фиксированных положений; если погрешность превышает допустимую (по вашему желанию или по допуску из соотв. ГОСТ) - увеличиваем множитель ШД или редукцию в приводе (уменьшаем угол поворота планшайбы на один импульс ШД) и повторяем вычисления До достижения требуемой точности.
[/spoiler]
При всей страшности задачи решается все весьма просто:
[spoiler]пишется "на коленке" простейшая программка для производства циклических вычислений (мне в экселе приятнее!), она же равномерно раскладывает импульсы ШД в пределах фиксированных (заданных Вами) углов поворота и считает и погрешность (самое главное !!!).
Полученная последовательность импульсов ШД для поворота планшайбы на заданные углы вносится в простой массив двоичных данных (или командоаппарат, если достаточно ресурсов МК) и, после прокрутки массива (или командоаппарата) на рассчитанное прожкой число шагов и фиксирование ротора ШД и стола от самопроизвольного перемещения - Ваша деталь оказывается повернутой на заданный угол с точностью намного выше, чем имеющиеся у Вас средства измерений!
"Один массив двоичных данных - один тип шестеренки" (например - Масив "78 зубов"). Храните каждый из ранее рассчитанных и упакованных в массивы комплектов данных в ЕЕПРОМ МК (оператива не бесконечна в МК) отдельно и вызываете в для выполнения по требованию![/spoiler]
Программку я вам помогу на коленке в экселе сваять, если сами не справитесь!
И, никакие погрешности не будут накапливаться!
Я понял Вас; проблема решается математическим методом и, кажется,имеет название "разложение ряда Фурье для заданного диапазона значений...", попробую донести до Вас алгоритм ее решения:niko191 писал(а): 05 мар 2023, 03:07 15 шагов сделать не проблема, а что делать с цифрами после запятой, они будут накапливаться на каждом зубе
[spoiler]Берется окружность в 360 градусов, делиться на число зубов, угол поворота ШД, на коф. редукции привода (если это червячный редуктор, то число сразу дробное - <Float>). Далее определяется число импульсов ШД, необходимое для поворота патрона или планшайбы в каждое из фиксируемых положений. Потребное число импульсов ШД на поворот планшайбы равномерно распределяются в соответствии с ранее рассчитанным коэффициентом в пределах полного (360 град.) угла поворота планшайбы (к примеру: 1-0-0-1-0-0-1 и тд ("1" - шаг ШД, "0" - пропуск шага в последовательности управляющих импульсов ШД)). Рассчитываем последовательность подачи импульсов ШД для вращения планшайбы от начальной позиции до Каждой из промежуточных промежуточных точек заданного останова и для конечной точки (0 град. = 360 град.). После этого считаем угловую ПОГРЕШНОСТЬ приведения планшайбы в каждое из фиксированных положений; если погрешность превышает допустимую (по вашему желанию или по допуску из соотв. ГОСТ) - увеличиваем множитель ШД или редукцию в приводе (уменьшаем угол поворота планшайбы на один импульс ШД) и повторяем вычисления До достижения требуемой точности.
[/spoiler]
При всей страшности задачи решается все весьма просто:
[spoiler]пишется "на коленке" простейшая программка для производства циклических вычислений (мне в экселе приятнее!), она же равномерно раскладывает импульсы ШД в пределах фиксированных (заданных Вами) углов поворота и считает и погрешность (самое главное !!!).
Полученная последовательность импульсов ШД для поворота планшайбы на заданные углы вносится в простой массив двоичных данных (или командоаппарат, если достаточно ресурсов МК) и, после прокрутки массива (или командоаппарата) на рассчитанное прожкой число шагов и фиксирование ротора ШД и стола от самопроизвольного перемещения - Ваша деталь оказывается повернутой на заданный угол с точностью намного выше, чем имеющиеся у Вас средства измерений!
"Один массив двоичных данных - один тип шестеренки" (например - Масив "78 зубов"). Храните каждый из ранее рассчитанных и упакованных в массивы комплектов данных в ЕЕПРОМ МК (оператива не бесконечна в МК) отдельно и вызываете в для выполнения по требованию![/spoiler]
Программку я вам помогу на коленке в экселе сваять, если сами не справитесь!
И, никакие погрешности не будут накапливаться!
- Dryundel
- Полковник
- Сообщения: 2426
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 30 раз
Электронная делительная головка
Какой двигатель? Какой драйвер? Какая передача(редуктор)?niko191 писал(а): 05 мар 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 секунд:
---------------------------------------------------
И к стати. Почитайте то, что написал [ref]Abay1[/ref], повнимательнее. Он хоть и сложно (через Фурье

Если в двух словах и на пальцах, то выглядит это так.
Нельзя.
360 градусов разделить на количество шагов и потом этот "кривой" дробный угол использовать для расчета перемещения простым умножением. Это ересь. Здесь и кроется Ваша "накопительная погрешность".
Можно.
Сначала взять соотношение угла положения к полному обороту (360 / угол) а потом умножить это на количество шагов (микрошагов) в обороте. Только так!
Электронная делительная головка
.
Последний раз редактировалось Nikan 24 мар 2023, 02:46, всего редактировалось 1 раз.
- Dryundel
- Полковник
- Сообщения: 2426
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 30 раз
Электронная делительная головка
Ээээ... [ref]Nikan[/ref], Не усложняй.
Минутами и секундами пользуется только Паганель. Даже GPS в десятичном формате.

Электронная делительная головка
.
Последний раз редактировалось Nikan 24 мар 2023, 02:46, всего редактировалось 1 раз.
Электронная делительная головка
[ref]Nikan[/ref], ТС поднял вопрос о Принципе деления 360 градусов на не кратный 360 угол (напр., шестерня на 52 зуба попросит: 360град./52 = 6,923076923077 градуса, не считал сколько это в градусах-минутах-секундах (крепости
напитка
)
ЗЫ. Да и погрешность (отклонение от заданного угла) приятнее в безразмерных процентах считать! Наверное...


ЗЫ. Да и погрешность (отклонение от заданного угла) приятнее в безразмерных процентах считать! Наверное...
Последний раз редактировалось Abay1 05 мар 2023, 13:46, всего редактировалось 1 раз.
- Dryundel
- Полковник
- Сообщения: 2426
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 30 раз
Электронная делительная головка
Люди давно подумали за нас и снабдили драйвера не бинарными делителями, которые не дают бесконечной дроби.
Электронная делительная головка
.
Последний раз редактировалось Nikan 24 мар 2023, 02:46, всего редактировалось 1 раз.
- Dryundel
- Полковник
- Сообщения: 2426
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 30 раз
Электронная делительная головка
Таааак. Отлично! [ref]Nikan[/ref], а подскажите пожалуйста тип переменной для такого расчёта в С++?

Отправлено спустя 7 минут 56 секунд:
Ну можно конечно создать и свой тип. И библиотеку под него написать....
Но как то это уж сильно заморочно.
Однако вот с этим...
Я не могу не согласится!
Жаль что не все это знают.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость