Ну так и я говорю - некуда спешить. Шагайте медленно - пропуска шагов не будет.
Но Вы видимо хотите побыстрее? Первый же пропуск шага остановит весь процесс. Опять будете стартовать с нуля. Где скорость?
То, чего Вы хотите избежать, уже реализовано в алгоритмах управления шаговыми двигателями путем задания максимальной скорости и ускорения. В зависимости от характеристик вашего станка Вы устанавливаете эти параметры и уже программа выдает импульсы именно тогда, когда это надо. Для достижения требуемой скорости программа с заданным ускорением увеличивает частоту импульсов. Если сразу подать высокую частоту, то двигатель не стартанет.
Но поскольку загруженная всяким хламом операционная система частенько задерживает вывод в LPT порт, импульсы на станок приходят не равномерно. Как следствие - непостоянство скорости вращения двигателя, а при серьезных задержках - пропуск шагов и даже остановка двигателя.
Получается, что поставив энкодер, Вы получите точность, но скорость не увеличите. А все потому, что Вы не устраняете причину возникновения пропуска шагов, а только хотите скорректировать последствия. При этом усложняете существующую систему.
Гораздо более разумный путь - исключить причину появления пропуска шагов. Платы типа MESA как раз и призваны исключить неравномерность выдачи импульсов из LPT порта. И без всяких энкодеров.
Еще раз предлагаю Вам представить, как Вы будете рисовать окружность, где при максимальной скорости по одной оси, движение по другой меняет направление. А тут БАЦ - и пропуск шага.
Сообщение отредактировал lkbyysq: 28 Июль 2014 - 04:58