APP下载

离心机变频驱动系统软件设计

2018-10-09张旺王东黄玲玲沈霄

科技视界 2018年19期
关键词:通信系统离心机软件

张旺 王东 黄玲玲 沈霄

【摘 要】随着我国工业化进程和电子技术的快速发展,离心机的应用越来越广泛。与此同时,企业对离心机各方面的性能有着越来越高的要求。本文详细介绍了基于DSPIC30F3011单片机的驱动系统的设计方案、转速检测和通信系统各个部分,并附上了部分软件程序。

【关键词】离心机;软件;PWM波形;测速系统;通信系统

中图分类号: TQ051 文献标识码: A 文章编号: 2095-2457(2018)19-0052-003

DOI:10.19694/j.cnki.issn2095-2457.2018.19.022

Software Design of Centrifugal Variable Frequency Drive System

ZHANG Wang WANG Dong HUANG Ling-ling SHEN Xiao

(Hunan Normal University, School of Engineering and Design, Changsha Hunan 410000, China)

【Abstract】With the rapid development of industrialization and electronic technology in China, the application of centrifuges is more and more extensive. At the same time, companies have increasingly higher requirements for all aspects of centrifuge performance. This paper introduces the design scheme, speed detection and communication system parts of the drive system based on DSPIC30F3011 microcontroller, and attaches some software programs.

【Key words】Centrifuge; Software; PWM waveform; Speed measurement system; Communication system

1 芯片简介

本系统选择DSPIC30F3011作为主芯片,该芯片是microchip公司生产的高性能数字信号控制器,其包含5个16位定时器,4路输入捕捉、4路输出比较,6路PWM通道,9路10位的A/D转换,2个异步收发器UART以及大内存,完全满足产生SPWM调速、建立用户通信系统、测量转速以及电机其他功能的需求。

2 PWM模块

产生SPWM的方案:将PWM时基设置工作在连续向上/向下计数模式,产生一个对称三角波形,通过公式计算出PTPER的值,通过配置特殊事件触发寄存器的值,得到一路中心对称的PWM波形,将PWM配对I/O引脚模式位设置为1,互补输出模式,得到一组互补的输出。由此得到三组PWM波。将SIN函数值放到各个占空比寄存器当中,得到三组随正弦规律变化的SPWM波形。

通过配置DSPICL30F3011芯片的PWM模块的相关寄存器,实现一个基本的三组PWM波的输出。在本设计中,采用的是一个频率为6MHz的晶振,产生一个频率为6.5KHz的PWM波,需要配置PTCON(PWM时基控制寄存器)、PTPER(PWM时基周期寄存器)、SEVTCMP(特殊事件比较寄存器)、PWMCON1(PWM控制寄存器1)、PWMCON2(PWM控制寄存器2)。

2.1 产生单通道PWM波形输出

为了产生三角载波,需要将PWM模块时基控制寄存器PTCON设置为0X8002(开启PWM时基,PWM时基输出后预分频比设为1:1,输入时钟预分频比为1:1,工作在连续向上/向下计数模式),可以根据需要设计不同的分频系数,此值仅作参考。通过式(1)

PTPER=■-1式(1)

计算出PWM时基周期寄存器的值,并将十五位寄存器的值写入时基寄存器(PTMR),因为工作在连续向上/向下计数模式,此值是三角载波的峰值,载波周期需乘以二,完成此步骤之后还需将相应的中断允许寄存器开启,并且根据需要设计相应的中断优先级,即可完成载波输出。

假设采用6M晶振,输出PWM波的频率为6.5k,PWM时基工作在连续向上/向下计数模式,无分频,则:

PTPER=■-1=460

部分初始化例程如下:

IFS2bits.PWMIF=0;清除PWM中断标志状态位

IEC2bits.PWMIE=1;允许PWM中断

IPC9=0X5000;将PWM中断优先级设为3

PTCON=0X8002;

PTMR=0X0000;清除计数寄存器值

PTPER=460;輸出频率为6.5k的PWM波

2.2 产生三组PWM波形输出

为了驱动三相电动机,在硬件电路设计了三组逆变桥,每组逆变桥的两个开关管不能同时导通,并且三组的电压相位相差120°,因此在软件部分,控制开关管的脉冲序列必须达到这两个要求。DSPIC30F3011内部的PWM控制寄存器可以控制PWM波的输出模式,当处于互补模式时,就可以得到一组互补的序列(在编写程序时,需要用到PWMCON1(PWM控制寄存器1)。考虑到开关器件的开关时间的存在,除此之外必须要设置序列间足够长的死区时间,保证同一逆变桥的两个开关管不会同时闭合。

假设采用6M晶振,死区时间由单元A提供,单元A的预分频比为1:2,死区时间设为5us 则:

十六进制时间值=3MHz×5μs=15=0X000F

部分程序如下:

DTCON1=0X000F;

DTCON2=0X0000;所有PWM信号的死区时间都由单元A提供

PWMCON1=0X0077;模块为互补模式,允许PWMPIN引脚输出

3 测速系统的软件实现

本系统中采用霍尔元件测速法,将霍尔元件的输入端安装在电机底部的转轴上,输出端接CPU的CN端口,根据其测速原理,在程序设计部分,需要检测其输出端的电平变化,并且进行计数,可以用单片机DSPIC30F3011内部的计数器和输入捕捉中断模块来实现。

初始化程序如下:

void initial_CN(void)

{

CNPU1=0X00fe; //CN12345,6,7,上拉开启CN0不上拉,作AD口.

CNPU2=0X0006; //CN17.18上拉.

CNEN1=0X0000; //CN5,CN6,CN7电平变化中断关闭。

CNEN2=0X0000; //不要CN中断.

IPC3=0X0000;

IEC0bits.CNIE=0; //关闭电平变化中断

}

void initial_icp7(void)

{

IC7CON=0X0002; //每个下降沿捕捉一次,每次一个中断,捕捉TMR3的内容。

IC7BUF=0;

}

计数器初始化程序如下

void initial_timer(void)

{ PR1=24000; // t1计数周期设为24000

TMR1=0;

TMR2=0;

TMR3=0;

T2CON=0X0008; //t2和T3形成32位定时器

PR2=0XFFFF;

PR3=0X06FF; //最大的周期设为19秒,如果19秒后没有进入CN中断,报错。

}

输入捕捉模块中断程序如下

void __attribute__((interrupt, no_auto_psv)) _IC7Interrupt(void)

{

hall_timer_low=TMR2;

hall_timer = TMR3HLD;

hall_timer <<= 16;

hall_timer += hall_timer_low;

TMR3HLD=0;

TMR2=0;

IFS1bits.IC7IF=0; //清除 输入捕捉中断.

if(hall_timer>30000)

{

count_speed = 720000000/hall_timer;

current_speed = count_speed;

}

if(syn_speed_set<(current_speed))

SpeedCheckCount++;

else

SpeedCheckCount=0;

}

4 通信系统的软件实现

因为异步串行通信接口具有传输线少、成本低、可靠性高、实现简单等优点,在本设计中,对传输距离没有太高的要求,因此选择RS-232端口进行传输,而所选用的CPU内部集成有UART(通用异步收发器),只要在程序部分进行配置即可。

DSPIC30F3011芯片的UART是可以直接连接外设的串行I/O端口之一,在本设计中,利用这一端口实现软件通信部分。在通信模块有一个波特率发生器UXBRG,通过此寄存器,可设置波特率,计算方法如式(5-2a)、(5-2b):

波特率=■式(5-2 a)

UXBRG=■-1式(5-2 b)

例如:系统晶振频率为6MHz,设置波特率为1200,求波特率发生器的值。

UXBRG=■-1■-1=311

将此值写入到波特率发生器,通信系统的波特率为1200

UART初始化程序如下:

void initial_uart(void)

{

U1BRG=311; //波特率是1200的值。

U1STA=0X0130; //使能地址检测//接收到一个缓冲器满时,中断标志置位

U1MODE=0X0406; //一个停止位,9位数据无奇偶效验,使用ALIO(辅助IO端口)

U1MODEbits.UARTEN=1; //启用UART

U1STAbits.UTXEN=1; //启用发送功能。

}

發送数据程序:

void send_uart_data(void)

{

if(U1STAbits.UTXBF==0)//发送缓冲器未满

{

if(tx_count==0) //重新发送一个字数据

U1TXREG=tx_data[tx_count];//发送缓冲器加载数据

else

U1TXREG=tx_data[tx_count]&0x00ff; //如果9位数据没加载完,缓冲寄存器继续加载 tx_count++;

if(tx_count>10)//加载完9位数据,写入数据

{ tx_count=0;

write_send_data();

}

}

}

数据接收子程序如下:

//*****************VOID receive_data数据接收子程序**************************************

void receive_uart_data(void)

{

if(U1STAbits.OERR)

{

U1STAbits.OERR=0; //如果有数据溢出错误,清除数据溢出错误

IFS0bits.U1RXIF=0;//清除接收中断标志

if(sys_error==0) //无系统标志错误数据

sys_error=6; //串口通讯错误置位。

}

else if(U1STAbits.FERR)//检测到当前字符的帧错误

{

U1STAbits.FERR=0;//清除帧错误标志位

if(sys_error==0)

sys_error=7; //返回接收错误信息

}

else if(rx_count==0)//接收寄存器中无数据

{

if(IFS0bits.U1RXIF)//UART1接收器中断请求

{

IFS0bits.U1RXIF=0;//清除UART1接收器状态标志位

while(U1STAbits.URXDA)//接收缓冲器中有数据

rx_data[0]= U1RXREG;//接收数据

if(rx_data[0]==0x0169)

{ rx_count++;

U1STAbits.ADDEN=0;//地址检测模式禁止(接收数据的第八位=1)

}

}

}

else

{

if(IFS0bits.U1RXIF) //如果接受中断标志位置位

{

IFS0bits.U1RXIF=0; //清除接收中断标志

while(U1STAbits.URXDA) //接收缓冲器中有数据

rx_data[rx_count]= U1RXREG;//接收数据

rx_count++;

if(rx_count>10) //接收到一個9位数据后

{

rx_count=0; //地址清零,等待接收下一个

rx_data[0]=0;

U1STAbits.ADDEN=1;//地址检测模式使能

receive_data_check();//接收数据校验

read_rx_data();//读数据

}

}

}

}

//********************void data check接收数据和效验*********************************************

void receive_data_check(void)

{

unsigned int rx_data_add;rx_data_add=rx_data[1]+rx_data[2]+rx_data[3]+rx_data[4]+rx_data[5]+rx_data[6]+rx_data[7]+rx_data[8]+rx_data[9];

rx_data_add&=0x00ff;

if(rx_data_add==rx_data[10])

rx_ERROR=0;

else

rx_ERROR=1;

}

5 结束语

在离心机系统中,软件系统非常重要,软件系统的优劣直接决定了整个系统的安全性和可靠性。在本系统中设计了一个电机测速系统,检测当前的转速,对速度进行实时监控,让操作员能够清楚的知道当前电机的转速。为了增强系统的可操作性,还增加了微机间的通信系统,让操作员可以根据需要对离心机速度,时间进行调节与设定。

【参考文献】

[1]张燕宾.SPWM变频调速应用技术第3版[M].北京:机械工业出版社,2005:59-84.

[2]马小亮.高性能变频调速及其典型控制系统[M].北京:机械工业出版社,2010:44-47.

[3]石秋洁,张燕宾.变频器应用基础[M].北京:机械工业出版社,2002.

[4]周志敏,周纪海,纪爱华.变频调速系统设计与维护[M].北京:中国电力出版社,2007.

猜你喜欢

通信系统离心机软件
禅宗软件
软件对对碰
LP60型双级活塞推料离心机的研制与应用
离心机转速及相对离心力的正确表示
浅析计算机网络与通信系统
ZPJ-40型高速转盘离心机减振技术
土工离心机研制概述
谈软件的破解与保护