基于STM32的步进电机驱动控制器设计*

2020-03-24 01:53王秋云徐嘉琦赵伟霞富春岩
山西电子技术 2020年1期
关键词:控制算法上位串口

王秋云,汪 文,徐嘉琦,孙 琦,赵伟霞,富春岩

(1.佳木斯大学信息电子技术学院,黑龙江 佳木斯 154007;2.佳木斯大学机械工程学院,黑龙江 佳木斯 154007)

0 引言

为防止步进电机启动和停止时出现冲击而产生失步和震荡的现象,在步进电机的数控系统中,需要使用一种专用的加减速控制算法,通过控制驱动脉冲规律控制步进电机的加减速过程[1]。通过控制脉冲的频率可以减少开环控制系统中的电机失步与震荡现象,本文设计了一种基于STM32F103单片机的步进电机控制器,本控制器按照驱动算法控制STM32产生对应的脉冲进而驱动电机驱动器控制步进电机。

1 系统方案设计

本控制器由单片机(STM32F103C8T6)、CH340E、矩阵键盘、液晶显示面板和电源等部分组成。系统采用单片机作为主控制器,CH340E芯片作为单片机与上位机进行数据交换的接口,液晶显示面板采用LCD12864进行数据显示,矩阵按键采用轻触开关进行参数与模式设置,系统采用12V电池与12V直流双电源供电方案,经电源系统升降压后供各个模块使用。系统的结构框图如图1所示。

本控制器模块的工作原理如下,主控制器接收用户按键和上位机发来的控制信号,调用不同的控制算法,控制单片机产生指定频率与数量的PWM脉冲,并将实时数据发送至上位机并在液晶面板上显示。

图1 系统总体结构框图

2 系统硬件设计

2.1 硬件选型

本控制模块所选用的单片机为ST公司的STM32F103C8T6微控制器,最高主频72MHz,支持JTAG、SWD与串口烧录,下载方式丰富。具有3个UART,4个定时器(包括一个高级定时器,3个通用定时器)和26个通用输入输出端口,可同时输出多路驱动脉冲。该芯片具有功耗低、价格低、性能好和速度快等优点,完全能满足本系统的性能需求。通讯模块采用CH340E USB转串口芯片连接控制器与计算机,该芯片速度快,价格便宜,满足本系统的使用。考虑到本系统的数据量,对屏幕的通讯速率要求不高,故选用带UART的串口LCD。对于键盘,因可设置的参数较多,故选用4×4矩阵键盘。

2.2 通信接口设计

本控制器通过USB转串口(CH340E)芯片与上位机进行通讯。CH340E内置振荡器,提供全速USB设备接口兼容USB2.0,硬件全双工串口,支持通讯波特率50 bps~2 Mbps。通过USB接口和插针与PC或其他外设相连接。硬件电路设计如图2所示。

图2 通信接口硬件电路设计

2.3 电源模块设计

控制器供电系统采用独立电池供电与直流电源供电两种方式(可手动切换),其中单片机最小系统需要3.3V供电,液晶显示与CH340E芯片均支持3.3-5V宽电压供电,而为了便于后期功能的扩展,现使用两级降压模式,第一级将系统电源电压经三端稳压器(AMS1117-5.0)降压至5V,第二级将5V电压通过三端稳压器(ASM117-3.3)降压至3.3V,两级电压足以满足各个模块的使用以及未来的扩展。电路硬件原理图如图3所示。

图3 电源电路硬件原理图

3 系统程序设计

当前,梯型加减速和S曲线加减速是步进电机最常用的两种加减速方法[2],但是由于梯型加减速实现过程中存在加速度突变的情况[3],因此本控制器采用S曲线加减速的方式控制步进电机。

3.1 步进电机控制算法的实现

S型曲线算法,即通过Sigmoid函数变换得到的一种控制算法[4],具体的实现过程如下:

Sigmoid函数公式如下:

(1)

Sigmoid函数曲线如图4所示。

图4 Sigmoid函数曲线

由Sigmoid函数公式(1)可知,Sigmoid函数的值域为0-1,而计算出来的结果对应单片机输出脉冲的频率,所以原始Sigmoid函数并不能直接用于计算输出。若要将此曲线应用到步进电机的加、减速控制过程中,需要对其进行X、Y方向的平移与拉伸变化。

整理后的公式为:

(2)

其中A控制y方向的拉伸变化、a控制x方向拉伸变化、B控制y方向的平移变化、b控制x方向的平移变化,通过此函数可以计算步进电机启动过程中每个计算时间点的频率。

同理可得到减速过程中的计算公式为:

(3)

由公式可知,当b为定值时,a值越大则加速曲线越陡峭,即从加速开始到目标值的时间越短。当a为定值,b值变化时可知,b值越大则加速时的低频段与减速时的高频段持续时间就越短,即调节时间越短。经过测试后发现当在加减数点数为100,a值处于[0.9,3.5]之间时效果最好,而对于b值则应根据a的值来设置。

在步进电机的启动过程中,如果启动频率过低或者低频时发出的脉冲太多将会影响加速时间,加速效果较差,所以实际应用中应该选择合适的启动频率并设计好低频时的脉冲数。

根据设置的启动停止时间T与每个频率持续的时间Ti,就可以得到总的加减速步数N,可得:

(4)

在设置过程中便可以根据要求(规定启动时间或者规定启动步数进行相应的设置)。

3.2 系统程序设计

MCU系统程序使用C语言编写,主要实现与上位机的通信、人机交互和步进电机驱动算法。系统上位机以基于QT的C++图形用户界面应用程序框架开发,实现控制器的人机交互控制界面。具有手动设置各项参数和动态实时参数显示等功能。系统实时显示系统状况、多路步进电机转速和驱动频率等信息。系统主程序的流程图如图5所示,步进电机驱动程序的流程图如图6所示。

图5 主控制流程图

图6 步进电机驱动控制

4 结论

本系统通过STM32单片机结合Sigmoid函数衍生的控制算法,实时计算出控制频率。通过对控制器的实际测试,最终取得了较好的效果。同时若搭配专用的步进电机驱动器,即使在开环的情况下仍能提供满足使用的控制精度,为用户提供良好的使用体验,节约用户的设备开销。同时结合远距离与上位机通信也可让控制器适应更多的控制环境,提升控制系统的自动化程度。

猜你喜欢
控制算法上位串口
基于模型预测控制算法的智能密度控制系统在选煤厂的应用
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
基于Backstepping的非线性无人船航向控制算法
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
特斯拉 风云之老阿姨上位
高精度位置跟踪自适应增益调度滑模控制算法
船舶电子设备串口数据的软件共享方法
ABS自动优化控制算法及应用
基于ZigBee和VC上位机的教室智能监测管理系统