基于labview直流电机速度控制系统.docx
《基于labview直流电机速度控制系统.docx》由会员分享,可在线阅读,更多相关《基于labview直流电机速度控制系统.docx(13页珍藏版)》请在冰豆网上搜索。
基于labview直流电机速度控制系统
摘要
当今,自动化控制系统已经在各行各业得到了广泛的应用和发展,而直流驱动控制作为电气传动的主流在现代化生产中起着主要作用。
而随着计算机技术、大规模集成电路技术的飞速发展,出现一种全新的仪器概念——虚拟仪器。
虚拟仪器的核心是应用计算机上的虚拟仪器软件系统进行仿真。
图形化软件开发环境是目前实现虚拟仪器软件设计最流行的工具之一,其广泛被工业界、学术界和研究实验室认可并接受,被公认为标准的数据采集和仪器控制软件,现已成为测试测量和控制行业的标准软件平台。
长期以来,直流电动机因其转速调节比较灵活,方法简单,易于大范围平滑调速,控制性能好等特点,一直在传动领域占有统治地位。
它广泛应用于数控机床、工业机器人等工厂自动化设备中。
我们通过平台控制直流电机转速,并测量分析其转速。
使其满足现代化生产规模的不断扩大,各个行业对直流电机的需求愈益增大,并对其性能提出了更高的要求。
为此,研究并制造高性能、高可靠性的直流电机控制系统有着十分重要的现实意义。
关键字:
直流电机,自动控制,虚拟仪器,单片机
ABSTRACT
Today,automationcontrolsystemhasbeeninallwalksoflifeawiderangeofapplicationsanddevelopment,anddcdrivecontrolasthemainstreamofelectrictransmissioninmodernproductionplaysamainrolein.Andalongwiththecomputertechnology,largescaleintegratedcircuittechnologyrapiddevelopment,theemergenceofanewinstrumentconcept-Virtualinstrument(VirtualInstrumentation,VI)VirtualinstrumentisthecoreoftheapplicationofcomputersimulationVirtualinstrumentsoftwaresystem.GraphicalLabVIEWsoftwaredevelopmentenvironment(LaboratoryVirtualInstrumentEngineeringWorkbench)istheVirtualInstrumentsoftwaredesignofoneofthemostpopulartool,thewidelyindustry,academiaandresearchlaboratoriesrecognizedandaccepted,isrecognizedasthestandardofdatacollectionandInstrumentcontrolsoftware,hasnowbecomeatestmeasurementandcontrolindustrystandardsoftwareplatform.Long-termsince,foritsspeedadjustmentfordcmoreflexible,simple,easytobigrangesmoothspeedadjustment,thecontrolperformanceisgoodwaitforacharacteristic,hasbeeninthetransmissionfieldsholdadominantposition.Itiswidelyusedinthenumericalcontrolmachinetool,industrialrobotfactoryautomationequipment.WethroughtheLabVIEWplatformcontroldcmotorspeed,andmeasurementanalysisitsspeed.Makeitsatisfymodernizedproductionscalecontinuestoexpand,eachindustrytodcmotorofthetransportationdemandincreases,anditsperformanceputforwardhigherrequest.Therefore,theresearchandmanufacturingofhighperformance,highreliabilityofthedcmotorcontrolsystemhasveryimportantpracticalsignificance.
Keywords:
DCmotor,Theautomaticcontrol,virtualinstrument
1、设计思路
基于LabVIEW的电机调速测控系统设计与实现,所要用到LabVIEW虚拟仪器这个软件平台,通过串行口与CPU90C51相连控制直流电机转速并且测量分析转速,实现对直流电机的软件控制。
通过霍尔传感器A3144采集信号传送到CPU90C51进行定时计数,输出到三维机VI显示转速,三维机VI将调速信号发送回CPU90C51通过脉宽调制PWM控制电机转速。
流程图如下:
2、系统的设计和实现
2.1信号采集
在直流电机上装一个转盘,在转盘上粘贴上一粒磁钢,为了使转盘对称,对称的反向粘贴上一粒磁钢,随着电机转动,霍尔传感器A3144产生周期信号,通过电压比较器LM393处理输出进入CPU90C51处理。
其电路原理图如下:
传感器A3144有三个引脚:
VCC、地、输出。
如下图:
关于其极限参数(25℃)
电源电压VCC……………25V
输出反相击穿电压…………50V
输出低电平电流…………50mA
工作环境温度……E档–20~85℃,L档–40~150℃
贮存温度范围…………–65~150℃
2.2信号处理
STC90C516RD+系列单片机是宏晶科技推出的新一代超强性能/高速/低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,内部集成MAX810专用复位电路,时钟频率在12MHz以下时,复位脚可直接接地。
1.增强型6时钟/机器周期,12时钟/机器周期8051CPU
2.工作电压:
5.5V-3.8V(5V单片机)/3.8V-2.4V(3V单片机)
3.工作频率范围:
0-40MHz,相当于普通8051的0~80MHz.
4.用户应用程序空间4K/6K/7K/8K/10K/12K/13K/16K/32K/40K/48K/56K/61K/字节
5.片上集成1280字节/512/256字节RAM
6.通用I/O口(35/39个),复位后为:
P1/P2/P3/P4是准双向口/弱上拉(普通8051传统I/O口)
P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器
可通过串口(P3.0/P3.1)直接下载用户程序,8K程序3-5秒即可完成一片
8.EEPROM功能
9.看门狗
10.内部集成MAX810专用复位电路,外部晶体12M以下时,可省外部复位电路,复位脚可直接接地。
11.共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用
12.外部中断4路,下降沿中断或低电平触发中断,PowerDown模式可由外部中断低电平触发中断方式唤醒
13.通用异步串行口(UART),还可用定时器软件实现多个UART
14.工作温度范围:
0-75℃/-40-+85℃
15.封装:
LQFP-44,PDIP-40,PLCC-44
其原理图电路如下:
2.3三维机VI
以下是总的系统程序设计图
系统程序框图
系统的程序设计完成后,将系统进行了实际调试,调试结果如下图所示
电机转速及控制曲线
2.4脉宽调制PWM
ULN2003D也是一个7路反向器电路,即当输入端为高电平时ULN2003输出端为低电平,当输入端为低电平时ULN2003输出端为高电平,继电器得电吸合。
功能特点:
高电压输出50V、输出钳位二极管、输入兼容各种类型的逻辑电路、应用继电器驱动器
其原理电路如下:
3、软件设计
系统总程序如下:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineSH300
sbitPWM=P1^1;
sbitmc=P3^4;
uchart,flag,flag1,flag2;
uchartime;
ucharch;
bitlinshi;
voiddelay(uchari)//延时
{
uchara;
for(a=i;a>0;a--);
}
voidPWMout(ucharch)//脉宽调制
{
PWM=1;
delay(256-ch);
PWM=0;
delay(ch);
}
voidUART_Read()interrupt4//串口读
{
RI=0;
ch=SBUF;
flag1=1;
}
voidUART_Write(ucharx)//串口写
{
SBUF=x;
while(!
TI);
TI=0;
}
voidmain(void)//主程序
{
ucharcount;//初始化
linshi=0;
ch=1;
count=0;
TMOD=0x21;
SCON=0x50;
TH1=0xFD;
TL1=0XFD;
TR1=1;
TL0=0x00;
TH0=0xB4;
TR0=0;
ES=1;
EA=1;
ET0=0;
while
(1)//驱动电机与计数
{
uinti;
ET0=0;
for(i=SH;i>0;i--)
{
PWMout(ch);
}
flag2=0;
if(flag1==1)
{
ES=0;
flag1=0;
time=0;
TH0=0xB4;//0.05/(1/11059200*12)=46080
TL0=0;
TR0=1;
ET0=1;
while(flag2==0)
{
P0=0xaa;
if(flag==1)
{
count/=2;
UART_Write(count);
flag=0;
count=0;
flag2=1;
ET0=0;
TR0=0;
}
if(mc!
=linshi)
{
count++;
linshi=~linshi;
//UART_Write(count);
}
}
ES=1;
}
}
}
voidtimer0()interrupt1//定时
{
TH0=0xB4;//0.05/(1/11059200*12)=46080
TL0=0;
time++;
if(time==20)
{
time=0;
flag=1;
}
}