基于STM32直流电机控制程序
基于STM32的直流电机PID调速系统设计

《计算机控制技术课程设计》题目:基于STM32的直流电机PID调速学院:计算机与电子信息学院专业:电气工程及其自动化班级:电气12-5 学号: 12034320515 姓名:任课教师:完成时间: 2015.11.18——2015.12.30基于STM32的直流电机PID调速摘要电机转速控制在运动控制系统中占有至关重要的地位,本设计将电机转速控制作为研究对象;以PID为基本控制算法,STM32F103单片机为控制核心,产生受PID算法控制的PWM脉冲实现对直流电机转速的控制。
同时利用光电传感器将电机速度转换成脉冲频率反馈到单片机中,实现转速闭环控制,达到转速无静差调节的目的。
在系统中采320×240TFTLCD显示器作为显示部件,通过4个按键通过界面切换方式设置P、I、D、V四个参数和正反转控制,启动后可以通过显示部件了解电机当前的运行状态和系统的CPU温度。
该系统控制精度高,具有很强的抗干扰能力。
关键词:PID 直流电机反馈调节Based on the STM32 PID speed control of dc motorAbstractMotor speed control occupies a crucial position in the motion control system, the design of the motor speed control for the study; in the basic PID control algorithm, STM32F103 microcontroller core, by the PID control algorithm generates a PWM pulse to achieve DC speed control. At the same time the use of photoelectric sensors to convert the motor speed to pulse frequency feedback to the microcontroller to achieve closed-loop speed control, to speed static error adjustment purposes. Mining 320 ×240TFTLCD monitor as a display unit in the system, through four key settings P, I, D, V four parameters and reversing control through the interface switching mode, start to understand the current state of the motor and the system through the display unit CPU temperature. The system control and high precision, has a strong anti-jamming capability.Keywords: PID DC motor feedback regulation目录1. 绪论 (1)1.1研究背景与意义 (1)1.2本文主要研究方法 (1)2. 设计方案与论证 (2)2.1系统设计方案 (2)2.2控制器模块设计方案 (2)3. 系统硬件电路设计 (3)3.1整体电路设计 (3)3.1.1整体理论 (3)3.1.2整体简单结构图和资源分配图 (3)3.2最小单片机系统设计 (4)3.2.1STM32F103复位电路 (6)3.2.2电源电路 (6)3.3电机驱动电路设计 (7)3.4光电码盘编码器电路设计 (7)3.5显示电路设计 (8)3.6按键电路设计 (10)4. 系统软件设计 (10)4.1PID算法 (10)4.2PID参数整定方法 (11)4.3电机速度采集算法 (12)4.4程序流程图 (12)5. 系统调试 (13)5.1软件调试 (13)5.2系统测试与分析 (14)6. 总结与展望 (15)参考文献 (16)附录一部分程序源程序 (17)附录二系统界面实物图和PCB图 (20)1.绪论1.1研究背景与意义电动机在现代的工业中,是主要的驱动设备,尤其是直流电动机,由于它的平滑调速性和结构上的简单,使其成为许多电器,如洗衣机,电梯等的驱动。
STM32直流电机控制程序简明教程

STM32直流电机控制程序简明教程1.硬件准备首先,我们需要准备好所需的硬件:-STM32开发板-直流电机-驱动器电路,如L298N或L293D-电源供应器(一般是12V直流电源)2.硬件连接将STM32开发板与驱动器电路连接,并将直流电机连接到驱动器电路上。
确保连接正确并牢固。
3.硬件初始化打开STM32开发环境(如Keil),创建一个新的工程。
然后,将需要的库文件添加到工程中,并根据开发板型号选择正确的芯片库。
接下来,配置和初始化GPIO引脚,用于连接和控制驱动器电路。
4.设置PWM输出利用STM32的PWM功能,我们可以产生一个周期性的方波信号来控制驱动器电路。
根据需要,配置一个或多个PWM输出引脚,并设置PWM的频率和占空比。
5.编写控制程序在主函数中,编写控制程序,以实现所需的电机控制功能。
以下是一些常见的功能:-正转和反转方向控制:使用GPIO引脚将方向信号发送至驱动器电路。
-速度控制:根据需要,使用PWM输出调整电机的速度。
-停止和启动:通过打开和关闭PWM输出,可以停止和启动电机。
7.测试和调试将电机供电,并通过调整控制程序中的参数,测试电机的正转、反转、速度控制等功能。
根据需要,可以使用调试工具来调试和优化程序。
总结:通过以上几个步骤,我们可以使用STM32控制直流电机。
请记住,在实际应用中,还可能需要处理其他问题,例如加速和减速控制、电机保护等。
希望这个简明教程能够帮助您入门直流电机控制,并且能够在您的项目中发挥作用。
如果您需要更详细的信息,建议参考STM32的官方文档和相关资料。
基于STM32的直流电机PWM调速控制

(《嵌入式系统及接口技术》课程大作业)课程名称:嵌入式系统及接口技术班级专业:姓名学号:指导老师:电动摩托车控制器中的电机PWM调速摘要:随着“低碳”社会理念的深入,新型的电动摩托车发展迅速,逐渐成为人们主要的代步工具之一,由于直流无刷电机的种种优点,在电动摩托车中也得到了广泛应用,因此,本文控制部分主要介绍一种基于STM32F103芯片的新型直流无刷电机调速控制系统,这里主要通过PWM技术来进行电机的调速控制,且运行稳定,安全可靠,成本低,具有深远的意义。
1.总体设计概述1.1 直流无刷电机及工作原理直流无刷电机(简称BLDCM),由于利用电子换向取代了传统的机械电刷和换向器,使得其电磁性能可靠,结构简单,易于维护,既保持了直流电机的优点又避免了直流电机因电刷而引起的缺陷,因此,被广泛应用。
另外,由于直流无刷电机专用控制芯片价格昂贵,本文介绍了一种基于STM32的新型直流无刷电机控制系统,既可降低直流无刷电机的应用成本,又弥补了专用处理器功能单一的缺点,具有重要的现实意义和发展前景。
工作原理:直流无刷电机是同步电机的一种,其转子为永磁体,而定子则为三个按照星形连接方式连接起来的线圈,根据同步电机的原理,如果电子线圈产生一个旋转的磁场,则永磁体的转子也会随着这个磁场转动因此,驱动直流无刷电机的根本是产生旋转的磁场,而这个旋转的磁场可以通过调整A、B、C三相的电流来实现,其需要的电流如图1所示随着我国经济和文化事业的发展,在很多场合,都要求有直流电机PWM调速系统来进行调速,诸如汽车行业中的各种风扇、刮水器、喷水泵、熄火器、反视镜、宾馆中的自动门、自动门锁、自动窗帘、自动给水系统、柔巾机、导弹、火炮、人造卫星、宇宙飞船、舰艇、飞机、坦克、火箭、雷达、战车等场合。
1.2 总体设计方案总体设计方案的硬件部分详细框图如图1所示。
图1 总体方案系统框图该方案主要运行状况如下:通过摩托车车把的转动来改变其机械位置,然后这个变量通过ADC 转换后,传送其调速信号给STM32F103,另外,霍尔传感器将其对电机速度的检测信号也传送给STM32,在STM32中,首先根据ADC 的值改变PWM 波形,并且与霍尔传感器的检测信号进行叠加,最终输出叠加后的PWM 波形给功率驱动电路,从而驱动电机并对其进行速度的控制和调节。
STM32直流电机控制程序简明教程

STM32直流电机控制程序简明教程在本教程中,我们将介绍如何在STM32微控制器上控制直流电机。
我们将使用PWM信号以及相关的GPIO引脚来控制直流电机的转速和方向。
以下是一个简明的步骤指南。
步骤1:准备工作首先,我们必须准备一个STM32开发板,例如STM32F103C8T6、确保你已经安装了相关的开发环境,包括STM32CubeMX和MDK-ARM等。
在开始编程之前,请确保你理解基本的STM32寄存器和寄存器映射。
步骤2:连接硬件将直流电机连接到STM32开发板的GPIO引脚。
通常情况下,直流电机需要连接到H桥驱动器以控制转向。
你可以参考直流电机的数据手册来了解如何正确地连接到H桥驱动器和STM32开发板。
步骤3:配置STM32微控制器使用STM32CubeMX配置STM32微控制器的GPIO引脚和定时器,以便生成PWM信号。
选择合适的时钟源和预分频器来获得所需的PWM频率。
记住,PWM信号的频率应该比直流电机的转速控制要求高得多。
步骤4:编写控制程序在MDK-ARM中创建一个新的C文件,并编写控制直流电机的程序。
使用GPIO库和定时器库来配置和控制GPIO引脚和定时器。
在程序中,我们可以通过调整PWM的占空比来改变直流电机的转速和方向。
以下是一个简单的示例代码,用于将直流电机以不同的速度顺时针和逆时针旋转:```c#include "stm32f1xx.h"//定义PWM周期和占空比的最大值和最小值#define MAX_PWM_PERIOD 1000#define MIN_PWM_PERIOD 100//定义PWM的占空比和周期变量uint32_t pwm_period = MAX_PWM_PERIOD;uint32_t pwm_duty = MAX_PWM_PERIOD / 2;int main(void)//初始化GPIO引脚RCC->APB2ENR,=RCC_APB2ENR_IOPBEN;//使能GPIOB时钟GPIOB->CRL&=~(GPIO_CRL_MODE0,GPIO_CRL_CNF0);//将PB0设置为输出GPIOB->CRL,=GPIO_CRL_MODE0_0;//初始化定时器RCC->APB1ENR,=RCC_APB1ENR_TIM4EN;//使能TIM4的时钟TIM4->PSC=72-1;//设置预分频器72,得到1MHz的计数频率TIM4->ARR = pwm_period - 1; // 设置PWM周期TIM4->CCR1 = pwm_duty; // 设置PWM占空比//配置TIM4通道1为PWM模式1TIM4->CCMR1,=TIM_CCMR1_OC1M_2,TIM_CCMR1_OC1M_1; TIM4->CCMR1&=~TIM_CCMR1_OC1M_0;TIM4->CCER,=TIM_CCER_CC1E;//使能通道1//开启定时器TIM4->CR1,=TIM_CR1_CEN;while(1)//逐渐增加占空比,实现顺时针旋转for(uint32_t i = 0; i < pwm_period; i++)TIM4->CCR1=i;delay_ms(10);}//延时delay_ms(1000);//逐渐减小占空比,实现逆时针旋转for(uint32_t i = pwm_period; i > 0; i--)TIM4->CCR1=i;delay_ms(10);}//延时delay_ms(1000);}//延时函数void delay_ms(uint32_t ms)for (volatile uint32_t i = 0; i < ms * 1000; i++);```在上面的示例代码中,我们使用TIM4定时器和PB0引脚来生成PWM信号,并控制直流电机的转速和方向。
基于STM32的电动摩托车无刷直流电机控制器的设计-毕业论文

2015届毕业生毕业论文题目: 基于STM32的电动摩托车无刷直流电机控制器的设计2015 年5月20日摘要电动摩托车具有零排放、低噪声等许多优点,是现代绿色环保交通工具,由于比较方便、快捷,所以许多人选择它作为自己的出行工具,成为大中城市公共交通的补充。
电动摩托车上一般用的都是无刷直流电机,所以电动摩托车控制器的质量非常重要。
本文首先介绍了无刷直流电机结构和换向原理,紧接着介绍了波脉宽调速原理直和流无刷电机的工作原理。
然后做相关的电路图设计,主控芯片的选择、电流检测电路、霍尔位置传感器信号检测电路、电源转换与电压采样电路、电机驱动电路设计、刹车和调速电路设计、STM32 芯片无刷电机控制接口电路,这些电路图设计是控制器的关键部分。
接着叙述了软件部分的设计,主要包括:主程序的设计、过流保护、欠压保护、电制动程序等。
通过输入程序可以改变PWM波的占空比,所以电枢电压的大小也可以调节,进而调节转速。
最后采用STM32单片机为控制核心,设计了电流检测保护电路、位置信号检测电路、电源转换电路、欠压保护电路等,由于单片机成本低、功能强大、运算能力强等优点,提高了控制系统的可靠性的同时,也降低了控制成本。
我们不仅完成电机控制器的设计,同时也加深了相关知识的理解和联系。
关键词:无刷直流电机、stm32、电路设计、目录1、绪论 (3)1.1电动车的现状 (3)1.2研究电动车的意义 (4)1.3本论文的主要工作 (4)2无刷直流电机控制系统的设计 (5)2.1. 直流无刷电机的结构 (5)2.2 直流无刷电机的工作原理和控制方法 (6)2.3 单片机选型 (8)2.4 无刷直流电机选型 (11)3系统硬件电路的设计 (13)3.1硬件系统总体结构设计 (13)3.2电源电路设计 (13)3.3无刷直流电机霍尔位置传感器接口电路设计 (14)3.4 刹车和调速电路设计 (15)3.5过流保护电路 (16)3.6三相全桥驱动电路 (17)3.7 过压、欠压保护电路 (18)4系统软件设计 (19)4.1 系统整体软件设计 (20)4.2直流无刷电机控制的软件设计 (22)4.3系统各部分功能在软件中的实现 (24)4.4 STM32检测霍尔信号和输出PWM软件设计 (25)5.总结和展望 (27)致谢 (29)参考文献 (30)附录 (31)1、绪论1.1电动车的现状随着我国经济的快速发展和城市化进程的加快,机动车保有量逐渐增加,环境污染也因此越来越严重,所以寻找低排放的技术和可再生资源称为一个重要课题。
基于STM32的直流电机PID调速系统设计

基于STM32的直流电机PID调速系统设计一、引言直流电机调速系统是现代工业自动化系统中最常用的电机调速方式之一、它具有调速范围广、响应快、控制精度高等优点,被广泛应用于电力、机械、石化、轻工等领域。
本文将介绍基于STM32单片机的直流电机PID调速系统的设计。
二、系统设计直流电机PID调速系统主要由STM32单片机、直流电机、编码器、输入和输出接口电路等组成。
系统的设计流程如下:1.采集反馈信号设计中应通过编码器等方式采集到反馈信号,反应电机的转速。
采集到的脉冲信号经过处理后输入给STM32单片机。
2.设计PID算法PID调节器是一种经典的控制算法,由比例(P)、积分(I)和微分(D)三个部分组成,可以根据实际情况调整各个参数的大小。
PID算法的目标是根据反馈信号使电机达到期望的转速。
3.控制电机速度根据PID算法计算出的偏差值,通过调节电机的占空比,实现对电机速度的控制。
当偏差较大时,增大占空比以加速电机;当偏差较小时,减小占空比以减速电机。
4.界面设计与控制设计一个人机交互界面,通过该界面可以设置电机的期望转速以及其他参数。
通过输入接口电路将相应的信号输入给STM32单片机,实现对电机的远程控制。
5.系统保护在电机工作过程中,需要保护电机,防止出现过流、超速等问题。
设计一个保护系统,能够监测电机的工作状态,在出现异常情况时及时停止电机工作,避免损坏。
6.调试与优化对系统进行调试,通过实验和测试优化PID参数,以获得更好的控制效果。
三、系统实现系统实现时,首先需要进行硬件设计,包括STM32单片机的选型与外围电路设计,以及输入输出接口电路的设计。
根据实际情况选择合适的编码器和直流电机。
接着,编写相应的软件代码。
根据系统设计流程中所述,编写STM32单片机的控制程序,包括采集反馈信号、PID算法实现、控制电机速度等。
最后,进行系统调试与优化。
根据系统的实际情况,调试PID参数,通过实验和测试验证系统的性能,并进行优化,以实现较好的控制效果。
基于STM32的直流电机伺服控制系统

基于STM32的直流电机伺服控制系统作者:郑凯强赖惠鸽吴凤民来源:《科技风》2016年第18期摘要:本文设计了一种以STM32VET6微控制器作为控制核心的有刷直流电机伺服驱动器。
系统以光电编码器为速度与位移传感器且带有电流采样电路,还具有基于PWM和H桥的电机驱动电路,并通过数字PID控制策略,实现直流电机的三环控制。
实际测试表明,系统具有控制精确、稳定性好和结构简单等特点。
关键词:STM32;伺服驱动器;PID有刷直流电机作为最早出现的电机因其结构简单性能良好得到了广泛的应用。
随着对控制精度要求的提高,传统的控制方法已经无法达到控制精度的需求。
本文利用STM32VET6微控制器设计了一种H桥直流电机伺服驱动器,实现了有刷直流电机的速度、位移、电流三环控制。
1 系统整体结构伺服驱动器采用STM32VET6微控制器为核心控制芯片,主频为72MHz,芯片内部集成USART与CAN控制器,具有2 个12 位模数转换器,8个定时器,满足采样与定时的要求,外接各类扩展模块,共同构成伺服驱动器整体。
伺服驱动器整体架构图如图1所示。
2 驱动器硬件结构驱动器的硬件结构主要分为两大部分。
上板控制电路用于接收光电编码器的反馈信息运行控制算法,下板则将上板产生的PWM信号进行功率放大用于驱动电机运行。
1)通信模块。
为了提高该伺服驱动器的通用性与实用性,使驱动器具有极强的扩展性能,该驱动器采用双通信方式。
利用MAX232芯片进行串口通信,82C250芯片进行CAN通信,不仅使驱动器便于与PC机软件进行测试以调整控制参数优化驱动器性能,还使驱动器满足各种工业场合的使用需求。
2)电流采样模块。
要实现电动机的电流环控制,则必须先对电机的电流进行采样。
串电阻检测电流的电路结构清晰,成本低,实时性好,精度较高。
所以本驱动器采用串电阻检测电流方式,通过STM32芯片的ADC模块读取数据,将获得的电流数据通过控制器的PID算法进行调整以达到精确的电流输出。
基于stm32的无刷直流电机控制系统设计

基于STM32的无刷直流电机控制系统设计随着现代工业技术的不断发展,无刷直流电机在各行各业中得到了广泛的应用。
无刷直流电机具有结构简单、效率高、寿命长等优点,因此在工业控制系统中得到了广泛的应用。
为了更好地满足工业生产的需求,研发出一套基于STM32的无刷直流电机控制系统,对于提高工业生产效率、减少人力成本具有非常重要的意义。
1. 系统设计需求1.1 电机控制需求电机控制系统需要能够实现对无刷直流电机的启动、停止、加速、减速等控制功能,以满足不同工业生产环境下的需求。
1.2 控制精度要求控制系统需要具有较高的控制精度,能够实现对电机的精确控制,提高生产效率。
1.3 系统稳定性和可靠性系统需要具有良好的稳定性和可靠性,确保在长时间运行的情况下能够正常工作,减少故障率。
1.4 节能环保控制系统需要具有节能环保的特点,能够有效降低能耗,减少对环境的影响。
2. 系统设计方案2.1 选用STM32微控制器选用STM32系列微控制器作为控制系统的核心,STM32系列微控制器具有性能强大、低功耗、丰富的外设接口等优点,能够满足对控制系统的各项要求。
2.2 传感器选型选用合适的传感器对电机运行状态进行监测,以实现对电机的精确控制,提高控制系统的稳定性和可靠性。
2.3 驱动电路设计设计合适的驱动电路,能够实现对无刷直流电机的启动、停止、加速、减速等控制,并且具有较高的控制精度。
2.4 控制算法设计设计优化的控制算法,能够实现对电机的精确控制,提高控制系统的稳定性和可靠性,同时具有节能环保的特点。
3. 系统实现与测试3.1 硬件设计按照系统设计方案,完成硬件设计,并且进行相应的电路仿真和验证。
3.2 软件设计编写控制系统的软件程序,包括控制算法实现、传感器数据采集和处理、驱动电路控制等方面。
3.3 系统测试对设计好的控制系统进行各项功能测试,包括启动、停止、加速、减速等控制功能的测试,以及系统稳定性和可靠性的测试。
基于STM32的直流电机PID调速系统设计

《计算机控制技术课程设计》题目:基于STM32的直流电机PID调速学院:计算机与电子信息学院专业:电气工程及其自动化班级:电气12-5 学号:姓名:任课教师:完成时间:——基于STM32的直流电机PID调速摘要电机转速控制在运动控制系统中占有至关重要的地位,本设计将电机转速控制作为研究对象;以PID为基本控制算法,STM32F103单片机为控制核心,产生受PID算法控制的PWM脉冲实现对直流电机转速的控制。
同时利用光电传感器将电机速度转换成脉冲频率反馈到单片机中,实现转速闭环控制,达到转速无静差调节的目的。
在系统中采320×240TFTLCD显示器作为显示部件,通过4个按键通过界面切换方式设置P、I、D、V四个参数和正反转控制,启动后可以通过显示部件了解电机当前的运行状态和系统的CPU温度。
该系统控制精度高,具有很强的抗干扰能力。
关键词:PID 直流电机反馈调节Based on the STM32 PID speed control of dc motorAbstractMotor speed control occupies a crucial position in the motion control system, the design of the motor speed control for the study; in the basic PID control algorithm, STM32F103 microcontroller core, by the PID control algorithm generates a PWM pulse to achieve DC speed control. At the same time the use of photoelectric sensors to convert the motor speed to pulse frequency feedback to the microcontroller to achieve closed-loop speed control, to speed static error adjustment purposes. Mining 320 × 240TFTLCD monitor as a display unit in the system, through four key settings P, I, D, V four parameters and reversing control through the interface switching mode, start to understand the current state of the motor and the system through the display unit CPU temperature. The system control and high precision, has a strong anti-jamming capability.Keywords: PID DC motor feedback regulation目录1. 绪论 (1)研究背景与意义 (1)本文主要研究方法 (1)2. 设计方案与论证 (2)系统设计方案 (2)控制器模块设计方案 (2)3. 系统硬件电路设计 (3)整体电路设计 (3)整体理论 (3)整体简单结构图和资源分配图 (3)最小单片机系统设计 (4)STM32F103复位电路 (6)电源电路 (6)电机驱动电路设计 (7)光电码盘编码器电路设计 (7)显示电路设计 (8)按键电路设计 (10)4. 系统软件设计 (10)PID算法 (10)PID参数整定方法 (11)电机速度采集算法 (12)程序流程图 (12)5. 系统调试 (13)软件调试 (13)系统测试与分析 (14)6. 总结与展望 (15)参考文献 (16)附录一部分程序源程序 (17)附录二系统界面实物图和PCB图 (20)1.绪论1.1研究背景与意义电动机在现代的工业中,是主要的驱动设备,尤其是直流电动机,由于它的平滑调速性和结构上的简单,使其成为许多电器,如洗衣机,电梯等的驱动。
一种基于STM32的PID直流电机控制系统

为微分时间常量。
位置式 PID 算法是根据当前实际位置与要达到的预
期位置的偏差,进行 PID 控制。将每一次的误差进行累
加作为积分,其运算量大,每次输出均与过去的状态相
关,缺点是可能会引起大幅度超调。
1.2 增量式PID算法
增量式 PID 算法的表达式为
= ∆u (k )
Kp [e(k) − e(k
图2 硬件系统整体流程图
2.1 电机驱动模块L298N 本 文 选 用 L298N 为 驱 动 模 块, 其 电 路 中 包 含 有
两个 H 桥的高电压大电流双桥式驱动器。在使用中, STM32F103 配置的 PWM 输出引脚直接给该模块提供 变占空比的信号,方便控制。
其控制状态表见表 1。L298N 电机驱动模块可以实 现电机的调速与正反转,此次研究只使用其驱动一台二 相直流电机构成闭环调速系统,根据表 1 配置 IN1(输入) 与 IN2,对使能端输出 PWM 脉冲,即可实现变占空比 调速。
系统对电机的输出轴分别进行转速设定 , [13] 分别设定 了 190 rpm、220 rpm、250 rpm、280 rpm、310 rpm、 340 rpm、370 rpm、400 rpm、410 rpm、420 rpm、 430 rpm,实际测量结果如表 2,数据进行了误差计算。
表2 转速数据采集及误差计算
3 软件整体流程
此次研究以 Keil MDK 作为编译开发环境,软件部 分的重点是 PID 控制的处理。流程图如图 4,主要包括 主程序、PID 处理、外部中断、定时中断、PWM 的输 出和编码器的脉冲计数。
2.2 编码器测速模块 编码器为 AB 相增量式霍尔编码器,输出标准的方
波,STM32F103 自带的编码器模式可直接读取脉冲信 号,AB 相编码器的 A 相、B 相互相延迟四分之一周期 输出脉冲。如图 3 为编码器的输出波形,取 A 相、B 相 的上升沿和下降沿都作为脉冲,可以取得二倍频或四倍 频。四倍频采样可提高系统运算时的精确性。通过每 10 ms 读取处理一次编码器脉冲,可以测得电机速度和 处理控制,此次使用四倍频采样,有提高系统运算精确 性的优势。
基于STM32无位置传感器无刷直流电机控制器设计

基于STM32无位置传感器无刷直流电机控制器设计一、本文概述本文主要探讨了基于STM32无位置传感器无刷直流电机控制器的设计。
随着现代科技的不断进步,电机控制技术也在日益成熟。
无刷直流电机(Brushless DC Motor, BLDC)作为一种高效、低噪音的电机类型,被广泛应用于各种工业和消费电子产品中。
然而,传统的无刷直流电机控制器通常需要位置传感器来监测电机的运行状态,这不仅增加了系统的复杂性和成本,还可能因为传感器的故障或误差影响电机的控制效果。
针对这一问题,本文提出了一种基于STM32的无位置传感器无刷直流电机控制器设计方案。
该方案利用STM32微控制器强大的处理能力和灵活的编程接口,结合先进的电机控制算法,实现了对无刷直流电机的无位置传感器控制。
文章首先介绍了无刷直流电机的基本原理和控制方法,然后详细阐述了基于STM32的无位置传感器控制器的硬件和软件设计,包括电机驱动电路、电流采样电路、控制算法等关键部分。
通过实验验证了所设计的无位置传感器无刷直流电机控制器的有效性和可靠性,为无刷直流电机的无位置传感器控制提供了一种新的解决方案。
本文的研究不仅有助于推动无刷直流电机控制技术的发展,还可为相关领域的研究人员和工程师提供有益的参考和借鉴。
通过深入研究和不断优化无位置传感器无刷直流电机控制器的设计,有望进一步提高电机的控制精度和效率,降低系统成本和维护难度,推动无刷直流电机在更多领域的应用。
二、无刷直流电机基本原理无刷直流电机(Brushless Direct Current,简称BLDC)是一种采用电子换向器替代传统机械换向器的直流电机。
它利用电子换向技术,实现了电机的高效、低噪音、长寿命运行。
无刷直流电机通常由永磁体、定子、转子和电子控制器四部分组成。
无刷直流电机的基本工作原理是电磁感应和换向控制。
当电机定子上的线圈通电时,会产生一个旋转磁场。
这个旋转磁场会与转子上的永磁体相互作用,从而使转子产生旋转力矩。
基于STM32的直流电机PID调速系统设计.

《计算机控制技术课程设计》题目:基于STM32的直流电机PID调速学院:计算机与电子信息学院专业:电气工程及其自动化班级:电气12-5 学号: 12034320515 姓名:任课教师:完成时间: 2015.11.18——2015.12.30基于STM32的直流电机PID调速摘要电机转速控制在运动控制系统中占有至关重要的地位,本设计将电机转速控制作为研究对象;以PID为基本控制算法,STM32F103单片机为控制核心,产生受PID算法控制的PWM脉冲实现对直流电机转速的控制。
同时利用光电传感器将电机速度转换成脉冲频率反馈到单片机中,实现转速闭环控制,达到转速无静差调节的目的。
在系统中采320×240TFTLCD显示器作为显示部件,通过4个按键通过界面切换方式设置P、I、D、V四个参数和正反转控制,启动后可以通过显示部件了解电机当前的运行状态和系统的CPU温度。
该系统控制精度高,具有很强的抗干扰能力。
关键词:PID 直流电机反馈调节Based on the STM32 PID speed control of dc motorAbstractMotor speed control occupies a crucial position in the motion control system, the design of the motor speed control for the study; in the basic PID control algorithm, STM32F103 microcontroller core, by the PID control algorithm generates a PWM pulse to achieve DC speed control. At the same time the use of photoelectric sensors to convert the motor speed to pulse frequency feedback to the microcontroller to achieve closed-loop speed control, to speed static error adjustment purposes. Mining 320 ×240TFTLCD monitor as a display unit in the system, through four key settings P, I, D, V four parameters and reversing control through the interface switching mode, start to understand the current state of the motor and the system through the display unit CPU temperature. The system control and high precision, has a strong anti-jamming capability.Keywords: PID DC motor feedback regulation目录1. 绪论 (1)1.1研究背景与意义 (1)1.2本文主要研究方法 (1)2. 设计方案与论证 (2)2.1系统设计方案 (2)2.2控制器模块设计方案 (2)3. 系统硬件电路设计 (3)3.1整体电路设计 (3)3.1.1整体理论 (3)3.1.2整体简单结构图和资源分配图 (3)3.2最小单片机系统设计 (4)3.2.1STM32F103复位电路 (6)3.2.2电源电路 (6)3.3电机驱动电路设计 (7)3.4光电码盘编码器电路设计 (7)3.5显示电路设计 (8)3.6按键电路设计 (10)4. 系统软件设计 (10)4.1PID算法 (10)4.2PID参数整定方法 (11)4.3电机速度采集算法 (12)4.4程序流程图 (12)5. 系统调试 (13)5.1软件调试 (13)5.2系统测试与分析 (14)6. 总结与展望 (15)参考文献 (16)附录一部分程序源程序 (17)附录二系统界面实物图和PCB图 (20)1.绪论1.1研究背景与意义电动机在现代的工业中,是主要的驱动设备,尤其是直流电动机,由于它的平滑调速性和结构上的简单,使其成为许多电器,如洗衣机,电梯等的驱动。
基于STM32直流电机控制程序

/* TIM2_CH3 toggling with frequency = 732.4 Hz */
if (TIM_GetITStatus(TIM2, TIM_IT_CC3) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_CC3);
capture = TIM_GetCapture3(TIM2);
TIM_OC1Init(TIM4,&TIM_OCInitStructure); //PWM_L初始化
TIM_OC1PreloadConfig(TIM4,TIM_OCPreload_Disable); //改变点空比后,立即产生效应
TIM_OCInitStructure.TIM_Pulse=PWM_R; //左轮PWM的占空比
在梦里,她吃着她的乳儿的婚酒,
坐在辉煌的结彩的堂上,
而她的娇美的媳妇亲切的叫她“婆婆”
…………
大堰河,深爱她的乳儿!
大堰河,在她的梦没有做醒的时候已死了。
她死时,乳儿不在她的旁侧,
她死时,平时打骂她的丈夫也为她流泪,
五个儿子,个个哭得很悲,
她死时,轻轻地呼着她的乳儿的名字,
大堰河,已死了,
她死时,乳儿不在她的旁侧。
STM32直流减速电机控制
直流减速电机控制中,最常用的方法就是通过PWM来控制直流电机的转速。在控制小车走直线的过程中,需要两者的转速一置(如果要走得很直,还需要在短时间内保证两者的行程大致相当,这可以用PID算法来控制,以后的文章中会专门叙述)。
因此,在检测到两者转速不一样时,需要动态调整其中一个或两个轮子的PWM的点空比(简单点的就以一个轮为基准,调整另外一个轮子即可;如果以一个固定的标准的话,需要调整两个轮子的PWM占空比)。
基于STM32单片机的直流电机调速系统设计

基于STM32单片机的直流电机调速系统设计直流电机调速系统是电子控制技术在实际生产中的应用之一,利用数字信号处理器(DSP)和单片机(MCU)等嵌入式系统,通过变换输出电压、调整周期和频率等方式实现对电机运行状态的控制。
本文将介绍一种基于STM32单片机的直流电机调速系统设计方案。
1. 系统设计方案系统设计主要分为硬件方案和软件方案两部分。
1.1 硬件方案设计:硬件主要包括STM32单片机模块、电机模块、电源模块、继电器模块。
STM32单片机模块采用STM32F103C8T6芯片,拥有高性能、低功耗、低成本和丰富的外设资源,为系统开发提供了最佳解决方案。
电机模块采用直流电机,电源模块采用可调电源模块,可以输出0-36V的电压。
继电器模块用于控制电机正反转。
1.2 软件方案设计:软件设计主要涉及编程语言和控制算法的选择。
控制算法采用PID控制算法,以实现对电流、转速、转矩等参数的调节。
2. 系统实现过程2.1 电机驱动设计:电机驱动采用PWM调制技术,控制电机转速。
具体过程为:由程序控制产生一个PWM波,通过适当调整占空比,使电机输出电压和电机转速成正比关系。
2.2 PID控制算法设计:PID控制器通过测量实际变量值及其与期望值之间的误差,并将其输入到控制系统中进行计算,以调节输出信号。
在本系统中,设置了三个参数Kp、Ki、Kd分别对应比例、积分和微分系数。
根据实际情况,分别调整这三个参数,可以让电机达到稳定的运行状态。
2.3 系统运行流程:启动系统后,首先进行硬件模块的初始化,然后进入主函数,通过读取控制输入参数,比如速度、电流等参数,交由PID控制器计算得出PWM输出信号,送给电机驱动模块,以产生不同的控制效果。
同时,还可以通过设置按钮来切换电机正反转方向,以便实现更精确的控制效果。
3. 总结本系统设计基于STM32单片机,采用PWM驱动技术和PID 控制算法,实现了对直流电机转速、转矩、电流等运行状态参数的精确调节。
基于STM32的无刷直流电机驱动器设计

基于STM32的无刷直流电机驱动器设计利用主控制器STM32所具有的优势,设计无位置传感器无刷直流电机为控制对象的驱动器,包括功率驱动电路、三相逆变电路、反电动势检测电路和电流与电压监测电路。
该驱动器设计成本较低,具有一定的应用价值。
标签:STM32;无位置传感器;无刷直流电机1 概述与8位单片机有限指令和性能相比,32位STM32处理器的工作频率达到72MHZ,处理能力达到1.25DMIPS,能实现高端运算能力;与32位DSP高成本和高功效相比,32位STM32处理器具有出众的功耗控制和明显价格优势,同时其内部高度集成,具有创新而丰富的外设,更加利于控制系统的开发。
同时STM32中的STM32F103增强型系列具有专门为实现电机控制的高级定时器,以及转换速度为1MHZ、精度为12位的ADC[1]。
无刷直流电机既具有直流电机调速性能良好、运行效率较高等的特征,又具有交流电机构造简单、故障率低等的特点,具备两者优势,具有广阔应用前景。
无刷直流电机分为有位置传感器和无位置传感器两种,两者相比,后者具有许多优势:缩小了无刷电机的体积和成本;增强了抗干扰能力,扩大在高温、高腐蚀性等特殊场合的使用范围;提高了系统可靠性,降低电机的维护工作量[2]。
本设计以无位置传感器无刷直流电机为控制对象。
2 硬件设计2.1 硬件总体结构利用STM32较强控制性能及丰富外设,使硬件设计较为简单,所占空间较小,进一步降低成本,图1所示为驱动器硬件框图,以STM32为控制核心,包括电源电路、功率驱动电路、三相逆变电路、反电动势检测电路、电流监测电路、电压监测电路和串口通信电路。
在设计中选用STM32F103型号,其I/O口分配为:PA8端口(TIM1_CH1)、PA9(TIM1_CH2)端口和PA10(TIM1_CH3)端口分别与功率驱动电路的高边控制端HIN相连,PD9、PD10和PD11端口分别与低边控制端LIN相连;PA1(ADC1_IN1)、PA2(ADC1_IN2)和PA3(ADC1_IN3)端口与反电动势检测电路相连;PC0(ADC1_IN10)端口与电流监测电路相连;PC1(ADC1_IN11)端口与电压监测电路相连;PD5、PD6端口与通信电路相连;PC6、PC7端口分别与两个LED灯相连,作为警报信息;预留的IO管脚可用于后期的扩展开发。
STM32直流电机控制程序简明教程

STM32直流电机控制程序简明教程
STM32是一款功能强大的微控制器,可以用于控制各种外设,例如直流电机。
在本教程中,我们将介绍如何使用STM32控制直流电机。
本教程面向有一定STM32开发经验的开发者。
以下是实现电机控制的基本步骤:
1.硬件连接:首先,将STM32与直流电机连接起来。
一般来说,直流电机有两个引脚,一正一负,以控制运动的方向。
将这两个引脚与STM32的GPIO引脚连接,并确保引脚的方向正确。
2. 配置GPIO引脚:使用STM32的开发工具,如Keil或
STM32CubeIDE,配置GPIO引脚。
将引脚配置为输出模式,并设置为默认状态下关闭电机。
3.配置定时器:使用STM32的定时器来生成PWM信号以控制电机的速度。
配置定时器的时基和计数值,以获得所需的PWM频率。
4.生成PWM信号:设置定时器的通道和占空比,以生成PWM信号。
根据电机的要求,设置合适的占空比来控制电机的转速。
5.控制电机方向:根据需要,将GPIO引脚设置为高电平或低电平,以确定电机的运动方向。
6.启动电机:启动定时器,开始生成PWM信号。
此时,电机将按照所设定的方向和速度运动。
7.监控电机状态:使用STM32的输入捕获功能,可以读取电机的实际转速或电流等信息。
根据需要,可以对电机进行实时监控和调整。
8.程序优化:通过调整PWM频率、占空比和电机控制算法等参数,对电机控制程序进行优化,以实现更好的控制效果。
基于stm32单片机的直流电机调速系统设计

基 于 stm3 2 单片机的直流电机调速系统设计
文/ 黑龙江农垦科技职业学院刘彦铭
摘 要 :直 流 电 机 调 速 系 统 的 发 展 ,对 单 片 机 在 系 统 设 计 中的运用提出更高的要求。如果使用传统的单片机,会导致 直 流 电 动 机 的 运 行 流 程 更 加 复 杂 ,难 以 充 分 满 足 数 字 化 调 节的需求。在此背景下,笔 者 以 stm3 2 单片机为例,通过应用 stm3 2 单片机为直流电机调速系统提供充足的保障,并研究 可 以 充 分 发 挥 性 能 的 方 式 ,让 电 机 调 速 系 统 设 计 工 作 得 到 有效保障,同时展开对电子调速器设计方案和stm3 2 单片机 应 用 背 景 下 ,电 路 及 软 件 设 计 的 探 讨 。
(上接第3 0 页)播则可以获得音浪。目 前 U) 个 音 浪 等 于 1 元 人 民 币 ,主 播 所 获 音 浪 与 抖 音 平 台 按 照 5 : 5 进 行 分 成 。
(2) CPS佣金。自抖音直播间开通购物车后,直播带货成 为 抖 音 变 现 的 主 要 手 段 。新 人 主 播 没 有 自 己 的 商 品 ,通过网 上分销平台或者线下合作的形式,根据 产 品 销 4 获得一定 比 例 的 佣 金 。对 于 头 部 主 播 或 者 比 较 有 名 气 的 主 播 ,则需要 另 外 支 付 一 定 的 合 作 费 ,在 佣 金 比 例 上 也 相 对 较 高 。
关键词:Stm3 2 单 片 机 直 流 电 机 调 速 系 统
直 流 电 机 通 常 表 现 出 良 好 的 启 动 性 和 可 控 性 ,因此在 轻 工 、机械制造和冶金等多个现代工业部门中得到广泛应 用 ,但是 对 于 直 流 电 机 调 速 的 问 题 却 一 直 存 在 争 议 。电动 机自动调速系统通常是使用P L C 和 D C S 等控制系统进行 调 节 ,也 可 以 通 过 智 能 式 或 通 用 式 P 1D 调节器仪表来实 现 ,尽 管 这 些 技 术 已 经 较 为 成 熟 ,且 运 行 可 靠 ,但是由于该 技 术 成 本 较 高 ,且硬件设施通常较为复杂,还是对直流电机 控制技术的推广和使用造成一定限制。为 此 ,笔者设计了一 款 以 s m 3 2 单片机为核心的直流电机调速系统,希望可以通 过 PW M 信号实现对直流电机速度的有效控制。 一 、直流电机调速系统设计方案
基于STM32的直流无刷无感电机的控制系统研究

南阳理工学院本科生毕业设计(论文)学院:电子与电气工程学院专业:电子信息工程学生:指导教师:薛晓完成日期2014 年 5 月南阳理工学院本科生毕业设计(论文)直流无刷电机的控制系统设计与实现Design of Brushless DC Motor Controller and Implementation总计: 21 页表格: 2 个插图: 27 幅南阳理工学院本科毕业设计(论文)直流无刷电机控制系统设计与实现Design of Brushless DC Motor Controller and Implementation学院(系):电子与电气工程学院专业:电子信息工程学生姓名:学号:指导教师(职称):薛晓(讲师)评阅教师:完成日期:南阳理工学院Nanyang Institute of Technology直流无刷电机控制系统设计与实现电子信息工程专业[摘要]直流无刷无感直流电机具有体积小、调速性能好、重量轻、效率高等优点,目前在很多领域得到了的应用。
本课题设计的是无刷无感直流电机的控制,包括无刷直流电机无位置传感器控制系统和无刷无感直流电机的基本结构、工作原理、数学模型等理论进行了分析和论述,为直流电机的控制提供理论依据。
用matlab guide设计了上位机界面来进行PID参数的整定。
本课题设计了直流无刷电机的控制系统并进行了调试。
用STM32进行控制。
实验结果表明设计的转子位置检测可以很好的检测电机的反电势过零点信号,进而保证电机的正确换相和稳定运行。
整个系统可以控制无刷无感直流电机顺利启动,并通过滑动变阻器实现电机的调速。
[关键词] 无刷直流电机;电机驱动;换相;反电势Design of Brushless DC Motor Controller and ImplementationElectronic Information Engineering SpecialtyAbstract:The brushless DC motors have the advantage of small,good debugging performance,low weight,and high efficiency. So it has been widely used now. And this restricts the industrial drive applications,After the attachment with sensorless control. This paper mainly reserches the sensorless control technology for BLDCM,designs and control BLDCM without position sensor. I use MATLAB guide to debug PID parameter.designing a controller of brushless DC motor and do some experiments for this control system. I use the STM32 MCU as the core microprocessor of hardware system.The results of the experiment show that the rotor position detection system can perfectly detect the location of back-EMF zero-crossing signal,and ensuring the correct motor commutation and stable operation.The whole control system can control the brushless DC motor stating smoothly,and use the Sliding rheostat to achieve speed control.Key words:Brushless dc motor;motor drive;commutation; back-emf目录1 引言 (1)1.1 题目综述 (1)1.2 国内外研究状况 (1)1.3 课题设计的主要内容 (1)2 系统设计目标和设计方案 (2)2.1系统设计目标 (2)2.2控制系统结构总体框图的设计 (2)2.3硬件系统方案论证 (3)2.3.1 控制器芯片选型 (3)2.3.2 无刷直流电机的选型 (3)2.3.3驱动电路的选型 (4)2.3.4位置检测器件选型 (4)3控制系统的工作原理和硬件设计 (5)3.1直流无刷电机的工作原理 (5)3.2无刷电机的反电势法位置检测原理 (6)3.3电源模块 (6)3.4 MCU控制模块 (7)3.5 IPM功率模块 (8)3.6反电势位置检测模块 (10)3.7 隔离电路设计 (10)3.8 速度改变电路设计 (11)4 系统软件设计 (11)4.1软件总体设计 (11)4.2软件总体设计流程图 (12)4.3无刷无感直流电机开环启动模块 (12)4.4无刷直流电机位置检测及电机转速模块 (13)4.5 AD采样改变PWM占空比模块 (14)4.6 PID计算模块 (14)4.7 matlab gui 串行通信界面设计 (15)5直流无刷无感电机测试结果及结果分析 (16)5.1 H_PWM_L_PWM的波形 (16)5.2端电压对地波形 (16)5.3位置检测波形 (17)5.4电流波形 (17)5.5实物图 (18)结束语 (19)参考文献 (20)致谢..................................................... 错误!未定义书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32 直流减速电机控制
直流减速电机控制中,最常用的方法就是通过PWM来控制直流电机的转速。
在控制小车走直线的过程中,需要两者的转速一置(如果要走得很直,还需要在短时间内保证两者的行程大致相当,这可以用PID算法来控制,以后的文章中会专门叙述)。
因此,在检测到两者转速不一样时,需要动态调整其中一个或两个轮子的PWM的点空比(简单点的就以一个轮为基准,调整另外一个轮子即可;如果以一个固定的标准的话,需要调整两个轮子的PWM占空比)。
程序第一步:设置GPIO,略(输出PWM的管脚用Mode_AF_PP即可)
程序第二步:设置定时器,(保证产生两路PWM即可,我用的是TIM4)
void TIM4_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
//时间基初始化
TIM_TimeBaseInitStructure.TIM_Period=144; //18K/144=125Hz,这个是电机PWM的频率TIM_TimeBaseInitStructure.TIM_Prescaler=4000; //72000000/4000=18K
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0x0000;
TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure);
//输出比较模式设置,用于4路PWM输出
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2; //输出PWM
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; //使能正向通道
TIM_OCInitStructure.TIM_OutputNState=TIM_OutputState_Disable; //失能反向通道
TIM_OCInitStructure.TIM_Pulse=PWM_L; //左轮DIR的占空比
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low; //输出极性为低电平
TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCPolarity_High;//互补输出极性为高电平
TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Reset;
TIM_OC1Init(TIM4,&TIM_OCInitStructure); //PWM_L初始化
TIM_OC1PreloadConfig(TIM4,TIM_OCPreload_Disable); //改变点空比后,立即产生效应
TIM_OCInitStructure.TIM_Pulse=PWM_R; //左轮PWM的占空比
TIM_OC2Init(TIM4,&TIM_OCInitStructure); //PWM_R初始化
TIM_OC2PreloadConfig(TIM4,TIM_OCPreload_Disable); //改变点空比后,立即产生效应
//使能定时器4
TIM_Cmd(TIM4,ENABLE);
TIM_CtrlPWMOutputs(TIM4,ENABLE);
}
程序第三步:
在SysTick中断中,读取两个轮子的速(具体的方法是:每0.1秒读一次,并以此人作为速度的依据),并比较,如果以右轮为基准,则调整左轮的PWM占空比。
涉及到关键语句是:TIM_SetCompare1(;)
u16 COUN1=0;
u16 COUN2=0;
volatile u16 Dist_L=0; //左轮行程脉冲数
volatile u16 Dist_R=0; //右轮行程脉冲数
void SysTick_Handler(void)
{
COUN1=TIM1->CNT; //左轮在0.1秒里脉冲数
COUN2=TIM2->CNT; //右轮在0.1秒里脉冲数
Dist_L=Dist_L+COUN1; //左轮行程脉冲数
Dist_R=Dist_R+COUN2; //右轮行程脉冲数
if( (COUN1-COUN2)>2)
{
PWM_L= TIM_GetCapture1(TIM4);
TIM_SetCompare1(TIM4, PWM_L - 4);
}
else if ( (COUN2-COUN1)>2)
{
PWM_L= TIM_GetCapture1(TIM4);
TIM_SetCompare1(TIM4, PWM_L + 4);
}
TIM_SetCounter(TIM1, 0);
TIM_SetCounter(TIM2, 0);
}
关于TIM_SetCompareX(;)这个函数,还是有很多用途的,其中另外一个用途,就是用于产生不同频率的PWM,具体程序如下:
u16 capture = 0;
extern vu16 CCR1_V al;
extern vu16 CCR2_V al;
extern vu16 CCR3_V al;
extern vu16 CCR4_V al;
void TIM2_IRQHandler(void)
{
/* TIM2_CH1 toggling with frequency = 183.1 Hz */ if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET) {
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1 ); capture = TIM_GetCapture1(TIM2);
TIM_SetCompare1(TIM2, capture + CCR1_Val );
}
/* TIM2_CH2 toggling with frequency = 366.2 Hz */ if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET) {
TIM_ClearITPendingBit(TIM2, TIM_IT_CC2); capture = TIM_GetCapture2(TIM2);
TIM_SetCompare2(TIM2, capture + CCR2_Val); }
/* TIM2_CH3 toggling with frequency = 732.4 Hz */ if (TIM_GetITStatus(TIM2, TIM_IT_CC3) != RESET) {
TIM_ClearITPendingBit(TIM2, TIM_IT_CC3); capture = TIM_GetCapture3(TIM2);
TIM_SetCompare3(TIM2, capture + CCR3_Val); }
/* TIM2_CH4 toggling with frequency = 1464.8 Hz */ if (TIM_GetITStatus(TIM2, TIM_IT_CC4) != RESET) {
TIM_ClearITPendingBit(TIM2, TIM_IT_CC4); capture = TIM_GetCapture4(TIM2);
TIM_SetCompare4(TIM2, capture + CCR4_Val); }
}。