单片机
返回首页

基于STM32的直流电机PID调速系统设计与实现

2024-09-13 来源:elecfans

直流调速系统广泛应用于低转速、高精度等各领域,如精密办公设备(喷墨打印机、激光打印机),自动售货机,家用电器、机器人和玩具设备等。其发展得力于微电子技术、电力电子技术、传感器技术、永磁材料技术、自动控制技术和微机应用技术的最新发展成就。顺应调速系统智能化、简单化的发展趋势,本设计采用一款性价比高、功耗低的基于ARMCortex⁃M3内核的STM32单片机为控制核心,结合PID控制技术,实现了直流电机范围大、精度高的调速性能。


1、系统的总体设计

该调速系统能够实现对电机的启动、制动、正反转调速、测速和数据上传等功能,可方便地实现直流电机的四象限运行。本系统的性能指标为:调速精度高达到1r/min;调速稳态误差不超过0.5%;调速范围为-500~500r/min;串口指令控制方式;驱动电路导通阻抗低,能耗少;运行稳定可靠。系统由电源、上位机、通信接口、控制电路、电机驱动电路、电机与负载和测速装置等模块组成,结构框图如图1所示。

基于STM32的直流电机PID调速系统设计与实现

图1  系统结构框图


2、硬件设计

2.1、控制电路设计

控制电路负责接收控制指令,并产生相应的控制信号,同时返回电机速度数据和电机运行状态数据等。为了保证电路工作稳定可靠,控制电路应具有较高的运行速度、高度可靠的稳定性能、开发容易、高性价比,产生的PWM控制信号应具有死区延时、互补输出、紧急刹车等功能。STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex⁃M3内核,本系统采用STM32F103作为核心控制器。控制电路以STM32F103为核心的最小系统包括STM32主芯片、时钟电路、复位电路、UART⁃USB转换电路、JTAG调试接口电路、电源等,其原理图如图2所示。

基于STM32的直流电机PID调速系统设计与实现

图2  以STM32F103为核心的控制电路原理图


2.2、驱动电路设计

根据系统正反转的控制要求,采用H桥驱动电路,由MOS管构成的H桥驱动电路原理图如图3所示。

基于STM32的直流电机PID调速系统设计与实现

图3 由MOS管构成的H桥驱动电路原理图

MOSFET是电压控制型器件,具有开关速度快、输入阻抗高、驱动方便等优点[5]。本系统采用IRF9630和IRF630对管,组成H桥,上桥臂均使用PMOS,下桥臂均使用NMOS,两种MOS管基本特性如表1所示。

表1H桥MOSFET主要参数表

基于STM32的直流电机PID调速系统设计与实现

控制电路的输出信号为DC3.3V信号,需要与驱动电路隔离,采用了LTV352光电耦合隔离器。互补PWM输入信号经过光耦隔离作用到MOSFET栅极,从而控制OUTA,OUTB之间的电压。MOSFET中G,S两极之间使用了双向TVS管抑制瞬态电压,防止MOSFET损坏。由于采用了PMOS,NMOS对管电路,MOSFET栅极电压是由输入电压进行分压得到,因此不需要采用额外的高电压信号源。

互补PWM输入信号中,PWMA控制V1,V4桥臂,PWMB信号控制V2,V3桥臂。当占空比为50%的PWM输入信号时,OUTA,OUTB之间输出电压是0V,电机处于停止状态时,由于电机电枢中仍存在高频微震电流,从而消除了正反向转动时的静摩擦死区,起着动力润滑作用。


2.3、速度反馈装置设计

本系统采用高达888线AB相光电编码器,两相脉冲相差90°,通过测量某相的周期T可以得到电机运行速度,通过测量两相的上升沿时刻可以得到电机运行方向。


3、系统软件设计

系统的软件设计主要完成硬件和数据初始化功能,然后进入标志位循环扫描状态,一旦中断发生便处理中断程序,在中断程序中有相关标志位置位(包括上位机发送来的、通信异常处理、电机停转处理),有则处理,无则继续进行中断等待。系统软件主程序流程如图4所示。

基于STM32的直流电机PID调速系统设计与实现

图4  主程序流程图


中断源分为USART中断、PWM刹车中断、EXTI、TIMER中断。

USART中断是由于与上位机的数据交换过程中产生的,在中断程序中需要对接收到的数据包进行解析,并更新通信超时计数器。

PWM刹车中断是由于PWM刹车输入信号产生的,代表电机控制现场产生了紧急停车的请求。

EXTI中断由AB相编码器产生的光电编码脉冲产生,需要在中断服务历程中计算电机运行速度和方向,同时更新测速超时计数器。

TIMER中断为1ms定时中断,这个中断源的存在是为了系统通信超时检测、电机停转检测使用,在中断中需要对通信超时计数器和测速超时计数器进行自减处理,如果到零则发出响应信号通知系统。

由于中断源的多样性,STM32自带有可嵌套的中断向量控制器(NVIC),因此中断处理程序实际上是相互独立的。


3.1、PID算法设计

PID控制器将给定转速和反馈测得转速相比较后,经计算得出一个输出信号,将此输出信号量化为PWM的占空比,最终作用在电机的驱动电路上来控制电机。本系统中采用增量式PID算法[9⁃10],增量式数字PID表达式为:

基于STM32的直流电机PID调速系统设计与实现

KP为比例系数;TI为积分项积分时间常数;TD为微分时间常数。由上式可以得出增量式PID算法程序如下:

#defineKP0.15

#defineTI0.95

#defineTD0

#defineT0.001

#defineEMIN0.01

#defineA(KP*(1+T/TI+TD/T))

#defineB(KP*(1+2*TD/T))

#defineC(KP*TD/T)

floatPIDCompute(floatr,floaty)

{staticfloate0=0.0;

staticfloate1=0.0;

floate=0.0;

floatdelta;

e=r-y;

delta=A*e-B*e1+C*e0;

e0=e1;

e1=e;

returndelta;}


3.2、测速软件设计

测速软件需要完成测量电机转速与测量电机运行方向两部分内容。光电测速编码器输出的888线AB相脉冲分别连接到STM32的PA0,PA1上。

测速在STM32上的编程实现过程如下:

(1)配置EXTI1上升沿、下降沿均触发中断;

(2)配置端口与TIM2,TIM3;

(3)开启中断;

(4)EXTI中断程序中读取TIM2CNT中的数据并记录,清空TIM2CNT寄存器中的数据并重新启动计数;

(5)根据记录的数据进行瞬时速度计算;

(6)当若干个时基中断发生且期间无测速中断请求则宣告电机转速为0。

将A相信号输入至PA0(EXTI0)之上,编程使得EXTI0上升沿中断。在中断例程里读取B相信号,根据AB相脉冲时序可以判断电机转动方向,即B=1,电机反转;B=0,电机正转。


4、系统验证

本系统经过原理图和PCB设计、焊接制板、硬件测试、模块程序编写、模块程序功能测试、连接各个子模块程序、PID参数整定,最后通过反复的调试,系统完全满足预期要求,能够实现-500~500r/min之间任意速度控制(以顺时针方向为正方向),控制精度达1r/min,稳态误差不超过0.5%。在正常工作环境下,电机空载运行时,此时系统测试参数见表2,上位机界面如图5所示。

基于STM32的直流电机PID调速系统设计与实现

图5  上位机界面

表2  系统特性参数表

基于STM32的直流电机PID调速系统设计与实现

5、结论

本文设计了一种基于ARMCortex⁃M3内核的STM32微控制器的直流电机PID调速系统。实验结果表明,该系统具有稳态误差小,控制精度高,响应速度快,能耗低、效率高等优点,对上肢康复机器人的研究具有一定的借鉴价值。


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 红外线探测报警器

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 基于ICL296的大电流开关稳压器电源电路

    相关电子头条文章