1、基于LabVIEW的直流电机测控系统设计学号:8b岳址农林科扶大芋 机械与电子工程学院CoIigcg cl Mechanical and Elacironic Engineering9 NORTHWEST A&F UNIVERSITY虚拟仪器技术课程大作业基于LabVIEW的直流电机测控系统设计专业班级: 学生姓名: 指导教师: 完成日期: 成 绩: 1设计要求、内容 21.1要求 21.2内容 21.2.1LabVIEW 与单片机串口通信硬件 /程序设计 21.2.2电机驱动模块 /调速程序设计 61.2.3电机测速模块 /测速程序设计 81.2.4总硬件 / 程序的设计 111.3 设计环
2、境: 142设计过程 142.1设计思路 142.1.1硬件系统方案设计 142.1.2软件系统设计 142.2程序设计流程 152.3设计好的程序框图及前面板 163任务总结与展望 174个人收获 17附:个人信息 171设计要求、内容1.1要求1 理解虚拟仪器技术课程中所学的理论知识,掌握相关的设计方法和 技能,能够读懂一些不太难的程序,能够独立的设计一些不太复杂的程序;2能熟练运用LabVIEW 进行编程操作,并且能够自主的通过即时帮助通 过程序的编写明白一些未知控件的作用;3通过学习,掌握基于 LabVIEW的电机测控系统的具体设计过程,完成 设计;4 认真总结,完成计报告1.2内容1
3、.2.1 LabVIEW 与单片机串口通信硬件/程序设计单片机作为下位机核心器件,负责数据的采集和通信及电机转速的控制, 而上位机通常以基于图形界面的 Windows系统为操作平台。核心是数据通信,它 包括单片机和上位机之间的通信,而单片机和上位机之间数据通信则是整个系统 的基础。单片机和PC的通信是通过单片机的串口和 PC串口之间的硬件连接实现的。图1.1 PC与单片机串口通信线路数据通信的硬件上采用3线制,将单片机和PC串口的3个引脚(RXD、TXD、 GND)分别连在一起,即将PC和单片机的发送数据线TXD与接收数据RXD交 叉连接,两者的地线GND直接相连,而其他信号线,如握手信号线均
4、不用,采 用软件握手的方式,这样既可以实现预定的任务又可以简化电路设计。利用Keil C51和LabVIEW编写程序实现PC与单片机串口通信。C51程序:#in clude/*主程序*/void mai n(void)SCON=0x50; /*SCON:模式 1,8-bitUART,使能接收 */TMOD=0x20; /*TMOD:timer1,mode2, 8-bit reload*/TH仁 OxFD; /*TH1:reload value for 9600 baud 11.0592MHz */ TL1=0XFD;TR1=1; /*TR1:timer1 ru n*/EA=1; /*打开总中断
5、*/ES=1; /*打开串口中断*/图1.2发送程序图1.3接收程序图1.4判断通信状态程序为英璃 I tAlBX ! J+rTd. J图1.5 LabVIEW 前面板1 设计任务一PC通过串行口将数字(00, 01, 02, 03., FF,十六进制)发送给单片机, 单片机收到后回传这个数字,PC接收到回传数据后显示出来,若发送的数据和 接收到的数据相等,贝U串行通信正确,否则有错误。启始符是数字 00,结束符是数字FF。2 设计任务二(1)测试通信状态。先在文本框中输入字符串FF”,单击 测试”按钮,将字符串FF”发送到单片 机,若PC与单片机通信正常,在LabVIEW程序前面板显示字符串
6、“0K”,否则 显示字符串通信异常”。图1.7 LabVIEW与单片机串口通信测试(2)控制指示灯。将单片机接收到的数值赋给 P0 口,P0 口接一排LED,观察LED的显示结 果(表示该数值的二进制显示)是否与输入值相符合。图1.8输入“FF”图1.9输入“ 01”单片机和LabVIEW通信,在程序设计上涉及两个部分的内容。一是单片机的C51程序,二是LabVIEW的串口通信程序和界面的编制1.2.2电机驱动模块/调速程序设计图1.10 LS298N驱动模块设置IN1和IN2,确定电机的转动方向,然后对使能端输出 PWM脉冲,实现电机调速。当使能信号为0,电机处于自由停止状态;当使能信号为1
7、,且IN1 和IN2为00或11时,电机处于制动状态,阻止电机转动。C51程序:#in cludesbit IN仁 P1A0;sbit IN2=P1A1;sbit ENA=P“2;/x毫秒延时void delay (un sig ned int x)un sig ned int i,j;for(i=x;i0;i-)for(j=110;j0;j-);y微秒延时void delay_us( un sig ned int y)while(y_);/主函数void mai n()while(1)unsigned int i,cycle=1300,T=2048;/*IN1=1;IN2=0;for(i=0
8、;i200;i+)/反转PWM 脉冲delay(10);ENA=ENA; /PWM 占 空 比 为 50% , 修 改 延 时 调 整*/IN1=0;IN2=1; for(i=0;i200;i+) delay(10);ENA=ENA;/正转IN1=0;IN2=1;while(cycle1300)ENA=1;delay_us(cycle-);ENA=0;delay_us(T-cycle);123电机测速模块/测速程序设计图1.11光电耦合测速传感器模块1模块槽中无遮挡时,接收管导通,模块 DO输出低电平,遮挡时,DO输 出高电平;2、DO输出接口可以与单片机10 口直接相连,检测传感器是否有遮档
9、, 如用电机码盘则可检测电机的转速。设计选用的测速码盘有20格光栅,因此速度计算公式为:Speed=(count/20)*60 (转/分)图1.12电机测速调试1图1.13电机测速调试2C51 程序:#includesbit IN仁 P1A0;sbit IN2=P1A1;sbit ENA=P1A2;unsigned int i=0,pul=0,count=0,Speed=0;unsigned int cycle=2000,T=7000;/x 毫秒延时void delay(unsigned int x)unsigned int i,j;for(i=x;i0;i-) for(j=110;j0;j-
10、);y微秒延时void delay_us(unsigned int y)while(y-);void main()TMOD=0x15; / 打开定时器 T1 和计数器 T0,TMOD 为00010101,都为模式 1 因此矩形脉冲输入端接 P3.4EA=1;TH0=0x00;TL0=0x00;ET0=1;ET1=1;TH1=0x3C; /50ms 0x3CB0=15536TL1=0xB0;TR0=1;TR1=1;while(1) IN1=0; /自动加速正转IN2=1;while(cycle2000) /自动减速ENA=1; delay_us(cycle-);ENA=0;delay_us(T-
11、cycle);/ 定时器中断时间到 ,就读取计数器值timer3() interrupt 3TH1=0X3C;TL1=0XB0;i+;if(i20) /累计1s内的脉冲数pul=TH0; /计数器计入脉冲,每来一个矩形脉冲计数值加 1pul=pul8; /得高八位后,左移 8位,pul=pul+TL0; / 再加上低八位count+=pul;pul=0;TH0=0; /计数器速度获取后清零,进行下次获取TL0=0;if(i=20) /每秒更新一次速度pul=TH0; /计数器计入脉冲,每来一个矩形脉冲计数值加 1 pul=pul8;pul=pul+TL0; count+=pul;Speed=(
12、count/20)*60; /测得的速度(转 /分) i=0;count=0;THO=O;TLO=O;PO=Speed;计数器速度获取后清零,进行下次获取观察速度值124总硬件/程序的设计图1.14直流电机测控系统硬件原理框图图1.15总硬件设计C51总程序:#in clude#in clude #in clude #in clude #in clude sbit IN仁 P1A0;sbit IN2=P1A1;sbit ENA=P1A2;un sig ned int i=0,pul=0,co un t=O,Speed=O,Speed_dec=O;un sig ned int cycle=200
13、0,T=7000;/x毫秒延时void delay (un sig ned int x)unsigned int i,j;for(i=x;i0;i-) for(j=110;j0;j-);y微秒延时void delay_us(unsigned int y) while(y-);/* 主程序 */void main(void)SCON=0x50; /*SCON: 模式 1,8-bitUART, 使能接收 */TMOD=0x25; /*TMOD:timer1,mode2, 8-bit reload T0 计数,模式 入端接 P3.4*/,因此矩形脉冲输TH1=0xFD;/*TH1:reload va
14、lue for 9600 baudTL1=0XFD;TH0=0x00;TL0=0x00;TR1=1;/*TR1:timer1 run*/EA=1;/* 打开总中断 */ES=1;/* 打开串口中断 */TR0=1;TR1=1;/*TR1:timer1 run*/while(1)/主循环11.0592MHz */if(Speed_dec=Speed)IN1=0;IN2=0;/停转 if(Speed_decSpeed)IN1=0;/自动加速正转IN2=1; while(cycle!=T) ENA=1; delay_us(cycle+);ENA=0;delay_us(T-cycle);if(Spee
15、d_dec=0x30&Temp1=0x41&Temp1=0x46) ch1=Temp1-0x37;else ch1=0xff;pul=TH0; pul=pul8;/ 计数器计入脉冲,每来一个矩形脉冲计数值加 1pul=pul+TL0; count+=pul;Speed=(count/20)*60; /测得的速度(转 /分) i=0;count=0; TH0=0; / 计数器速度获取后清零,进行下次获取TL0=0;SBUF=Speed; / 把速度值再发回电脑端if(TI) / 如果是发送标志位,清零TI=0;1.3 设计环境:硬件环境:单片机、直流电机及驱动模块、串口。软件环境: LabVIE
16、W 编程软件、 Keil 编程软件、串口调试助手。2 设计过程2.1 设计思路2.1.1硬件系统方案设计本系统主要实现对直流电机进行测速和调速。(1) 调速控制由 LabVIEW 编程产生电机所需要控制的转速值, 将该速度值通过串口送入 单片机, 与测得的速度值进行比较,若送入值大于测量值则单片机控制直流电 机加速,若送入值小于测量值则单片机控制直流电机减速。(2) 测速控制 将电机上的测速码盘安装在光电耦合器的发射端和接收端之间, 当测速码盘 转动时,光栅阻挡光耦发射出的光信号, 在光耦接收端得到一段连续的脉冲波形, 该脉冲波形经过斯密特触发器进行整形后, 得到一形状规则的脉冲波形。 整形后
17、 的脉冲波形输出至单片机计数器端,用 C51 程序算出速度值后传回计算机 ( LabVIEW )并显示。2.1.2软件系统设计LabVIEW 程序,主要包括用户界面设计(前面板的设计)和框图程序设计两部分。(1) 用户界面设计用户界面(前面板)是虚拟仪器的重要组成部分,仪器参数的设置、测试结 果显示等功能都是通过软件实现,因此要求软件界面简单直接,便于使用。用户可根据 需要设置转速参数,并将测量结果数据显示出来。(2) 框图程序设计系统框图程序大体分为三个模块:通信模块和仪器 功能模块。通信模块模块中 包括对设定速度值的发送和对测量速度的接收;仪器功能模块主要实现参数设置 和测量结果显示。C5
18、1单片机程序设计,主要包括控制电机加速、减速,输入速度和测量速度, 比较以及串口通信程序。因为测速码盘有20片光栅,所以应将1s内计数值除以20再乘以60才得 到风扇转速(转/分)。2.2程序设计流程图2.1程序设计流程图2.3设计好的程序框图及前面板程序框图:图2.5用户界面3任务总结与展望电机测控在工业控制系统中占据非常重要的地位, 传统的电机测控,主要采用指针式仪表,通过人工读数、记录、整理统计数据、绘制曲线和编写文档等, 测控速度慢、数据不准确、数据处理和分析复杂,很难适应现代化发展的要求。 电机测控系统一般分为两大部分,即数据采集与控制部分和人机界面部分,目前 的自动控制系统常采用单
19、片机控制、工业 PC机控制、PLC控制等多种方案,利用虚拟仪器技术开发和设计了一个新型电机调速测速系统,该系统采用普通 PC机为主机,利用图形化可视测试软件 LabVIEW为软件开发平台,来测控电 机运行速度状态,采集数据并进行处理、存储、显示。设备成本低,使用方便灵 活。本次设计还有很多不足之处,比如电机调速范围只有 10-80转/分,在今后的实践中我会同我的组员一起改进,做得更好。4个人收获在本次设计中真正感受到了 LabVIEW使用图形化编程语言G在流程图中 创建源程序,这种编程方式强调信号处理的实际过程, 编程简单,调试方便的特 点。用LabVIEW大大提高了我们在本次实验中的工作效率。在这次设计中学习了很多,比如单片机的串口通信, LabVIEW串口通信,电机测速等,都是以前没研究过的,在这个过程中学习了很多单片机和 LabVIEW 的知识,同时发现并解决了很多问题,让我们受益匪浅。也意识到了设计一个系 统需要有严谨的态度,不能马虎。附:个人信息姓名学号联系方式QQE-mail
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1