|
|
  |
Нелинейное перемещение шагового двигателя. |
|
|
|
Feb 17 2016, 15:52
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Здравствуйте. Есть привод от матричного принтера с шаговым двигателем. Приладил к шаговому двигателю драйвер из четырёх кт815. Ключами управляет Atmega. Алгоритм движения такой: Шаг 1 (подаём питание на обмотку А), пауза, питание на обмотке А выключается. Шаг 2 (подаём питание на обмотку В), пауза, питание на обмотке В выключается. Шаг 3 (подаём питание на обмотку С), пауза, питание на обмотке С выключается. Шаг 4 (подаём питание на обмотку Д), пауза, питание на обмотке Д выключается. и дальше опять шаг 1. Т.е. всё понятно - прямолинейное движение в одну сторону. Стало скучно и захотелось это движение (а точнее скорость движения) сделать нелинейным, а именно если требуется скажем 100 шагов сделать то у первого шага (а также у последнего) пауза самая большая, у следующего шага чуть меньше, у 50-го шага пауза самая минимальная и потом снова на увеличение. Что то типа "экспоненциального" закона изменения - или даже что-то типа "параболического" движения. Т.е. нужна функция, в которую бы мы заходили, передавали 2 параметра это полное количество шагов при перемещении, и номер шага. Не знаю правильно и понятно ли объясняюсь но хочу чтобы двигатель стартовал с минимальной скоростью (максимальная пауза), и ускорялся, посредине движения скорость была максимальная (минимальная пауза),а потом пауза вновь бы увеличивалась. Т.е. можем заведомо задать минимальную скорость (максимальную паузу шага - 4000 uS), и максимальную скорость (минимальную паузу - 2000 uS). Как такую функцию сделать и нужно учесть что количество шагов может быть как чётным так и нечётным. Есть какие-либо мысли? Сам в программировании не очень силён  Спасибо!
|
|
|
|
|
Feb 18 2016, 05:22
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Цитата(ViKo @ Feb 17 2016, 19:52)  Максимальная скорость должна быть ограничена. От механики зависит. И минимальная должна задаваться. Получается, есть кусок нарастающей параболы (начинающийся не с 0, а с минимальной скорости), затем линейный участок с максимальной скоростью (если количество шагов позволит), и кусок спадающей параболы (предположим, симметричный первому куску). Вот этот первый кусок можно сохранить в виде таблицы (парабола или синус или еще что-нибудь), и использовать при определении времени в зависимости от шага. Да. Так и нужно попробовать сделать. Будет три участка. Разгон, равномерный и торможение. Разгон и торможение (грубо говоря по 20 шагов) задать в виде таблиц (будут симметричными), а равномерный участок на постоянной максимальной скорости. Главное чтобы количество шагов при перемещении было больше или равно количеству шагов на разгон и на торможение. Максимальная скорость конечно будет ограничена, для этого я и указал что минимальная пауза/период на обмотках с напряжением - 2000uS Спасибо!
|
|
|
|
|
Feb 18 2016, 05:27
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Цитата(Iptash @ Feb 17 2016, 22:16)  Это типа разгон торможение? Пауза это какое то обесточенное состояние обмоток? Зачем частоту менять с помощью пауз. Не лучше ли менять рабочую частоту без пауз? Пауза - это время/период с поданным напряжением на катушку. Я писал: __ Шаг 1 (подаём питание на обмотку А), пауза, питание на обмотке А выключается. Шаг 2 (подаём питание на обмотку В), пауза, питание на обмотке В выключается. Шаг 3 (подаём питание на обмотку С), пауза, питание на обмотке С выключается. Шаг 4 (подаём питание на обмотку Д), пауза, питание на обмотке Д выключается. __ Цитата(ViKo @ Feb 18 2016, 08:24)  П.П.С. А ведь можно и с постоянной скоростью крутить. А можно и совместить - начать с минимальной и линейно ее увеличивать. Быстрее будет. Как раз быстрее будет если тремя участками как писал выше... так как количество шагов при перемещении может быть и 50 и 1000. Будем пробовать. Спасибо!
|
|
|
|
|
Feb 18 2016, 05:31
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Павел_Б @ Feb 18 2016, 08:22)  Да. Так и нужно попробовать сделать. Будет три участка. Разгон и торможение - процессы разные, и ускорения можно задать разные. Участок постоянной максимальной скорости не обязателен. Если шагов мало, пройдете только по части разгона и части торможения. Цитата(Павел_Б @ Feb 18 2016, 08:27)  Как раз быстрее будет если тремя участками как писал выше... так как количество шагов при перемещении может быть и 50 и 1000. Будем пробовать. Спасибо! Там тоже 3 участка, только трапеция скорости будет приподнята на минимальную скорость. Не настаиваю, просто теоритезирую. Огурцову отвечаю.
|
|
|
|
|
Feb 18 2016, 07:13
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(ViKo @ Feb 18 2016, 08:31)  Разгон и торможение - процессы разные, и ускорения можно задать разные. Участок постоянной максимальной скорости не обязателен. Если шагов мало, пройдете только по части разгона и части торможения. Все это уже неоднократно обсуждалось. Тут очень много разных факторов. В первом приближении, если нужно быстрее встать в некоторую новую точку, то оптимальным будет режим постоянной механической мощности. Тогда скорость должна линейно зависеть от корня (квадратного) от времени. К этому можно придти, разглядывая кривую момент - угловая скорость для моторчика. Это справедливо при достаточно большом напряжении питания, которое обеспечивает постоянный ток обмоток (примерно). При этом нужно использовать драйверы, стабилизирующие ток. Отрицательное ускорение опасно увеличением рассеиваемой мощности в ключах или, если используется рекуперация, повышением напряжения источника питания. Ведь механическая энергия куда-то должна перетекать. Есть еще механический резонанс, который нужно обходить. И еще много-много нюансов.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|