Здравствуйте! Как управлять движением двух шаговых двигателей, чтобы они двигали по окружности точку на плоскости. Какой алгоритм прописывать в контроллере?
Вам школьную геометрию повторить? Точки на окружности вычисляются по формуле. X = cos(a) * R Y = sin(a) * R Где a - угол в радианах (вещестенное число в диапазоне {0..2пи)) Выбираете шаг a с нужной вам точностью, например R/0.5. Считаете X_0 и Y_0 для a_0 = 0, ставите в это положение двигатели. Потом считаете X_n и Y_n для a_n = a_(n-1) + R/0.5, сдвигаете двигатели на (X_n - (X_(n-1)), Y_n - (Y_(n-1))) Повторяете предыдущий шаг, пока a_n не достигнет 2пи. upd - всё написано по памяти. Возможны косяки, но общая идея есть. Выверяйте все с бумажкой и калькулятором.
a - любое вещестенное число. результат расчета будет повторяться с периодом 2pi. sin(a) = sin(a + n*2pi), где n любое целое число. с точностью что то не то. R/0.5 это 2R. Посчитаем, сколько нужно. dY/da = d sin(a) * R / da = cos(a) * R. максимум | cos(a) | = 1. максимум dY/da = R. отсюда da = dY/R. Пример: если по Y (или X) шаг dY (или dX) должен быть не более 0.1 мм, то при R = 100mm имеем максимальный шаг da = 0.1/ 100 = 0.001 рад.