赵蓉 承浩 石惠东
(沙洲职业工学院,江苏 张家港 215600)
医用骨钻无刷电机驱动电路的设计与制作,核心MCU采用ST意法半导体的芯片STM8S903,外围电路由电源系统、STM8S最小系统、A4939驱动芯片、串口调试、电流采样与调理、BLDC三相霍尔位置开关调理电路、霍尔速度调节、霍尔方向开关等构成,实现无刷电机的调速与方向控制、过流分级保护。由于PCB需要安装在电钻内,所以PCB设计要小型、可靠。现有的BLDC驱动电路较多采用分立的MOSFET驱动电路,笔者采用A4939专用驱动芯片,提高了电路可靠性。PCB设计可以相对较小,因此尝试在硬件电路设计基础上进行软件处理的方法改善手术中电机各种状态的判断与处理。项目总体组成框图如图1所示。
图1 系统总体组成框图
根据项目计划的目标设计需求,系统硬件平台需要选用合适的处理器、电机驱动电路、电流检测电路、方向与速度控制等电路。
ST意法半导体公司的通用处理器STM8S系列是无刷电机驱动处理器的常用选择之一,它的外设与STM32相同,方便向STM32芯片代码移植,其工作电压是2.95-5.5V,内置10bitADC,转换时间小于3微秒。先进的16bit定时器方便用于捕获/比较PWM功能,内置EEPROM,寿命可达 30万次的擦写极限,内置看门狗、自动唤醒内核。选用 STM8S系列中的专用型处理器STM8S903[1],最适合高性能的电机控制、电池管理等应用场景。
STM8S最小系统电路如图2所示,图中主要有复位电路、电源滤波电路、串口、下载调试口等。PCB设计时需要合理布局相关的滤波电容与电感,以减小电机工作时的电磁干扰。[2]
图2 STM8S最小系统电路图
无刷电机驱动电路是本系统的核心电路之一,如图3所示。驱动芯片采用Allegro MicroSystems公司的三相MOSFET驱动芯片A4939KLPTR-5-T,驱动三相N-channel的MOSFET,A4939芯片内置LDO,可以对外提供5VDC输出,具有短路、过压、超温、低功耗睡眠等功能。
图3 A4939无刷电机驱动电路图
由STM8S提供控制信号,电路中AHI与ALO为A相输入控制,BHI与BLO为B相输入控制,CHI与CLO为C相输入控制。GHA与GLA是芯片输出的A相门控信号,GHB与GLB是芯片输出的B相门控信号,GHC与GLC是芯片输出的C相门控信号,C1/C2/C3是自举电容,用于驱动后级MOSFET,SA/SB/SC来自无刷电机的三相端口U/V/W。当相关的Sx(SA/SB/SC)端为低电平时,自举电容器被充电至大约VREG,当Sx端子随后变为高电平时,该电容器为高端N沟道功率MOSFET导通提供必要的电压。在系统启动时,打开互补的高端(GHx)之前,打开每个低端驱动器(GLx),以便对自举电容器充电。VBB与VBRG外接无刷电机的供电电池,C6为内部电荷泵调节器提供泵电容,Q1-Q6为N沟道MOSFET,是无刷电机的驱动开关,根据电机的参数选择合适的MOSFET。R13为电流取样电阻,通过MCU的ADC采集,经过程序标定后获得准确的电流值。FAULT与VDSTH为诊断与过压超温检测端。如温度超限时FAULT输出高电平,当温度低于超限报警温度时FALUL为低电平。
无刷电机为9-12V供电,而微处理器需要5V供电,可以由A4939输出电压提供,而系统还需要模拟采样的参考电压,由图4所示提供,电路中采用了多级滤波,很好地提高了抗干扰能力。
图4 模拟电源电路图
方向与速度调节电路采用模拟霍尔传感器。
如图5所示,霍尔元器件在接收到速度调节信号后,输出模拟电压,然后经过电压跟随与电容滤波得到输出稳定的电压,MCU的内置10bit的ADC采样到SPOUT的电压,该电压转换为速度控制值,根据程序PID算法调节电机的转速。方向霍尔传感器可以采用数字霍尔传感器,用于判断方向开关的输入信号。
系统还有电流采样放大电路,电机三相霍尔信号调理匹配电路、电源电压采样电路、按键电路、LED电路等。电钻可以根据电流的变化情况判断电钻的负载状态,也可以根据电流值判断电机的过载与堵转来保护系统电路,设计电源电压采样电路应用于防止输入过压。[3]
图5 速度调节电路图
系统程序框图如图6所示,其中前半部分为硬件的初始化,分为时钟初始化、GPIO口初始化、PWM初始化、定时器初始化、外部中断初始化、ADC初始化。如时钟初始化设置系统时钟速度为16MHZ,GPIO初始化主要有 1路电机方向控制口为数字量输入口,3路 LED指示为数字量输出方式,用于调试与状态指示;无刷电机的三相霍尔位置检测口为外部中断输入方式,3路互补PWM输出控制方式为电机驱动芯片 A4939的输入控制口,速度设置、过压检测、过流检测为3路ADC,定时器结合外部中断用于电机实时速度检测,初始化后开启中断。
图6 系统程序框图
系统初始化后,图6系统程序框图中从按键扫描开始,根据功能按键的选择进入到相应的按键处理程序,根据状态标志位的情况显示LED的状态,如正反转,过压过流保护等。然后程序读取三路ADC的采集电压并做相应数字滤波处理,根据电压值判断是否过压与过流,然后读取方向的设置值,根据方向与速度的设置运用PID算法,结合霍尔位置开关的外部中断触发得到的电机相位切换信号,计算出不断调整的PWM值,使得转速达到基本稳定的状态,程序继续根据PWM与霍尔位置信号判断是否堵转并处理。为了有效降低电机运行过程中的抖动,提高运行可靠性,需用20KHZ以上的PWM信号驱动MOSFET。在程序中加了多级电流检测与缓冲处理,改善了电钻实际工作的效果。
软件开发环境使用ST公司的STVD环境,采用COSMIC编译器,目前可以免费申请license。程序设计首先根据无刷电机调试得到的控制时序,如 UV-UW-VWVU-WU-WV,设定较低的电机控制PWM值,如10%,电流阈值设置1A,启动后增加PWM,如30%,逐步调试[4],待电机可以正反转正常工作,再进行下一步测试。其中控制信号 AHI、ALO、BHI、BLO、CHI、CLO 由MCU提供,测试真值表如表1所示。
表1 电机控制真值表
PID是常见的速度反馈控制算法,有大量的MATLAB下Simulink仿真与计算验证了其可行性。[5]接下来进行电机速度功能测试,利用外部中断与定时器计算得到速度,然后利用PID算法,以速度为目标值,通过串口观察分析与调节PID的三个参数,最终观察得到相对可靠稳定的PID波形。PID函数运算得到不断调整的PWM值,以保持电机稳定的转速,至此电机所需的基础功能已经全部完成。
最后根据医用骨钻所需要的具体功能完成其余程序设计。电机工作的电流变化是判断手术中医用骨钻的工作状态的重要依据之一,程序中通过检测电流与电机瞬时速度的变化来模拟手术的状态。编程实现了部分逻辑算法,但由于条件与水平有限,与高水平的骨钻控制还有一定的距离。
根据需求分析,研究目前的所有资源、设计原理图与PCB,在电脑上建立开发环境,在IDE上从基础实验开始,完成数字量输入、数字量输出、外部中断、定时器、模数转换、串口等一系列基础实验。在基础实验过程中,了解STM8S的硬件资源与基本外围电路,掌握基本编程、文档查阅、搜索网络、代码移植等技能,最终实现项目的整体功能。实践操作流程如图7所示。
图7 项目基本操作流程
无刷电机代替传统有刷电机,应用越来越广泛。无刷电机除有感以外,还有无感无刷电机,通过ADC检测过零信号来得到相位状态信息,而速度检测方法除了定时与中断外,还有捕获等其他处理方法,A4939作为一款比较好用的芯片也可以用其他方式替代。由于该项目是基于医用项目,在实际设计中考虑了器件的工作温度与湿度、防静电、安全等要求,对电源与信号端口做了相应的处理,增加了滤波与保护,但是由于条件与水平有限,仅实现了基本功能,距离临床使用还有比较长的路要走,例如还有很多的例行试验需要做,希望能通过不断实验,使得电钻使用更加平稳可靠。