VBCores Документация
СайтGitHub
  • VBCores
  • Hardware
    • VBCore VB32G4
    • VB STM32 программатор
    • BLDC драйвер 30A
    • DC драйвер 15A
    • Stepper драйвер 10A
    • CAN-FD - Raspberry PI
      • Настройка CAN на RPI
      • Часто возникаемые ошибки при работе с CAN/CAN FD
      • Работа с CAN FD через Python
    • Power board 30A
    • SBus-HID
    • DC-DC преобразователь
    • Ethernet - CAN-FD
    • USB-HUB
    • IMU BNO055
    • IMU BHI360
    • Т-Энкодер
  • Настройка ПО
    • Arduino IDE
      • Подготовка модуля VBCore
      • Установка среды программирования на Windows
      • Установка среды программирования на Ubuntu
        • Возможные ошибки в Ubuntu при работе с Arduino
      • Выбор платы в Arduino IDE
      • Установка базовой библиотеки
      • Структура ПО для Arduino
      • Примеры
        • Работа с CAN и CAN FD на Arduino
        • Работа с I2C
        • I2C detect
        • Датчик BNO055 / I2C
        • Датчик AS5047P / SPI
        • Датчик AS5600 / I2C
        • Работа с бесколлекторными двигателями
          • Simple FOC. Управление скоростью. Нахождение количества пар полюсов.
          • Simple FOC. Управление моментом
          • Чтение данных с датчика тока
        • Работа с коллекторным двигателем
          • Вращение DC мотором
          • Чтение угла по энкодеру. Управление DC мотором по углу
          • Чтение скорости вращения мотора по энкодеру
        • Работа с шаговым двигателем
          • Вращение шагового двигателя.
          • Контроль двигателя по интерфейсу SPI
    • STM32 CUBE IDE
      • Типовые настройки
      • Подсказки начинающим
        • Cube IDE для начинающих
        • Clock configuration
        • Таймеры - прерывания
        • Таймеры - ШИМ
        • Отладка программ
        • Коммуникации - FDCAN
        • Управление DC-мотором
        • Backup программы
  • Cyphal CAN
    • Cyphal CAN
    • PyCyphal
    • Yakut
    • Cyphal Arduino
      • Отправка и получение сообщений по cyphal
  • Работа с ROS
    • Установка Ubuntu, ROS и Arduino
    • ROS_LIB
    • Примеры
      • Publisher. Hello World!
      • Publisher with Subscriber
      • Rotation by DC motor
  • Работа с научным ПО
    • TCP Server
    • LabView
    • Matlab
  • Инструкции
    • Стенд управления двигателями
    • Переделка датчика мотор-колеса
    • Стенд мотор-колеса
    • iPower Motor
    • AS5047p OEM
  • Практические занятия
    • Коллекторный двигатель
      • Устройство коллекторного двигателя
  • RPI Display
Powered by GitBook
On this page
  • Настройка выводов микроконтроллера
  • Настройка временных интервалов
  • Настройка таймеров, формирующих ШИМ
  • Настройка такта управления
  • Код управления
  1. Настройка ПО
  2. STM32 CUBE IDE
  3. Подсказки начинающим

Управление DC-мотором

PreviousКоммуникации - FDCANNextBackup программы

Last updated 5 months ago

Предполагается, что вы изучили предыдущие уроки.

Настройка выводов микроконтроллера

Ниже приведена конфигурация для нашего случая, в соответствии с описанием драйвера коллекторного двигателя VBCore DC motor Driver 15A.

Выводы SLEEP, Vref, TIM1_CH1, TIM1_CH2, используются для управления силовой частью. Первые два -активизация и уровень блокировки по току – настроены как логические выходы (GPIO), их названия могут быть введены в настройках периферии GPIO. Другие два – выходы двух каналов таймера TIM1 поступают в качестве ШИМ сигналов управления. Для движения двигателя один из этих сигналов, в зависимости от направления движения, устанавливается в высокий уровень (заданием длины импульса, равного периоду), а на втором генерируется ШИМ, чем короче длина импульса, тем больше среднее значение напряжения, подаваемого на двигатель.

Два канала таймера TIM8 CH1 и CH2 используются для считывания импульсов с квадратурного энкодера.

Выводы I2C4_SCL и I2C4_SDA – линии синхронизации (clock) и данных для связи с абсолютным магнитным энкодером AS5600 по протоколу I2C.

ADC1_IN7 – это вход аналого-цифрового преобразователя, который может быть использован для контроля тока, идущего через обмотки двигателя.

LED1, LED2 – логические выходы (GPIO), позволяют мигать двумя светодиодами для визуального контроля работы.

USART2_RX, USART2_TX – выходы для организации обмена данными с внешним компьютером по стандартному порту COM, реализуемом как виртуальный на физическом разъеме USB.

Настройка временных интервалов

Для управления двигателем постоянного тока существенными являются два интервала времени, а именно период ШИМ и период управления. Оба формируются таймерами, использующими системные часы. Поэтому существенны настройки системных часов. Можно не менять настройки по умолчанию, но учитывать конкретные значения, в частности, на рисунке ниже тактовая частота таймеров (ARB1, ARB2 timer clocks) равна 16 МГц.

Настройка таймеров, формирующих ШИМ

Используются каналы 1 и 2 таймера TIM1, для которых выбирается режим PWM Generation (генерация ШИМ). Во вкладке Parameter settings-> Counter settings задаем Prescaler=0, Counter period = 1000. Первый задает предварительное деление частоты: 0 – без деления, 1 – деление в два раза и т.д . Второй задает период в системных тиках. При таких настройках получаем частоту ШИМ 16МГц/1/1000=16кГц. На этой частоте, возможно, двигатель будет создавать «свист». Если слышно, то частоту можно поднять уменьшением периода и выйти за порог восприятия человека (порядка 20 кГц). Остальные настройки можно оставить по умолчанию.

Настройка такта управления

Используется первый канал TIM2. Настройки Prescaler=49, Counter period = 320. Длительность импульса можно взять произвольно, например, 50. Получаем частоту 16МГц/50/320=1кГц. Это будет частота управления, что означает, что каждую миллисекунду будут опрашиваться датчики и формироваться управляющий сигнал на двигатель. Таймер далее используется для генерирования прерываний, поэтому режим выбираем PWM Generation No Output и активируем прерывания NVIC Interrupt Table -> TIM2 global interrupt -> Enabled.


Код управления

TODO

Конфигурация ножек в Cube IDE