APP下载

采用STM32控制L6470步进电机驱动器

2012-07-12国营七八五厂第三研究所韩力立

电子世界 2012年18期
关键词:内核寄存器命令

国营七八五厂第三研究所 王 凯 韩力立

采用STM32控制L6470步进电机驱动器

国营七八五厂第三研究所 王 凯 韩力立

常用的步进电机控制器,根据不同的运动方式需要由单片机发出不同频率的和数目的脉冲信号到专用控制芯片,而ST公司的数字控制电机驱动芯片L6470内部数字控制系统可实现完备的运动曲线控制方案,只需要使用单片机发出命令告诉它要怎样运动即可,简化了电路和程序。

数字控制内核;微步;STM32;SPI接口

步进电机是将电脉冲信号变为电机角位移的或机电执行元件,步进驱动器接收到一个脉冲,电机旋转一个固定的角度,非常适合单片机控制,因此可以用单片机控制脉冲的数量来控制电机的旋转角度,控制脉冲的频率来控制电机的旋转速度,而改变电机电流的方向可以改变电机的旋转方向。

ST公司的L6470省去了单片机的这些工作,单片机只要通过命令告诉L6470以什么样的速度运行到什么位置停止,电机就会在L6470数字内核的控制下按指定方式运行,这些只要发送一个函数命令即可,剩下的就交给L6470去完成。

1.系统原理框图

如图1所示,整个系统由4部分组成,电源、单片机(MCU)、L6470、电机,其中电源的24V给L6470的功率驱动电路供电,24V经过DC-DC模块转换为3.3V分别给单片机和L6470的数字控制部分供电。单片机通过SPI接口控制L6470,而L6470把各种状态位反馈回单片机。上位机可以通过串口命令控制电机。

2.驱动芯片L6470简介

L6470是ST公司生产的新一代两相步进电机驱动芯片,可以在8~45V的宽电压下工作,峰值电流7A(平均电流最大3A)。内部集成两个低导通电阻的DMOS全桥电路和数字控制内核,可以高效地驱动步进电机,精确的片上电流检测电路有完备的电流控制能力和过电流保护。独特的控制系统可以把单步细分为最多128微步,使运动效果更平滑稳定。数字控制内核通过配置制定寄存器能够按照用户定义设置加速、减速、匀速和运动到目标位置等运动方案。具有完备的过热、欠压、过流、当机、反电动势补偿等保护方案。所有的命令和数据寄存器都由一个标准的SPI接口访问和控制。

2.1 运动控制命令

单片机通过SPI接口可以向L6470发送以下4种不同的运动控制命令。

恒速命令:让电机以设定的加减速度旋转到恒定的速度。

绝对位置命令:设定电机以指定路径或最小路径旋转到指定位置,然后停止。

运动命令:让电机按指定的方向运动指定步进数目

停止命令:使电机停转。

以上4种命令配合加减速控制,可以实现复杂的运动控制方案,不再需要单片机来计算脉冲频率、脉冲数目,脉冲时序等参数。

2.2 内部寄存器说明

L6470内部一共有25个可用寄存器,每个寄存器对应某种控制功能或状态位,单片机通过SPI接口访问或改写这些寄存器地址里面的内容。

有的是用于控制的,主要有:绝对位置、电气位置、运行速度、最大/最小速度、加/减速度、步进单位、过电流门槛、保持/运行/加速/减速PWM功率周期、振荡器频率、PWM频率。

有的是用于状态检测的,比如过流、过压、欠压、过热、失步等警告。

这些参数的设置需要参考《L6470数据手册》和所用步进电机的参数值,比如步进电机的转速、扭矩、相位电阻、力矩-频率特性曲线等。

2.3 相位电流控制

通常情况下,步进电机驱动电路是电流式控制设计,电流控制器监测并控制绕组电流强度,因为电源电压变化、停转等会导致电流有很大变化,而且,随着转速提高或减小,电机的反电动势(BEMF)的变化也会导致绕组电流的变化。L6470可以通过在电机绕组上施加电压来控制相电流。虽然不能直接控制相电流的幅度,但是,相电流与相电压的大小、负载、转矩、电机电学特性和转速密切相关。有效输出电压与电机电源电压和补偿系数Kval的积成正比。

图1 系统原理框图

图2 补偿因子计算

图3 软件流程

KVAL=((KVAL_X+BEMF_COMP)×VSCOMP×K_THERM)×microstep

其中KVAL_X是当前Kval值,BEMF_COMP是反电动势补偿因子,VSCOMP是输入电压,K_THERM是线圈电阻补偿因子,microstep是当前设置的微步数。

当然可以利用ST公司提供的dSPIN evaluation tool可以方便地求出Kval值,只要你把电机的各个参数代入数据框,点击一下evaluate按键就可以求出L6470的各个补偿因子和对应寄存器值。

3.MCU介绍

本设计所用的MCU为STM32F103C6T6,是ST公司最新的基于ARMv7内核的32位处理芯片,ARMv7内核有A,R,M这3个系列,R系列为军工产品,M为中低端的民用消费产品,STM32F103C6T6属于cortex-M3系列。

STM32F103C6T6性能:

这款STM32F103C6T6是TQFP-48封装,具有32K FLASH ROM,10K SRAM,3个16位定时器,USART、I2C、I2S、SPI、USB、CAN等接口一应俱全,所有的IO口都可以作中断使用,内核频率高达72MHz,比同价格甚至更贵的51芯片1~2M的内核频率高出几十倍。

4.软件设计

STM32采用KEIL MDK编程环境进行软件设计,如果原先掌握了51芯片的编程,STM32很容易上手,而且ST公司为开发者提供了丰富的固件库,所有的功能开发者不再需要接触底层的寄存器,直接调用高级函数就可以了,节省了开发时间,保证了设计质量。

4.1 SPI固件库

L6470通过SPI接口和STM32F103C6T6通讯,SPI是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO,用于CPU与各种外围器件进行全双工、同步串行通讯。

STM32F103C6T6芯片拥有完备的SPI固件库,使用固件库要经过以下几步设置:

● 使能SPI接口要用到的IO口控制时钟和SPI模块控制时钟;

● 配置IO口输入输出工作方式,这里设置为复用推挽模式;

● 配置SPI工作模式;

● 使能SPI模块。

经过配置以后就可以使用SPI库函数控制L6470,下面是典型的L6470控制函数。

● void dSPIN_Peripherals_Init(void)

——初始化单片机和L6470连接的用于SPI通讯的4个GPIO端口的工作模式,初始化单片机内部SPI模块的工作模式。

● void dSPIN_Regs_Struct_Reset(dSPIN_RegsStruct_TypeDef* dSPIN_RegsStruct)

——按照L6470寄存器表的默认值初始化L6470相应寄存器的参数值,这些参数值合并为一个寄存器结构体的数据类型,用指向结构体的指针访问它们。

● void dSPIN_Struct_Value(void)

——按用户定义设置寄存器的各个参数。

● void dSPIN_Set_Param(dSPIN_Registers_TypeDef param,uint32_t value)

——把参数写入其对应寄存器地址,具体对应寄存器要写什么参数值要结合《L6470数据手册》和所用的步进电机的参数值。

● uint32_t dSPIN_Get_Param(dSPIN_Registers_TypeDef param)

——读取对应寄存器地址内的参数。

● void dSPIN_Run(dSPIN_Direction_TypeDef direction,uint32_t speed)

——向L6470发送RUN指令,参数为方向和速度值

● void dSPIN_Move(dSPIN_Direction_TypeDef direction,uint32_t n_step)

——向L6470发送MOVE指令,参数为方向和步进数目

● void dSPIN_Go_To(uint32_t abs_pos)

——向L6470发送GO_TO指令,参数为运动到的绝对位置

● void dSPIN_Soft_Stop(void),void dSPIN_Hard_Stop(void),void dSPIN_Soft_HiZ(void),void dSPIN_Hard_HiZ(void)

——发送停止指令,有软停止,即减速到0,硬停止,即紧急制动,软高阻,即减速到0再关闭MOS桥,硬高阻,即紧急制动并关闭MOS桥。

● uint16_t dSPIN_Get_Status(void)

——读取状态寄存器状态标志

4.2 整体软件流程

单片机初始化完成后,开始对L6470进行电机初始工作参数设置,然后就可以发命令让电机执行相应的动作,同时还可以随时接收串口的命令改变电机状态。

下面的程序是一个电机运行的例子:

5.结论

本系统主要以高性能的STM32F103C6T6为控制芯片,L6470驱动芯片实现电机控制,降低了设计难度,节省了设计成本,减小了驱动器的体积,采用微步功能提高了步进电机的运行稳定性,具有控制简单、操作灵活的特点,L6470自有的各种电机检测和保护功能提高了控制系统和电机的安全性和寿命,可以广泛用在打印机、传真机、机器人等精密控制领域。

[1]刘军.例说STM32[M].北京航空航天大学出版社,2011,4.

[2]SPI Block Guide[EB/OL].Motorola Ltd.[2003.5].http://www.motorola.com.

[3]Jose Yiu,宋岩(译).Cortex-M3权威指南[M].北京航空航天大学出版社,2009,2.

[4]王永虹.STM32系列ARM Cortex-M3微控制器原理与实践[M].北京航空航天大学出版社,2008,3.

[5]L6470 datasheet[EB/OL].ST Ltd.[2011.5].http://www.st.com/dspin.

[6]ST:STM32中文参考手册.第10版.[EB/OL].STLtd.[2011.5].http://www.st.com.

王凯(1977—),男,四川成都人,学士,国营七八五厂第三研究所工程师。

猜你喜欢

内核寄存器命令
只听主人的命令
STM32和51单片机寄存器映射原理异同分析
强化『高新』内核 打造农业『硅谷』
Lite寄存器模型的设计与实现
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
移防命令下达后
微生物内核 生态型农资
这是人民的命令
高速数模转换器AD9779/AD9788的应用