基于STM32的伺服电机控制系统设计

    永磁同步电机按照电动势波形主要分为两大类:无刷直流电机(Brush-less DC Motor, BLDC),永磁同步电机(Permanent Magnet Synchronous Motor, PMSM)。永磁同步电机的本质是用永磁体取代同步电机转子中的励磁绕组,从而省去励磁绕组、集电环和电刷。永磁同步电机(PMSM)的本体[5]是由定子和转子组成,定子指的是电机在运行时不动的部分,主要是指定子绕组和定子铁心部分;转子包括永磁体、转子铁心和转轴等。PMSM有时还会带有旋转位置、速度传感器,用于检测转子的位置和速度信号。PMSM基本结构示意图如图所示。 

PMSM结构示意图

硬件电路设计

控制系统总体框图

       STM32F407是由ST开发的一种高性能微控制器。其采用了90 纳米的NVM 工艺和ARTART技术使得程序零等待执行,提升了程序执行的效率,将Cortext-M4的性能发挥到了极致。

其主要特点如下:

a)兼容于STM32F2系列产品,便于ST的用户扩展或升级产品,而保持硬件的兼容能力。

b)集成了新的DSPFPU指令,168MHz的高速性能使得数字信号控制器应用和快速的产品开发达到了新的水平。提升控制算法的执行速度和代码效率。

c)高性能,由于采用了START加速器,程序从FLASH运行相当于0等待更多的存储器

电源电路的设计

      电机的运行工况复杂,现场常有不同形式的干扰存在,供电电压不稳、浪涌冲击大等常有存在。为了保证无刷电机的正常运行,电源的设计显得尤为重要。TPS54360TI公司的新型BUCK电源集成模块,具备超宽的电压输入范围,从4.5V60V,具有可调欠压闭锁功能,因此具备很强的抗浪涌冲击能力工作电流小,负载不工作时的电源电流仅为146μA左右,效率高达96%,并具备较宽的输出范围。工业级电源芯片,运行温度从-40°150°,具备3.5A的持续电流输出。通过外部不同的配置电阻,可以得到不同的电压输出。图3-1为典型的24V输入,15V输出电路设计:

TPS54360电源电路设计

电流采集及其放大电路设计

       FOC的实现需要实时检测相电流,常见的测量方法是在每一相的桥臂下串联一个大功率、低阻值、精密电阻。也有一些低成本领域只使用了单个电阻来检测,也有一些场合使用ICS芯片检测电流。本次设计采用常见的三电阻方式实现电流的采集。每次只采集其中两相,另外一相根据基尔霍夫电流定律计算得出。电阻选用10毫欧2W1%精密电阻,功率的选择根据自己设计的最大电流选取。电阻上允许通过的最大电流要大于电机的最大电流,否则常常会出现烧坏电阻的现象。因为是三电阻采样,所以电流相对于地电平是上下摆动的,因此送到ADC模块之前,需要相移电路。所以在运放的同向输入端加入了1.65V的电平,这样采集的电流会在1.65V上下摆动。

电流采集放大电路

逆变器驱动电路设计

      逆变器的驱动电路常常采用六个功率MOS管配合驱动芯片实现。常见的驱动芯片有单路输入互补输出的,也有的芯片自带死区,也有的集成全桥在一个芯片内。这里以常见的IR2110S为例,单路互补输入,互补输出;当然也可以使用集成度更高的IR2136,一个芯片三路互补输入和输出,大大简化了电路布局。IR2110S兼容3.3V逻辑电平,门极驱动电源支持从10v-20v,集成度高,响应速度快,驱动能力强。采用先进的自举电路和电平转换技术,特别适合MOS功率管的驱动。典型的驱动电路如图3-2所示:

逆变器驱动电路

过流、过压保护电路设计

       过流、过压保护电路可以在系统电流或电压超过预定值时,切断电机控制端,避免过流过压造成系统损坏。常见的过流电路可以这样设计,计算好最大电流,根据采样电阻,换算成电压值,这个值作为阈值给比较器的同相输入端,比较器的另一端接母线采样电阻的一端:

过流保护电路

通讯接口设计

      常见的无刷直流电机驱动的通讯端口为CAN,通过CAN配置电机的一些参数,控制电机的启停和转速等。CAN的设计可以选用常见的TJA1050T芯片实现。

软件总体功能实现

      伺服系统主程序系统流程图系统上电后首先完成外设初始化包括高级定时器、通用定时器、等的初始化然后对用于保护的中断进行初始化,开启保护中断和中断启动系统的保护功能。当系统初始化结束以后,打开的直流母线电源,读取数据判断是否为第一次启动若是进行转子初始定位。主程序中的主循环程序主要完成键盘读取,同时上位机通过串行通信改变系统的状态参数,控制器读取系统状态参数,然后根据键盘信息和系统状态参数确定电机的运行状态,并在每个循环周期内完成对显示的刷新。

系统时钟及总线模块配置:

        STM32系列的时钟系统有点复杂,各个外围模块分别配置使用不同的时钟,因为并不是所有的外设都需要系统时钟这么高的频率,当时钟越快时,系统功耗就会越大,相应的抗电磁干扰能力就会越弱,因此很多复杂的处理器都采用多时钟源的配置方案。STM32F4的外设时钟大多是通过SYSCLK分频而来。而SYSCLK的时钟来源主要包括三个,HSE (high speed extern)高速外部时钟、HSI(high speed inside) 高速内部时钟、以及PLL (Phase Locked Loop)锁相环等。HSE高速外部时钟通过在0SC_ IN和OSC_ _OUT引脚外接一个外部晶振实现。也可以只在0SC_ IN引脚外接一个现成的时钟源信号。STM32的内部包含一个内置的16MHZ晶振的HSI高速内部时钟,它的精度不如外部晶振高,但成本低启动速度快。可以直接用作SYSCLK的时钟输入。图5-7为STM32的时钟结构图,可以通过STM32系统时钟及总线模块配置的时钟配置工具来配置时钟。ST的官方时钟配置工具为STM32F4xx_ _Clock. Configuration,是一个excel格式的文件,可以对系统时钟和外设时钟进行配置,并可根据配置直接生成C代码,方便使用。在STM32的系统文件中,常常看到system_stm32f4xx.c文件,这个文件就是使用STM32F4xx_Clock. _Configuration生成的。

PWM模块配置

      PWM定时器可以采用STM32F4的TIMER1或TIMER8这两个高级定时器来产生。高级定时器相比于通用定时器增加了可编程死区、重复计数器以及刹车等功能,特别适合电机的控制。

       高级定时器可以产生3对6路互补的PWM波形,并且可以设置死区时间及刹车。从上面的时钟配置原理图中可以看到,高级定时器所在的时钟总线为APB2经过倍频后,时钟可以高达168M,与系统时钟同频。在电机控制中常用到的几个寄存器是TIMx_ CCMRx 用于PWM 模式控制、TIMx ARR 用于PWM周期设置、TIMx_ CCRx 用于占空比设置。一般的配置流程为,首先打开对应的GPI0口的时钟,接着打开定时器的时钟,配置GPIO口模式,映射定时器对应的GPIO端口,最后是定时器寄存器的配置。

ADC模块配置

      ADC模块用于母线电压和电流的采集STM32F4的ADC 为12bit 分辨率,最大值为4096. 和定时器的配置类似,首先打开时钟,然后配置端口功能,端口使用的是PCO、PC1、PC2,分别对应采集A、B、C三路电流。

采样中断及SVPWM

      伺服矢量控制系统首先要完成对定子电流的双次采样双次更新算法才能进行SVPWM矢量控制算法。采样中断子程序包括对电流、转速等采样,只对两路定子电流进行采样,并经过AD输入到STM32F407中,根据iu+iv+iw=0 可计算出第三路电流值。定时器工作在编码器模式,增量式光电编码器输出的脉冲信号经过调理电路的处理后输入到定时器中,并进行变M/T算法计算,转子位置信号则直接由STM32捕获计算在处理器获得反馈信号后,通过系统三个闭环调节器的控制调节,根据矢量控制算法得到电机参考给定电压uα,uβ ,并送入SVPWM模块输出PWM波形控制逆变器工作实现矢量控制。

  • 35
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于STM32的直流电机伺服系统设计,主要包括硬件设计和软件编程两个方面。 在硬件设计方面,首先需要选择合适的STM32系列单片机作为控制核心。然后,根据电机的功率和特性选择适当的电源电压和功率放大电路。接着,根据控制算法的需求,选择合适的位置传感器或编码器,并设计相关的接口电路。另外,还需要设计电机驱动电路,包括驱动电压的稳定和功率放大。最后,搭建完整的硬件连接电路,并进行测试和调试。 在软件编程方面,首先需要对系统进行初始化,包括配置时钟、引脚和外设等。然后,根据所选的控制算法,编写驱动程序,控制电机的转速和位置。其中,PID算法是常用的控制算法之一。接着,编写位置传感器或编码器的读取程序,获取电机当前位置信息。同时,还需编写与传感器信息匹配的位置反馈控制程序,实现精确的位置控制。此外,还需要编写软件保护机制,如过流、过热等保护功能,以保证系统的安全性和稳定性。 最后,在完成硬件设计和软件编程后,还需要进行系统整体的调试和性能优化。通过实验测试,调整控制参数,并进行性能评估和优化,以确保系统能够稳定运行,并满足设计要求。 综上所述,基于STM32的直流电机伺服系统设计涉及到硬件和软件两个方面,需要选取合适的硬件平台并进行相应的电路设计和编程实现,同时还需要进行系统的调试和优化,以保证系统的稳定性和性能。 ### 回答2: 基于STM32的直流电机伺服系统的设计主要包括硬件和软件两个方面。 在硬件设计方面,首先需要选择合适的STM32系列微控制器作为控制核心,根据电机的功率和控制要求选择合适的功率级别和外设配置的型号。接下来需要设计电机驱动电路,通常采用H桥或全桥驱动电路来驱动直流电机。此外,还需要设计合适的电源电路,为系统提供稳定的电源。另外,为了提高系统的稳定性和可靠性,还需要加入过流、过压、过热等保护电路。 在软件设计方面,首先需要进行系统级的架构设计。根据控制需求,确定系统的闭环控制方式,如位置控制、速度控制或电流控制等。然后,编写驱动程序,通过STM32的GPIO和定时器等外设控制电机驱动电路,实现电机的正转、反转和停止等功能。接下来,设计控制算法,根据系统的传感器反馈信号,计算电机的控制量,并通过PWM信号控制电机速度或位置。此外,为了提高系统的性能和稳定性,还需要加入滤波、校准、保护等功能。 最后,对整个系统进行调试和验证。通过连接电机和传感器,进行一系列的实验测试,验证系统的性能和稳定性。根据测试结果,不断优化系统的硬件和软件设计,并进行相应的调整和改进。 总之,基于STM32的直流电机伺服系统的设计涉及硬件和软件两个方面,需要选择合适的微控制器和驱动电路,并设计合适的控制算法,经过实验验证和调试优化,最终实现一个性能稳定、响应迅速的直流电机伺服系统。 ### 回答3: 基于STM32的直流电机伺服系统的设计主要包括硬件设计和软件设计两个方面。 在硬件设计方面,首先需要选择合适的STM32控制器来作为控制核心。根据实际需求选用的STM32型号可能会有所不同,但一般需要具备足够的计算能力和外设接口,以满足对电机的精确控制要求。 其次,需要设计电机驱动电路,使得STM32能够通过PWM信号来控制电机的转速和方向。常用的电机驱动芯片有L293D、L298N等,它们可以根据STM32的输出信号来控制电机的正反转和速度。 接着,需要设计进行电流反馈的电路,以便实现电机的速度和位置控制。一种常用的方法是使用霍尔传感器或编码器来测量电机转子的位置,并通过反馈电路将信息传输给STM32。同时,还需要设计一个适当的电流传感电路来测量电机的电流。 在软件设计方面,首先需要编写与电机驱动相关的代码,实现PWM信号的生成和控制以及相关算法的实现。同时,需要设计合适的速度和位置闭环控制算法,以便根据电流反馈信息来调整电机的速度和位置,以实现精确的伺服控制。 此外,还需要编写与外部设备通信的代码,以便通过串口、CAN等方式与上位机或其他设备进行数据通信和命令控制。 综上所述,基于STM32的直流电机伺服系统的设计需要进行硬件和软件两个方面的工作,通过合理的电路设计和精确的控制算法实现电机的速度和位置控制

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值