Два ШД. Движение по окружности.

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Tarsius, 13 май 2017.

  1. Tarsius

    Tarsius Нуб

    Здравствуйте! Как управлять движением двух шаговых двигателей, чтобы они двигали по окружности точку на плоскости. Какой алгоритм прописывать в контроллере?
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    Механически как точка соединена с ШД?
     
  3. Tarsius

    Tarsius Нуб

    С помощью ШВП.
     
  4. rkit

    rkit Гуру

    Вам школьную геометрию повторить? Точки на окружности вычисляются по формуле.
    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 - всё написано по памяти. Возможны косяки, но общая идея есть. Выверяйте все с бумажкой и калькулятором.
     
  5. mcureenab

    mcureenab Гуру

    Сделать поворотный стол и вращать.
     
  6. mcureenab

    mcureenab Гуру

    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 рад.
     
  7. rkit

    rkit Гуру

    Да.
    1/(R*k), где k можно подбирать. Чем больше k.тем больше шагов, тем точнее, но медленнее.
     
  8. win

    win Нуб

    а можно сам пример кода? со всеми командами