ВОПРОС Токарный станок

Не, пробовал на своем ускорения отключать, у меня реализовано количеством шагов на ступеньку скорости, даже при 200RPM шпинделя и шаге 1мм заметны перебеги в 1 ÷2 шага, поставил разгон по 15 шагов в 6 ступеней, что в таком режиме, где то 1/2 оборота. При торможении за 90 импульсов до останова, пропусков и выбегов не стало.
Какие ступеньки скорости используешь? И какой алгоритм ускорений: равные ступенки по скоростям или по расстояниям?

Я поигрался с этими двумя алгоритмами. Равные ступеники по расстояниям забраковал. А с равными скоростями поэкспериментировал с интервалами скоростей. Остановился на ступеньке 10мм/мин, переход с ускорения на резьбу получается плавный. Но пришлось учитывать разницу в позициях для каналов A и Z энкодера. Также выяснилось, что мой ШД справляется с шагом резьбы 4мм при скорости шпинделя до 200RPM.
 
  • Последнее редактирование:
Последнее редактирование:
Какие ступеньки скорости используешь? И какой алгоритм ускорений: равные ступенки по скоростям или по расстояниям?
А хрен его знает, не мной придумано:
/////////// УСКОРЕНИЯ ////////////
#define Accel 24 // Коэф.деления с которого будем ускоряться
должен быть больше максимального к-та на резьбах
byte tmp_Accel=Accel;
byte tmp_Ks_Divisor=Accel;
#define Repeat 8
// Кол-во повторов для постоянной скорости в пределах полного шага,выставить кратно дроблению шага

Далее в функциях:
Ks_Count = 0;
tmp_Repeat ++;
if (tmp_Repeat == Repeat)
{
tmp_Repeat = 0;
tmp_Ks_Divisor ++;

}

Тут все зависит от Ks и Кm, коэффициента деления LPR энкодера на шаг резьбы/подачи. Независимо от RPM шпинделя.
Ks = Enc_Line/(Step_Per_Revolution/Feed_Screw*Thread_mm)
Km = %Ks
Как то так...
 
  • Спасибо
Реакции: 2aas
Дилемма появилась.

Если синхронизовать шпиндель перед ускорением, то гарантирован плавный переход после ускорения на резьбу. Но из-за неравномерности оборотов шпинделя нет гарантии повторяемости начала резьбы. Разница небольшая, но перфекционизм не дремлет.

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

Вообщем, придется искать компромисс.
 
  • Последнее редактирование:
Последнее редактирование:
Если синхронизовать шпиндель перед ускорением,
С чем его синхронизировать и каким образом? Если с винтом, то фигня получается, ведь не винт шпиндель крутит, а шпиндель винт, через "редуктор". Если исходить от метода нарезания с реверсом шпинделя, то ускорения и нафиг не нужны. Проблема возникает при "размыкании маточной гайки", то есть без остановки шпинделя. И, если момент начала движения ещё можно изловить индексом Z энкодера ( "зацепление гайки") или моментом обнуления счетчика линий энкодера, то с резким стартом и остановкой винта, беда, шаговик "буксует", пропускает шаги. Это можно решить только стабильными ускорениями и небольшим запасом на вход и выход резьбы. На практике, от полоборота до оборота достаточно, но стабильно, причём от скорости независимо, равными ступенями, получается по времени.
В коде, который применен в моем станочке, использован коэффициент приращения коэффициента пересчета энкодера, как на ускорение так и на торможение, но с этим пока сильно не разбирался, ввиду несколько сумбурного написания кода. Причесать пытаюсь, но не совсем и не всегда удачно.
 
С чем его синхронизировать и каким образом?
С углом поворота шпинделя. Что необходимо делать для того, чтобы все проходы начинались при одном и том же угле шпинделя.

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

Но при ускорении теряется синхронизация с углом шпинделя. И восстановить ее можно двумя способами: либо до начала ускорения, либо после ускорения. В случае абсолютного энкодера синхронизация восстанавливается по тику канала Z, в случае обычного - по разнице тиков канала А.

Если синхронизовать после ускорения - резьба для всех проходов будет начинаться при одном и том же угле поворота шпинделя. Но после ускорения надо подождать, пока шпиндель повернется на нужный угол. А пока он будет поворачиваться - пройдет какое-то время. И чем больше время - тем дольше будет стоять продольная подача. А значит тем резче будет ее переход к скорости нарезания резьбы. Это время можно уменьшить, провернув шпиндель на нужный угол перед началом ускорения. Но этот расчет будет точным только в случае, если скорость шпинделя стабильна. Но в реалиях это не так, поэтому всегда есть изменение скорости продольной подачи при переходе ускорение-резьба.

Если же синхронизовать до ускорения - переход на скорость нарезки резьбы плавный. Но из-за нестабильность вращения шпинделя повторяемость начала резьбы под вопросом.
 
  • Последнее редактирование:
Последнее редактирование:
Что необходимо делать для того, чтобы все проходы начинались при одном и том же угле шпинделя
Плавающий (рассчитываемый) коэффициент ускорения.
Только возникает вопрос: хватит ли у микропроцессора точности (кол-во знаков после запятой) для обеспечения приемлемой погрешности позиционирования резца.

Суть операций с плавающей запятой в микропроцессорах (Статья для тех кто не знал, но хочет узнать)
 
  • Последнее редактирование:
Последнее редактирование:
Суть операций с плавающей запятой в микропроцессорах (Статья для тех кто не знал, но хочет узнать)
Для данного применения, эта информация несколько избыточна, что ли...Усреднение Брезенхема вполне уравняет шансы попадания.
В случае абсолютного энкодера синхронизация восстанавливается по тику канала Z, в случае обычного - по разнице тиков канала А.
Ну, скажем, абсолютным твой энкодер называть можно с большой натяжкой, скорее индесируемым. При достаточно стабильных разгонах/торможениях все должно достаточно точно совпадать. Разумеется разгон/торможение должен быть вне рабочей зоны. И, да, поскольку скорости невысокие, ускорения могут быть апроксимированы за 6 ÷8 ступеней по 15 ÷ 25 полных шагов, т.е. от 90 до 200 полных шагов или от (90ш/200ш/об)×360°=162° до (200ш/200ш/об)×360°=360°. Но это в "моей" системе, как у тебя не совсем догоняю.
 
Да уж поди не школяры.
Но не все же пользователи с компьютерами, микропроцессорами и алгоритмами на "ты"
Думаю, есть и те, кто к ЧПУ пришли из обычной (не автоматизированной) металлообработки.
Чем ссылка то помешала?
...
Да и ссыль на
Усреднение Брезенхема
не помешала бы. Особенно, если там простым, понятным и для неспециалиста языком рассказывалось (и показывалось).
 
  • Последнее редактирование:
Последнее редактирование:
  • Последнее редактирование:
Последнее редактирование:
Для данного применения, эта информация несколько избыточна, что ли...Усреднение Брезенхема вполне уравняет шансы попадания.

Ну, скажем, абсолютным твой энкодер называть можно с большой натяжкой, скорее индесируемым. При достаточно стабильных разгонах/торможениях все должно достаточно точно совпадать. Разумеется разгон/торможение должен быть вне рабочей зоны. И, да, поскольку скорости невысокие, ускорения могут быть апроксимированы за 6 ÷8 ступеней по 15 ÷ 25 полных шагов, т.е. от 90 до 200 полных шагов или от (90ш/200ш/об)×360°=162° до (200ш/200ш/об)×360°=360°. Но это в "моей" системе, как у тебя не совсем догоняю.
Брезенхем - это из другой оперы.

А рассказал я все это так подробно для того, чтобы самому лучше понять, что нужно делать. И сразу понял, что надо исправить.

Вообщем, предрасчет ускорений - это для шпинделя со стабильными оборотами. А с моим станочком происходит в этом случае следующее. Синхронизация перед ускорением приводит к сдвигу витков резьбы до 0.05мм. Синхронизация после ускорения витки не сдвигает, но при большом шаге резьбы или при большой скорости нарезки может привести к потере шагов продольного ШД. Чего, в принципе, можно избежать установкой более мощного ШД, но лучше не.

Поэтому переделаю алгоритм ускорения на синхронизацию в реальном времени с энкодером. По тому же принципу, что я делаю для нарезки резьбы: импульсы ШД будут генерироваться между тиками канала А энкодера. Только с учетом того, что их частота должна нарастать со временем. Что позволит скомпенсировать неравномерность вращения шпинделя. Сначала так и собирался сделать, но потом решил поэкспериментировать с предрасчетом.
 
Брезенхем - это из другой оперы
Это не совсем так, вот сделай развертку резьбы, ага, наклонные линии, и на разных шагах, разный наклон. При дискретном движении резца линии не всегда будут попадать в вершины, вот тут алгоритм Брезенхема и нужен. А стабильность вращения шпинделя не столь важна если и винт вращается кратно шпинделю. В моем станке идет пересчет по формуле
Ks=Enc_Line/(Step_Per_Revolution/Feed_Screw*Feed_mm)
Ks это число импульсов энкодера для следующего микрошага. Чем больше число тем мельче резьба или синхронная подача. А вот для асинхронной подачи шагаем через таймер.
 
Это не совсем так, вот сделай развертку резьбы, ага, наклонные линии, и на разных шагах, разный наклон. При дискретном движении резца линии не всегда будут попадать в вершины, вот тут алгоритм Брезенхема и нужен. А стабильность вращения шпинделя не столь важна если и винт вращается кратно шпинделю.
Для моего станочка эта ошибка составляет ~0.6 мкм. Стоит ли овчинка выделки?
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

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

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать