基于单片机的步进电机霍尔测速Word文档格式.docx
- 文档编号:22029664
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:29
- 大小:1.32MB
基于单片机的步进电机霍尔测速Word文档格式.docx
《基于单片机的步进电机霍尔测速Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的步进电机霍尔测速Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
3
单片机程序设计23
3.1
单片机程序说明
3.1.1
常量、变量说明
3.1.2函数功能说明
24
3.2
单片机完整程序25
4实验总结30
附录:
实验原理图32
1 实验所用各元件介绍
1.1STC89C51简介
STC89C51RC是采用8051核的ISP(InSystemProgramming)在系统可编程芯片,最高工作时钟频率为80MHz,片内含8KBytes的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载到单片机内部,省去了购买通用编程器,且速度更快。
STC89C52RC系列单片机是单时钟/机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代8051单片机,全新的流水线/精简指令集结构,内部集成MAX810专用复位电路。
图1.1STC89C51RC实物图
本实验用板提供USB2.0和串口两种通信方式,USB实现供电、编程、仿真、通信多种功能,另外还提供了Atmel单片机的ISP接口。
此板兼容STC、SST、Atmel、Philips等51家族的所有单片机。
如果使用ISP编程建议使用开发板自带的单片机,整机包含以下资源:
单片机采用STC90c5161280SRAM64KFlash;
2.1寸彩色液晶屏;
SD卡接口;
1602液晶屏接口;
12864液晶屏接口;
温度传感器DS18B20;
EEPROM24C02存储器;
8位动态数码管;
AD/DA转换PCF8951;
DS1302实时时钟;
4*4矩阵键盘;
4个独立键盘;
2*8路led灯;
可更换晶振座;
USB接口,实现下载,供电,串行通信。
通过USB转串口芯片CH340T转换;
IR红外接收头,红外数据传输;
板载继电器;
蜂鸣器;
步进电机ULN2003达林顿管驱动;
图1.2实验板实物图
1.2定时器
1.2.1定时器原理
加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;
一个是T0或T1引脚输入的外部脉冲源。
每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。
如果定时/计数器工作于定时模式,则表示定时时间已到;
如果工作于计数模式,则表示计数值已满。
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
1.2.251定时器
89c51单片机内有两个可编程的定时/计数器T0、T1。
定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。
TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;
TCON是控制寄存器,控制T0、T1的启动、停止和设置溢出标志。
图1.3 51定时器
89c51计时器有四种工作方式:
方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。
TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。
方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。
图1.4方式1工作原理图
方式2为自动重装初值的8位计数方式。
工作方式2特别适合于用作较精确的脉冲信号发生器。
图1.5方式2工作原理图
方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。
工作方式3将T0分成为两个独立的8位计数器TL0和TH0。
图1.6方式3工作原理图
1.2.3本实验定时器简介
在本实验中,定时器T0主要用于步进电机转速计时,工作在方式1;
而定时器T1主要用于产生串口通信所需波特率,工作在方式2;
1.3串口通信模块
单片机通信是指单片机与计算机或单片机与单片机之间的信息交换,通信有并行和串行两种方式。
在单片机系统以及现代单片机测控系统中,信息的交换多采用串行通信方式。
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,此时只需要一条数据线,外加一条公共信号地线和若干控制信号线。
因为一次只能传送一位,所以对于一个字节的数据,至少要分S位才能传送完毕。
串行通信的必要过程是:
发送时,要把并行数据变成串行数据发送到线路上去,接收时,要把串行信号再变成并行数据,这样才能被计算机及其他设备处理。
串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。
串行通信的制式可分为单工、半双工、全双工。
1)单工:
单工是指数据传输仅能沿一个方向,不能实现反向传输。
2)半双工:
半双工是指数据传输可以沿两个方向,但需要分时进行。
3)全双工:
全双工是指数据可以同时进行双向传输。
1.4MAX232芯片
MAX232芯片是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,它的内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232输出电平所需的+1OV电压。
所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。
对于没有+12V电源的场合,其适应性更强,加之其价格适中,硬件接口简单,所以被广泛采用。
图1.7max232引脚结构图
图1.7所示max232上半部分,电容Cl,C2,C3,C4及V+,V-是电源变换电路部分。
在实际应用中,器件对电源噪声很敏感,因此Vcc必须要对地加去祸电容C5,其值为0.1uF。
按芯片手册中介绍,电容Cl,C2,C3,C4应取10uF/16V的电解电容,经大量实验及实际应用,这4个电容都可以选用0.1uF的非极性瓷片电容代替10uF/16V的电解电容,在具体设计电路时,这4个电容要尽量靠近MAX232芯片,以提高抗干扰能力。
下半部分为发送和接收部分。
实际应用中,T1IN,T2IN可直接连接TTL/CMOS电平的51单片机串行发送端TXD;
R1OUT,R20UT可直接连接TTL/CMOS电平的51单片机的串行接收端RXD;
T1OUT,T2OUT可直接连接代机的RS-232串口的接收端RXD;
R1IN,R2IN可直接连接PC机的RS-232串口的发送端TXD。
图1.8 max232模块原理图
单片机或计算机在串口通信时的速率用波特率表示,它定义为每秒传输二进制代码的位数,即1波特=1位/秒,单位是bps(位/秒)。
如每秒钟传送240个字符,而每个字符格式包含10位((1个起始位、1个停止位、8个数据位),这时的波特率为10位X240个/秒=2400bps.
串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性也有关。
当传输线使用每0.3m(约1英尺)有50pF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。
当比特率超过1000bps时,最大传输距离迅速下降,如9600bps时最大距离下降到只有76m(约250英尺)。
因此我们在做串口通信实验选择较高速率传输数据时,尽量缩短数据线的长度,为了能使数据安全传输,即使是在较低传输速率下也不要使用太长的数据线。
另外,标准的51单片机晶振是1.2M-12M,一般由于一个机器周期是12个时钟周期,所以选择12M时,一个机器周期是1US,好计算,而且速度相对是最高的(当然现在也有更高频率的单片机),而本实验板采用的是12M晶振。
而有的51单片机采用11.0592M是因为在进行通信时,12M频率进行串行通信不容易实现标准的波特率,比如9600,4800,而11.0592M计算时正好可以得到,因此在有通信接口的单片机中,一般选11.0592M。
假设我们要得到9600的波特率,晶振为11.0592M和12M,定时器1为模式2,SMOD设为1,分别看看那所要求的TH1为何值。
这里TH1为串口通信波特率产生所用计时器高8位数值。
公式计算如下:
使用12M晶振的:
解得:
TH1≈249.49。
同理可以计算得出当使用11.0592M晶振时,TH1=250。
上面的计算可以看出使用12M晶体的时候计算出来的TH1不为整数,而TH1的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600波特率。
当然一定的误差是可以在使用中被接受的,就算使用11.0592M的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。
考虑到,通信速率越高,误码率越大,所以决定将通信的波特率设为4800bps。
2组态王
1
2
2.1组态王简介
2.1.1概述
组态王软件是一种通用的工业监控软件,它融过程控制设计、现场操作以及工厂资源管理于一体,将一个企业内部的各种生产系统和应用以及信息交流汇集在一起,实现最优化管理。
它基于MicrosoftWindowsXP/NT/2000/7操作系统,用户可以在企业网络的所有层次的各个位置上都可以及时获得系统的实时信息。
采用组态王软件开发工业监控工程,可以极大地增强用户生产控制能力、提高工厂的生产力和效率、提高产品的质量、减少成本及原材料的消耗。
它适用于从单一设备的生产运营管理和故障诊断,到网络结构分布式大型集中监控管理系统的开发。
组态王软件结构由工程管理器、工程浏览器及运行系统三部分构成。
工程管理器:
工程管理器用于新工程的创建和已有工程的管理,对已有工程进行搜索、添加、备份、恢复以及实现数据词典的导入和导出等功能。
工程浏览器:
工程浏览器是一个工程开发设计工具,用于创建监控画面、监控的设备及相关变量、动画链接、命令语言以及设定运行系统配置等的系统组态工具。
运行系统:
工程运行界面,从采集设备中获得通讯数据,并依据工程浏览器的动画设计显示动态画面,实现人与控制设备的交互操作。
2.1.2组态王与I/O设备
组态王软件作为一个开放型的通用工业监控软件,支持与国内外常见的PLC、智能模块、智能仪表、变频器、数据采集板卡等(如:
西门子PLC、莫迪康PLC、欧姆龙PLC、三菱PLC、研华模块等等)通过常规通讯接口(如串口方式、USB接口方式、以太网、总线、GPRS等)进行数据通讯。
组态王软件与IO设备进行通讯一般是通过调用*.dll动态库来实现的,不同的设备、协议对应不同的动态库。
工程开发人员无须关心复杂的动态库代码及设备通讯协议,只须使用组态王提供的设备定义向导,即可定义工程中使用的I/O设备,并通过变量的定义实现与I/O设备的关联,对用户来说既简单又方便。
2.1.3组态王的开放性
组态王支持通过OPC、DDE等标准传输机制和其他监控软件(如:
Intouch、Ifix、Wincc等)或其他应用程序(如:
VB、VC等)进行本机或者网络上的数据交互。
2.2本实验组态王使用说明
在组态王中,我们所建立的每一个组态称为一个工程。
每个工程反映到操作系统中是一个包括多个文件的文件夹。
工程的建立则通过工程管理器。
2.2.1工程管理器的使用
组态王工程管理器是用来建立新工程,对添加到工程管理器的工程做统一的管理。
工程管理器的主要功能包括:
新建、删除工程,对工程重命名,搜索组态王工程,修改工程属性,工程备份、恢复,数据词典的导入导出,切换到组态王开发或运行环境等。
假设已经正确安装了“组态王6.53”的话,可以通过以下方式启动工程管理器:
点击“开始”---〉“程序”---〉“组态王6.53”---〉“组态王6.53”(或直接双击桌面上组态王的快捷方式),启动后的工程管理窗口如图所示:
图2.1组态王工程管理器界面
点击工程管理器上的“新建”,弹出“新建工程向导之一”如图:
图2.2新建工程向导一
点击“下一步”弹出“新建工程向导之二”,画面如图:
图2.3新建工程向导二
点击“浏览”,选择新建工程所要存放的路径。
点击“打开”,选择路径完成。
点击“下一步”进入“新建工程向导之三”,如图,在“工程名称”处写上要给工程起的名字。
图2.4新建工程向导三
“工程描述”是对工程进详细说明(注释作用),我们的工程名称是“转速”,工程描述是“转速测试”。
点击“完成”会出现“是否将新建的工程设为组态王当前工程”的提示。
选择“是”。
组态王的当前工程的意义是指直接进开发或运行所指定的工程。
2.2.2工程浏览器的使用
工程浏览器是组态王6.53的集成开发环境。
在这里您可以看到工程的各个组成部分包括Web、文件、数据库、设备、系统配置、SQL访问管理器,它们以树形结构显示在工程浏览器窗口的左侧。
工程浏览器的使用和Windows的资源管理器类似,如图所示:
工程浏览器由菜单栏、工具条、工程目录显示区、目录内容显示区、状态条组成。
“工程目录显示区”以树形结构图显示大纲项节点,用户可以扩展或收缩工程浏览器中所列的大纲项。
图2.5工程浏览器界面
2.2.2.1定义外部设备
组态王把那些需要与之交换数据的硬件设备或软件程序都作为外部设备使用。
外部硬件设备通常包括PLC、仪表、模块、变频器、板卡等;
外部软件程序通常指包括DDE、OPC等服务程序。
按照计算机和外部设备的通讯连接方式,则分为:
串行通信(232/422/485)、以太网、专用通信卡(如CP5611)等。
在计算机和外部设备硬件连接好后,为了实现组态王和外部设备的实时数据通讯,必须在组态王的开发环境中对外部设备和相关变量加以定义。
步骤如下:
1、在组态王工程浏览器树型目录中,选择设备,在右边的工作区中出现了“新建”图标,双击此“新建”图标,弹出“设备配置向导”对话框,如图所示:
图2.6工程浏览器界面
2、在上述对话框选择智能模块的“单片机”的“通用单片机ASCII”的“串口”项后,如图所示:
图2.7选择设备
3、单击“下一步”弹出对话框,为设备取一个名称,如:
单片机,如图所示:
图2.8设备命名
4、单击“下一步”弹出连接串口对话框,为设备选择连接的串口为COM1,如图所示:
图2.9串口选择
5、单击“下一步”弹出设备地址对话框,此处填写设备地址为01.0,在连接现场设备时,设备地址处填写的地址要和实际设备地址完全一致。
图2.10设备地址设置
6、单击“下一步”,弹出通讯参数对话框,设置通信故障恢复参数,如图所示:
图2.11通讯参数设置
为了加快恢复时间,将默认的30秒改成了5秒。
7、单击“下一步”系统弹出信息总结对话框,如图所示:
图2.12设备设置信息总结
8、请检查各项设置是否正确,确认无误后,单击“完成”。
设备定义完成后,可以在Com1项下看到新建的设备“单片机”。
9、双击Com1口,弹出串口通讯参数设置对话框,如图所示:
图2.13串口设置
在工程中连接实际的I/O设备时,必须对串口通讯参数进行设置且设置项要与实际设备中的设置项完全一致(包括:
波特率、数据位、停止位、奇偶校验选项的设置),否则会导致通讯失败。
2.2.2.2定义外部设备变量
在组态王工程浏览器中提供了“数据库”项供用户定义设备变量。
数据库中变量的集合形象地称为“数据词典”,数据词典记录了所有用户可使用的数据变量的详细信息。
数据库是“组态王软件”最核心的部分。
在TouchVew运行时,工业现场的生产状况要以动画的形式反映在屏幕上,操作者在计算机前发布的指令也要迅速送达生产现场,所有这一切都是以实时数据库为核心,所以说数据库是联系上位机和下位机的桥梁。
数据词典中存放的是应用工程中定义的变量以及系统变量。
变量可以分为基本类型和特殊类型两大类,基本类型的变量又分为内存变量和I/O变量两种。
“I/O变量”指的是组态王与外部设备或其它应用程序交换的变量。
这种数据交换是双向的、动态的,就是说在组态王系统运行过程中,每当I/O变量的值改变时,该值就会自动写入外部设备或远程应用程序;
每当外部设备或远程应用程序中的值改变时,组态王系统中的变量值也会自动改变。
所以,那些从下位机采集来的数据、发送给下位机的指令,比如反应罐液位、电源开关等变量,都需要设置成“I/O变量”。
那些不需要和外部设备或其它应用程序交换,只在组态王内使用的变量,比如计算过程的中间变量,就可以设置成“内存变量”。
对于我们将要建立的演示工程,需要从下位机采集原料油罐的液位、原料油罐的压力、催化剂液位和成品油液位,所以需要在数据库中定义这四个变量。
因为这些数据是通过驱动程序采集来的,所以四个变量的类型都是I/O实型变量,变量定义方法如下:
在工程浏览器树型目录中选择“数据词典”,在右侧双击“新建”图标,弹出“变量属性”对话框,如图所示:
图2.14定义变量
在对话框中添加变量如下:
变量名:
反转转速变量类型:
I/O整数变化灵敏度:
0初始值:
0最小值:
0最大值:
100最小原始值:
0最大原始值:
100转换方式:
线性连接设备:
单片机寄存器:
X1数据类型:
BYTE采集频率:
1000毫秒读写属性:
读写设置完成后单击“确定”。
2.2.2.3建立画面
为建立一个新的画面需要执行以下操作:
在工程浏览器左侧的“工程目录显示区”中选择“画面”选项,在右侧视图中双击“新建”图标,弹出新建画面对话框,如图所示:
图2.15画面设置
新画面属性设置如下:
画面名称:
反转转速对应文件:
pic00001.pic画面风格:
覆盖式左边:
0顶边:
0显示宽度:
600显示高度:
400画面宽度:
600画面高度:
400标题杆:
无效大小可变:
有效3、在对话框中单击“确定”
组态王软件将按照您指定的风格产生出一幅名为“反转转速”的画面。
画面具体设置如下:
(1)在工具箱中单击文本工具,即可建立实时趋势曲线,工具箱如下
图2.16工具箱
(2)使用图库管理器
选择“图库”菜单中“打开图库”命令或按F2
键打开图库管理器,如图所示:
图2.17图库在图库管理器左侧图库名称列表中选择图库名称“仪表”,选中后双击鼠标,该仪表就被放置在画面上。
最后生成的画面如图所示:
图2.18系统画面
至此,一个简单的转速监控画面就建立起来了。
4、选择“文件”菜单的“全部存”命令将所完成的画面进行保存。
2.2.2.4动画连接
所谓“动画连接”就是建立画面的图素与数据库变量的对应关系。
打开“反转转速”画面,在画面上双击“实施趋势曲线”
图形,弹出该图库的动画连接对话框,如图所示:
图2.19实施趋势曲线曲线定义
图2.20实施趋势曲线标识定义
对话框设置如下:
变量名(模拟量):
\\本站点\反转转速
最小值:
0
最大值:
20
单击“确定”按钮,完成反转转速的动画连接。
这样建立连接后反转转速实时曲线随着变量转速的变化而变化。
图2.21仪表设置
2.2.3
点击工程浏览器中的VIEW,或者进入画面反转转速,右键切换到View,或者点击文件切换到View。
画面运行,如果单片机已经设置好,且写好通讯程序,则可以看到转速实时变化情况,运行情况如下图2.22所示。
图2.22
运行画面
单片机程序设计
3.1
本部分主要说明本实验51单片机所使用常量、变量以及各函数的功能说明。
3.1.1
常量:
#define
GPIO_MOTOR
P1
//本实验中步进电机控制信号输出端口。
MYADDR
0x01//本实验单片机与组态王通信时单片机设置的设备地址。
START
0x40//本实验中与组态王通信的数据帧的开始字符。
END
0x0d
//本实验中与组态王通信的数据帧的结束字符。
READ
0x00//本实验中组态王读取单片机数据的代码。
变量:
unsigned
int
zhuanleduoshaoci
=
0;
//此变量记录霍尔元件产生脉冲次数,也就是步进电机转过的圈数。
Time
//此变量记录定时器T0产生定时中断的次数,一次相当于50毫秒。
tiaojieliang
160;
//此变量用作调节步进电机转速快慢,数字越大转速越小。
zhuansu
//此变量记录计算得出的步进电机转速,以备读取。
yiguoshijian
//此变量用作暂存步进电机转过规定圈数后计算得出已过去时间;
jishuqi
//此变量用作暂存定时器T0当前的计数值。
char
code
FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
//此数组为步进电机的反转所需输出。
static
recok
//此变量记录当单片机接收到来自组态王完整数据帧后的状态变量,以备查询。
count
//此变量记录单片机接收组态王发来数据数;
recbuf[20];
//此数组暂存组态王发来数据。
flag
//此变量为单片机接收到0x40后进行标志;
Answer[10]={„„};
//此数组为单片机发送给组态王的应答帧
3.1.2函数功能说明
void
UsartConfiguration();
//此函数为单片机串口通信串口初始化函数。
receive()
interrupt
4;
//此函数为单片机串口接收中断函数;
Motor();
//此函数为单片机控制步进电机转动函数。
IntConfiguration();
//此函数为单片机外部中断INT0的初始化函数。
Int1()
2
;
//此函数为单片机外部中断INT0的中断函数。
Timer0()
1;
//此函数为单片机
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 步进 电机 霍尔 测速