司开波 黄 健 吕林涛
(西京学院,西安 710123)
直流电机因其效率高、寿命长、低噪声、力矩大等优点,在工业生产和家用电器等方面得到了广泛的应用。人们经常用PWM波来调整直流电机的转速,但在实际应用中常常会发现,即使是一个固定的PWM值,也不能得到一个恒定不变的转速。因此,人们常常用PID算法来调整电机的转速。这种算法在使用时,要根据不同的电机建立不同的模型,然后分别得到P、I、D的系数,根据系数调整电机的转速。但该方法受客观因素影响较大,不能克服非线性摩擦力以及电机力矩波动对转速的影响,而且相应速度不够快[1~3]。
为了克服以上缺点,本文提出采用基于Cortex-M3的高性能微处理器STM32,应用其内部定时器Timer,每间隔10ms对PWM波中的正脉宽宽度作出调整,以控制电机的转速。对电机的转速采用编码器测速,精度高、响应速度快。将设定的速度值与编码器测得的速度进行比较,若其值为正,说明实际速度值偏小,在定时器中将正脉宽的宽度加大,以提高驱动能力,达到提升速度的目的;若其值为负,说明实际速度值偏大,在定时器中将正脉宽的宽度减小,以减小驱动能力,达到降低速度的目的;若两值相等,则当前的正脉宽值保持不变。采用这种方法,调节时间间隔短、响应快,能够较好的控制电机的转速。
系统设计框图如图1所示。图中主控采用STM32F103ZET6,在STM32F1系列中属于高端产品,功能强大,资源丰富。基于Cortex M3的32位微处理器,有3个硬件SPI接口、8个定时器、3个串口、144个引脚[4,5]。图1中首先用按键电路设置电机转速,用TB6612驱动直流微型电机,该微型电机自带编码器,可用于测速。测速时,将编码器的A、B相分别连接到STM32定时器T2的PA2和PA3引脚上,就可测得电机的转速。将测得的转速值与设置的转速值进行比较,就可得到误差值,根据误差值调节PWM中的正脉宽宽度。若测量值小于设定值,则增大正脉宽的宽度;若测量值大于设定值,则减小正脉宽的宽度;若相等,则维持原来正脉宽的值不变。
图2 4*1按键设计电路Fig.2 4*1 Button design circuit
按键设计电路如图2所示。采用4*1按键,用于设置电机转速。
TB6612是日本东芝公式出品的一款直流电机驱动器,性能优于L298,可同时驱动2路直流电机。最大电流可达1.5A,TB6612与STM32的连接图如图3所示。
图3 TB6612与STM32的连接图Fig.3 Connection graph between TB6612 and STM32
图3中AIN1、AIN2、PWMA分别控制1路电机,对应电机连接端是AO1和AO2; BIN1、BIN2、PWMB分别控制1路电机,对应电机连接端是BO1和BO2; 可将AIN1、AIN2、PWMA连接到对应的STM32的IO口。PWMA和PWMB分别连接到STM32的PA0、PA1,这两个引脚对应的是定时器T5的通道1和通道2,能够产生对应的PWM波形,用于电机的调速。对应的真值表如表1所示。
表1 TB6612真值表
Tab.1 Truth table of TB6612
表1中H代表高电平,L代表低电平。当电机全速运行时,PWMA输出高电平,要调整速度时,PWMA输出不同占空比的方波。另一路电机BIN1、BIN2、PWMB、 BO1、BO2的控制逻辑与表1类似。
12V直流电机连接图如图4所示。电机驱动 PWM 频率是10kHZ。电机尾部自带了13线的磁(霍尔)编码器,电机减速比30:1,故车轮转一圈,电机可以输出 390个脉冲。编码器的额定工作电压是3.3V,集成了上拉电阻和比较整形功能,可以直接输出方波。将编码器的输出A相、B相分别接到定时器T2的PA2和PA3,用定时器T2的计数功能测速[6~8]。图4中的“电机线+”和“电机线-”分别接图3中TB6612的输出端AO1和A02。
图4 12V直流电机连接图Fig.4 Connection diagram of 12V DC motor
显示单元采用1.44寸SPI接口真彩屏,显示电路设计如图5所示。图中采用0.96寸的OLED做显示屏,分辨率为128×64。接口非常简单,采用模拟IIC接口,带有2个10K上拉电阻,分别连接到STM32的PE0、PE1引脚。采用3.3V电压供电。性能优于普通的液晶显示器LCD1602,引脚数比1602少很多。按键设定的速度值和编码器测量的速度值都将在OLED显示屏上显示,还可以显示时间等其它信息。
图5 OLED显示电路原理图Fig.5 Schematic diagram of OLED display circuit
软件设计流程图如图6所示。首先对IIC、定时器等进行初始化,然后用按键设置电机转速。按照表1送出对应信号,启动电机旋转。在旋转过程中,利用定时器T1每隔10ms测试一次电机转速[9]。根据公式(1)得到速度差e。若设定值大于测量值,则PWM的正脉宽加e;若设定值小于测量值,则PWM的正脉宽减e;若相等,则PWM的值不变。一直循环,流程图如图6所示。
图6 软件流程图Fig.6 Software flow chart
公式(1)中,vs为设定的速度值,vc为测量的速度值。两者相减得到速度的误差值Er
Er=vs-vc
(1)
以下是定时器T1的初始化程序,调用形式是Timer1_Init(99,7199);根据公式(2)计算,定时时间恰好是10ms。
Tout=(arr+1)×(psc+1)/Fclk
(2)
式中:Tout——定时时间;Fclk——时钟频率,STM32F103的时钟频率是72MHz;arr——定时器的自动重装值;psc——时钟预分频系数,分别做为函数Timer1_Init的两个参数。
void Timer1_Init(u16 arr,u16 psc)
{
RCC->APB2ENR|=1<<11;
TIM1->ARR=arr;
TIM1->PSC=psc;
TIM1->DIER|=1<<0;
TIM1->DIER|=1<<6;
TIM1->CR1|=0x01;
MY_NVIC_Init(0,0,TIM1_UP_IRQn,2);
}
以下代码是定时器1的中断代码,每隔10ms中断一次。程序中Read_Encoder(2)为读取编码器值的函数,并将其赋给Encoder_Left。程序中Set_value为按键设定电机转速。若测量值大于设定值,则pwm值减1,并调用TIM5_PWM_Set函数重新设定pwm脉宽,降低电机转速;若测量值小于设定值,则pwm值加1,并调用TIM5_PWM_Set函数重新设定pwm脉宽,提高电机转速。利用此函数,能够快速调节电机的转速。
int TIM1_UP_IRQHandler(void)
{
if(TIM1->SR&0X0001)
{
Encoder_Left=Read_Encoder(2);
if(Encoder_Left>Set_value)
{pwm-= Vs-Vc;
TIM5_PWM_Set(35999,0,3,3,pwm);
}
Else if(Encoder_Left {pwm+= Vs-Vc; TIM5_PWM_Set(35999,0,3,3,pwm); } } } 测试时,根据上述硬件原理图进行连接。在KEIL下用C语言编写程序,调试好后下载到STM32F103中,就可进行测试。实物如图7所示。 测试时,将编码器输出值用串口输出,每隔10ms记录一次,并将结果保存在一个表格中,如表2所示。由于篇幅有限,表2中只给出了部分数据。根据更多个数据,得到时间与测量速度值之间的曲线如图8所示。测试时按键设定的速度值是240cm/ms。 图8 时间与测量速度值之间对应关系图Fig.8 Corresponding graph between time and measured velocity value 从表格2和图8中可以看出,从0到60ms,PWM值不断增大,电机转速不断提高;从70ms到110ms,由于惯性左右,电机转速还在增大,但此时定时器已经开始调节速度,调节过程中电机转速有适当的波动,但是到120ms后趋于稳定。速度稳定在240cm/ms,也就是设定值,达到了调速的目的。 表2 编码器测量值与时间之间的对应关系 Tab.2 Relationship between encoder measurement value and time 本文提出了一种直流电机的调速新方法,绘制了硬件原理图,编写了软件程序,制作出了实物,并对该方法进行了验证[10]。测试结果表明:该方法具有简单、实用、响应快等优点,能够快速调节电机的转速,取得了较好的效果。 [1] 余炽业, 宋 跃, 雷瑞庭.基于STC12C5A60S2 的智能循迹小车[J]. 实验室研究与探索,2014,33(11):46~49. [2] 徐坤,徐坤,吴定允.基于DSP直流无刷电机控制系统的设计与实现[J].信阳师范学院学报( 自然科学版),2016,29(2):249~252. [3] 张厚升,董 硕,姜吉顺,邢雪宁.基于Matlab_Simulimk的直流调速系统虚拟实验教学[J].实验室研究与探索,2016,35(6) : 66~70. [4] 敬光红. 基于FPGA的无刷直流电机数字控制方法研究[J].电子器件,2016,39(1) : 111~117. [5] 莫太平,杨宏光,刘冬梅. 面向多路线的智能循迹小车的设计与实现[J].自动化与仪表,2014,(4):6~9. [6] 贺桂芳. 一种新型智能金属探测仪的设计[J]. 仪表技术与传感器,2016,1:13~15. [7] 师树恒,赵斌,郭朋彦,邹栋. 基于MK60N512的智能循迹小车设计[J].机床与液压,2014,42(2):91~96. [8] 王茹茹,宋开宏,明军,潘煜天,吴振飞. 基于开放线圈系统金属探测仪传感器的特性分析[J].合肥工业大学学报(自然科学版),2015,38(3):354~357. [9] 宋永献,马娟丽,贺乃宝,张先进. 基于TMS320F2812的智能循迹小车控制系统设计[J].计算机测量与控制,2011,19(9):2 128~2 130. [10] 张从鹏,邢庆辉. 基于ARMCortex_M4的永磁无刷直流调速系统设计[J].微特电机,2016,44(1):90~92.5 测试结果
6 结束语