引言
现代工业的发展离不开电机控制技术的进步,而且对电机控制的精度要求越来越高,因此,在能耗以及成本尽量降低的情况下,寻求一款功能强大、功耗较低的电机控制芯片越来越重要。PIC16F1508芯片作为一款采用XLP(eXtreme Low Power)技术的8位单片机,延续了PIC单片机一贯采用的精简指令集RISC、哈佛双总线、两级指令流水线结构,而且进一步丰富了其外设特性,在电机控制领域取得广泛的应用。
1 PIC16F1508器件概述
PIC16F1508单片机采用了XLP超低功耗管理功能,待机电流仅为25 nA(1.8 V时,典型值),看门狗电流仅为300 nA(1.8 V时,典型值),工作电流仅为30μA/MHz(1.8 V时,典型值)[1]。
图1 PIC16F1508单片机结构框图
此外,PIC16F1508单片机还创新性地集成了丰富的独立于内核的外设,例如互补波形发生器、可配置逻辑单元、数控振荡器、轨对轨运放和高速比较器、高分辨率的PWM、ADC和DAC、有SPI和I2C两种模式的主同步串行口的MSSP模块,以及可兼容RS232、RS485和LIN的增强型通用同步/异步收发器EUSART等。PIC16F1508单片机的结构如图1所示。
2 PIC16F1508与电机控制相关的外设功能
2.1 PWM模块
PWM( Pulse Width Modulation)功能即脉冲宽度调制功能,通过修改周期寄存器调节频率或者修改占空比寄存器调节电压来控制逆变器开关的通断,达到控制电机运转的目的。随着电子技术的发展,采用全控型开关功率元件进行脉宽调制PWM控制方式已经成为主流[2]。
图2 CLC模块简化框图
PIC16F1508单片机有4个PWM模块,除了共用一个周期寄存器PR2以外,PWM1~PWM4分别有自己对应的占空比寄存器,这就意味着每一个PIC16F1508单片机都可以通过PWM功能控制4台电机独立运转,最大限度地利用单片机的资源。
2.2 模数转换器模块
模数转换器(ADC)模块在目前的单片机中几乎都存在,它可以把一个模拟量信号转换成数字量信号,ADC模块的存在可以很方便地解决电机控制中电路电压的检测、电机反馈信号的检测等难题。
PIC16F1508单片机有12路10位分辨率的外部输入端口和3路10位分辨率的内部通道,这3路内部通道是固定参考电压、数模转换器和温度指示器通道[1]。此外,同大多数单片机内置的ADC模块一样,可以自动采集且可以在休眠模式下进行转换。
2.3 可配置逻辑单元
Microchip公司创新性地把电路中可能用到的逻辑功能集成到单片机的内部,这就是可编程逻辑单元(Configurable Logic Cell,CLC)。这个模块可以提供可超越软件执行速度限制而工作的可编程逻辑,大大地简化了电路的设计,并且由于外部逻辑器件的减少,系统的可靠性得到一定程度的提高。
PIC16F1508单片机有4个可编程逻辑单元,该逻辑单元最多可接收16个输入信号,并通过使用可配置门将16个输入缩减为4条驱动8种可选单输出逻辑功能之一的逻辑线[1]。输入源可以是I/O引脚、内部时钟、外设输出、寄存器位等几种信号的组合,可以实现的逻辑功能包括与逻辑、或逻辑、与或逻辑、异或逻辑,以及SR锁存器、带置1和复位功能的时钟控制D型锁存器等。CLC模块的简化框图如图2所示。
为了开发方便,Microchip公司在其官网上发布了CLC设计工具CLC Designer,如图3所示。在此界面上可以轻松地配置逻辑功能,并且生成C语言代码或者汇编语言代码。
图3 CLC Designer界面
CLC模块使用时需要注意的问题:①如果仅有两个信号做逻辑运算,其余的两个输入可以选择不使能;②所有的输入信号必须是已经使能的模块产生的信号,例如使用PWM2OUT作为一个输入信号,PWM2模块必须已经使能。
2.4 互补波形发生器模块
在电机控制系统的设计过程中,安全问题是必须要考虑的问题,特别是在H桥的驱动电路中,由于电子器件都具有开关时间,并且“开”和“关”的延时不同,单片机的信号在开启这些元件时,上下桥臂上的2个开关管容易出现直通现象,这将引起短路类的严重事故[2],所以在信号中加入死区时间是很有必要的。一般单片机发出的信号是没有死区时间的,都是在单片机与驱动电路之间加上可以生成死区时间的电子元件,但这样会使系统的可靠性下降,PIC16F1508单片机内置互补波形发生器模块CWG(Complementary Waveform Generator ,CWG),可以从选择的输入源产生带死区延时的互补波形,这在目前单片机中还是属于首创。
CWG模块的可选输入源可以是PWM模块、CLC1模块的内部输出、数控振荡器模块以及比较器模块等内部输出,并且CWG模块可以独立选择输入源和关断源,可选死区时钟源控制,使用独立的死区计数器进行死区控制,并且可以进行输出极性控制,其简化框图略——编者注。
CWG模块使用中的问题:①死区时间的误差为1个时钟周期;②CWG模块的输出不能内部输出到其他模块当做输入。
3 CLC功能在开关磁阻电机控制上的简单应用
通过查阅大量文献资料发现,在开关磁阻电机的驱动系统设计研究中,无论选择的控制芯片是比较高档的DSP还是比较普遍的51单片机,在控制外部的开关管工作时,总是由内部发出一路波形,外部通过简单的逻辑器件进行逻辑转换,生成可以控制开关管工作的4路或者多路波形。例如参考文献3中使用PIC16F877作为控制芯片,外部使用的是多个与非门的组合完成逻辑转换。参考文献4中使用TMS320F420为控制核心,外部使用的是一个D触发器和与非门的搭配完成逻辑转换。本文利用单个PIC16F1508单片机发出四路波形的方法,并且在Proteus8.0仿真软件进行仿真。
在Proteus8.0软件界面连接外部电路如图4所示。其中S、P模拟的是开关磁阻电机发出的换相信号。
图4 Proteus中的外部电路图
图5、图6所示为CLC2,CLC3模块配置。
图5 CLC2配置
图6 CLC3配置
使用Proteus8.0仿真软件进行仿真,仿真输出的信号波形图如图7所示,其中由上至下分别是A、B、C、D四相信号。
图7 仿真结果波形图
不难看出,完全可以用一个PIC16F1508单片机发出控制开关磁阻电机运转的4路波形,这样不仅减少了电路板上外部逻辑器件的使用,提高了可靠性,而且能充分利用资源、提高经济性。
结语
PIC16F1508单片机不仅具有丰富的外设,而且价格便宜、功耗低。与某些专用电机控制芯片主要针对某一类电机而设计不同,PIC16F1508可以控制大部分电机,有待使用者去研究开发,相信凭借较高的性价比它一定可以在电机控制领域取得广泛的应用。