基于STM32的无人机电机控制模块设计与实现

一、模块概述

本文介绍了一个基于STM32 HAL库的无人机电机控制模块实现,该模块通过PWM信号控制四个无刷电机的转速,是飞控系统的关键执行部件。

 无人机电机选择空心杯电机的原因主要

1.空心杯电机的效率通常在85%90%之间,高效率为其突出特点。

2.同时空心杯电机具有高转速、低噪音的特点。

3.电机整体体积小、重量轻有助于提升无人机的飞行效率和稳定性。

4.电机灵敏的控制特性,起动、制动响应快。能够实现更精准的控制和更复杂的飞行动作。

5.无人机需长时间运行和频繁起降长寿命与可靠性的特点成为无人机的首选电机类型。

 

 

 

 

 

二、 核心功能实现

2.1 电机初始化

void Inf_Motor_Init(void)

{

    /* 启动4个PWM定时器通道 */

    HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);  // 左上电机

    HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4);   // 左下电机

    HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);  // 右上电机

    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);  // 右下电机

 

    /* 初始化电机速度并启动 */

    motorLeftTop.speed = 0;

    motorLeftBottom.speed = 0;

    motorRightTop.speed = 0;

    motorRightBottom.speed = 0;

    Inf_Motor_AllMotorsWork();

}  

 

 

 

关键点:

- 使用STM32 HAL库的 HAL_TIM_PWM_Start 函数启动四个定时器通道

- 每个电机对应独立的定时器和通道

- 初始化时将所有电机速度设为0(安全启动)

 

 

2.2 单电机速度控制

void Inf_Motor_SetSpeed(Motor_Struct *motor)
{
    /* 速度限幅保护(0-1000) */
    motor->speed = LIMIT(motor->speed, 0, 1000);

    /* 根据电机位置选择对应PWM通道 */
    if(motor->location == LEFT_TOP) {
        __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, motor->speed);
    }
    else if(motor->location == LEFT_BOTTOM) {
        __HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_4, motor->speed);
    }
    else if(motor->location == RIGHT_TOP) {
        __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_2, motor->speed);
    }
    else if(motor->location == RIGHT_BOOTTOM) {
        __HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_3, motor->speed);
    }
}

技术要点:

- 使用 LIMIT 宏实现速度限幅(0-1000

- 通过 __HAL_TIM_SetCompare 直接设置PWM占空比

- 采用位置标识区分不同电机

 

 

 2.3 全电机控制

void Inf_Motor_AllMotorsWork(void)
{
    /* 统一设置所有电机速度 */
    Inf_Motor_SetSpeed(&motorLeftTop);
    Inf_Motor_SetSpeed(&motorLeftBottom);
    Inf_Motor_SetSpeed(&motorRightTop);
    Inf_Motor_SetSpeed(&motorRightBottom);
}

特点:

- 提供批量设置接口

- 确保多个电机同步更新

 

 

三、 设计亮点

 

1. 硬件抽象设计 :

   - 将电机控制抽象为独立模块

   - 通过 Motor_Struct 结构体封装电机属性

2. 安全机制 : 

   - 启动时自动归零

   - 强制速度限幅

3. 可扩展性 :

   - 清晰的接口设计

   - 方便支持更多电机

 

四、 总结

该电机控制模块展示了如何通过STM32定时器实现精准的PWM控制,为无人机飞控提供了可靠的执行器接口。模块化设计和安全机制使其具有良好的工程实用价值。

 

posted @ 2025-04-22 13:16  写个博客玩玩  阅读(204)  评论(0)    收藏  举报