spov2 писал(а):Ув. Арсений, нужна катушка с пременным шагом намотки. Например 20 витков -виток к витку, следующие 10-с шагом 10мм. Можно ли добавить этот пункт в меню и просто вводить значение энкодером в формате 00,0 мм? (00,0 это тип "виток к витку). Пункт меню Spasing для этого не подходит. Там максимум 1 мм.
Добавлять отдельный пункт для намотки с переменным шагом я точно не буду, слишком уж это специфическая функция. Подобную намотку можно выполнить за несколько этапов, каждый раз выставляя шаг и число витков. Что касается максимального шага, то я исправлю программу таким образом, чтобы шаг устанавливался в формате 00,00 мм, и максимальное значение могло превышать 2,55 мм, но это только через пару дней.
Однако, тут есть некоторые особенности, и просто так на Вашем железе с шагом винта 4 мм (если я правильно помню) шаг 10 мм не получить. Особенность алгоритма Брезенхема, который используется для генерации импульсов для шаговых двигателей, состоит в том, что частота импульсов для двигателя перемещения укладчика не может быть больше, чем для двигателя намотки. В самом простом случае, когда в системе нет никаких редукторов, а установки микрошага на обоих драйверах одинаковые, шаг намотки не может быть больше шага винта. Поэтому Вы можете получить шаг до 4 мм. Можно уменьшить дробление шага для двигателя укладчика до, например, 1/8. В этом случае максимальный шаг будет 8 мм. Для 1/4 - 16 мм, и так далее.
В общем случае максимальный шаг рассчитывается по формуле
WINDING_TURN_SPACING_MAX = (TURN_MOTOR_STEPS_PER_REVOLUTION * TURN_MOTOR_MICROSTEPS * GUIDE_SCREW_PITCH) / (GUIDE_MOTOR_STEPS_PER_REVOLUTION * GUIDE_MOTOR_MICROSTEPS).
spov2 писал(а):Оно и для намотки катушек типа "универсаль" и " медовые соты" так же нужно.
Такие катушки с моей прошивкой мотать, к сожалению, не получится. В них нецелое число витков в слое, меньшее единицы, а в этой конструкции меньше 1 витка в слое установить невозможно. Всё-таки, этот станок изначально задумывался для намотки обыкновенных катушек - обмоток электромагнитов, трансформаторов и прочего.
spov2 писал(а):P.S. И ещё косяк^ напрвление Direction в меню выставлено Right, но моторчик укладчика крутит против часовой, а это поход укладчика влево. Я конечно могу и переключить, но это не есть правильно. И провода местами у мотора менять тоже неправаильно.
Подскажите в каком файле это поменять, то бишь слово ПРАВО поменять местами со словом ЛЕВО. спасибо
Правильно будет не менять строки "Left" и "Right", а инвертировать сигнал, приходящий на вход DIR драйвера двигателя перемещения укладчика. Это можно сделать в файле winding.h в строках 31-33:
Код: Выделить всё
#define GUIDE_MOTOR_LEFT() SET_PORT(GUIDE_DIR)
#define GUIDE_MOTOR_RIGHT() CLR_PORT(GUIDE_DIR)
#define GUIDE_MOTOR_POSITIVE() (!TST_PORT(GUIDE_DIR))
Чтобы инвертировать сигнал DIR, нужно заменить эти строки на такие:
Код: Выделить всё
#define GUIDE_MOTOR_LEFT() CLR_PORT(GUIDE_DIR)
#define GUIDE_MOTOR_RIGHT() SET_PORT(GUIDE_DIR)
#define GUIDE_MOTOR_POSITIVE() (TST_PORT(GUIDE_DIR))
(то есть поменять местами CLR и SET в первых двух и убрать логическое отрицание (восклицательный знак) в третьей).
Аналогичным образом можно сменить направление вращения катушки в строках 34-36:
Код: Выделить всё
#define TURN_MOTOR_FORWARD() SET_PORT(TURN_DIR)
#define TURN_MOTOR_REVERSE() CLR_PORT(TURN_DIR)
#define TURN_MOTOR_POSITIVE() (TST_PORT(TURN_DIR))
Нужно опять поменять местами CLR и SET в первых двух строках и теперь уже добавить отрицание в третьей:
Код: Выделить всё
#define TURN_MOTOR_FORWARD() CLR_PORT(TURN_DIR)
#define TURN_MOTOR_REVERSE() SET_PORT(TURN_DIR)
#define TURN_MOTOR_POSITIVE() (!TST_PORT(TURN_DIR))