嵌入式Linux系统及应用大作业Word下载.docx
- 文档编号:18111548
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:28
- 大小:311.63KB
嵌入式Linux系统及应用大作业Word下载.docx
《嵌入式Linux系统及应用大作业Word下载.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux系统及应用大作业Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
3.2显示电路7
3.3监控量采集电路9
3.4电源及按键电路10
3.5电机控制电路12
四、系统的程序设计13
4.1电机驱动程序设计13
4.2数据采集程序设计14
4.3数据显示程序设计14
五、系统调试结果17
5.1调试数据列表17
5.2调试波形图17
参考文献18
附录一系统整体程序18
附录二系统原理图23
附录三系统PCB图24
光电测速系统设计
摘要
光电测速计系统是目前电机测速的主要手段之一。
它具有体积小,测速精确,价格低廉等一系列优点,并正在得到越来越广泛的应用。
本文设计了一种利用槽式红外光电开关检测电机旋叶转速的数字系统,本系统主要采用基于51内核的8位单片机作为控制器,能够对监测量进行采样,以数字的形式实时显示监测转换量,并采用L298直流电机驱动电路,可以对电机的转速进行相关的分档调速。
系统主要由电机控制端、数据采集终端,数据处理中心和数据显示等部分组成,具有成本低,数据可靠等优点。
本文详细介绍了系统的组成结构与各部分模块的工作原理,并且给出了详细的源程序,具有一定的参考价值。
关键词:
51系列单片机,嵌入式,槽式红外光电开关,L298电机驱动
一、前言
1.1光电测速计系统的研究背景
在生产中,物体转速的准确测定常关系到产品的质量和工效。
例如,由织布机轮盘的转速可以计算布匹的产量;
水力发电机叶轮的转速是计算发电机电功率必不可少的数据等等。
工程上需要有一种既能测高速,又避免与被测物直接接触的测速方法。
光电测速计系统是目前用于测电机转速的重要手段之一。
对电机转速的检测和控制是工业检测领域和控制领域的重要任务之一。
随着目前对控制要求越来越高,检测速度要求越来越快,同时为了响应节约型社会和可持续发展战略,对光电测速系统的要求也越来越高,要求测速准确度高、测速速度快、成本尽量低廉等等。
在这种情况下,对光电测速系统的设计就有了重要的现实意义。
第一、有利于提高工业检测水平。
通过对光电测速系统的研究设计和实现,工业系统中能够更好更快更精准地得到电机转速参数,得到更好的检测结果。
第二、有利于提高工业控制水平。
更高的控制水平需要更精确的检测结果来作基础。
只有好的光电测速系统才能提供电机的更准确的速度,从而有利于更好的控制电机转速。
综上所述,对光电测速系统的研究和设计具有重要的理论意义和现实意义。
1.2光电测速系统简介
光电测速系统主要由检测控制芯片,电机控制模块,数码显示模块,按键模块,光电电平采集模块组成,要完成电平信号的采集和处理,电机转速的获得,测速的实时显示,按键手动控制电机转速等功能。
良好的光电测速系统能够在转速突然发生较大转变时实时稳定地测速和显示。
·
光电测速系统在工作时,检测控制芯片控制整个检测和控制过程。
首先发出检测电平指令,之后光电电平采集模块进行光电检测,检测到光电脉冲后回输给控制核心,控制核心根据脉冲频率计算电机转速;
之后控制中心将所测得的电机转速传送给实时显示模块,实时显示模块对电机转速进行实时显示;
根据实际控制需要,可输入需要转速对目前转速进行调节,转速控制模块控制电机转速在短时间内进行快速平稳的转变。
初步分析,光电测速系统的功能应主要包括如下几个方面:
·
实现直流电机的转速控制;
实时采集光电开关的数字信号;
单片机对数据进行转换处理;
实时显示处理数据。
二、光电测速系统总体方案设计
2.1系统的结构框架图
本实验选择选用51单片机进行光电测速,下面的系统结构框图从硬件的角度说明了系统的组成与工作原理,系统主要由数据采集模块,数据处理模块,数据显示模块和直流电机驱动(含按键调速)模块组成。
系统的结构框图如图1所示:
图1系统结构框架图
系统结构框图说明:
数据采集模块由槽式红外光电开关管组成,当电机的旋叶挡住红外开关的接收通道时,红外开关的接收管导通状态发生变化,并将电平的变化经过三极管的反向放大传输到单片机的外部中断引脚,最终单片机进行计数处理。
电机控制模块硬件部分由电机驱动电路组成,软件部分由单片机控制,系统中设计了四个按键,分别对电机的转速设置了四个档位。
通过对电机转速的控制,单片机进而可以采集到不同的中断个数,达到检测不同转速的目的。
数据显示模块主要用于显示单片机处理后的电机的转速数据,显示驱动程序主要有单片机控制,达到每秒刷新的实时效果。
由上面的说明可以看出,在整个系统当中最重要的部分就是单片机这一部分,因为它在系统中担任着数据量的“交通枢纽”作用和各个模块的“协调指挥官”的角色,因此这一部分的功能能否实现将决定了系统设计的成功与否。
2.2工作流程设计
系统的工作流程:
系统上电以后,各部分分别开始运行,数码管一开始显示“2008”字样,延时很短时间后显示“0001”字样,电机按设置的最小转速旋转,槽式光电红外开关导通。
当电机旋叶经过红外开关管的接收通道并挡住接收通道时,红外开关便采集一次电平变化,进而单片机便发生一次外部中断计数,每隔时间间隔T,单片机对采集到的外部中断个数n进行统计处理,然后通过公式Y=n*(D*3.14)(Y为转速,D为电机旋叶直径),然后将转速Y传输进行数字实时显示。
通过对按键的控制,可以获得不同的转速,进而显示出来。
系统启动后,所有数据显示实时刷新T默认是1S,也就是说每隔1S,数码管显示一次采集的数据。
通过修改实时显示的时间间隔T,使得可以根据不同的应用场合设置不同的时间间隔T,可以大大提高了系统的通用性和数据的准确性(多次定时采集取平均值)!
3系统的硬件设计
本章将介绍系统设计时使用到的各种硬件,并且给出了各个组成模块的硬件原理图。
3.1单片机控制器电路
从机电路的核心组成部分——单片机控制器电路如图2,由于电路很简单,在此不作介绍(图中留出的外接引脚用来连接外围附加电路)。
图2单片机控制器电路
3.2显示电路
显示电路用来显示监测量的采样转换值,由一个四位一体的共阴数码管和数码管驱动芯片MAX7221组成。
图3是本设计的具体的硬件电路连接图,其中数码管是四位一体的共阴数码管。
图3显示电路
MAX7221介绍:
MAX7221是美国MAXIM公司生产的一种新型高集成度七段共阴极LED驱动芯片,每片能动态驱动多达8位或64只单独的LED。
它内部有BCD码译码器、多路扫描器、段驱动和位驱动电路及8×
8位双口静态SRAM。
MAX7221与控制器的接口采用四线制的SPI接口,只需要占用单片机的四根口线控制起来很简单,如果不用级联方式的话则只要三根控制口就可以了。
对MAX7221的控制是通过写内部的控制寄存器和数据寄存器来实现的,MAX7221内部的控制寄存器有很多,这里只介绍最基本的控制寄存器。
(1)译码模式寄存器
MAX7221有两种译码模式,可以任意单独设定某一位译码或者不译码。
当要显示特殊内容,例如某些字母时可以设定译码模式为不译码。
表2给出了几个译码模式寄存器的例子:
表2译码模式寄存器
DECODEMODE
REGISTERDATA
HEX
CODE
D7
D6
D5
D4
D3
D2
D1
D0
Nodecodefordigits7-0
0x00
CodeBdecodefordigit0
Nodecodefordigits7-1
0x01
CodeBdecodefordigits3-0
Nodecodefordigits7-4
1
0x0F
CodeBdecodefordigits7-0
0xFF
从上面的表格可以看出要想设置某一位的译码模式为译码,只需要将译码寄存器中这一位数码管对应的位置的内容置‘1’就可以了。
(2)扫描位数寄存器
扫描位数寄存器用来设置数码管要显示的位数,范围是从1到8,也就是说,一片MAX7221最多可以驱动8位数码管。
这里需要说明的是,数码管显示的位数将影响到数码管的亮度。
表3给出了数码管显示的位数与扫描位数寄存器的值的对应关系。
表3扫描位数寄存器
SCANLIMIT
Displaydigits0
X
0xX0
Displaydigits01
0xX1
Displaydigits012
0xX2
Displaydigits0123
0xX3
Displaydigits01234
0xX4
Displaydigits012345
0xX5
Displaydigits0123456
0xX6
Displaydigits01234567
OxX7
(3)显示内容寄存器
把要显示的内容写入到显示内容寄存器中就可以在数码管上显示出来了,由于每一位数码管的显示内容寄存器都是独立的,所以可以任意更改某一位的显示而不影响其它位。
由于MAX7221有译码和不译码两种工作模式,在不同的工作模式下,显示内容寄存器的内容与数码管的显示内容的对应关系是不同的,具体的对应关系请参考MAX7221的数据手册。
3.3监控量采集电路
监控量采集电路要完成对监控量的采样任务,采样电路主要由槽式光电开关管和三极管组成。
图4是具体的硬件电路图:
图4数据采集电路
槽式光电开关管介绍:
槽式光电开关:
它通常采用标准的U字型结构,如图5所示,其发射器和接收器分别位于U型槽的两边,并形成一光轴,当被检测物体经过U型槽且阻断光轴时,光电开关就产生了开关量信号。
槽式光电开关比较适合检测高速运动的物体,并且它能分辨透明与半透明物体,使用安全可靠。
图5槽式光电开关
实验测量得到:
当无物体通过槽式光电开关时,开关导通,三极管Q0C端电压为0v,当有物体通过时,三极管Q0C端会瞬间产生一个5v的高电平,效果比较明显。
3.4电源及按键电路
按键主要是用来手工设置电机的转速档位,键盘的硬件电路很简单,在此只给出具体的硬件连接图6,不多作介绍。
电源主要有两部分组成:
7805产生的5v电源和LM1117产生的5v-12v的可调电源。
5v电源主要为单片机和一些芯片电路提供工作电源,LM1117产生的可调电源主要为电机驱动电路提供工作电源。
其硬件电路如下图7所示。
图6按键电路原理
图7电源原理图
LM1117电源芯片介绍:
LM1117是一个低压差电压调节器系列。
其压差在1.2V输出,负载电流为800mA时为1.2V。
它与国家半导体的工业标准器件LM317有相同的管脚排列。
LM1117有可调电压的版本,通过2个外部电阻可实现1.25~13.8V输出电压范围。
另外还有5个固定电压输出(1.8V、2.5V、2.85V、3.3V和5V)的型号。
LM1117提供电流限制和热保护。
电路包含1个齐纳调节的带隙参考电压以确保输出电压的精度在±
1%以内。
LM1117系列具有LLP、TO-263、SOT-223、TO-220和TO-252D-PAK封装。
输出端需要一个至少10uF的钽电容来改善瞬态响应和稳定性。
特性:
提供1.8V、2.5V、2.85V、3.3V、5V和可调电压的型号
节省空间的SOT-223和LLP封装
电流限制和热保护功能
输出电流可达800mA
线性调整率:
0.2%(Max)
负载调整率:
0.4%(Max)
温度范围:
-LM1117:
0℃~125℃-LM1117I:
-40℃~125℃
3.5电机控制电路
电机控制电路主要采用电机驱动芯片L298N的典型应用电路设计而成,能够达到对直流电机的实时控制,其原理图如下图8所示。
图8电机驱动原理图
电机驱动芯片L298N介绍:
L298N芯片可以驱动两个二相电机(如图9),也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;
可以直接用单片机的IO口提供信号;
而且电路简单,使用比较方便。
图9L298N驱动电路
四、系统的程序设计
本章将介绍整个系统的软件设计思想,给出了软件工作的流程图,具体的程序可以参考附录一。
软件的开发环境使用的是KeilUV3软件。
4.1电机驱动程序设计
电机转速的调制主要是通过对电机的占空比进行调制,以下为电机控制电路的程序流程图(含按键调速功能)(图10)。
图10电机控制流程图
流程图介绍:
首先上电后单片机开始运行,内部定时器开始定时tt++;
设置电机芯片L298N的控制端IN1和IN2分别为0,此时电机不转动;
当定时数据tt与table[i]中的数据相等时,电机控制端IN1置1,电机开始转动。
在程序里设置的数组table[i],用于存储5个数据,然后通过按键来对应数组中的数据,进而来控制电机的占空比,所以当相应的按键被按下时,对应的电机占空比发生变化,电机转速就随之变化。
当定时tt计数满时,自动清0,从头开始计数,以此循环执行。
具体的程序参考附录一。
4.2数据采集程序设计
数据采集通过槽式开关管的电平变化传输到单片机外部中断INT0引脚上,通过单片机内部的程序计数来计算电机的转速。
其程序流程图如图11所示。
图11数据采集程序流程图
由实验测量得到:
当无物体通过槽式光电开关时,开关导通,三极管Q0C端电压为0v,当有物体通过时,三极管Q0C端会瞬间产生一个5v的高电平。
为了得到一个比较准确的采集结果,本设计采用两叶的旋叶,采用单片机的外部中断下降沿有效中断计数方式。
首先,上电后光电开关开始工作,当有物体通过时,三极管Q0C端会瞬间产生一个5v的高电平,瞬间又产生一个下降沿,中断计数wt++。
单片机开始运行的同时,采用一个1s的延时程序,当延时时间到达时,数码管显示一次数据wt,然后wt清零,重新开始计数。
采集到的中断次数通过运算便可得到每秒钟的旋转转数,进而计算出电机的平均转速。
4.3数据显示程序设计
MAX7221的寄存器写时序
图12MAX7221的寄存器写时序图
图12是MAX7221的写寄存器的操作时序图,根据MAX7221的写时序图,可以写出通用的写MAX7221的寄存器函数如下:
……
//定义MAX7221控制引脚
sbitCS_7221=P1^5;
sbitCLK_7221=P1^6;
sbitDIN_7221=P1^7;
//写MAX7221控制寄存器和显示内容寄存器函数
voidWrite_7221(unsignedcharB,unsignedcharC)
{
unsignedchari;
CS_7221=0;
for(i=8;
i>
0;
i--)
{
DIN_7221=B&
0x01;
CLK_7221=1;
CLK_7221=0;
B>
>
=1;
}
DIN_7221=C&
C>
CS_7221=1;
}
//MAX7221初始化函数
voidInitial_7221(void)
//初始化max7221,未用到的数据位全部置1
Write_7221(0x5F,0xCF);
//设定INTENSITY(4/16)
Write_7221(0x9F,0xF0);
//设定DECODEMODE(译码0~3位)
Write_7221(0xDF,0xDF);
//设定SCANLIMIT(扫描低四位)
Write_7221(0x3F,0xFF);
//SHUTDOWN(NORMALOPERATION)
Write_7221(0xFF,0x7F);
//DISPLAYTEST(DISPLAYTEST)
上面的程序是最基本也是最重要的两个函数,用这两个函数可以实现几乎所有的MAX7221功能。
以上为本系统的主要功能部分的相关程序设计流程图及部分程序原理,具体的程序请参考附录一中的详细设计。
五、系统调试结果
5.1调试数据列表
实验所得数据如下表4所示:
表4调试结果数据
速度
转数(转/每秒)
转速(厘米/每秒)
按键S1(速度低)
4
48
按键S2
6
80
按键S3
7
100
按键S4(速度高)
8
128
5.2调试波形图
电机的控制端IN1的电平变化如下图13所示:
图13电机控制端信号波形
参考文献
【1】马忠梅等著.单片机的C语言程序设计(第三版).北京:
北京航空航天大学出版社,2003.11
P159~P187,P234~P245
【2】康华光著.电子技术基础:
模拟部分(第四版).北京:
高等教育出版社,1999.6(2005重印)
P67~P111,P443~P459
【3】胡刚著.微机原理及应用.北京:
机械工业出版社,2001.8
附录:
ASCII(美国信息交换标准码)字符表(7位码)
【4】赵建领著.Protel电路设计与制版宝典.北京:
电子工业出版社,2007.1
P37~P502
【5】何立民.单片机应用文集.北京:
北京航空航天大学出版社.1991
附录一系统整体程序
#include<
reg52.h>
//头文件说明
#include<
intrins.h>
stdio.h>
math.h>
string.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
sbitIN1=P2^0;
//管脚定义
sbitIN2=P2^1;
sbitk5=P2^2;
sbitk1=P3^4;
sbitk2=P3^5;
sbitk3=P3^6;
sbitk4=P3^7;
uchartt=0;
//定时计数
uchari=0;
staticuintwt=0;
//中断计数
uintWTL=0;
uchartable[5]={16,13,10,6,1};
//直流电机占空比调整(依次增大)
ucharnum[4];
//转换值暂存数组
/******************转速转换函数*****************************/
voidjishu();
/****************MAX7221数码显示函数***********/
voidInitial_7221(void);
//初始化MAX7221
voidReset_display(void);
//数码管显示"
2008"
voidWrite_7221(unsignedchar,unsignedchar);
//向MAX7221写命令字
voidDisplay_7221(unsignedchar,unsignedchar,unsignedchar);
//数码管显示函数voidDisplay_four_digits(void);
/*******************MAX7221控制引脚定义***********************/
sbitCLK_7221=P1^2;
sbitCS_7221=P1^1;
sbitDIN_7221=P1^0;
/*************延时函数1*************/
voiddelay(ulongj)
{for(j;
j>
j--);
/*************延时函数2*************/
voiddelay500ms(void)
unsignedchari,j,k;
for(i=15;
for(j=202;
j--)
for(k=81;
k>
k--);
/*************按键扫描**************/
voidkey()
i=0;
if(k1==0)
delay(20);
//消抖
if(k1==0)//按键1被按下
i=1;
if(k2==0)
if(k2==0)//按键1被按下
i=2;
if(k3==0)
if(k3==0)//按键1被按下
i=3;
if(k4==0)
if(k4==0)//按键1被按下
i=4;
if(tt==table[i])
IN1=1;
//L298N控制通道1导通,电机开始转
/*********主函数********************/
voidmain(void)
TMOD=0x01;
//定时器0方式1计数定时1us
TH0=0xff;
TL0=0xff;
ET0=1;
//EX0=1;
IT0=1;
EA=1;
//开总中断
TR0=1;
IN1=0;
//LZ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux 系统 应用 作业