APP下载

基于STM32和TMC5160的步进电机控制系统

2020-02-14樊艳艳

仪器仪表用户 2020年2期
关键词:梯形电阻单片机

张 婧,樊艳艳,李 勇

(1.中国核电工程有限公司,北京 100840;2.中核控制系统工程有限公司,北京 102401)

步进电机因为其结构简单、控制方式容易、定位精度高等优点,在各控制领域中广泛应用。随着生产自动化要求的不断提高,步进电机的控制需求与日俱增,驱动方式也已经非常成熟,在舞台灯光的控制系统中,对于步进电机的远程控制也成为一种趋势。本文主要研究的是基于STM32F103VCT6 单片机和TMC5160 电机驱动芯片,应用于舞台灯光等控制系统中,是可通过DMX512 通信协议远程控制的低成本,高可靠性的步进电机控制系统。

1 系统构成

本文中的步进电机控制系统的主控制芯片选用STM32系列的STM32F103VCT6 单片机,电机驱动芯片选用Trinamic 公司2018 年新推出的TMC5160。

STM32F103 系列单片机是意法半导体公司(ST)推出的基于ARM Cortex-M3 内核的32 位处理器芯片,是一款高性价比、速度快、效率高、外设功能丰富的单片机。

图1 步进电机控制系统图Fig.1 Stepper motor control system diagram

TMC5160 是Trinamic 公司于2018 年推出的带有串行通信接口的新型单轴步进电机驱动芯片,具有完整的运动控制功能,配合可外扩N 通道MOSFET,每个线圈的电机电流可高达20A,最大电压60VDC,实现了电机电压和电流规格的最大化。其将步进电机驱动器和专用运动控制器集成在一块芯片上,将数字信息转换为平滑、精确、可靠的物理运动。

本步进电机控制系统中,当有脉冲输入步进电机驱动芯片,驱动芯片通过MOS 管输出的信号驱动步进电机转动。主要通过控制步进电机接收到的脉冲数来控制其转动的步数;通过控制步进电机接收的脉冲频率来实现其转动速度和加速度的变化。步进电机接收的脉冲频率越高其转动速度越快,步进电机接收的频率越低其转动的速度越慢[1]。STM32 单片机只需给电机控制芯片TMC5160 输入方向和脉冲信号,即可达到对步进电机的控制。

本步进电机控制系统,通过DMX512 通信协议,接收远程控制系统发送的运动控制命令,主控制器判断接收到的信息,确定PWM 波的方向和频率,通过调节输出PWM波的方法来对步进电机的运动进行控制[2]。DMX512 的数据传输,采用RS485 收发器,其采用差分的接收方式,信号可以远距离传输,抗干扰能力强。

系统构成如图1 所示。

如图1 所示,步进电机控制电路主要由电源输入转换模块、RS485 转换模块、STM32F103 控制模块、电机驱动芯片模块以及MOSFET H 桥式电路组成。其中,SP3485主要负责DMX512 协议的接收[3],通过拨码开关设置DMX512 的通道编码,STM32F103 主要负责DMX512 协议的解析,确定电机运动的方向和速度,由此产生相应频率的PWM 波。

图2 TMC5160外围电路Fig.2 TMC5160 Peripheral circuit

2 系统的硬件部分

STM32F103 控制模块由基于单片机STM32F103VCT6的最小系统构成,步进电机的驱动电路主要由步进电机驱动芯片TMC5160 及其外围电路和MOSFST 桥式电路组成。本电路使用较少的外部器件,如图2 所示。

本系统采用TMC5160 芯片的SPI/DIR 模式,此模式无需配置TMC5160 的寄存器,将TMC5160 的21 脚接VCC,22 脚接地,即使SD_MODE=1,SPI_MODE=0,可以通过拨码开关进行配置;在SPI/DIR 模式下TMC5160 的17 脚为PWM 波的输入端,18 脚为方向脉冲高低电平的输入端。

在此模式下,驱动芯片TMC5160 的细分配置可以通过配置CFG0 和CFG1 实现,其中MRES 为实际微步分辨率[4]。

运行电流可以通过配置CFG2、CFG3 和CFG4 实现,IRUN 为电机运行时的标定值,一般在16 ~31 范围内[4]。

CFG5 和CFG6 分别对应TMC5160 的斩波模式选择和保持电流配置,本系统通过拨码开关的设置,可以自由地进行细分、运行电流等配置。

MOSFET 的选择要考虑很多因素,包括封装尺寸、额定电压、导通电阻等。根据所需的电流、电压,选择拥有快速恢复特性和低反向恢复电荷的AO4842 MOS 管组成H桥,可驱动两相四线步进电机。AO4842 为贴片型SOP8 封装,允许更紧凑的PCB 布线,同时降低寄生电感效应;R3、R4、R5、R6、R13、R14、R15、R16 为MOSFET 栅极电阻RG,当使用相对较小的MOSFET 时,软斜率控制需要串联较高的栅极电阻RG,这关系到能否安全地关断MOSFET,要添加额外的二极管,以确保MOSFET 在缓慢切换斜率下的安全关断。

表1 驱动芯片细分配置Table 1 Driver chip breakdown configuration

表2 驱动芯片运行电流配置Table 2 Drive chip running current configuration

图3 MOSFET桥式电路Fig.3 MOSFET Bridge circuit

表3 采样电阻的选择对应最大的电机电流(GLOBALSCALER=255)Table 3 Selection of the sampling resistor corresponds to the maximum motor current (GLOBALSCALER = 255)

TMC5160 有几种设置电机电流的方法:电流标定器CS、采样电阻等。本系统通过采样电阻(R7、R8、R9、R10)设置电机线圈的电流,电阻与电机电流对应的关系见表3[4]。

由于电机的电流全部流过采样电阻,所以选择采样电阻要仔细考虑,可选择薄膜电阻或碳晶实心电阻,以抑制电压尖峰引起的振铃;在设计PCB 时,要注意将采样电阻和所有滤波电容尽可能地靠近MOS 管放置,并且地线采用大面积铺铜的方式,以降低电阻、电感,增大散热面积。

3 系统的软件实现

3.1 软件总体设计

软件通过C 语言实现,在Keil uVision5 软件,设计了初始化模块、定时器中断模块、DMD512 通讯和协议解析模块、电机控制模块。

3.2 电机控制单元PWM波的实现

步进电机在启动阶段频率过高或者频率降低过快,会使电机出现震荡或者丢步的现象,所以步进电机在启动时要有频率逐渐增加的过程,停止时也要有缓慢降低频率的过程。一般步进电机的运动过程为3 个阶段:加速、匀速、减速。步进电机的控制算法常用的有梯形算法、“S”型函数法、SPTA 算法等。

本控制系统控制电机的运动,采用梯形加速的方式实现。以电机运动一定的距离为例,即电机接收定量脉冲,在此过程中电机先由低速启动,按照一定的加速度加速,然后匀速运动,快到目标位置的时候,按一定的加速度减速,最终到目标位置停止。

图4 梯形加减速波形图Fig.4 Trapezoidal acceleration / deceleration waveform

梯形加减速的过程如图4 所示。在加速阶段和减速阶段将时间分成很多等分,先通过DMX512 得到梯形加速的斜率设置,即通过确定加减速的时间AddTimer,继而确定加减速的级数Ladder_Num,然后得到初始频率StartFreq 和目标频率TargetFreq 的差值,这个差值除以加减速的级数,就得到了每次频率增加或减少的数值。

Ladder_Num=AddTimer/10;//加减速级数

j=(TargetFreq-StartFreq)/LadderNum;

可以由此得到加减速各个阶梯的频率LadderFreq,进而确定对应的定时器的预分频的值LadderPSC。

for(i=0;i

{

LadderFreq[i]=i*j+StartFreq;//加减速各阶梯频率

LadderPSC[i]=(6000000/LadderFreq[i])-1;

//加减速各阶梯频率对应定时器预分频值

}

本系统通过调节单片机定时器的方式调整PWM 波,得到输出频率,使用的定时器3,根据调整定时器预分频的值的方式,来调整PWM 波的输出频率。在使用定时器之前要注意以下设置:

TIM_TimeBaseStructure.TIM_Prescaler =TIM3_PSC;

//设置用来作为TIM3 时钟频率除数的预分频值

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置TIM 向上计数模式

3.3 DMX512通讯和协议解析模块

单片机STM32F103VCT6 通过串口定时器中断服务解析DMX512 协议,部分串口程序如下:

void UART4_IRQHandler(void)

{

static u16 i=0;

static u16 UART_REG=0;

static u16 CODE_Data=0;

static u8 RXB8=0;

if(USART_GetFlagStatus(UART4, USART_FLAG_RXNE)!= RESET)

{

UART_REG = USART_ReceiveData(UART4);

RXB8 = (u8)((UDR>>8)&0x01);

if(RXB8)

{

DMXSignalFlag = YES;

RXD_Data[i]=(u8)(UART_REG); //DMX512 寄存器

if(++i>=512) i=0;

}

else

{

CODE_Data = UART_REG;

if(CODE_Data==0)

{

i=0;

CODE_Data=0x1ff;

}

}

}

if(USART_GetITStatus(UART4, USART_IT_TXE) !=RESET)

{

USART_ITConfig(UART4, USART_IT_TXE,DISABLE);//清中断

}

}

4 结束语

本文主要介绍了一款基于STM32F103VCT6 单片机和TMC5160 的步进电机控制系统,主要介绍了系统的硬件电机控制电路,通过梯形加减速,实现了步进电机的平稳控制,降低了步进电机的控制成本,可广泛应用于舞台、喷泉等控制系统。

猜你喜欢

梯形电阻单片机
梯形填数
梯形达人
电阻大小谁做主
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
巧测电阻
梯形填数
电阻焊