| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 项目实战|基于STM32的无刷电机开环控制 -> 正文阅读 |
|
[嵌入式]项目实战|基于STM32的无刷电机开环控制 |
无刷电机概述无刷直流电机(Brushless Direct Current Motor,简称BLDCM)由电动机主体和驱动器组成, 是一种典型的机电一体化产品。 无刷电机是指无电刷和换向器 (或集电环)的电机,又称无换向器电机。这是模型中除了有刷电机以外用的最多的一种电机, 无刷直流电机不使用机械的电刷装置,采用方波自控式永磁同步电机,与有刷电机相比,它将转子和定子交换, 即无刷电机中使用电枢绕组作为定子,使用钕铁硼的永磁材料作为转子,以霍尔传感器取代碳刷换向器, 性能上相较一般的传统直流电机有很大优势。 无刷电机的特点有刷电机示意图如下所示: 无刷电机示意图如下所示: 无刷直流电机(EN: Brushless Direct Current Motor),克服了有刷直流电机的先天性缺陷,以电子换向器取代了机械换向器,所以无刷直流电机既具有直流电机良好的调速性能等特点,又具有交流电机结构简单、无换向火花、运行可靠和易于维护等优点。无刷直流电机的实质是直流电源输入,采用电子逆变器将直流电转换为交流电,有转子位置反馈的三相交流永磁同步电机。性能上相较一般的传统直流电机有很大优势,是当今最理想的调速电机。 无刷电机的KV值及转速无刷电机的实际转速=KV值*工作电压。KV的物理意义,就是无刷电机在1V工作电压下每分钟的转速。KV值与匝数呈反比例关系。 注意:无刷直流电机的转速与电压呈正比关系,电机的转速会随着电压上升而线性上升。 无刷电机的工作原理无刷电机的本质是转子、定子因为磁场的原因发生吸引、排斥,从而使转子绕着定子发生转动,从而带动电机整体移动。无刷直流电机相数多为三相,常使用“三相星形联结的二二导通方式”。 在A端上电源正极,在B端接电源负极,那么可以在线圈A和B中可以产生如图所示的磁场,因为磁场强度是矢量, 所以由磁场BB和BA可以得到合成磁场B。此时转子就会保持在图中方向。 而当A、B、C三相按一定顺序通电时,会出现以下情况: 通过以上循环,我们就能实现无刷电机(转子)的转动。 提到循环通电,我们必须使用一种叫做三相六臂全桥的驱动电路,利用MOS管的导通与关闭,我们就能实现对不同相的供电与断电。其原理图如下所示: 控制方法概述控制BLDC时,我们需要知道转子磁极的位置,从而根据检测的位置进行换相通电。但由于项目需要,我们使用更高精度的编码器对电机位置进行反馈,故我们首先使用开环控制(无霍尔传感器/无反电动势的方法)进行测试。 那么具体怎么实现开环的控制呢,和杨工讨论后,得到了使用PWM波+死区取反的方式来进行MOS管的控制,进而实现纯开环的电机控制。 通过改变单片机的定时器周期来调整频率进而控制速度。主要采用三相六通道的PWM波形式来进行电机驱动,我们的PWM波采取的是SPWM波的形式。所谓SPWM波即通过脉冲调制而使方波变为类正弦波,这样做是为了使得电机转动更均匀。 硬件设计
引脚接口如上图所示,其中高级定时器TIM1的CH1,CH2,CH3(含对应的N)通道用于控制三相电机的三相;TIM3的CH1和CH2通道用于接收编码器传来的信号;ENC_Z是开启了外部中断的普通IO口,用于接收编码器的Z相零点信号。而对于LED灯等其它硬件部分,为节省篇幅按下不表。 关键代码代码整体思路为:LED_1在开机后长亮,当电机换相时,LED_2闪烁两次。通过按两个按键来调节电机转速,KEY_1增速,KEY_2减速。LED和KEY的配置略去,在这里仅讨论电机控制。 控制电机采用的是TIM定时器的PWM生成模式,通过对三相输出相位角相差120°的PWM波来使电机能够按照我们的需求进行平稳转动。 关于TIM1的配置信息如下表所示:
在前文中,我们提到我们使用的是TIM1的CH1、CH2、CH3三个通道控制电机,那么为什么还设置了CH4 Pulse呢?这是因为我们需要一个时序信号来对三个通道进行协调,如果没有CH4的时序,我们很难恰好让3个通道按照120°相位差输出PWM波。 首先我们需要一个函数来改变定时器一个周期的脉冲数:
其中, 我们看看最重要的PWM中断服务函数:
其中的
此外,
如何得到 至此,大部分控制代码都已经完成了,但对于HAL库来说,它会帮助我们使能GPIO口、完善相关参数配置,但不会帮我们开启功能。所以我们如果要开启功能,需要进行以下操作:
最后,补上一个令电机暂停(停止)的函数,该方法是让电机缓停止,即不会立刻停止(这样可能会损坏电机),而是不给电,让其自动停止。 一些补充知识
待解决的问题1、电机缓启动的代码还没有写; 2、电机速度调整还没有实现; 3、电机闭环控制还没有实现。 参考文献1、野火 - 电机开发应用实战指南 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 19:43:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |