Как сделать управление током для двигателя постоянного тока с ШИМ

Мы пытаемся сделать систему балансировки (с реактивным колесом) с ПИД-регулированием тока и угла.

Вся схема состоит из двигателя постоянного тока, источника питания, датчика тока и MPU6050 (для угла). Процесс системы заключается в том, что ПИД-регулятор угла определяет величину требуемого тока (в форме рабочего цикла для ШИМ в Arduino) и передает ПИД-регулятор тока для создания величины требуемого крутящего момента (чтобы предотвратить его превышение). ток).

Я смоделировал части всей системы в Simulink и Matlab, но реализация имеет значение.

введите описание изображения здесь

Сейчас работаю над текущей частью. Сначала я установил датчик тока (INA260) в + линию двигателя постоянного тока, но проблема в том, что текущие данные должны быть непрерывными. Двигатель управляется ШИМ в драйвере двигателя, поэтому данные имеют много шума из-за сигналов ШИМ (я проверил это, построив график на ПК).

Ранее я использовал аналоговый датчик тока ACS758, но и тогда не смог справиться с этой проблемой. Насколько мне известно, использование фильтров для текущего сигнала может привести к некоторой задержке в системе, но я не знаю хорошего способа собрать данные без фильтра.

И как я могу сделать текущее PI-управление? Есть ли хорошее решение для этого?

введите описание изображения здесь

  • Настройка ШИМ = 3000 Гц
  • Микроконтроллер = Ардуино Уно
  • MPU6050 (датчик угла)
  • MD30C (моторист)
  • SPG300 (двигатель постоянного тока 300 Вт)
  • INA260 (датчик тока/шунтирующий резистор/I2C/до 15 А)
  • ACS758 (датчик тока/датчик Холла/аналоговый/до 15 А))

Собранный текущий сигнал:

введите описание изображения здесь

ваш INA не может делать даже 1000 выборок в секунду. выясните, сколько он может сделать, тогда у вас есть приблизительная цель для вашего фильтра. даже при «всего» 3k у вас должно быть достаточно времени для фильтрации без снижения частоты дискретизации или размытия полезной информации.

Ответы (2)

Это вопрос годовой давности, и мы не получили ответа от ОП, но я подумал, что могу внести некоторые предложения на случай, если у кого-то еще возникнет аналогичная проблема.

Вы можете эффективно устранить шум в текущем сигнале, сэмплируя его сразу после включения ШИМ-сигнала. По крайней мере, это должно давать стабильные показания, пропорциональные току. И вы можете сэмплировать ШИМ 3 кГц со скоростью от 10 до 20 выборок в секунду и выполнять быстрый расчет истинного среднеквадратичного значения.

Датчик Холла является хорошим способом считывания тока двигателя, но существуют также шунтирующие датчики высокого бокового тока, такие как HV7800 и INA195, которые недороги и достаточно быстры.

Аналоговый фильтр нижних частот является обязательным для сглаживания АЦП. Вы должны увеличить частоту ШИМ, использовать достаточно высокую частоту дискретизации для АЦП с аналоговым ФНЧ с отсечкой 1/3 частоты дискретизации АЦП. Затем обработайте все в MCU, используя цифровой КИХ-фильтр LPF. Конечно будет небольшая задержка, которая ограничит динамику системы, но не так сильно, если все сделать правильно.

Я думаю, вам понадобится MCU с достаточным количеством ресурсов (скорость вычислений).