Перейти к содержанию
Aleksei_Borisov

Сервопривод на Ардуино - проект выходного дня

Рекомендуемые сообщения

Дата: (изменено)

В общем, спустя две недели, два раза переписав алгоритм, получили следующее:

 

- имеем сервопривод по скорости, с нормальным ПИД-регулятором, с поддержкой оборотов от 13 до 2500 об/мин (восьмибитная арифметика плюс энкодер на 720 линий, которого оказывается мало). Регулируется или кнопками или потенциометром.

 

- имеем плавный разгон-торможение, пусть не по S-кривым а почти линейно, но мы над этим работаем.

 

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

 

- ну и все параметы скорости, положения, ПИД-регуляторов итд это можно вывести на экран терминала или на осциллограф, полюбоваться как чего там регулируется.

 

Нету пока одной малости - физического входа Степ/дир :) Ну и всякой сервисной оболочки, чтоб пищала про аварию, обрывы, заклинивания итд.

post-40244-044107300_1454630542_thumb.jpg

Изменено пользователем Aleksei_Borisov

Поделиться сообщением


Ссылка на сообщение

Молодец, полезная вещь!

код посмотреть можно будет?

Поделиться сообщением


Ссылка на сообщение

Да, конечно. Только вставлю туда вход по степ-дир, и зачищу хвосты от предыдущих версий.

Теперь надо искать компьютер с параллельным портом и учить Мач :)

Поделиться сообщением


Ссылка на сообщение

Извените не понял моторчик у вас обычный щеточный?

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

Нормально.Ещё бы интересно груз добавить.А что не хотите переписать на STM32.Я уж не говорю про производительность,но одни аппаратные контроллеры энкодеров и трёхфазный шим с противофазными сигналами с регулируемой задержкой защитой чего стоит.По цене не такая уж большая разница.А перейти с одной платформы на другую ,поверьте при написании программ на языке высокого уровня не так уж сложно.И оно того стоит.Всё равно рано или поздно придётся переходить.Кстати STEP/DIR там тоже можно реализовать аппаратно.

Изменено пользователем sidor094

Поделиться сообщением


Ссылка на сообщение

Извените не понял моторчик у вас обычный щеточный?

Да, обычный щёточный.

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

BLDC движки конечно лучше, но в тот момент их у меня не было.

Но в планах есть.

Поделиться сообщением


Ссылка на сообщение

.А что не хотите переписать на STM32.

...А перейти с одной платформы на другую ,поверьте при написании программ на языке высокого уровня не так уж сложно.

В моём случае перейти на STM32 - это два раза щёлкнуть мышкой :)

У меня поддержка GCC ARM прикручена прямо в Ардуино IDE. Так что перейти не проблема.

Но в тот момент не было свободной платы. Да и зачем? В моём алгоритме даже Ардуино простаивает две трети времени, так как самые быстрые события там ограничены инерционностью двигателя, даже такого маленького. При большем моторе и нагрузке на валу, наверное вообще калькулятор справится.

 

Вот если делать для BLDC движка, с контролем тока в фазах, то да, желательно STM32 .

А в моём случает переход на 32 битную арифметику (с соответствующим энкодером) даст только прирост скорости, не 13 - 2600 об/мин, а от нуля до бесконечности. Правда, у меня таких движков нет. :)

 

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

В моём алгоритме даже Ардуино простаивает две трети времени, так как самые быстрые события там ограничены инерционностью двигателя, даже такого маленького. При большем моторе и нагрузке на валу, наверное вообще калькулятор справится.

С ростом ускорений может потребоваться увеличение частоты опроса.Чем выше частота тем меньше задержки в петле обратной связи .Соответственно появляется возможность увеличения всех ПИД коэффициентов без возбуждения(глубины обратной связи) Изменено пользователем sidor094

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

Это всё конечно правильно. Частота выше, задержки ниже.

Но для привода металлорежущих станков есть стандарты (вернее были, 20 лет назад) - полоса пропускания по скорости 100 гц, по положению - 10 гц. Это высшего класса, обычно вдвое меньше.

У меня квант П- и Д-параметра 0.1 миллисекунды, квант И-параметра 1 мс. Это на чистом Ардуиноязыке.

При желании можно сделать раз в десять меньше.

Изменено пользователем Aleksei_Borisov

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

Ещё вопрос эта серва может резать резьбы?

Изменено пользователем tkachmy

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

ЗдОрово Алексей,

похоже Вы продвинулись поболее чем я :)

я пока просто собираю некоторую статистику, хочется двигаться с полным пониманием процесса,

прогнал P на разных скоростях с различной крутизной кривой,

на малых скоростях от 0rpm (режим а-ля шаговик) понравилось по P7 кривой, на больших P4, P6,

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

просто мысли - может данные тянуть из таблицы?

 

post-44073-072619800_1454667310_thumb.jpg

Изменено пользователем Олег А.

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

Гм, у меня И-регулятор именно на перевёрнутой S-характеристике и работает. Получилось так чисто случайно, из-за особенностей целочисленного вычисления. Крутит пла-а-а-авнененько.

Вообще-то это не правильно, при малых отклонениях И-параметр должен наоборот завышаться. Тогда точность лучше.

Изменено пользователем Aleksei_Borisov

Поделиться сообщением


Ссылка на сообщение

Ещё вопрос эта серва может резать резьбы?

Пока что нет, но со временем всё может быть.

 

Вообще была мысль внедрить этот алгоритм в программу "электрогитары" Олега А, для сокращения аппаратной части.

Поделиться сообщением


Ссылка на сообщение

на малых скоростях от 0rpm (режим а-ля шаговик) понравилось по P7 кривой

Вы напряжение для страгивания двигателя учитываете? Там бывает аж треть от U питания.

А то больно уж кривая у вас характерная.

Поделиться сообщением


Ссылка на сообщение

Вы напряжение для страгивания двигателя учитываете?

После того как повесил на вал эксцентрик (переменная нагрузка) - отказался,

при таком раскладе выходит что нам надо компенсировать компенсацию :)

Поделиться сообщением


Ссылка на сообщение

компьютер с параллельным портом и учить Мач

Зачем вам оно? У вас ардуина с USB (а еще лучше присобачить к ней HC-05). В общем куча возможностей, использовать новые технологии.

Или вы не хотите пока писать парсер G-code?

 

не подумайте, что я критикую. Просто делал свой софт , через USB-SerialPort отлично все контролировалось. Более того, прикольно было посмотреть эмуляцию резания (Делал на OpenGL) . Суть эмуляции была не в том, чтобы сэмулировать G-code и показать это на картинке. У меня хитрее было. Так как парсер и считалка была зашита в Ардуино (свой конечно же код) - получаемые степы засылались из Ардуинки в компорт, и компом эмулировались. И я смотрел, но сколько точно и правильно у меня работают всякие алгоритмы рисования кругов элипсов и спиральных кривых. И еще + такого подхода, что программу можно было отправлять прямо со смартфона, и все резалось без присутствия компьютера.

Поделиться сообщением


Ссылка на сообщение

Вообще была мысль внедрить этот алгоритм в программу "электрогитары" Олега А, для сокращения аппаратной части.

Не получится, жесткие тайминги что тут, что там, все же 2 отдельных процессора.

Поделиться сообщением


Ссылка на сообщение

Это на чистом Ардуиноязыке.

 

Видимо нормальному программисту это не мешает.

Очень интересно было бы посмотреть любую версию программы.

Поделиться сообщением


Ссылка на сообщение

Я как бы ни разу не программист. И даже не ардуинщик. Я копипастер :)

Практически вся программа состоит из цельнотянутых кусков, которые подгонял под себя.

 

Код вечером выложу, а то он дома на компе.

Тут вот уже появились предложения про парсер Г-кода итд. это я точно не потяну,

а люди может сделают.

Поделиться сообщением


Ссылка на сообщение

прошло две недели выходных...

а моторчик у вас мощный - чего удивляетесь

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

Не получится, жесткие тайминги что тут, что там, все же 2 отдельных процессора.

 

А вот посмотрим...

 

У меня один вариант программы работает вообще без таймеров, по функции mills(). Причём там основные ресурсы отъедает вывод на терминал, а главному алгоритму остаются жалкие объедки. Никакого жёсткого тайминга там ессно нет. И ничего, работает. Визуально ничего и незаметно, только по осциллографу видно что импульсы плюс-минус миллисекунда гуляют. Но если это привод подачи станка, да пускай хоть десять миллисекунд.

Ну уйдёт наша резьба на сотку в сторону, как нибудь переживём.

Изменено пользователем Aleksei_Borisov

Поделиться сообщением


Ссылка на сообщение

А вот посмотрим...

:) Ну я тоже упертый.

 

По поводу постоянной страгивания,

вот что я имел виду, на подъем груза, без нагрузки и на опускания груза, она будет разительно отличаться,

стенд стоит вертикально:

 

post-44073-085404000_1454674202_thumb.jpg

 

поэтому все же, как мне кажется, крутая начальная харрактеристика P-кривой с этим будет справляться значительно лучше.

Поделиться сообщением


Ссылка на сообщение

Олег, я тут много написал был, но моргнул свет...

 

Поэтому сразу выводы.

Ваша кривая и моя статическая компенсация - это буквально одно и то же. Так что одной дорогой идём, товарищ.

Но в начальной части моя кривая "покруче будет", буквально, и поэтому работает без люфта и запаздывания.

А запаздывание при малых сдвигах у меня было 0.1 сек. до трогания, и 0.255 сек. до максимума. Что уже несколько черезчур, этак можно и в резьбу не попасть.

 

Ну и то что я называю статической компенсацией, на английском обзывают "Feed-forward correction", опережающая коррекция, которая находится вне петли обратной связи.

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу


×
×
  • Создать...

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.