Урок 35. Подключение STEP/DIR драйверов шаговых двигателей к Ардуино. Библиотека StepDirDriver.

модуль TB6560-V2
В уроке подключим STEP/DIR драйвер TB6560-V2 к плате Ардуино. Научимся управлять им с помощью библиотеки StepDirDriver.

Предыдущий урок     Список уроков     Следующий урок

TB6560-V2 недорогой драйвер шаговых двигателей поддерживающий все типичные режимы и функции STEP/DIR драйверов.

 

В уроке будем подключать его к плате Ардуино. Все схемы и программы урока подойдут к любому другому STEP/DIR драйверу.

Подключение драйвера к плате Ардуино.

 В статье о модуле TB6560-V2 есть две схемы подключения к микроконтроллеру. Будем использовать эту.

Схема подключения модуля TB6560-V2При высоком уровне сигнала (+5 В) через светодиод входного оптрона течет ток, и модуль воспринимает это как активный управляющий уровень. Резисторы 330 Ом ограничивают ток светодиодов. Т.е. драйвером можно управлять сигналами непосредственно с выводов микроконтроллеров.

С учетом этого схема подключения драйвера TB6560-V2 к плате Ардуино выглядит так.

Схема подключения к АрдуиноОбратите внимание на плавкий предохранитель. Я настоятельно рекомендую его поставить. В схемах с простыми драйверами при сгорании ключей через двигатель течет рабочий ток, ограниченный либо сопротивлением обмотки, либо дополнительным резистором. В драйверах со стабилизацией тока ток регулируется за счет ШИМ модуляции. Если в подобных устройствах сгорают выходные ключи, то на двигатель может попасть полное напряжение питания. Это приведет к недопустимому току и сгоранию шагового двигателя. Процесс это медленный, поэтому от выхода из строя привода спасет любой предохранитель – плавкий или самовосстанавливающийся.

Параметры драйвера задаются переключателями на плате модуля. Я задал ток фазы 1 А.

Положение переключателей

Переключателями S3 иS4 выбирается режим коммутации фаз.

Состояние переключателей Режим
S3 S4
OFF OFF шаговый
ON OFF полу шаговый
ON ON микро шаговый
1/8 шага
OFF ON микро шаговый
1/16 шага

Для начала я задал шаговый режим, потом проверил все остальные. Все режимы описаны в статье о модуле TB6560-V2. Там же показано, как задавать их переключателями модуля.

Собранная схема у меня выглядит так.

Система управленияОсталось научиться управлять такой системой.

 

Библиотека StepDirDriver.

Эту библиотеку я разработал для управления STEP/DIR драйверами. Она полностью совместима по функциям с библиотекой StepMotor (урок 29). Только 2 отличия:

  • Конструктор имеет другие аргументы. Просто для STEP/DIR драйвера требуются другие сигналы управления и другое количество сигналов.
  • В функции установки режима setMode() игнорируется параметр stepMode – режим коммутации. Режим задается переключателями на драйвере.

Загрузить библиотеку StepDirDriver можно по этой ссылке:

 Зарегистрируйтесь и оплатите. Всего 25 руб. в месяц за доступ ко всем ресурсам сайта! 

 

Описание класса StepDirDriver.

У класса следующие public методы.

class StepDirDriver {

  public:
    StepDirDriver(byte pinStep, byte pinDir, byte pinEn); // конструктор
    void  control();  // управление, функция должна вызываться регулярно с максимальной частотой коммутации фаз
    void  step(int steps);  // инициирует поворот ротора на заданное число шагов
    void  setMode(byte stepMode, boolean fixStop);  // задает режимы коммутации фаз и остановки
    void  setDivider(int divider);  // установка делителя частоты для коммутации фаз
    int readSteps();  // чтение оставшихся шагов   
} ;

Нетрудно догадаться, о назначении аргументов конструктора:

  • pinStep - вывод сигнала STEP;
  • pinDir - вывод сигнала DIR;
  • pinEn - вывод сигнала ENABLE.

StepDirDriver myMotor1(10, 11, 12);  // создаем объект StepDirDriver, задаем выводы для сигналов STEP, DIR, ENABLE

Описание методов библиотеки StepDirDriver.

void control()

Необходимо вызывать метод регулярно в параллельном процессе (прерывании по таймеру). В нем вырабатываются управляющие сигналы, определяющие коммутацию фаз. Частота вызова функции control() вместе с делителем, задаваемым функцией setDivider, определяет скорость вращения двигателя.

// обработчик прерывания 200 мкс
void  timerInt () {  
  myMotor1.control(); // управление двигателем
 }

void step(int steps)

Метод инициирует поворот двигателя на заданное число шагов. В микро шаговых режимах речь идет не о физических шагах двигателя, а о микро шагах. Параметр steps с положительным значением инициирует поворот против часовой стрелки, с отрицательным значением – по часовой стрелке.

Запустив вращение функцией step()

myMotor1.step(300);  // сделать 300 шагов против часовой стрелки

программа может выполнять другие задачи. Двигатель остановится сам. В любой момент двигатель можно остановить командой

myMotor1.step(0);  // остановить привод

Ничего не мешает задать новое число шагов, не дожидаясь остановки двигателя. Для непрерывного вращения можно периодически вызывать функцию step() с большим числом шагов.

myMotor1.step(30000);  // постоянное вращение

О том, что двигатель остановился можно узнать с помощью метода readSteps().

void setMode(byte stepMode, boolean fixStop)

Метод задает состояние двигателя при остановке.

  • Если fixStop = true, то при остановке на обмотки двигателя подается ток удержания, положение ротора зафиксировано.
  • При fixStop = false, напряжение с обмоток двигателя при остановке снимается.

Аргумент stepMode игнорируется. Он добавлен для совместимости с такой же функцией библиотеки StepMotor.

myMotor1.setMode(0, true);  // фиксация ротора при остановке
myMotor1.setMode(0, false);  // двигатель полностью отключен

void setDivider(int divider)

Функция задает коэффициент деления частоты вызова метода control(), а значит, определяет скорость вращения двигателя. Скорость вращения можно вычислить по следующей формуле:

Rpm = 60 000  /   ( divider  * Tcontrol * Nдвигателя  ) / Nмикрошагов

  • Rpm – скорость вращения в оборотах в минуту;
  • Tcontrol – период вызова метода control() в мс;
  • Nдвигателя – число шагов двигателя на полный оборот;
  • Nмикрошагов – число микро шагов двигателя на одну фазу.

Для шагового режима Nмикрошагов = 1, для полу шагового Nмикрошагов = 2 и т.д.

myMotor1.setDivider(5);     // делитель частоты 5

int readSteps()

Метод считывает количество шагов, оставшихся до остановки двигателя. Возврат 0 означает, что двигатель остановлен.

if (myMoto1r.readSteps() == 0)  {
  // двигатель остановлен
}

 

Примеры использования библиотеки StepDirDriver.

Использование новой библиотеки ничем не отличается от применения функций библиотеки StepMotor из предыдущих уроков.

Всего два отличия:

  • Подключение библиотеки #include <StepDirDriver.h>  вместо #include <StepMotor.h>.
  • Другой формат конструктора StepDirDriver myMotor(10, 11, 12); вместо StepMotor myMotor(10, 11, 12, 13).

В программе меняются всего 2 строки. 

Можете загрузить и проверить скетч программы

 Зарегистрируйтесь и оплатите. Всего 25 руб. в месяц за доступ ко всем ресурсам сайта! 

, которая заставляет сделать двигатель 2 оборота по часовой стрелке со скоростью 1 оборот в секунду, затем пауза 1 секунда, 2 оборота против часовой стрелки, опять пауза на секунду и так в цикле. Он похож на примеры из предыдущих уроков для библиотеки StepMotor. Не забудьте установить библиотеку StepDirDriver:

 Зарегистрируйтесь и оплатите. Всего 25 руб. в месяц за доступ ко всем ресурсам сайта! 

 

Проверка драйвера шагового двигателя с AT командами.

Я заменил две строчки программы драйвера с управлением от компьютера из Урока31 и получилось новое устройство для работы с шаговым двигателем. Загрузить новый драйвер с управлением по протоколу AT команд можно по этой ссылке:

 Зарегистрируйтесь и оплатите. Всего 25 руб. в месяц за доступ ко всем ресурсам сайта! 

Собрал систему по схеме в начале урока и проверил в самых разных режимах. Не буду описывать все подробно. Остановлюсь на микро шаговом режиме.

Задал микро шаговый режим с 16 микро шагами. У меня двигатель имеет 400 физических шагов. В микро шаговом режиме получился двигатель, имеющий целых 6400 шагов на оборот! Попробовал управлять программой верхнего уровня StepMotor (урок 31).


Окно программы StepMotorВсе работает. Точность установки просто невероятная.

Проверил и работу следящего электропривода из урока 32.


Окно программы следящего электроприводаРазрешающая способность положения ротора почти 0,05 °!

 

Другие варианты библиотеки StepDirDriver.

Библиотека StepDirDriver вырабатывает сигналы управления с высокими активными уровнями. Если STEP/DIR драйвер подключить к плате Ардуино непосредственно, без оптронов, то необходимы управляющие сигналы с низкими активными уровнями. Я сделал такой вариант библиотеки.

 Зарегистрируйтесь и оплатите. Всего 25 руб. в месяц за доступ ко всем ресурсам сайта! 

Есть еще один вариант библиотеки с типом данных long для свойства step.

 Зарегистрируйтесь и оплатите. Всего 25 руб. в месяц за доступ ко всем ресурсам сайта! 

Наверное, в последних двух уроках я убедительно показал преимущества STEP/DIR драйверов. Но какой драйвер применять в конкретном случае решать разработчику. Что важнее низкая цена простого драйвера из ключей или функциональность STEP/DIR драйвера.

Бывают очень серьезные разработки с простыми драйверами. Например, практически все шаговые двигатели в фасовочном оборудовании НПП ”РОСТ” работают в униполярном режиме с простыми драйверами-ключами. Из-за этого у двигателей уменьшился крутящий момент, снизилась максимальная скорость вращения, но зато значительно упала цена системы управления. Для устройств с 7-10 шаговыми двигателями это важно.

 

Надо выбирать оптимальный вариант. В каких-то случаях без STEP/DIR драйвера не обойтись, в других проектах вполне удачно будут работать простые драйверы.

Предыдущий урок     Список уроков     Следующий урок

2

Автор публикации

не в сети 3 дня

Эдуард

8
Комментарии: 1128Публикации: 124Регистрация: 13-12-2015

83 комментария на «Урок 35. Подключение STEP/DIR драйверов шаговых двигателей к Ардуино. Библиотека StepDirDriver.»

  1. Здравствуйте, спасибо за урок. Не могли бы вы подсказать, как с помощью вашей библиотеки реализовать движение двигателя на один шаг и остановку, подобно кнопке «+1 шаг» в вашей программе? никак не могу разобраться с таймингами. Заранее благодарю.

    0
    • Здравствуйте!
      Сделать функцией step() один шаг. myMotor.step(1); Программа верхнего уровня эту команду и вызывает.

      Только, имейте в виду, что если режим без фиксации двигателя, особенно в полу шаговом режиме, то после одного шага двигатель отключится и ротор может вернуться в предыдущее состояние под действием механической нагрузки. Т.е. физического шага он не сделает.

      И еще. Арсентий, если хотите подробно обсудить какой-нибудь вопрос — я открыл форум http://mypractic-forum.ru.

      0
  2. Здравствуйте
    А как решить задачу управления двумя или тремя шаговыми двигателями одновременно но с разными скоростями?

    0
  3. Не компилируется sketch_34_5.
    GetFileAttributesEx C:\DOCUME~1\Admin\LOCALS~1\Temp\arduino_build_726012: Не удается найти указанный файл.

    Ошибка компиляции для платы Arduino/Genuino Uno.

    0
    • Еще раз проверил. Все компилируется. Может быть библиотеки не подключили. Какую ошибку компилятор пишет?

      0
      • На работе проверил все компилится.
        Скорее всего чтото с компилятором или с компом.
        Спосибо за ответ.
        Уроки Класс.

        0
  4. Спасибо за урок.
    А как использовать данную библиотеку, если у драйвера общая не земля а +5 вольт?

    0
    • Здравствуйте!
      Библиотека рассчитана на управляющие импульсы высокого уровня. Но в принципе полярность не сложно изменить.

      0
  5. Доброго. Помогите чайнику, подключил драйвер к ардуино и ШД правильно как у вас (все минуси на драйвере в кучу и к GND ардуино, степ-10, дир-11, енабл-12), теперь не могу разобратса с кодом, если вам несложно пропишите мне простой код, лево/раво/пауза.
    Я раньше только с компа по лпт работал, а для совсем простих задач пробую через ардуино.
    Зарание благодарен.

    0
  6. Скопировал ваш скетч, пишет ошибку,

    Arduino: 1.6.7 (Windows 7), Плата:»Arduino/Genuino Uno»

    C:\Users\ADMIN\Documents\Arduino\sketch_jun12c\sketch_jun12c.ino:7:22: fatal error: TimerOne.h: No such file or directory

    #include

    ^

    compilation terminated.

    Несколько библиотек найдено для «StepDirDriver.h»
    Используется: C:\Users\ADMIN\Documents\Arduino\libraries\StepDirDriver
    Не используется: C:\Program Files (x86)\Arduino\libraries\StepDirDriver
    exit status 1
    Ошибка компиляции.

    Это сообщение будет содержать больше информации чем
    «Отображать вывод во время компиляции»
    включено в Файл > Настройки

    Помогите чайнику пожалуйста

    0
  7. с первой вроде разобрался, вот новая(
    Arduino: 1.6.7 (Windows 7), Плата:»Arduino/Genuino Uno»

    C:\Users\ADMIN\Documents\Arduino\sketch_jun12c\sketch_jun12c.ino:8:22: fatal error: TimerOne.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Ошибка компиляции.

    Это сообщение будет содержать больше информации чем
    «Отображать вывод во время компиляции»
    включено в Файл > Настройки

    0
  8. Получилось скомпилировать, даже на драйвере лампочка моргает видно есть сигнал, возможно проблема с моим драйвером YKA2608MC эму нужна фиксация при остановке, у него чуток другие команды на енабл, помогите разобратса пожалуйста

    0
    • Возможно нужна интерфейсная плата? я такой драйвер подключал через нее, можно обойтись без интерфейсной платы сразу с ардуино на драйвер?

      0
      • Здравствуйте!
        Какая интерфейсная плата? Если драйвер с интерфейсом STEP/DIR, то подключается непосредственно к плате Ардуино.

        0
        • Заработало! Спасибо, моя ошибка в том что я не подключил средние обмотки шаговика, нужно все 6 проводов подключать Оо, а нельзя както на 4 как всегда было? может возможно с ардуино в cw/ccw интерфейс драйвера подавать команды?

          0
  9. Здравствуйте!
    Если не составит труда, можете написать пример чтобы поставить шаговик в ноль и датчик края рабочей зоны?
    Заранее Благодарен.

    0
    • Здравствуйте!
      Конкретная реализация зависит от структуры программы. Принцип такой. Создаете объект Button (урок 9) для датчика-концевика. В цикле вызываете функцию step(1000). Указываете заведомо большое число шагов, я задал 1000. Анализируете концевик. Как только он становится активным (нажатым), останавливаете двигатель функцией step(0).
      Лучше откройте тему на форуме сайта http://mypractic-forum.ru/ и более конкретно опишите задачу. Как вы хотите реализовать ее в прерывании или цикле loop().

      0
  10. Подключил униполярный шагавикчерез ключи, работает. Но когда стоит, греется движок, жаль, нет функции удерживания. И как выше сказано про управление по step dir. Как бы нибыло  за программу пять.

    0
  11. подскажите пжта: использую двигатель 17HS2408 Nema17. в даташите двигателя сказано, что rated current=0,6 A. значит я должен выставить на TB6560-V2 0,5 или 0,8 А ?

    и можно ли подключить к TB6560-V2 два двигателя (одинаковых), как в этом случае выставлять ток ?

    0
    • Здравствуйте!
      Если режим работы длительный, тогда лучше 0,5 А.
      Два двигателя к одному драйверу со стабилизацией тока фазы подключать нельзя. Токи равномерно между обмотками не распределятся. Разница в сопротивлении, индуктивности, механической нагрузке…

      0
      • спасибо за оперативный ответ.
        т.е. в принципе можно подключить два драйвера к arduino на свободные ноги. в скетче просто продублировать блоки ?

        и вопрос с питанием. подключил блок питания на 24 V 1 А. двигатель 17HS2408 еле работает. возможно, надо взять 2А ? у вас какой блок питания на картинке ?

        0
        • Здравствуйте!
          Можно два драйвера подключить к одним и тем жен выводам платы.
          У меня блок питания 12 В, 6 А. Но с вашим все должно работать. Может быть вы слишком высокую скорость задали? От блока питания драйвер должен потреблять ток примерно 0,5 А * 0,5 А * 8 Ом / 24 В * 2 обмотки = 170 мА

          0
  12. при скорости делителя в программе Stepmotor выше 60-ти перестает вращаться, только стучит.
    не работает программе шаговый режим — все время крутит в одну и ту же сторону, как при положительном,так и отрицательном значении шагов(может проблема в коде ?). если нажимать на стрелки, то крутит в правильном направлении. кстати, с AT командами в шаговом режиме тоже крутит в одну и ту же сторону.
    в чем может быть проблема ? все же блок питания ?

    0
    • Здравствуйте!
      Проверьте с помощью простых программ из урока. Может вы неправильно подключили. Какой драйвер?

      0
      • драйвер все тот же — (я выше писал) TB6560-V2.
        если бы подключение было неверным AT команды не работали бы. а они работают на скорости 20.
        заказал блок питания 12В 5А для драйвера.

        0
        • Больше похоже на то, когда у меня обмотки были неправильно подключены. Драйвер как-то через силу заставлял движок вращаться, но со скрипом, скрежетом и в непредсказуему чаще одну сторону. Потом два провода местами поменял — всё заработало

          0
  13. Здравствуйте!
    Скажите пожалуйста, насколько сложно написать скетч для режима обучения при управлении, например, пятью шаговыми моторами?

    0
  14. А ВЫ не могли бы указать хоть примерное направление, как организовать такой режим, чтобы с панели управления запускать последовательно несколько (5 шт.) шаговых двигателей, задавая определенные углы поворота и последовательность их включения и это все автоматически запоминалось с возможностью корректировки углов поворота программно. Вообще, возможно ли это? Задача такая ставится для управления станком 3d гибки проволоки.

    0
    • Здравствуйте!
      Надо создать в программе 5 объектов — двигателей. Проверить каждый отдельно. Затем сделать программные таймеры, запускаемые в нужной последовательности. Добавить управление параметрами таймеров и двигателей. Нельзя сказать, что очень сложная, но достаточно объемная задача.

      0
  15. С интересом прочитал ваш блог.
    Все статьи написаны доходчиво и понятно.
    Спасибо Вам.
    По теме.
    Не думали как организовать перемещение на большое количество шагов. Допустим мне нужно 40000 — пока это будет непрерывное вращение.

    0
    • Здравствуйте!
      Спасибо за добрые слова.
      У меня есть библиотека StepDirDriverL — аналог библиотеки StepDirDriver с аргументом для шагов в формате long. В ближайшее время выложу ее на сайте.

      0
  16. Добрый день, Эдуард!
    Спасибо за Ваш труд, Все понятно и доходчиво. Ваш блог подтолкнул меня на изучение Ардуино. Ваша библиотека StepDirDriver мне очень понравилась, и я решил использовать ее для своего небольшого проекта.
    Необходимо плавно регулировать скорость вращения двигателя от 2RPM до 35RPM. (двигатель подключен в режиме микро шага 1/16) Но вот тут у меня и возникла проблема,
    если от 2RPM до 10, регулировка проходит относительно плавно, то дальше обороты регулируются скачками 12,15,18, 25,37. Как я понимаю, это из за того что функция void setDivider(int divider), может принимать только целые значения, а например для 16rpm ее значение должно быть 4,68, для 17 =4,41, для 18 =4,68…
    Может можно что-то изменить в Вашей библиотеке, чтобы divider можно было задавать десятичной дробью?
    Простите если что то не так написал, мой опыт работы с Ардуино всего пара недель.

    0
    • Здравствуйте! Спасибо за добрые слова.
      На счет дискретности частоты вращения. Прежде всего почитайте в уроке 29 есть абзац посвященный этой теме.
      Единственный путь — увеличение частоты вызова функции control(). Библиотека StepDirDriver работает параллельным процессом, позволяя одновременно выполнять и другие задачи. Чем будет выше частота вызова control(), тем меньше останется времени на остальные задачи. Например, у библиотеки Stepper время переключения фаз отсчитывается постоянным вызовом функции micros() и сравнением значений времени этой функции. На все остальное уже ресурсов микроконтроллера не хватает. И эта библиотека полностью подвешивает работу программы.

      0
  17. Добрый вечер, Эдуард. Спасибо, что ткнули меня в 29й урок. Слона то я и не заметил. А ведь в тексте есть ссылка на него! И у меня получилось 20мкс. И все заработало. Правда вылезли новые косяки в моем «проекте»,но к Вашей библиотеке они не имеют отношения, и мне кажется что я знаю куда копать.
    Ещё раз Спасибо!

    0
  18. Эдуард, спасибо за проделанную и опубликованную работу! Недавно начал изучать программирование ардуино, в том числе по вашим урокам. При попытке скачать резидентную программу открывается страница в браузере с кракозябрами вместо русского текста. windows xp, браузеры разные. так и должно быть?

    0
    • Здравствуйте!
      Нажмите в середину страницы с кракозябрами правой кнопкой мыши и выберите Сохранить как. Сохранится исходный файл, который будет нормально отображаться в редакторе и в Arduino iDE.

      0
      • Спасибо, все получилось! Еще вопрос: если шаговый по Х намечается для перемещения винтом каретки весом несколько кг (фрезер с шаговым по Z) не будет ли недостатком отсутствие ускорения и замедления в библиотеке?

        0
        • Здравствуйте!
          Надо проверять на практике. Можете попробовать сделать несколько шагов на низкой скорости, потом скорость повысить.

          0
  19. Здравствуйте, Эдуард.
    А сможет ли Ардуино управлять серводвигателем 90ST M02430 ?
    Купил на Али в комплекте с серводрайвером, а у него 10000 импульсов на оборот, и надо до 3000 об/мин крутить. Это значит контроллер нужен чтобы 500 кгц выдавал?

    0
  20. Добрый день .

    Помогите дополнить ваш скетч внедрением кода для запуска шаговика по сигналу от магнитного керкона (модуль magswitch для адуино ).

    Логика такова ,при геркон замкнут ,то пуск шаговика на определенное к-во шагов ,дальше стоп и так в цикле

    0
    • Здравствуйте!
      Может вы сможете модернизировать программу из это темы http://mypractic-forum.ru/viewtopic.php?t=62.
      Если не получается, то откройте новую тему на форуме сайта, я помогу.

      0
      • Добрый вечер . Спасибо за ответ .Результаты есть ) Есть еще вопросы , их озвучу в теме на форуме

        0
  21. Марк
    Здравствуйте Эдуард!
    Большое спасибо за Ваши уроки, изложено просто отлично!
    Вопрос1:
    Подключил ШД через драйвер TB6560-V2, используя Вашу библиотеку StepDirDriver, всё заработало. Смотрел сигналы обмена осцилографом, уровень сигнала EN при вращении ШД =0. Попробовал отключить вход EN от 12pin, на работу это не повлияло. Это случайность?
    Вопрос 2.
    Каким образом Ардуино сообщает драйверу TB6560-V2 о необходимости держать или нет двигатель под током при остановке ШД командой «myMotor1.setMode(0, true);», с помощью каких сигналов обмена? То, что функция работает, я убедился.

    0
    • Здравствуйте!
      Почитайте статью на сайте о драйвере TB6560-V2 в разделе электронные компоненты. Там есть объяснения на ваши вопросы.
      Сигнал Enable имеет активный низкий уровень, т.е. когда он не подключен, то драйвер работает.
      В драйвере TB6560-V2 снижает ток фаз при остановке автоматически. На плате установлен ждущий мультивибратор. Когда фазные импульсы перестают переключаться он снижает фазные токи.

      0
      • Здравствуйте Эдуард!
        Большое спасибо за оперативный ответ.
        А еще не подскажите, можно ли сохранить в оперативной памяти РС данные, которые выводятся на монитор порта из Ардуино?

        0
        • Здравствуйте!
          Конечно. На компьютере можно все. В уроках про датчики температуры (уроки 24-27) данные сохраняются в памяти и выводятся в виде диаграмм.

          0
  22. Эдуард, приветствую!
    Выложите, пожалуйста, библиотеку StepDirDriverL.
    Мне нужны большие числа в шагах.
    Спасибо!

    0
  23. Не пойму как с плмощью этой библиотеки заставить вращаться на заданные скажем энкодером обороты и после выполнения этой задачи остановится? Как не пробовал задавать условия, мотор доходит до 0 и вновь начинает вращаться!?!?!

    0
  24. Здравствуйте Эдуард! Благодарю Вас за ведение этого прекрасного блога и великолепное предоставление информации! Если возможно, замените, пожалуйста, в примере скетча комментарии, а то символы искажены (Ваша ссылка http://mypractic.ru/downloads/arduino/sketch_34_4.ino).

    0
    • Здравствуйте! Спасибо за отзыв.
      Нажмите на ссылку, откроется окно с искаженными комментариями.
      Нажмите правой кнопкой мыши и выберите «Сохранить как».
      Не знаю, как лучше файлы ino представлять. В zip формате или непосредственно. Некоторые браузеры показывают без искажений.

      0
  25. Эдуард, подскажите пожалуйста, как при использовании вашей библиотеки реализовать плавный разгон ШД при старте, чтобы скорость в течении пары секунд росла от 0 до заданной? У меня при старте мотора получается ощутимый рывок, иногда происходит обрыв провода (намоточный станок)

    0
    • Здравствуйте!
      На форуме сайта (http://mypractic-forum.ru/viewtopic.php?t=133) есть доработанная библиотека StepDirDriverLA с плавным разгоном. Но я ее не проверял.

      0
  26. Эдуард, добрый день! Залил Ваш скетч из данного урока. Вращение с прерыванием только в одну сторону. Не пойму почему. Подскажите, пожалуйста, в чем может быть проблема.

    0
    • Здравствуйте!
      Наверняка, аппаратная ошибка. Проверяйте соединения. Посмотрите уровень вывода PIN 11. Он должен меняться в зависимости от направления вращения.

      0
  27. Моя ошибка — не подключил Землю на Ардуино! Теперь все супер, спасибо!!!

    0
  28. Здравствуйте Эдуард. Возникли трудности с подключением второго ШД. Из ответа на похожий вопрос «Создать три объекта StepDirDriver и задать для них разные скорости» ничего не понял.
    StepDirDriver должны иметь вид StepDirDriver1, StepDirDriver2 и т.д.? Нужны ли ещё какие дополнения? Заранее благодарю за советы.

    0
    • Здравствуйте!
      Например, в этом проекте http://mypractic-forum.ru/viewtopic.php?t=131 используется 2 шаговых двигателя. Посмотрите. Непонятно — спрашивайте.

      0
  29. Здравствуйте Эдуард. Большое спасибо за то, что направили по нужному пути. Благодаря Вашим урокам многое становится понятным. Успехов Вам и новых разработок.

    0
  30. Добрый вечер уважаемый Эдуард. Решился опять просить у Вас совета. Возникла необходимость попробовать пример 34_4 на плате с Mega8, но компиляция не идёт, ругается на библиотеку TimerOne. Для Mega168 и 328 нормально. Помогите пожалуйста!

    0
    • Здравствуйте!
      Открываете скетч в новом окне, нажимаете правой кнопкой мыши, выбираете «Сохранить как», и сохраняете файл на диске.

      1
  31. Скетч 34_4 не работает.
    Ругается на строку
    // Timer1.attachInterrupt(timerInterrupt, 250); // задаем обработчик прерываний

    Библиотеку TimerOne поставил.

    У меня драйвер А4988. Двигатель НЕМА 17. Ардуино нано на 328р.

    0
  32. На timerInterrupt в скобках ругается. Пробовал другие библиотеки. Вашу MsTimer2. Тот же эффект. Главное, в других скетчах прерывания работают. В этом нет. Конфликт библиотек? Как с этим бороться?

    0
  33. Спасибо за помощь! Но возникла еще одна проблема с плавной регулировкой скорости шагового двигателя. Скорость меняется неравномерно, мотор вибрирует во время работы, а то и вовсе выходит из синхронизма. Период прерывания по таймеру не менял.

    0
  34. Нашел причину. Невнимательность. Увеличил количество шагов в функции myMotor.step(). Все заработало как надо. Однако, при прошивке и при открытии сериал-порта мотор начинает дергаться. Как этого избежать?

    0

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *