Arduino и рывки бесколлекторного

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем XLR8, 17 ноя 2018.

  1. XLR8

    XLR8 Нуб

    Приветствую! Столкнулся с проблемой, разрабатываю коптер на бесколлекторных моторчиках. Столкнулся с проблемой, моторы рывками дергаются при перемене тяги. Тягу меняю используя библиотеку Sero, методом servo.writemicroseconds , где 1000 минимальная а 2000 максимальная. При запуске простенькой программки проблемы не возникает. Возможно ли что программа слишком загружает ардуину (pro mini)? или существуют конфликтующие прерывания? или может быть пины которые использованы, используются другими службами?

    Прикрепляю видео, на котором слышно рывки, а на 0:45 гладкая работа на программе по простому разгону моторчика. Также прикрепляю код, на 175 строке в файле ArduinoFrimware.ino идет управление моторами.

    Видео:



    Код:

    https://puu.sh/C3bzg/003010d86c.zip
     
  2. да
     
  3. XLR8

    XLR8 Нуб

    Что конкретно?
     
  4. Всё из списка возможно. Проверяйте по порядку.
     
  5. XLR8

    XLR8 Нуб

    Как проверить например на прерывания?
     
  6. parovoZZ

    parovoZZ Гуру

    код чужой? Я в своем коде прекрасно вижу, где какие прерывания...
     
  7. XLR8

    XLR8 Нуб

    Код мой, использую сторонние библиотеки для MPU. А также незнание как работают встроенные библиотеки вроде Servo.h создают предположения
     
  8. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Навскидку предложу идею - если ваши моторчики с явно-выраженными полюсами (ротора) - такие называются Синхронники. Если резко менять частоту на обмотках, особенно когда ротор нагружен инерцией, он выходит из синхронизма и начинаются биения. Единственный способ здесь - медленное изменение частоты. Если же у вас асинхронники - я пасс.
    ПС. Возможно использование датчиков поворота ротора с соотв. алгоритмом изменения частоты - могло бы препятствовать вылету из синхронизма.
     
    Последнее редактирование: 17 ноя 2018
  9. XLR8

    XLR8 Нуб

    Я тоже так думал. Делал тест, рандомно прибавлял или отнимал тягу в разных промежутках (delay) на простой программе. Все работало гладко.
     
  10. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Вопрос из любопытства - Моторчики- синхронники или асинхронники ? Дела с этими вертолетами не имел...
     
  11. parovoZZ

    parovoZZ Гуру

    залезь в библу да посмотри.
     
  12. XLR8

    XLR8 Нуб

    Не могу подсказать, слишком я зеленый сам в этой теме.
    Моторчики заказывал вот эти
     
  13. XLR8

    XLR8 Нуб

    Ничего я там не понял, или мне это не дало. Важно мне понять, влияют ли сторонние прерывания на работу Servo.h ?
     
  14. XLR8

    XLR8 Нуб

    Проблема решена!
    Причиной было что SoftwareSerial и Servo используют прерывания. Что недопустимо для работы второго.
    Решить проблему можно тремя путями
    1. Альтернативной библиотекой СофтСериала - AltSerial
    2. Альтернативной библиотекой Сервы - Servo2, ServoTimer2
    3. Использование хардварных RX, TX с обесточиванием или замыканием резета на другом серийном устройстве при перепрошивке.