MAL4X Научно-технический форум разработчиков симуляторов и автоматики


Симуляторы перегрузок. DIY электроника. ЭВМ. Компьютерные сети.
Up

Симулятор от taran_ob

Строим реалистичный симулятор перегрузок своими руками. Рекомендации. Советы.

Модераторы: Death_Morozz, null, Ale

Re: Симулятор от taran_ob

Сообщение Ale » 19 дек 2012, 22:06

taran_ob писал(а):Управление мостом, больше склоняюсь к режиму 50% ШИМ -двигатель не вращается. В таком режиме нагрев полевиков не вызван нагревом внутренних (технологических) диодов в отличие от режима ШИМ / направление.

Это как это? Полный мост? И о каком нагреве ты говоришь?
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Симулятор от taran_ob

Сообщение taran_ob » 19 дек 2012, 22:13

Да, полный. Особенность программного формирования ШИМ для такого режима еще не изучил. В протеусе пока просто вывожу прямой и инверсный шим на два канала.
Мне понравился перевод статьи http://roboforum.ru/wiki/H-мост
Кстати, Ale, чтоб твой мост заработал как полный, по моему, достаточно ШИМ подавать на DIR, а PWM подтянуть к 1. Только вот с мертвым временем может быть затык наверно?
taran_ob
Комсорг
 
Сообщения: 137
Зарегистрирован: 27 окт 2012, 22:05
Откуда: Ukraine
Благодарил (а): 5 раз.
Поблагодарили: 11 раз.
Баллы репутации: 19
Новичок

Re: Симулятор от taran_ob

Сообщение taran_ob » 19 дек 2012, 22:23

Ну, общий нагрев может будет и больше, но он не будет вызван диодами нижних ключей.
taran_ob
Комсорг
 
Сообщения: 137
Зарегистрирован: 27 окт 2012, 22:05
Откуда: Ukraine
Благодарил (а): 5 раз.
Поблагодарили: 11 раз.
Баллы репутации: 19
Новичок

Re: Симулятор от taran_ob

Сообщение null » 19 дек 2012, 22:32

taran_ob писал(а):От Чена только конструктив - 1 мотор 1 драйвер-мост с мозгом, правда не тини2313 а мега88, как у arisov77 .

Изучал оба варианта, когда искал более разумную схему моста. Но так и не реализовал :(
taran_ob писал(а):Управление мостом, больше склоняюсь к режиму 50% ШИМ -двигатель не вращается. В таком режиме нагрев полевиков не вызван нагревом внутренних (технологических) диодов в отличие от режима ШИМ / направление.

Что-то не осилил. А если 25% или 75% ШИМ что должно происходить?
Русский X-Simulator
Изображение
За пределами форума. Мой инстаграмм.
Аватара пользователя
null
SIMER
 
Сообщения: 1041
Зарегистрирован: 03 мар 2010, 18:42
Откуда: Ростов-на-Дону
Благодарил (а): 219 раз.
Поблагодарили: 160 раз.
Баллы репутации: 138
ТехнарьТехнарь

Re: Симулятор от taran_ob

Сообщение Ale » 19 дек 2012, 22:38

null писал(а):Что-то не осилил. А если 25% или 75% ШИМ что должно происходить?


Полный мост имеет управление по обоим плечам, в отличии от полу моста, где одно плечо выключено, пока по второму ШИМ гуляет.
Так что если подать 25% на первое плечо, и 75% на второе - на движке будет 50% напряжения (75-25). Если на первое подать 75%, а на второе 25%, то на движке те же 50%, но другой полярности. Ну а если 50% и 50%, то движок стоит, хотя ШИМ молотит оба плеча
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Симулятор от taran_ob

Сообщение Ale » 19 дек 2012, 22:42

taran_ob писал(а):Ну, общий нагрев может будет и больше, но он не будет вызван диодами нижних ключей.

Общий это какой? Общие потери мощности во всей схеме? За статью - спасибо, почитаю. Но вот про диоды и нагрев - пока что-то не догоняю я. :(
А вообще, не знаю пока, как в полном мосте. Но в полумосте, когда на обоих плечах ноль, то нижние транзисторы открыты, обмотка движка как бы закорочена через землю. Думаю, именно этот режим, кроме того, что экономит энергию, еще и активно ТОРМОЗИТ движок за счет большого тока, возникающего в результате самоиндукции. Т.е движок превращается в генератор с закороченной обмоткой... Это динамическое торможение.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Симулятор от taran_ob

Сообщение null » 19 дек 2012, 22:47

Ale писал(а):Полный мост имеет управление по обоим плечам, в отличии от полу моста, где одно плечо выключено, пока по второму ШИМ гуляет.

Теперь понял, но в чем выигрыш? Мне кажется только управление таким мостом усложняется .....
Русский X-Simulator
Изображение
За пределами форума. Мой инстаграмм.
Аватара пользователя
null
SIMER
 
Сообщения: 1041
Зарегистрирован: 03 мар 2010, 18:42
Откуда: Ростов-на-Дону
Благодарил (а): 219 раз.
Поблагодарили: 160 раз.
Баллы репутации: 138
ТехнарьТехнарь

Re: Симулятор от taran_ob

Сообщение Ale » 19 дек 2012, 22:58

null писал(а):но в чем выигрыш? Мне кажется только управление таким мостом усложняется

Я тоже так думаю...
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Симулятор от taran_ob

Сообщение taran_ob » 19 дек 2012, 23:07

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

Диоды - слабое место в полевике (по току).
В течении периода холостого хода напряжение на обмотках мотора грубо равно Vbat+Vg, что значительно выше, чем в предыдущих методах. Это приводит к значительно более быстрому уменьшению магнитного поля.

Скорость стабилизации частоты вращения будет выше.
Минус - конечно же нагрев и уменьшение максимальной скорости вращения.
taran_ob
Комсорг
 
Сообщения: 137
Зарегистрирован: 27 окт 2012, 22:05
Откуда: Ukraine
Благодарил (а): 5 раз.
Поблагодарили: 11 раз.
Баллы репутации: 19
Новичок

Re: Симулятор от taran_ob

Сообщение taran_ob » 19 дек 2012, 23:16

Ale, а ты не хочешь вникнуть в Ченовские исходники, ты же асм знаешь... Знаю, ты к пиду скептически относишся, но все же... Они являются отрывной точкой для многих проектов. Очень бы хотелось до конца понять алгоритм следящего сервопривода. Возможно и новые идеи появятся.
taran_ob
Комсорг
 
Сообщения: 137
Зарегистрирован: 27 окт 2012, 22:05
Откуда: Ukraine
Благодарил (а): 5 раз.
Поблагодарили: 11 раз.
Баллы репутации: 19
Новичок

Re: Симулятор от taran_ob

Сообщение Ale » 19 дек 2012, 23:23

taran_ob писал(а):Ale, а ты не хочешь вникнуть в Ченовские исходники, ты же асм знаешь...

Присылай, посмотрим...
taran_ob писал(а): Знаю, ты к пиду скептически относишся,

Нет. Совсем не скептически. Вопрос в том, как его реализовывать, и под какие задачи. А то, что это хороший регулятор, я не буду отрицать.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Симулятор от taran_ob

Сообщение taran_ob » 19 дек 2012, 23:53

Ale писал(а):Присылай, посмотрим...

http://elm-chan.org/works/smc/report_e.html
Внизу страницы, в архиве исходники.
Новый - Firmware and Changes for SMC3/A, полный мост
Старый - Firmware for SMC - ШИМ/направление

ПС Подумал вот еще о чем (про станочные сервы), по началу смутило стабилизация скорости, высказывал раннее, думал что в глобальном времени, а потом осенило, это же - мгновенная скорость в нашем случае, то есть, наоборот хорошо. Значит от задания до задания с постоянной скоростью это же нам и надо! И действительно, когда станок рисует окружность с допуском в сотку, попадая в начало, можно себе представить потенциал пида для синхронной стабилизации скорости.

Там на блок схеме пида практически наш сим нарисован :D
taran_ob
Комсорг
 
Сообщения: 137
Зарегистрирован: 27 окт 2012, 22:05
Откуда: Ukraine
Благодарил (а): 5 раз.
Поблагодарили: 11 раз.
Баллы репутации: 19
Новичок

Re: Симулятор от taran_ob

Сообщение taran_ob » 20 дек 2012, 14:54

Ale писал(а):Вопрос в том, как его реализовывать, и под какие задачи.


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

Уверен, никто не будет спорить с тезисами:
1. Угол поворота вала пропорционален координате.
2. Воздействие (ШИМ) - величина пропорциональная частоте вращения вала двигателя. Если ШИМ - константа, то и частота - константа.
3. Основная задача контроллера - принимать координаты и выдавать такие значения ШИМ, чтоб траектория построенная по показаниям обратной связи была копией траектории построенной по принятым координатам с некоторым смещением во времени.
4. Изменение координат происходит с ускорением.

Главный вопрос - как реализовать 3 пункт! Задача сводится к придумыванию некой функции ШИМ=функция(принятая координата, координата обратной связи). Или иными словами- какой ШИМ приложить к двигателю чтоб из текущей координаты попасть в принятую координату через время t =константа = период приема новых координат. Для начала рассматриваем замкнутую систему - идеальный двигатель с обратной связью, ни какого трения.

1. Что предлагает kuzevan. Предполагается, что за период приема координат мы двигаемся равноускоренныо. Такое движение описывается формулой
x=x0+V0*t+a*t*t/2, где t=33мс, и с ней нельзя не согласиться. С другой стороны, изменение ШИМ влечет за собой изменение скорости, то есть ускорение. Подставляя одну формулу в другую получаем искомую функцию ШИМа от координат, начальной скорости и начального ШИМа. Пока вроде все правильно...

2. Как реализовано в существующем контроллере. Предполагается что в течении времени t = период перерасчета ШИМ мы движемся с постоянной скоростью, ввиду малого t. Такое движение описывается формулой V=(x-x0)/t. Так как скорость пропорциональна ШИМу, то получаем выражение ШИМ=некий коэф*(новая координата -текущая координата). Но период перерасчета ШИМ (микрозадание) < периода получения координат (задание), следовательно, с каждым шагом уменьшается разность координат, и соответственно и скорость будет постепенно уменьшаться. То есть от микрозадания до микрозадания мы будем двигаться с ускорением. Траектория - парабола.

3. Предположенный мною ранее подход. Нечто среднее между п1 и п2. Предполагается что в течении времени t = период приема координат мы движемся с постоянной скоростью. Такое движение описывается формулой V=(x-x0)/t. Так как скорость пропорциональна ШИМу, то получаем выражение ШИМ=некий коэф*(новая координата -текущая координата).
В отличие от п2 от задания до задания движемся с постоянной скоростью.

В реальной системе, где есть внешние возмущения - трение, нелинейности и тд, которые приводят к тому, что коэффициент в п1,2,3 перестают быть константами, влечет за собой ошибку попадания в заданную координату в нужное время. Как с этим бороться?
Самый простой вариант, это вычислять ошибку в каждом шаге, со знаком! (переезд - недоезд) прибавляя ее к прошлой - интегральная составляющая. Затем, пропорционально ее увеличению вносить корректировку воздействия (ШИМ) в следующем шаге. Правда возможна ситуация, что почувствовать влияние такой корректировки мы сможем уже тогда когда она не нужна. Чтобы этого избежать период приема координат должен быть очень маленьким. Тут мы упираемся в скорости UART. И самый главный минус - мы честно не стабилизируем скорость.

:idea: :idea: :idea: :idea:
4. Новый подход!
За основу берем п2 - период перерасчета ШИМ < периода получения координат, то есть внутри цикла приема координат есть несколько циклов перерасчета ШИМ. Но с одной поправкой вытекающей из п3 - скорость, от задания до задания, должна быть константа!
Как это реализовать? В качестве целевой координаты микрозадания принимать не принятую, а промежуточную координату, которая лежит на пересечении заданной траектории и вертикальной прямой проходящей через точку времени следующего расчета - сводится к решению прямоугольного треугольника (трапеция разделенная на равные маленькие).
Теперь уже можно говорить, что на протяжении периода приема координат интегральная составляющая внесет изменения достаточно быстро (к следующему приему), ну во всяком случае UART нас уже не лимитирует. Имеем полноценный ПИ. Также становится возможным стабилизация скорости между расчетами ШИМ, и как следствие во всем задании. Достаточно ввести дифференциальную составляющую, которая по сути является разностью скоростей текущего и прошлого микрозадания и чем эта разность больше тем больше противоположенный вклад в суммарное значение ШИМ. Имеем полноценный ПИД, при котором не о каких остановках или глобальных замедлениях от задания до задания не может быть и речи! ;)
taran_ob
Комсорг
 
Сообщения: 137
Зарегистрирован: 27 окт 2012, 22:05
Откуда: Ukraine
Благодарил (а): 5 раз.
Поблагодарили: 11 раз.
Баллы репутации: 19
Новичок

Re: Симулятор от taran_ob

Сообщение taran_ob » 20 дек 2012, 15:22

Собственно, сам алгоритм.
Код: Выделить всё
     
//Цикл приема координат
     {
     for i  {mas[i]=f(x0, x_rx)}  //В начале цикла приема координат вычисляем промежуточные точки по x0(текущая координата) и x_rx  (принятая координата) занося их в        массив mass[]
     //цикл расчета ШИМ
           {     
           x=mass[i++]
           x0=АЦП или энкодер
           error=x-x0
           sum_error=sum_error+error
           ШИМ=Kp*error+Ki*sum_error+Kd*(error-error0)
           error0=error
           }
      }


Здесь mas[i]=f(x0, x_rx) можно учесть не линейность положения платформы от угла поворота вала двигателя.
Можно и не использовать массив - вычислять на лету.
taran_ob
Комсорг
 
Сообщения: 137
Зарегистрирован: 27 окт 2012, 22:05
Откуда: Ukraine
Благодарил (а): 5 раз.
Поблагодарили: 11 раз.
Баллы репутации: 19
Новичок

Re: Симулятор от taran_ob

Сообщение kuzevan » 20 дек 2012, 16:44

С постоянной скоростью мы двигаемся только если ШИМ=К2. Напрямую скорость от ШИМа не зависит, зависит ускорение.
Аватара пользователя
kuzevan
Парторг
 
Сообщения: 60
Зарегистрирован: 25 окт 2011, 17:17
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: -6

Пред.След.

Вернуться в X-SIMULATOR и RU-SIMULATOR & SimTools

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 153

cron
x

#{title}

#{text}