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的输出值进行调整,使输出电流减少;若没有超过输出电流的预设值则返回检查异常情况,程序进行循环检测。
3 结束语
本文采用了以高性能的ARM处理器STMF103为一体化步进电机主控CPU,SLA7033M作为驱动芯片,将控制电路和驱动模电路集成在同一个模块上,减少系统中主控核心的负担,提高系统的实时性、可靠性,有一定的社会效益和广泛的推广价值。