======Про шаговые моторы====== =====Движение мотором с компенсацией люфта===== На картинке представлено, как управлять мотором с компенсацией люфта при наезде на концевик. {{spм:sm_movebacklash.png}} **A** - Мотор, "находясь внутри детали", обычно имеет некоторый люфт. Чтобы люфт не сказывался на точности перемещения, необходимо приезжать в заданную координату так, чтобы мотор толкал деталь с одной и той-же стороны. (справа или слева) //"Мотор внутри детали" - это условно. Понятно, что вал мотора крутит некие рычаги/приводы, которые собственно и перемещают деталь. Все эти механические части привода дают суммарный люфт, которые иногда требуется компенсировать для перемещения с точностью в микрометры.// **Б** - Перемещаясь вправо или лево мотор может наехать на концевик **В** - Наехав на концевик, мотор должен остановиться. Остановка может происходить не на самом концевике, особенно если движение происходит с плавным разгоном-торможением (по S-профилю / линейно / по экспоненте / по синусу). //Иногда требуется отъезжать от концевика на некоторое расстояние //LimRemove//, а не "стоять на концевике". Например, с датчиком Холла возможно намагничивание ответной части и концевик начнет срабатывать с более дальнего расстояния. Т.е. точность определения концевика снизится.// **Г** - Возвращаем мотор в обратную сторону, пока концевик не отключится. **Да** - Если компенсация люфта не требуется, то отходим от концевика на LimRemove. **Обработка концевика закончена.** **Дб** - Если перемещаемся с компенсацией люфта, то в зависимости от концевика и того, с которой стороны толкает деталь мотор - отматываемся на //LimRemove + BacklashSteps// - отматываемся на //LimRemove//. **Обработка концевика закончена.** **Е** - В случае **Дб1**, возвращаемся на //BacklashSteps//, чтобы выбрать люфт и вернуть контакт мотора и детали с нужной стороны. **Обработка концевика закончена.** В приведенном примере важно, чтобы: * Расстояние BacklashSteps было больше, чем реальный люфт в моторе. * Отмотка от концевика LimRemove была больше чем BacklashSteps. ====Перемещение в заданную координату с компенсацией люфта==== {{spм:sm_movebacklashto.png}} Т.е. при смене стороны контакта мотора с деталью, необходимо сделать на BacklashSteps шагов больше в заданном направлении, чтобы выбрать люфт и реально сдвинуть деталь на заданное расстояние. А затем сменить направление и выбрать люфт в обратную сторону. Перемещение BacklashSteps должно быть больше чем реальный люфт "мотора в детали".