Jump to content

    

Alex_Malder

Участник
  • Posts

    36
  • Joined

  • Last visited

Reputation

0 Обычный

About Alex_Malder

  • Rank
    Участник
    Участник

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Т.е. управлять моментом я могу. И ДА, я согласен, что у меня похоже нет задачи точно управлять равномерностью оборота ротора (это скорее мой перфекционизм орет), ведь мне надо именно контролировать МОМЕНТ на роторе. В любом случае, управление усилием на асинхроннике выглядит существенно проще. Так что.. хз надо думать. Зачем отслеживать скольжение? У меня нет тут лаборатории, поэтому я могу оценить только большие неравномерности момента. Берем мотор в руки, зажимаем его осторожно, и смотрим как он пытается крутиться. Если рывков нет вплоть до срыва поля - значит момент вроде конст. Именно этого я и добиваюсь - чтобы ротор даже при отсутствии движения, или при обратном движении под действие внешней силы ВСЕГДА поддерживал требуемое усилие. Хоть при нулевых оборотах, хоть как. Собственно, в ЦЛАД ни о каком вращении речь не идет. Там просто поступательное движение с усилием должно быть. Ход штока (ротора) в пределах пары десятков см в лучшем случае.
  2. В общем объясняю как умею. Идея заключается в том, чтобы ротор создавал регулируемое давление (усилие) на внешнюю среду. Например давил в пол. Если взять мотор на постоянных магнитах, мне нужно будет отслеживать положение ротора, причем очень точно, чтобы не допустить срыва синхронизации ротора к полю статора. На ротор может действовать внешнее усилие, он может меняться, и ротор должен по возможности его преодолевать, либо откатываться назад. И поле статора в этом случае может не вращаться, вращаться туда или сюда, но его скорость вращения НЕсопоставима со скоростями поля в асинхроннике! Просто - управляющая схема должна поддерживать ротор таком положении, чтобы он создавал максимальный момент, но не срывался. Во вращающемся двигателе с FOC это решается поддержанием вектора тока на 90 градусов и блаблабла. Я не знаю как мне управлять током, для меня это темный лес. У меня вращения по сути нет, есть переключение положений. Мы на мотор подаем ШИМ, это по сути напряжение. Вот я его и хотел подавать, ориентируясь на положение ротора с полю статора. Была идея применить энкодерный диск, поставить его на ротор, и оценивать положение ротора таким образом. Про положение поля статора знает управляющий МК. Короче сложно. Ну и вот, теперь сравним с этим асинхронный двигатель. Там поле статора отслеживать не надо, просто берем и крутим его с какой-то частотой (высокой, не суть важно какой). Ротор будет с места раскручиваться, а при отсутствии такой возможности - просто создавать УСИЛИЕ, которое мне собственно и нужно. Изменяя амплитуду синусоиды бегущей волны на статоре, я смогу это усилие изменять. Так это или нет? И сразу скажу, что на том моторе, с которым я сейчас работаю (турниги), фокус с изменением амплитуды управляющего сигнала ТОЧНО работает, я изменял усилие вплоть до нулевого. То есть ту же синусоиду можно довести до состояния прямой линии, при которой на все 3 фазы будет идти 50% ШИМ. И ротор в этом случае не создает противодействия. Хотя питание есть, и ток идет. Так что идея про управление усилием методом изменения амплитуды ШИМ работает, и точно также она будет работать для асинхронника. Обратите внимание, я не меняю частоту управляющего сигнала ни в том ни в другом случае. UPD. Про ток соврал. Не могу сказать, идет он или нет, не было амперметра на тот момент. Но суть в том, что усилие на роторе можно менять, изменяя амплитуду ШИМ, усилие менялось вплоть до нуля. Генерация ШИМ есть, драйвер переключает, - ротор НЕ противодействует вращению. Увеличил амплитуду - усилие появилось.
  3. А зачем мне настолько низкие скорости? Наверное при них ничего не будет вообще.
  4. Я просто понимаю, что ротор с постоянными магнитами требует точного управления - нужно знать, где относительно поля статора он находится. А в асинхронных двигателях поле статора всегда находится во вращении, причем скорости там по сути могут быть любые, если речь не идет о банальных асинхронниках от 50Гц сети. Так что тут скорее вопрос эффективности самого двигателя. Вообще, я раньше рассматривал возможность применения асинхронника, но что-то меня сбило, не помню уже. Возможно, тот факт, что ротор будет греться или типа того. В общем, надо сделать тестовый ЛАД, прогнать по нему синус на частоте 5-10кГц, и посмотреть как он будет работать.
  5. Такс, публикую что-то навроде отчета о проделанной работе. Взял другую батарею (3-баночную, напряжением около 12,5в), соответственно драйвер работает так, или почти так, как написано в даташите и апликейшн ноуте на L6234D. Vs = 12.6в, Vboot = 20.4в, Vref = 4.6в, Vref = 9.25в When it rises to 10V, D1 is reverse biased and the charge flows from C3 to C4 through D2, so the Vboot pin after a few cycles reaches the maximum voltage of Vs + 10V - VD1- VD2. Судя по этой фразе из аплик. ноута Vboot должно быть равно в моем случае 12.6 + 9.25 - 0.6 - 0.6 = 20.65в, а у меня 20.4в. Ладно, с этим понятно. Работает. Двигатель для экспериментов - gimbal motor, Turnigy 5208. Дальше я попробовал изменять скважности ШИМ в соответствии с графиком значений, записанных в массив. Немного о массиве, что это: Этот массив на 256 элементов содержит в себе дискретные значения от 1 до 255 включительно, выстроенные в виде какой-то зависимости (допустим по синусу). Эти числа определяют заполнение периода ШИМ по каждой из трех фаз, причем для трех фаз берется три последовательных значения со смещением 120 электрических градусов. Т.е. если в массиве 256 элементов, то изначально ШИМ по фазам равны значениям из [0], [85], [171] элементов массива соответственно, затем (при вращении ручки энкодера, или в цикле с задержкой), берутся [1], [86], [172] значения, и так далее... Эти числа прописываются в регистры сравнения CCR1, 2, 3 таймера TIM1, а сам таймер работает в режиме PWM, осуществляя счет от 0 до 255, и затем снова до 0 (вверх и потом вниз - так реализуется режим phase correct pwm в STM32). Обновление регистров CCR происходит по окончанию счета очередного периода ШИМ (включена их буферизация). Собственно, меня заинтересовало, как повлияет изменение управляющего сигнала (записанного в этот массив) на поведение ротора. Я провел 4 эксперимента, и могу сказать сразу, что равномерность хода ротора без нагрузки все равно меня НЕ УСТРАИВАЕТ! Несмотря на то, что вращение происходит ОТНОСИТЕЛЬНО ровно, все равно на каждом полюсе статора ротор движется то чуть медленнее, то чуть быстрее (это можно заметить на низкой скорости, если задать перебор значений массива в цикле). Понятно, что на высоких скоростях это вообще никак не заметно, но если говорить о медленном вращении (в моем случае это один оборот ротора за 9сек) эта неравномерность видна! При этом момент, возникающий на роторе, относительно постоянен (насколько это можно выяснить методом торможения его об палец), и каких-то особых рывков там нет. То есть он просто вращается, и делает это не особо равномерно, что под нагрузкой, что без нее. Да, теперь драйвер работает в штатном режиме, и неравномерности НЕ ТАКИЕ, как изначально были, но они все же есть, и я связываю их с самой конструкцией двигателя.. Теперь об экспериментах. На картинке изображено 4 варианта управляющего сигнала. Сразу отмечу, что нижняя красная линия на графиках - это значения CCR = 0. Верхняя - это CCR = 255. То есть STM32 формирует ШИМ-сигнал с заполнением, соответствующим числу из графика, и отправляет его на драйвер L6234D. Драйвер интерпретирует это так: если значение равно 256/2 = 128, то заполнение ШИМ соответствущей фазы = 50%, т.е. верхний ключ полумоста фазы открыт 50% времени, и затем нижний ключ полумоста открыт 50% времени (драйвер обеспечивает deadtime сам, чтобы не было КЗ). Т.е. на графиках можно мысленно провести горизонтальную линию посередине, это как бы нейтральное состояние полумоста (не знаю как объяснить понятнее). И еще важный момент - все формы управляющих сигналов я сделал симметричными. Т.е. две фазы всегда уравновешивают третью. Ну или если одна из фаз 50%, то две другие уравновешивают друг друга (кстати именно в этих точках происходит некоторое замедление вращения ротора). 1. Синус. Просто синус. Потребляемый ток на всей схеме 0,37А. Момент постоянен, насколько я могу судить. 2. Трапеция с полкой в 1/6 периода ШИМ. Потребляемый ток колеблется в зависимости от положения ротора в диапазоне 0,37 - 0,48А. Причем 0,48А схема потребляет именно там, где график сильно отличается от синуса (это все точки, начиная с нуля градусов, с шагом 1/6 периода ШИМ). 3. Трапеция с полкой в 1/3 периода ШИМ. Ток также колеблется в зависимости от положения ротора в диапазоне 0,48 - 0,64А. Конкретные точки не скажу, но видимо как в предыдущем варианте, все связано с разницей между синусом и трапецией.. 4. Седловидный график. Получен сложением синуса (1-й эксперимент) с немного увеличенной амплитудой с пилой. Оба графика показаны на картинке, результат (который зеленого цвета) - это и есть управляющий массив данных. Методу я взял из книги "Моделирование в электроприводе" (автор Ю.Н. Калачев), стр. 62 (см. скрин). Потребление тока схемой 0,48А (постоянное), и в сравнении с чистым синусом (1-й эксперимент) возрос момент на роторе (ну ток возрос, логично что это отразилось на моменте). Как-то интерпретировать все это мне трудно, могу только отметить, что синусоидальные управляющие сигналы (1-й и 4-й эксперименты) работают на стабильных токах - в отличие от трапециевидных сигналов (2-й и 3-й эксперименты), обеспечивая вроде как стабильный момент на роторе. При этом для ВСЕХ экспериментов вращение ротора без нагрузки происходит одинаково - ПОЧТИ равномерно. Вот это ПОЧТИ, к сожалению, я не знаю как исправить. Так то гимбал мотор обязан вращаться равномерно. Да, возможно это поправимо, если внести механизм обратной связи по положению, но это уже другая история. ПЫСЫ: Проведя эти эксперименты, я пришел к мысли, что для моих целей наверное больше подойдет асинхронный двигатель с высокой управляющей частотой (поскольку там поле меняется с существенно более высокой скоростью, и нет необходимости отслеживать его положение по отношению к ротору, см. описание моей задачи выше в треде). А конкретнее, ЦЛАД - цилиндрический линейный асинхронный двигатель, навроде того, что показан вот в этом ролике https://www.youtube.com/watch?v=7zwsX68lCTM Так что если есть возможность, порекомендуйте человеческую литературу или источники по конструированию таких двигателей.
  6. Заменил диоды, опишу промежуточный результат. Vboot вырос до 12.4 (при Vs = 7.9в), т.е. процесс пошел.. Однако Vref на уровне 6в (при том, что на схеме он должен быть 10в). Возможно, если поднять Vs хотя бы до 12в, Vref станет как раз 10в.. В любом случае, ток потребляемый мотором, вырос с 0.7А до 1.14, при этом драйвер существенно меньше греется, что на мой взгляд свидетельствует о более полном открытии ключей (я где-то читал, что при неполном открытии ключи больше греются). А еще движение ротора стало визуально более равномерным. В общем, пока рано делать выводы, но результаты обнадеживающие. Сейчас нет возможности поднять Vs, поэтому пока что ждем..
  7. А может проблема заключаться в диодах? Судя по даташиту, необходимо использовать быстрые диоды 1n4148 (reverse recovery time - скорость переключения 4ns). Я же поставил обычные выпрямительные 1n4007, а у них время переключения похоже 30микросекунд, то есть овер дофига. В аппл. ноуте на L6234D написано, что переключение для накачки charge pump происходит на частоте 1.2MHz..... Похоже, я присобачил не те диоды, да? L6234 appl_note.pdf
  8. Ладно, пока что возьму тайм-аут, надо все разобрать и понять что не так.. Спасибо за совет, сам бы я точно не нашел эту хрень.
  9. Ну плохо, я не знаю почему это может не работать. Кондеры точно по номиналу. Диоды я точно такие не нашел, но Есть какой-то способ понять, что там не работает? Там всего два диода и кондеры.
  10. Может дело в диодах? Ну ладно, а если просто поднять напряжение питания до 20в, это поможет общему горю?
  11. То есть получается, что производитель драйвера говорит пользователю: подавай на микросхему от 7 до 52в, но вот ТУТ должно быть на 10в больше! Что, померил мультиметром, и там 7в всего? Аааа.. вот сам теперь решай эту проблему =) Так выходит?
  12. Что-то я не пойму. А как же supply voltage? Насколько я понимаю, мы подаем на драйвер от 7 до 52в, и дальше она сама там думает куда чего ей подать. Или выходит что я еще должен что-то сверху присоединить? А при чем здесь тогда 7-52в? А где об этом написано в даташите? Насколько я понимаю, если на микросхеме есть питание, то я его просто подаю и все. Или нет?
  13. Просто так, забудем об этом. Откуда вы взяли инфу про Vboot 15-18в?
  14. Vs = 8в. Vboot = 7в. В даташите на драйвер написано, что supply voltage должен быть от 7в. А где вы нашли инфу о том, что Vboot должен быть 15-18в? Я не использую эту точку, просто указал на нее. Ограничимся инфой о том, что драйвер питается от 8в, чтобы не было недопонимания.