Библиотека для управления бесколлекторными двигателями

Тема в разделе "Arduino & Shields", создана пользователем Андрей Я., 6 апр 2019.

  1. Андрей Я.

    Андрей Я. Нерд

    Выкладываю библиотеку для управления бесколлекторными двигателями - шаговыми однополюсными и двухполюсными и просто многообмоточными (до 4-х независимых обмоток) с использованием Amperka MotorShield (или аналогичных шилдов).
    Библиотека состоит из двух - низкоуровневой, являющейся развитием этой

    http://forum.amperka.ru/threads/Упр...использованием-motorshield.15341/#post-166750

    и относительно высокоуровневой библиотек.

    На данный момент библиотека позволяет:

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

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

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

    Буду рад замечаниям, предложениям и исправлениям.
     

    Вложения:

    Un_ka нравится это.
  2. Un_ka

    Un_ka Гик

    Я чего-то не понимаю , библиотека использует системные таймеры или нет?
     
  3. Андрей Я.

    Андрей Я. Нерд

    Используется только счётчик микросекунд (в "высокоуровневой" библиотеке).
    Код (C++):
    void TDynMot::AutoDoTask() {
        int  stState[4];
        int  *tmp1, *tmp2;
        unsigned long nowT;
        nowT=micros();
    //.......................................
    //.......................................
     
  4. Un_ka

    Un_ka Гик

    Получается , с таким кодом ардуино нельзя отвлекать большими побочными задачами , как с шаговым двигателем. Цикл у бкд идет сотни микросекунд , на приём данных с nrf , должно хватить . Но учитывай что при таком раскладе все остальные функции , возложенные на ардуино , подвинут команды управления двигателем . Но эта библиотека окажется хорошим вариантом , если использовать какую-нибудь атмегу8 с мосфетами как регуль.
    Добавь теме метки , чтоб желающим легче было найти.
     
  5. Андрей Я.

    Андрей Я. Нерд

    Да, так и предполагается - отдельный контроллер только под управление двигателями.