top000 писал(а):А разве по-другому бывает?
Ok,
- включили драйвер.
- приняли текущее положение энкодера за нолевое.
- Подали на обмотку A ток удержания, а на обмотку B - нолевой ток.
- Энкодер переместился на 55 позиций вперед.
О чем это говорит?
Да ни о чем. Мотор мог быть нагружен перед включением, и 55 позиция может вовсе не соответствовать "нолевому" положению ротора.
Допустим у нас энкодер имеет 4000 позиций на один оборот.
Текущее значение тока в обмотках 100% и 0%
Как нужно изменить ток в обмотках, чтобы повернуть вал на 1,2 шага вперед (так чтобы энкодер повернулся на 24 позиции)?
Предположим мы посчитали, какое соотношение тока должно быть в обмотках, подали такие величины (на вскидку -30% / +95%), а вал почему-то повернулся не на 24 позиции, а только на 19 (из за нагрузки на валу так произошло, и из за неравномерности обмоток самого ШД). О чем это говорит? Что нужно в этом случае сделать?
А если ток в обмотках увеличили в 2 раза (-60% / +190%) - энкодер почему-то повернулся еще на 4 позиции. Почему? Что это значит? Соотношение то ведь не изменилось. Изменилась лишь сила удержания позиции.
А если мы по энкодеру заметили, что позиция вала изменяется, хотя ток в обмотках прежний - что в этом случае нужно делать - вращать мотор в обратном направлении? Но ведь это с большой долей вероятности приведет к срыву.
В общем - недостаточно просто повесить на мотор энкодер и что-то потом с этими показаниями сделать. Нужен более сложный подход.
И, кстати, Mach3 и LinuxCNC понятия не имеют, какой в данный момент ток в обмотках, и не могут его регулировать,
так что толку от того, что данные с энкодеров будут заведены в компьютер практически никакого не будет.
top000 писал(а):Наша задача как раз всегда знать положение ротора. Не так ли?
Что нам мешает всегда помнить, какое сейчас положение ротора?