三相直流无刷电器驱动器(BLDC)

该开源项目使用STM32F103C6T6A微控制器,通过主控与驱动分离的方式控制三相无刷直流电机。已验证霍尔传感器有感方案,采用六步换相方法,并利用HALL中断进行换相位控制。硬件包括主控板、驱动板和按键板,软件基于裸机开发,采用分时调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三相无刷直流电机驱动设计

在这里插入图片描述

说明
  1. 所有的硬件和代码已经开源,请移步代码开源连接
  2. 首先这个项目这个是自己学习的时候做的,目前已经验证霍尔有感方案,其他的还没验证。
  3. 如果当中存在问题,欢迎评论区一起讨论。
介绍

stm32直流电机控制

  • 采用STM32F103C6T6A作为主控
  • 主控与驱动分离
  • 采用三相逆变桥电路
  • 前级采用栅极驱动MOS,自带闭锁
  • 驱动板可适配有感,无感方案
项目简介
  在本项目中。采用主控与驱动分离的方式。其大致框图如下所示。

在这里插入图片描述

一共分为三块板子,分别为BLDC_Core板(主控板)、BLDC_Drive板(驱动板)、KEY板(按键板)。每个板子之间用SH1.0的线束进行连接,目前已经验证有感方案HALL换相无问题。其满载电机空转整个系统800mA。

六步法

实际上三相直流无刷电机可以理解为采用交流电来控制,而在驱动板当中的逆变桥就是来产生交流电的。在最常用的BLDC驱动中,比较常用且简单的就是采用六步换相来驱动电机。而这种方法可以称为6步法

六步法中的三相电机每次只有两组绕组有电流通过,产生磁场。为了让电机旋转,一般按照Q1Q2—Q2Q3—Q3Q4—Q4Q5—Q5Q6—Q6Q1的顺序依次导通功率开关管。下图是逆变器的结构。

在这里插入图片描述

HALL换相位法

在本设计当中,采用外部中断来获取HALL值,当电机旋转时,会触发HALL中断,在中断中读取HALL的值,根据实际的值来进行换相位,就能够驱动电机。下表是一版直流无刷电机的换相表。

在这里插入图片描述

根据我们的换相表,就能以此设计出六步换相的程序。以正转为例,我们便可以设计出如下程序。其中hall_state是获取到的霍尔的值。本设计中:上管调制,下管驱动。

switch (hall_state)
        {
            case 1:
                HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3);//U+
                HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_2);//V+
                HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_1);//W+
                UL_OFF;VL_OFF;WL_ON;//下管
                break;
            case 2:
                HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_3);//U+
                HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);//V+
                HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_1);//W+
                UL_ON;VL_OFF;WL_OFF;//下管
            break;
            case 3:
                HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_3);//U+
                HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);//V+
                HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_1);//W+
                UL_OFF;VL_OFF;WL_ON;//下管
            break;
            case 4:
                HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_3);//U+
                HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_2);//V+
                HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);//W+
                UL_OFF;VL_ON;WL_OFF;//下管
            break;
            case 5:
                HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3);//U+
                HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_2);//V+
                HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_1);//W+
                UL_OFF;VL_ON;WL_OFF;//下管
            break;
            case 6:
                HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_3);//U+
                HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_2);//V+
                HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);//W+
                UL_ON;VL_OFF;WL_OFF;//下管
            break;
            
            default:
                Motor_Stop();//电机停转
                break;
        }

原理图

下方给出了本设计当中的原理图。

BLDC_Drive原理图

在这里插入图片描述

BLDC_Core原理图

原理图2

PCB

下方给出了本设计当中的PCB。

BLDC_Drive的PCB

在这里插入图片描述

BLDC_Core的PCB

在这里插入图片描述

渲染图

下方给出了本设计当中的渲染图。

BLDC_Drive的渲染图

BLDC_Core的渲染图

在这里插入图片描述

软件架构

在软件框架上主要采用了裸机开发,适用了分时调度,采用定时器2来产生1MS的时基标志位。通过这个标志位来完成调度,具体调度部分代码可参考User_Scheduler.c文件。在换相控制方面在HALL中断当中完成,电机驱动部分代码可参考hall.c和motor.c文件。

参与贡献
基于L6234PD的三相无刷电机驱动板描述: 电路城(www.cirmall.com)本次分享的是国外开源设计的BLDC 电机驱动器电路设计,由3个高功率半桥组成,可输出高达5A峰值,或4A连续输出(取决于散热器)。它的底部设计有一个大的铜接地平面,作为散热片。如果单独的铜层不能满足驱动IC散热要求,则三相直流 BLDC 电机驱动器板的底部可以固定在外部散热片上。电路板上放大绕组电流,并用于感测反电动势电压以辅助换向。请注意,该驱动程序不能独立工作,需要微控制器至少输出3个PWM信号和3个使能信号,以适当的顺序使三相直流 BLDC电机运行。 基于L6234PD的三相无刷电机驱动板实物展示: 基于L6234PD的三相无刷电机驱动板特性: 3个半桥驱动通道 4A连续,5A峰值输出电流(取决于散热器) 输入电压范围:7-14 VDC(受输入电容电压限制) 反向EMF感应和参考电阻分压器 在电源轨上使用非常低的ESR电容来处理在驱动高电流电机时预期的高纹波电流 绕组电流检测电阻,带放大器升压输出信号 可选的电流循环二极管,以提高效率 所有微控制器I / O的ESD保护 驱动器模具与PCB铜层具有良好的热耦合(这可能使驱动IC的手工焊接非常困难) 0.200“螺钉端子块,或0.156”Molex接头,用于高电流连接 电路设计重要信号的测试点 基于L6234PD的三相直流 BLDC 电机驱动器附件内容,见电路城(www.cirmall.com)“相关文件”下载:
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值