微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于CAN总线的一体化两相步进电机驱动器的设计

基于CAN总线的一体化两相步进电机驱动器的设计

时间:08-04 来源:互联网 点击:

0 引言
当前,步进电机已经在工业应用,如自动剥线机、工业机器人、雕刻机、植毛机工作台等涉及到精确定位的场合,得到广泛的应用。常用的步进电机控制系统由驱动模块和控制器模块组成。驱动模块实现功率放大,控制器模块用于产生电机转动的控制信号,上述控制方法将会大量占用控制核心的资源,影响控制系统的实时性及灵活性。本文设计的步进电机驱动器,将控制电路和驱动模电路集成在同一个模块上,减少系统中主控核心的负担,提高系统的实时性、可靠性,可以使系统设计变得更加灵活、方便。

1 CAN中继器硬件的设计
1.1 系统的硬件结构
本文设计的基于CAN总线的一体化两相步进电机驱动器系统框图如图1所示,包括CAN收发器L9616、MCU STM32F103C6、光耦隔离、驱动芯片SLA7033M、温度传感器和D/A转换。CAN收发器L9616接收主控核心发送过来的帧数据包后,再把数据包发送给MCU。STM32F103C6是一体化步进电机驱动器的核心,负责对CAN收发器L9616传送过来的数据包进行解析,同时做出相应的操作,生成对应的驱动信号和转动方向;另一面MCU控制高精度D/A转换器,经D/A转换输出的电压送给驱动芯片SLA7033M,使SLA7033M输出电流恒定,同时在SLA7033M的输出端加入采样电阻,MCU实时监控SLA7033M的输出电流,当输出电流大于阈值时,关闭驱动信号,保护芯片SLA7033M;另外MCU还对加在芯片SLA7033M上面的散热器进行温度实时监控,当散热片上的温度超过预设值时关闭驱动信号,起保护SLA7033M的作用。MCU对SLA7033M的输出电流进行采样以及对温度实时监控,有效地保护了SLA7033M,使SLA7033M工作的寿命更加长,工作更加稳定。由于MCU输出的信号属于弱的信号,而SLA70 33M输出的信号是大电压大电流信号,为了确保MCU正常工作,采用光耦隔离,使控制信号与驱动信号分离,同时控制和驱动两部分的电路采用独立的电源供电,它们之间互不干扰,信号通过光耦传输。


1.2 STM32F105微控制器
STM32F105是基于最新ARM V7.0内核Cortex-M3的32位闪存微控制器,这是一款专为嵌入式应用而开发的内核,带有用于电机控制的PWM输出,特别适合在电机控制场合的应用。STM32F10内置CAN收发FIFO,可以降低采用外置CAN控制器的成本以及提高系统的稳定性。STM32F103具有较大容量的FLASH和RAM,以及丰富的外设,因此采用STM32F103作为主控芯片可以方便地实现CAN数据收发、A/D转换、D/A转换、PWM输出等。
1.3 CAN收发电路
CAN收发器采用ST公司的L9616。终端匹配电阻采用跳线的方式供用户安装时自行选择。在差分信号线上并上瞬态抑制二极管,可以起到对L9616的I/O的保护作用。光电隔离部分采用最高转换速率可达10Mbit/s的高速光耦6N137,电阻R2、R5起到限流作用。VCC5_1是由DC/DC隔离电源单独产生的5V电压。


1.4 电源电路
步进电机采用5V供电。用开关稳压集成芯片LM2596代替传统的三段稳压器,仅需要极少的外围器件即可构成高效的稳压电路且不需加散热片。LM2576产生的5V电压供给电机驱动芯片,主控CPU工作所需的3.3V电压由LDO芯片LM1117-3.3产生。CAN收发电路单独供电的DC/DC电路采用隔离电源模块,使驱动器和和CAN总线接口实现完全的电气隔离。


1.5 光电隔离电路
连接在控制芯片与驱动芯片之间的光耦隔离电路,主芯片负责产生驱动芯片需要的控制信号。当输入端为高电平时光耦中的光敏二极管导通,同时光敏三极管也导通,使对应的输出端也为高电平。使用了光耦隔离,使得驱动电路的高压电路与控制电路的低压电路完全隔离,互不干扰,提高了系统的抗干扰能力和稳定性。
1.6 SLA7033M驱动电路
SLA7033M是高性能步进电机集成功率放大器,该芯片由参考电压电路、触发脉冲产生电路、电压比较放大电路、电流控制电路、激励信号放大电路、电动势补偿电路等组成。INA、Ina、INB、INb为四个驱动信号输入端,OUT/a、OUTa、OUT/b、OUTb为四个驱动信号输出端,在输出端接二相步进电机作为负载。VREF为经过D/A转换后的基准电压输入端,通过调整D/A的输出基准电压,即可调整驱动器的输出电流的大小。电阻R11、R12为电流检测电阻,当主控芯片检测到该电阻上的电压超过阈值时,重新调整输出的电流大小,使输出电流不能超过最大值,以保护驱动芯片SLA7033M。

2 CAN中继器软件的设计
程序开始时先初始化各个输出端口以及各个相关的外设模块。程序以模块化进行设计,主程序只需循环检测相应的状态,当对应的状态满足要求时执行相应的操作,使得程序简洁以及实时性更强。当程序出现异常情况时,异常处理程序检查相应的异常情况,判断是哪些情况出现异常,记录相应的情况,同时可以把异常情况打包成数据发送到CAN总线,方便主控核心进行异常情况的分析及处理。无异常情况则检查是否有数据包的标志位,假如有数据包,则数据包处理程序对数据包进行分析,并进行相应的操作。数据包处理程序具有识别是发送数据包还是接收到的数据包,如果是发送数据包,则把相应的数据包经过处理生成标准报文帧格式,随后经过CAN收发器发送帧数据给主控核心;如果接收到的数据包则要对该数据包进行解析,按照标准报文帧格式进行提取相应的数据,以及对相应的数据进行处理,假如收到的数据里的ID和该设备号ID一致,表明是该设备的数据,即对该设备进行操作;反之,表明不是该设备的数据,则对收到的数据不处理,同时推出数据包处理程序。主程序假如没有数据包处理或者数据包处理程序完成则检查温度是否超过预设值,假如已经超过预设的值,则执行超温处理程序;假如没有超温则往下执行。当没有超温或者超温处理程序完成后查询电流是否超过预设值,假如已经超过了输出电流的预设值则执行调整输出电流程序,对输出电流输出调整,即对D/A的输出值进行调整,使输出电流减少;若没有超过输出电流的预设值则返回检查异常情况,程序进行循环检测。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top