找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于MC9S12D64单片机的直流无刷电机控制系统设计

[复制链接]
admin 发表于 2013-3-25 20:42:37 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
由于无刷直流电动机既具备交流电动机的结构简单、运行可靠、维护方便等系列优点,又具有结构简单、体积小、重量轻、效率高、启动扭矩大、惯量小和响应快等其他种类直流电机无法比拟的优点,故广泛应用于宇航、军事、石油装备及工业和民用领域。这里给出了基于飞思卡尔MC9S12D64单片机的无刷直流电动机控制系统设计方案。

1 无刷直流电动机控制原理
     
无刷直流电动机系统由电动机、转子位置传感器、电子开关线路和驱动电路等4部分组成。其工作原理图如图1所示。
   
   
     直流电源通过驱动和开关电路向电动机的定子绕组供电,提供励磁电流,位置传感器随时检测到转子位置,并根据转子的位置信号控制开关管的导通和截止,从而实现电子换向。随着电动机转子永磁体的转动,作用于位置传感器H1、H2、H3的磁场方向N-S极发生变换,使位置传感器产生相位差为120°的方波信号,如图2所示波形。
    20121107045854642111162.jpg
   
     随着电动机转子永磁体的转动,作用于3个位置传感器HALL1、HALL2、HALL3的磁场方向N-S极发生变换,使位置传感器产生相位差为120°的6状态编码信号:101、100、110、010、011、001,产生控制开关器件MOSFET或IGBT等功率管按一定顺序两两导通的控制信号,这样转子每转过一转,6个功率开关管及按固定组合成的6种状态依次导通,保证电机的正常运转。

2 系统硬件设计
2.1 主控制器模块

     本系统采用飞思卡尔公司生产的一款16位的9S12系列的MC9S12D64单片机作为主控制器,该芯片具有丰富的I/O端口;片内有8 KB RAM、64 KB Flash、2 KB EEPROM;SCI,SPI,PWM和串行接口模块;带有6路12位PWM模块,可设定为中心对齐或边沿对齐模式,正好用于电机的三对电极的变频控制;片内具有增强型捕捉定时器、8路10位A/D转换模块可用于电流、电压等的检测,实现对控制系统的保护,也可接各种传感器,大大简化外围电路和软件设计。
     该系统包括MC9S12D64单片机工作的外围系统、电机位置传感器信号检测部分、电机驱动电路、通信电路和温度电流检测电路。其实现的硬件电路如图3所示。
    20121107045854673361163.jpg
   
     该控制系统主要功能为电动机的正反转的控制、起停控制,转速的测量和闭环调速、电机温度、电流检测与保护等。其中单片机外围系统包括模式选择、复位电路、晶振电路和电源4部分;电机位置传感器的3路输入信号HALL1/HALL2/HALL3经上拉和滤波后分别接入PT0/PT1/PT2引脚,利用该单片机的输入捕捉功能就可以实现电机每转过60°就产生一次中断,很方便地得到转子位置和电机的转速;由PB口输出控制电机转动的驱动控制信号;AN0/AN1口输入测得的电机温度和电机电流信号,A/D转换后换算成实际的温度和电流值。此外利用串口0连接RS485总线接口器件SN75176与上位机进行通信,接收上位机的转速、起停、转向等命令,并把电机转速、温度等电机信息发给上位机,硬件电路简单可靠。
2.2 电机驱动电路
     
本系统采用三相六拍控制方式,驱动回路采用一种单极半调制的PWM控制方式,驱动器件采用IR2110,它是双通道高压、高速电压型功率开关器件栅极驱动器,具有自举浮动电源,驱动电路简单,只需一路电源即可同时驱动上、下桥臂2个开关器件,大大简化了驱动电源设计,功率器件采用T1~T6的6路MOSFET实现电机的驱动。驱动电路如图4所示。
    20121107045854704611164.jpg
   
     图4中的电路只是电机一相的驱动。而无刷直流电动机的三相绕组的驱动控制共需3组这样的驱动控制,每组控制2个MOSFET,3组共有6种MOSFET导通状态,转子每转过60°就变换一种状态,控制信号从主控制器PB口输出,输入到IR2110的上桥臂控制端10引脚和下桥臂控制端12引脚,控制本路信号高端7引脚和低端1引脚的导通与截止,导通顺序依次为VT1、T4导通;VT1、VT6导通;VT3、VT6导通;VT3、VT2导通;VT5、VT2导通;VT5、VT4导通信号,每次只有一相绕组的上桥臂和另一相绕组的下桥臂进行导通,这样转子每转过一转,VT1~VT6及按固定组合成的6种状态依次导通,保证电机的正常运转。在此部分电路布线时一定要注意Cx1的位置是在紧靠VCC电源的部分,确保滤去电源上的毛刺干扰,保证SD端不受干扰。
2.3 电动机的电流保护和过热保护控制
     
为了保护电机,必须要对电机的电流和温度进行检测,本控制系统采用通过电源对地端接一个取样电阻作为电流传感器,温度传感器采用Pt100,该温度传感器输出信号经仪表放大器放大处理后,接入MC9S12D64的PAD00进行A/D转换测量;电机的电流是通过检测电路中串接的取样电阻得到电压信号,再经过差分放大等处理后接入MC9S12D64的A/D转换输入端PAD01进行测量的。当检测的电流或温度超过预先设定好的最大值时,可以通过软件控制IR2110的SD端,封锁输出,让电机停转,从而保护电机不致烧毁。

3 系统软件设计
     
本控制系统的控制软件主要包括主程序、位置检测子程序、PWM脉宽调制子程序、调速子程序、电流温度测量与控制子程序、计数和定时中断程序和串口中断子程序等部分。其中位置检测子程序包括3个输入捕捉中断程序,利用MC9S12D64的PT口具有优良的输入捕捉功能,可以自动捕获到位置传感器输出信号的2个上升沿来完成电机速度的测量和换相控制的;电流温度测量是利用MC9S12D64的A/D转换后进行刻度,换算出实际数值的。其中主程序、调速子程序的流程图分别如图5(a)、图5(b)所示。
    20121107045854735861165.jpg
   
     在本系统中,调速可采用手动调速和上位机命令调速2种。由于无刷直流电动机的转速和电动机的电压呈线性关系,在手动调速时把电机的转速与控制转速的模拟输入电压对应起来,经A/D转换所得到的值进行转速的设定。若通过串口进行转速设定,则把二进制代码与PWM脉宽对应。只需1 s读取测速子程序中已经测得电动机的转速值,然后将此值与预设的转速值比较,若大于预设的转速值,则取较小的代码值送出;若小于预设的转速值,则取较大的代码值送出,这样,在这样一个反馈循环中就可以调整电机的转速直到转速值等于预设定的值,从而实现对电动机的速度的调节。在整个软件设计中,采用了捕捉中断、定时中断、外部中断、串口中断、A/D中断等低功耗软件设计方法,大大降低了系统的静态和动态功耗。

4 结束语
     
本系统主要完成了电动机的驱动控制、换相控制、正反转控制、起停控制、电流、温度控制以及电动机转速的测量和电动机的调速等功能。本设计采用MC9S12D64单片机,外围电路简单,优点在于功耗低,整个控制系统功耗经测量仅为11 mW,经过高温烘烤检测,该控制系统可以稳定工作在150℃的高温环境下。经过大量的实践验证,本控制驱动系统启动平稳,启动电流小,驱动的电机运行平稳,具有硬件简单、稳定性好、工作可靠的特点。
MCU252532205 发表于 2015-11-15 22:13:27 | 显示全部楼层
可以发我一份你的代码吗?谢谢!
MCU252532205 发表于 2015-11-15 22:14:01 | 显示全部楼层
我的邮箱252532205@qq.com  谢谢!
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-22 02:35 , Processed in 0.058396 second(s), 13 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表