基于LabVIEW的直流电机测控系统设计说明.docx
- 文档编号:10151026
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:23
- 大小:1.42MB
基于LabVIEW的直流电机测控系统设计说明.docx
《基于LabVIEW的直流电机测控系统设计说明.docx》由会员分享,可在线阅读,更多相关《基于LabVIEW的直流电机测控系统设计说明.docx(23页珍藏版)》请在冰豆网上搜索。
基于LabVIEW的直流电机测控系统设计说明
学号:
《虚拟仪器技术》课程大作业
基于LabVIEW的直流电机测控系统设计
专业班级:
学生姓名:
指导教师:
完成日期:
成绩:
1设计要求、内容
1.1要求
1.理解《虚拟仪器技术》课程中所学的理论知识,掌握相关的设计方法和技能,能够读懂一些不太难的程序,能够独立的设计一些不太复杂的程序;
2.能熟练运用LabVIEW进行编程操作,并且能够自主的通过即时帮助通过程序的编写明白一些未知控件的作用;
3.通过学习,掌握基于LabVIEW的电机测控系统的具体设计过程,完成设计;
4.认真总结,完成计报告
1.2内容
1.2.1LabVIEW与单片机串口通信硬件/程序设计
单片机作为下位机核心器件,负责数据的采集和通信及电机转速的控制,而上位机通常以基于图形界面的Windows系统为操作平台。
核心是数据通信,它包括单片机和上位机之间的通信,而单片机和上位机之间数据通信则是整个系统的基础。
单片机和PC的通信是通过单片机的串口和PC串口之间的硬件连接实现的。
图1.1PC与单片机串口通信线路
数据通信的硬件上采用3线制,将单片机和PC串口的3个引脚(RXD、TXD、GND)分别连在一起,即将PC和单片机的发送数据线TXD与接收数据RXD交叉连接,两者的地线GND直接相连,而其他信号线,如握手信号线均不用,采用软件握手的方式,这样既可以实现预定的任务又可以简化电路设计。
利用KeilC51和LabVIEW编写程序实现PC与单片机串口通信。
C51程序:
#include
/*主程序*/
voidmain(void)
{
SCON=0x50;/*SCON:
模式1,8-bitUART,使能接收*/
TMOD=0x20;/*TMOD:
timer1,mode2,8-bitreload*/
TH1=0xFD;/*TH1:
reloadvaluefor9600baud11.0592MHz*/
TL1=0XFD;
TR1=1;/*TR1:
timer1run*/
EA=1;/*打开总中断*/
ES=1;/*打开串口中断*/
while
(1)//主循环不做任何动作
{}
}
voidUART_SER(void)interrupt4//串行中断服务程序
{
unsignedcharTemp;//定义临时变量
if(RI)//判断是接收中断产生
{
RI=0;//标志位清零
Temp=SBUF;//读入缓冲区的值
P0=~Temp;//把值输出到P0口,用于观察
SBUF=Temp;//把接收到的值再发回电脑端
}
if(TI)//如果是发送标志位,清零
TI=0;
}
LabVIEW程序:
图1.2发送程序
图1.3接收程序
图1.4判断通信状态程序
图1.5LabVIEW前面板
1.设计任务一
PC通过串行口将数字(00,01,02,03...,FF,十六进制)发送给单片机,单片机收到后回传这个数字,PC接收到回传数据后显示出来,若发送的数据和接收到的数据相等,则串行通信正确,否则有错误。
启始符是数字00,结束符是数字FF。
图1.6串口助手调试单片机串口通信
2.设计任务二
(1)测试通信状态。
先在文本框中输入字符串“FF”,单击“测试”按钮,将字符串“FF”发送到单片机,若PC与单片机通信正常,在LabVIEW程序前面板显示字符串“OK!
”,否则显示字符串“通信异常”。
图1.7LabVIEW与单片机串口通信测试
(2)控制指示灯。
将单片机接收到的数值赋给P0口,P0口接一排LED,观察LED的显示结果(表示该数值的二进制显示)是否与输入值相符合。
图1.8输入“FF”
图1.9输入“01”
单片机和LabVIEW通信,在程序设计上涉及两个部分的内容。
一是单片机的C51程序,二是LabVIEW的串口通信程序和界面的编制。
1.2.2电机驱动模块/调速程序设计
图1.10LS298N驱动模块
设置IN1和IN2,确定电机的转动方向,然后对使能端输出PWM脉冲,实现电机调速。
当使能信号为0,电机处于自由停止状态;当使能信号为1,且IN1和IN2为00或11时,电机处于制动状态,阻止电机转动。
C51程序:
#include
sbitIN1=P1^0;
sbitIN2=P1^1;
sbitENA=P1^2;
//x毫秒延时
voiddelay(unsignedintx)
{
unsignedinti,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
//y微秒延时
voiddelay_us(unsignedinty)
{
while(y--);
}
//主函数
voidmain()
{
while
(1)
{
unsignedinti,cycle=1300,T=2048;
/*IN1=1;//反转
IN2=0;
for(i=0;i<200;i++)
{
delay(10);//PWM占空比为50%,修改延时调整PWM脉冲
ENA=~ENA;
}
IN1=0;//正转
IN2=1;
for(i=0;i<200;i++)
{
delay(10);
ENA=~ENA;
}
*/
IN1=0;//自动加速正转
IN2=1;
while(cycle<2048)
{
ENA=1;
delay_us(cycle++);
ENA=0;
delay_us(T-cycle);
}
/*IN1=1;//自动减速反转
IN2=0;
*/while(cycle>1300)
{
ENA=1;
delay_us(cycle--);
ENA=0;
delay_us(T-cycle);
}
}
}
1.2.3电机测速模块/测速程序设计
图1.11光电耦合测速传感器模块
1.模块槽中无遮挡时,接收管导通,模块DO输出低电平,遮挡时,DO输出高电平;
2、DO输出接口可以与单片机IO口直接相连,检测传感器是否有遮档,如用电机码盘则可检测电机的转速。
设计选用的测速码盘有20格光栅,因此速度计算公式为:
Speed=(count/20)*60(转/分)
图1.12电机测速调试1
图1.13电机测速调试2
C51程序:
#include
sbitIN1=P1^0;
sbitIN2=P1^1;
sbitENA=P1^2;
unsignedinti=0,pul=0,count=0,Speed=0;
unsignedintcycle=2000,T=7000;
//x毫秒延时
voiddelay(unsignedintx)
{
unsignedinti,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
//y微秒延时
voiddelay_us(unsignedinty)
{
while(y--);
}
voidmain()
{
TMOD=0x15;//打开定时器T1和计数器T0,TMOD为00010101,都为模式1因此矩形脉冲输入端接P3.4
EA=1;
TH0=0x00;
TL0=0x00;
ET0=1;
ET1=1;
TH1=0x3C;//50ms0x3CB0=15536
TL1=0xB0;
TR0=1;
TR1=1;
while
(1)
{
IN1=0;//自动加速正转
IN2=1;
while(cycle<3000)
{
ENA=1;
delay_us(cycle++);
ENA=0;
delay_us(T-cycle);
}
while(cycle>2000)//自动减速
{
ENA=1;
delay_us(cycle--);
ENA=0;
delay_us(T-cycle);
}
}
}
timer3()interrupt3//定时器中断时间到,就读取计数器值
{
TH1=0X3C;
TL1=0XB0;
i++;
if(i<20)//累计1s内的脉冲数
{
pul=TH0;//计数器计入脉冲,每来一个矩形脉冲计数值加1
pul=pul<<8;//得高八位后,左移8位,
pul=pul+TL0;//再加上低八位
count+=pul;
pul=0;
TH0=0;//计数器速度获取后清零,进行下次获取
TL0=0;
}
if(i==20)//每秒更新一次速度
{
pul=TH0;//计数器计入脉冲,每来一个矩形脉冲计数值加1
pul=pul<<8;
pul=pul+TL0;
count+=pul;
Speed=(count/20)*60;//测得的速度(转/分)
i=0;
count=0;
TH0=0;//计数器速度获取后清零,进行下次获取
TL0=0;
P0=~Speed;//观察速度值
}
}
1.2.4总硬件/程序的设计
图1.14直流电机测控系统硬件原理框图
图1.15总硬件设计
C51总程序:
#include
#include
#include
#include
#include
sbitIN1=P1^0;
sbitIN2=P1^1;
sbitENA=P1^2;
unsignedinti=0,pul=0,count=0,Speed=0,Speed_dec=0;
unsignedintcycle=2000,T=7000;
//x毫秒延时
voiddelay(unsignedintx)
{
unsignedinti,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
//y微秒延时
voiddelay_us(unsignedinty)
{
while(y--);
}
/*主程序*/
voidmain(void)
{
SCON=0x50;/*SCON:
模式1,8-bitUART,使能接收*/
TMOD=0x25;/*TMOD:
timer1,mode2,8-bitreloadT0计数,模式1,因此矩形脉冲输入端接P3.4*/
TH1=0xFD;/*TH1:
reloadvaluefor9600baud11.0592MHz*/
TL1=0XFD;
TH0=0x00;
TL0=0x00;
TR1=1;/*TR1:
timer1run*/
EA=1;/*打开总中断*/
ES=1;/*打开串口中断*/
TR0=1;
TR1=1;/*TR1:
timer1run*/
while
(1)//主循环
{
if(Speed_dec=Speed)
{
IN1=0;//停转
IN2=0;
}
if(Speed_dec>Speed)
{
IN1=0;//自动加速正转
IN2=1;
while(cycle!
=T)
{
ENA=1;
delay_us(cycle++);
ENA=0;
delay_us(T-cycle);
}
}
if(Speed_dec { IN1=1;//自动减速反转 IN2=0; while(cycle! =T) { ENA=1; delay_us(cycle++); ENA=0; delay_us(T-cycle); } } } } voidUART_SER(void)interrupt4//串行中断服务程序,在LabVIEW中设置每隔一秒中断一次(便于测速) { unsignedcharTemp1,ch1;//定义临时变量 unsignedcharhex; unsignedinti; TH1=0X3C;//计算速度 TL1=0XB0; i++; if(RI)//判断是接收中断产生 { RI=0;//标志位清零 Temp1=SBUF;//读入缓冲区的值 if(Temp1>=0x30&&Temp1<=0x39) ch1=Temp1-0x30; elseif(Temp1>=0x41&&Temp1<=0x46) ch1=Temp1-0x37; elsech1=0xff; pul=TH0;//计数器计入脉冲,每来一个矩形脉冲计数值加1 pul=pul<<8; pul=pul+TL0; count+=pul; Speed=(count/20)*60;//测得的速度(转/分) i=0; count=0; TH0=0;//计数器速度获取后清零,进行下次获取 TL0=0; SBUF=Speed;//把速度值再发回电脑端 } if(TI)//如果是发送标志位,清零 TI=0; } 1.3设计环境: 硬件环境: 单片机、直流电机及驱动模块、串口。 软件环境: LabVIEW编程软件、Keil编程软件、串口调试助手。 2设计过程 2.1设计思路 2.1.1硬件系统方案设计 本系统主要实现对直流电机进行测速和调速。 (1)调速控制 由LabVIEW编程产生电机所需要控制的转速值,将该速度值通过串口送入单片机,与测得的速度值进行比较,若送入值大于测量值则单片机控制直流电机加速,若送入值小于测量值则单片机控制直流电机减速。 (2)测速控制 将电机上的测速码盘安装在光电耦合器的发射端和接收端之间,当测速码盘转动时,光栅阻挡光耦发射出的光信号,在光耦接收端得到一段连续的脉冲波形,该脉冲波形经过斯密特触发器进行整形后,得到一形状规则的脉冲波形。 整形后的脉冲波形输出至单片机计数器端,用C51程序算出速度值后传回计算机(LabVIEW)并显示。 2.1.2软件系统设计 LabVIEW程序,主要包括用户界面设计(前面板的设计)和框图程序设计两部分。 (1)用户界面设计 用户界面(前面板)是虚拟仪器的重要组成部分,仪器参数的设置、测试结果显示等功 能都是通过软件实现,因此要求软件界面简单直接,便于使用。 用户可根据需要设置转速参数,并将测量结果数据显示出来。 (2)框图程序设计 系统框图程序大体分为三个模块: 通信模块和仪器功能模块。 通信模块模块中包括对设定速度值的发送和对测量速度的接收;仪器功能模块主要实现参数设置和测量结果显示。 C51单片机程序设计,主要包括控制电机加速、减速,输入速度和测量速度,比较以及串口通信程序。 因为测速码盘有20片光栅,所以应将1s内计数值除以20再乘以60才得到风扇转速(转/分)。 2.2程序设计流程 图2.1程序设计流程图 2.3设计好的程序框图及前面板 程序框图: 图2.2发送程序 图2.3延时程序 图2.4接收程序 图2.5用户界面 3任务总结与展望 电机测控在工业控制系统中占据非常重要的地位,传统的电机测控,主要采用指针式仪表,通过人工读数、记录、整理统计数据、绘制曲线和编写文档等,测控速度慢、数据不准确、数据处理和分析复杂,很难适应现代化发展的要求。 电机测控系统一般分为两大部分,即数据采集与控制部分和人机界面部分,目前的自动控制系统常采用单片机控制、工业PC机控制、PLC控制等多种方案,利用虚拟仪器技术开发和设计了一个新型电机调速测速系统,该系统采用普通PC机为主机,利用图形化可视测试软件LabVIEW为软件开发平台,来测控电机运行速度状态,采集数据并进行处理、存储、显示。 设备成本低,使用方便灵活。 本次设计还有很多不足之处,比如电机调速范围只有10-80转/分,在今后的实践中我会同我的组员一起改进,做得更好。 4个人收获 在本次设计中真正感受到了LabVIEW使用图形化编程语言G在流程图中创建源程序,这种编程方式强调信号处理的实际过程,编程简单,调试方便的特点。 用LabVIEW大大提高了我们在本次实验中的工作效率。 在这次设计中学习了很多,比如单片机的串口通信,LabVIEW串口通信,电机测速等,都是以前没研究过的,在这个过程中学习了很多单片机和LabVIEW的知识,同时发现并解决了很多问题,让我们受益匪浅。 也意识到了设计一个系统需要有严谨的态度,不能马虎。 附: 个人信息 姓名 学号 联系方式 QQ E-mail
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 LabVIEW 直流电机 测控 系统 设计 说明
![提示](https://static.bdocx.com/images/bang_tan.gif)