光电式转速表.docx
《光电式转速表.docx》由会员分享,可在线阅读,更多相关《光电式转速表.docx(21页珍藏版)》请在冰豆网上搜索。
光电式转速表
武汉理工大学华夏学院
电子工程课程设计报告书
课程名称智能电子小产品课程设计
课程设计总评成绩
学生专业班级电子信息工程1071班
指导教师姓名廖传书
课程设计起止日期2010.06.21---2010.07.09
一、课程设计项目名称
光电式转速表
二、项目设计目的及技术要求
1.设计目的:
1.熟悉单片机最小系统及应用;
2.结合选题要求,完成系统设计和调试,具有功能扩展和创新;
3.根据设计的电路,画系统总体结构框图,用protel工具画硬件电路图,用DXP生成PCB版图;
4.用C语言完成系统的软件编程;
5.熟悉并学会使用keil编译器,对所编程序进行编译。
2.技术要求:
1.运用光电传感器,将光信号转换成电信号,设计相应的电路,输出脉冲波。
2.用按键控制直流电机,并对PWM设置不同的占空比控制直流电机的速度。
3.运用51单片机,结合用C语言编出频率计数的程序,能够直接计出输出的脉冲波。
4.通过单片机的串行接口通信,由LED数码管显示出频率计数值。
三、项目设计方案论证(可行性方案、最佳方案、软件程序、硬件电路原理图和PCB图)
1.电机模块的选择
方案一:
采用步进电机
步进电机是一种能将电脉冲转化为角位移的器件,通过控制脉冲个数来控制角位移量,通过控制脉冲频率来控制电机转动的速度和加速度,其精确度高,但控制相对较繁琐。
方案一:
采用直流电机
直流电机速度快,价格便宜,通过调节电流来改变速度,驱动电路简单,调速范围广,调速特性平滑。
缺点是其转距小,带有大负载时很容易堵转,但是课程设计电机的负载不会很大,所以通过PWM调控,可以达到课设的要求。
综上所述,决定采用方案二。
2.电机驱动模块的选择
方案一:
采用大功率三极管,二极管,电阻电容等元件搭建一个H桥,通过对各路信号放大来驱动电机,原理简单。
但由于放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,而且电路的制作也比较复杂。
方案二:
采用L298N驱动芯片
L298N芯片是较常用的电机驱动芯片。
该芯片有两个TTL/CMOS兼容电平的输入,具有良好的抗干扰性能;其输出电压最高可达50V,可用单片机的I/O口提供信号,而且一块L298芯片可驱动两个减速电机,电路简单、易用、稳定,具有较高的性价比。
综上所述,决定采用方案二。
3.电机速度显示模块的选择
方案一:
使用液晶LCD1602.1602是能显示2行,每行16个字符,字符包括英文字符及阿拉伯数字。
但其不能显示汉字。
方案二:
使用数码管。
利用串行通信方式和串入并出移位寄存器74LS164扩展输出接口,接四个七段数码管显示数据。
虽然其硬件电路复杂,且只能显示单纯的数字,但是符合要求,且课设使用单片机扩展板已经给出完整的电路,并且可以直接使用。
综上所述,决定采用方案二。
4.光电传感器模块的选择
方案一:
采用反射式光电传感器。
反射式光电传感器是红外发射管发出红外光,接收管根据反射回来的红外光强度的大小来计数。
所以被测物的表面必须有黑白相间的部分用于接收和反射红外光。
由于是反射式,必须安装在没有强光直接照射处,以免影响红外光的接收,传感器与被测物之间距离要在可测范围之内。
方案二:
采用直射式光电传感器。
直射式光电传感器是红外发射管发出红外光,接收管根据接收到红外光的个数来计数,发射管与接收管之间的距离已经固定。
综上所述,采用方案二。
系统设计与实现
系统总体设计
要实现光电式计数,并且能够显示速度大小,控制直流电机的启停和速度。
选用STC89C52RC单片机,配合键盘和数码管作为入机接口,用单片机的P2口设计4*4矩阵键盘电路,用串行通信方式和串入并出移位寄存器74LS164扩展输出接口,接四个七段数码管显示数据。
为了驱动直流电机,用L298N驱动芯片,设计出驱动电路图,由驱动芯片的IN1口接入单片机的P1.0口,由P1.0输出PWM脉冲波控制电机。
直射式光电传感器输出电信号,用LM393整形出脉冲波输出接入单片机P3.5口进行脉冲计数。
系统总体设计框图如下:
系统总体框图
硬件设计与实现
光电式转速表硬件可分为以下几个部分,基本系统电路模块、光电转换模块、直流电机模块、数码显示模块、按键控制模块,其中数码显示模块和按键控制模块由单片机扩展板提供。
1.基本系统电路模块
基本系统使用STC89C52RC作为处理器,系统板上包括单片机芯片、串行接口电路、电源接口电路、发光二极管电路、用户程序下载开关、系统复位开关、INT0去抖动开关、T0去抖动开关、晶振电路。
电路图见附录。
2.数码显示和按键控制模块
这两个模块由单片机扩展板提供,单片机扩展板包括,数码管接口电路、键盘接口电路、实验扩展区、数码管接口端口、键盘接口端口。
3.光电转换模块
采用直射式光电传感器ST1101,将光信号转变为电信号,用LM393对输出的电信号进行整形,设计的电路如下:
4.直流电机模块
电机模块主要功能是将主控芯片发出的信号通过L298N电机驱动芯片转化为电机运作。
L298N芯片有两个电源引脚VDD引脚和VCC引脚。
VDD引脚接+5V电源用来给电机供电,VCC引脚接+5V电源用来给芯片供电,并作为逻辑高电平标准。
L298N芯片通过一个有四个1N4007二极管组成的保护电路与电机相连,保护电路主要是用来在电机开启和关闭时泄流之用。
由于我们一直让转向电机以最大功率使能从而获得最大的扭矩,保证直流电机转向成功,而不需要控制转向电机的输出功率,所以ENA引脚(即转向电机使能引脚)直接接+5V,即让转向电机一直使能。
对于后置的驱动电机,我们不仅要控制其实现启动和停止,还要能够控制其转速。
所以,我们将L298N芯片的IN1引脚与C52单片机的P1.0引脚连接,用来实现PWM调速。
L298N芯片的OUT1和OUT2来接直流电机的两端。
二.软件设计与实现
软件部分包括,串行通信LED数码管显示单元、按键扫描控制单元、PWM脉冲控制直流电机单元、脉冲个数求取单元。
1串行通信LED数码显示
转速的显示我们采用了动态扫描的工作方式,LED数码显示管采用4个共阳极显示器,每个数码管都经过集电极开路形式的驱动器74LS164驱动。
脉冲个数的求取
千位的求取是这样的,该数值先减去1000,这时标志位加1,如果差值还大于1000,则返回继续作差,直到差值小于1000为止,这时往下执行,由于在上述过程中多加了一个1,所以这时标志位还应当再减去一个1.百位及个位的求取按照同样的道理进行,这样所记标志位即我们计数器的读数.
Y
N
键盘电路
数字转速表的键盘操作应具有3个功能,即:
启动、停止、复位。
确定矩阵式键盘上那个按键被按下通常采用的是行扫描法,其过程如图所示
。
四、项目设计结果分析(分析试验过程中获得的数据、波形、现象或问题的正确性和必然性,分析产生不正确结果的原因和处理方法)
经实际做好电路板检测设计方案及原理,电机能实现加减速控制调速。
单片机产生的PWM信号和正反转信号控制电机驱动芯片L298N,即控制电机的转向及速度大小。
用光电传感器ST1101来测电机运转速度,准确快速地将电机速度信号传送到了单片机。
电机转速信号经单片机处理,在数码管上显示电机的运转速度屏幕上显示出来。
测试结果验证了自己的设计方案。
在设计中通过光电传感器输出的方波来计数电机的转速,过程中光电传感器的输出方波要经过LM393双电压比较器来整形,从而得到比较好的方波,再通过单片机来显示电机的转速。
五、参考文摘(相关文摘不少于5篇,记录每篇文献的作者姓名.文献名称.文献发行城市:
文献出版社,出版年;文献内容摘要,每篇不少于100字)
【1】李群芳,张士军,黄建.单片机微型计算机与接口技术北京:
电子工业出版社2009。
用8XX51的并行口P1设计4*4矩阵键盘的电路及各键盘码,P1.0~P1.3接键盘行线,输出接地信号,P1.4~P1.7接列线,输入回馈信号,以检测按键是否按下。
不同的按键有不同的编码,通过编码识别不同的按键,再通过软件查表,查出按键功能,转向不同的处理程序。
因此键盘处理程序的任务是:
确定有无按键按下;判断哪个按键按下;形成按键码;根据的键的功能,转相应的处理程序。
【2】江志红.51单片机技术与应用系统开发案例精选北京:
清华大学出版社2008。
串口的发送过程设置发送缓冲器SBUF启动,即CPU由一条写发送缓冲器的指令把数据写入串口的发送缓冲器SBUF中,再由硬件电路自动在字符的始、末加上起始位、停止位及其他控制位,然后在移动脉冲SHIFT的控制下,低位在前,高位在后,从TXD端一位位的向外发送。
【3】刘海涛,赵金波,晁阳.8051单片机C语言程序设计与实例解析北京:
清华大学出版社2009。
为了实现智能化的计数测频,实现一个宽频域、高精度的频率计,一种有效的方法是将单片机用于频率计的设计当中。
单片机频率计较以往的频率计有硬件电路少的优点,过去许多用硬件实现的功能可以通过单片机的软件的程序来实现,因此软件可以减低电路设计的成本,往往只需增减几段代码就可以实现不同的测量的精度,同时也减低了硬件电路设计的难度,减少出错率,通过软件调试的方法还可以提高测量的精度。
【4】刘坤,宋戈,赵红波,张宪栋.51单片机C语言应用开发技术大全北京:
人民邮电出版社2008。
从传感器得到的矩形脉冲经传输后往往发生波形畸变。
当传输线上的电容较大时,波形的上升沿将明显变坏;当传输线较长,而且接受端的阻抗与传输线的阻抗不匹配时,在波形的上升沿和下降沿将产生振荡现象;当其他脉冲信号通过导线间的分布电容或公共电源线叠加到矩形脉冲信号时,信号上将出现附加的噪声。
无论出现上述的那一种情况,都可以通过用施密特反相触发器整形而得到比较理想的矩形脉冲波形。
【5】赵建领,薛园园.零基础学单片机C语言程序设计北京:
机械工业出版社2009。
与传统的直流调速技术相比较,PWM(脉宽调制技术)直流调速系统具有较大的优越性:
主电路线路简单,需要的功率元件少;开关频率高,电流容易连续,谐波少,电机损耗和发热都较小;低速性能好,稳速精度高,因而调速范围宽;系统频带宽,快速响应性能好,动态抗干扰能力强;主电路元件工作在开关状态,导通损耗小,装置效率高。
附录
1.程序:
#include
sbitPWMOUT=P1^0;
//sbitp30=p3^0;
//sbitp31=p3^1;
charp[14]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
//0123456789
charLED[4]={0};
longn,L;
unsignedcharr,m,t_flag;
longPWM;
voiddelay(intms)
{
inti,j;
for(i=0;i{
for(j=0;j<1141;j++);
}
}
bitPWMOption(unsignedcharnn)
{
staticbittemp;
switch(nn)
{
case0:
temp=0;
break;
case1:
if(r>1)
temp=0;
else
temp=1;
break;
case2:
if(r>2)temp=0;
else
temp=1;
break;
case3:
if(r>3)
temp=0;
else
temp=1;
break;
case4:
if(r>4)
temp=0;
else
temp=1;
break;
case5:
if(r>5)
temp=0;
else
temp=1;
break;
case6:
if(r>6)
temp=0;
else
temp=1;
break;
case7:
if(r>7)
temp=0;
else
temp=1;
break;
case8:
if(r>8)
temp=0;
else
temp=1;
break;
case9:
if(r>9)
temp=0;
else
temp=1;
break;
case10:
temp=1;
break;
}
returntemp;
}
voidshow(longb)
{
LED[3]=b/1000;
LED[2]=b%1000/100;
LED[1]=b%100/10;
LED[0]=b%10;
}
voiddisplay(longa)
{
inti=0;
show(a);
SCON=0x00;
while(i!
=4)
{
SBUF=p[LED[i]];
while(!
TI);
TI=0;
i++;
}
}
charkey_press(void)
{
P2=0x0f;
if((P2&0x0f)!
=0x0f)
{
delay
(1);
if((P2&0x0f)!
=0x0f)return1;
elsereturn0;
}
else
{
return0;
}
}
longkey_scan(void)
{
charline,row,c;
if(key_press())
{
line=0x7f;
while((line&0x08)!
=0)
{
P2=line;
if((P2&0x0f)!
=0x0f)
{
row=P2&0x0f;
line=line&0xf0;
c=row+line;
}
else
line=(line>>1)|0x80;
}
switch(c)
{
case0xee:
return0;break;
case0xed:
return1;break;
case0xeb:
return8;break;
case0xe7:
return0;break;
case0xde:
return0;break;
case0xdd:
return0;break;
case0xdb:
return0;break;
case0xd7:
return0;break;
case0xbe:
return0;break;//
case0xbd:
return0;break;
case0xbb:
return0;break;
case0xb7:
return0;break;
case0x7e:
return0;break;
case0x7d:
return0;break;
case0x7b:
return0;break;
case0x77:
return0;break;
default:
return0;
}
}
else
{
return0;
}
}
voidInit()
{
EA=1;//总中断开
ET0=1;//T0中断开
ET1=1;
TMOD=0X51;//定时计算器0方式1定时
TH0=0X3c;
TL0=0Xb0;
TH1=0;
TL1=0;
TR0=1;//开始定时
TR1=1;
}
voidmain(void)
{
Init();
while
(1)
{
if(key_press())
{
m=key_scan();
}
PWM=m;
PWMOUT=PWMOption(PWM);
display(L);
delay(20);
}
}
voidtimer0()interrupt1
{
TH0=0X3c;
TL0=0Xb0;
r++;
r%=10;
t_flag++;
if(t_flag==100){t_flag=0;L=TH1*256+TL1;TH1=0;TL1=0;P0^=0xf0;}
}
课程设计评分表
评定项目
评分成绩
1.单片机系统制作(15分)
2.系统硬件后软件(15分)
3.功能扩展和创新(10分)
4.成果演示(20分)
5.图纸(10分)
6.设计报告的规范化、参考文献(不少于5篇)(10分)
7.答辩(20分)
总分(100分)
答辩记录:
指导教师综合评语:
指导教师(签名)
日期:
年月日