ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:1.05MB ,
资源ID:28029195      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28029195.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(光电传感器转速测量系统设计讲解.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

光电传感器转速测量系统设计讲解.docx

1、光电传感器转速测量系统设计讲解专业课程设计题目光电传感器的转速测量设计自动化学院2012年 10月 8-2012 年 10月 19院 系:专业班级:小组成员:指导教师: 日 期:一课程设计描述采用单片机、 uln2003 为主要器件, 设计步进电机调速系统, 实现电机速度 开环可调。课程设计具体要求1 、通过按键选择速度;2 、转速测量显示范围为 09999转/ 秒3、检测并显示各档速度。实验板(中号)1个步进电机 1个STC89C521个电容( 30pF、10uF)各 1 个数码管(共阳、四位一体)1个晶振( 12MHz) 1个小按键4个ULN2003 1个电阻若干发光二极管 1个三极管(

2、NPN)4个排阻 1个四原理阐述4.1系统简述按照题给要求,我们最终设计了如下的解决方案: 用户通过键盘键入控制指令 (开关),微控制器在收到指令后改变输出的 PWM 波,最终在 ULN2003的驱动下电机转速发生改变。 通过 ST151传感器测量电机扇 叶的旋转情况,将转速显示在数码管上。在程序主循环中实现按键扫描与转速显示,将定时器 0 作为计数器,计数 ST151产生的下降沿,可算出转速,并送至数码管显示。设计思路:(1)利用光电开关管做电机转速的信号拾取元件,在电机的转轴上安装一个圆 盘,在圆盘上挖 1 小洞, 小洞上下分别对应着光发射和光接受开关, 圆盘转动一 圈即光电管导通 1 次

3、,利用此信号做为脉冲计数所需。(2)对光电开关信号整流放大。(3)脉冲经过单片机内部的计数器和定时器进行计数和定时。(4)显示电路采用单片机动态显示。4.2 转速测量原理在此采用频率测量法, 其测量原理为, 在固定的测量时间内, 计取转速传感 器产生的脉冲个数,从而算出实际转速。设固定的测量时间为 Tc(min),计数器计取的脉冲个数 m,假定脉冲发生器每转输出 p个脉冲,对应被测转速为 N ( r/min ),则f=pN/60Hz;另在测量时间 Tc内,计取转速传感器输出的脉冲个数 m应为 m=Tcf ,所以,当测得 m值时,就可算出实际转速值 1 : N=60m/pTc (r/min) (

4、 1) 4.3 转速测量系统组成框图系统由信号预处理电路、单片机 STC 89C51、系统化 LED显示模块、串口数 据存储电路和系统软件组成。 其中信号预处理电路包含信号放大、 波形变换和波 形整形。对待测信号进行放大的目的是降低对待测信号的幅度要求; 波形变换和 波形整形电路则用来将放大的信号转换成可与单片机匹配的 TTL 信号;通过对单 片机的编程设置可使内部定时器 T0 对输入脉冲进行计数,这样就能精确地算出 加到 T0 引脚的单位时间内检测到的脉冲数;设计中转速显示部分采用价格低廉 且使用方便的 LED模块,通过相关计算方法计算得到的转速通过 I 2C总线放到 E2PROM存储,既节

5、省了所需单片机的口线和外围器件, 同时也简化了显示部分的 软件编程。系统的原理框图如图 2.1 所示。图 2.1 系统的原理框图五系统硬件电路的设计 系统硬件部分包含输入模块、显示模块、控制模块、测速模块等。在硬件 搭建前,先通过 Proteus Pro 7.5 进行硬件仿真实现。5.1脉冲产生电路设计设计采用了红外光电传感器,进行非接触式检测。当有物体挡在红外光电 发光二极管和高灵敏度的光电晶体管之间时, 传感器将会输出一个低电平, 而当 没有物体挡在中间时则输出为高电平, 从而形成一个脉冲。 系统在光电传感器收 发端间加入电动机, 并在电动机的转轴上安装一转盘。 在这个转盘的边沿处挖出 若

6、干个圆形过孔, 把传感器的检测部分放在圆孔的圆心位置。 每当转盘随着后轮 旋转的时候, 传感器将向外输出若干个脉冲。 把这些脉冲通过一系列的波形整形 成单片机可以识别的 TTL电平,即可算出轮子即时的转速。转盘的圆孔的个数决定了测量的精度, 个数越多, 精度越高。这样就可以 在单位时间内尽可能多地得到脉冲数,从而避免了因为两个过孔之间的距离过 大,而正好在过孔之间或者是在下个过孔之前停止了, 造成较大的误差。 设计中 转盘的圆孔的实际个数受到技术的限制。 为了达到预定的效果设计在转盘过孔的 设计上采用 11 个过孔,从而留下了 10个同等的间距。 这样在以后的软件设计中 能够较为方便的计算出脉

7、冲频率。脉冲发生源的硬件结构图如图 3.1 所示。图 3.1 脉冲发生源硬件结构图(左为正视图,右为侧视图)5.2光电转换及信号调理电路设计由于系统需要将光信号转换为电信号, 因而需要使用光电传感器并设计相应 的信号调理电路, 以得到符合要求的脉冲信号, 送给单片机 STC89C51进行计数, 同时得到计数的时间, 由单片机进行相关计算以得到电动机转速。 传感器将电机 的转速信号转变成了电脉冲信号, 该信号经过 LM324集成运放整形驱动, 送到单 片机进行脉冲计数,从而测出电动机转速。光电转换部分与单片机的连接框图如图 3.2 所示图 3.2 光电转换部分与单片机的连接框图5.3STC89C

8、52的 XTAL1时钟电路 系统采用 12M晶振与两个 30pF 电容组成震荡电路,接 与 XTAL2引脚,为微控制器提供时钟源5.4按键电路 四个按键分别控制电机的不同转速,即控制 PWM波高电平的占空比,以实 现电机的速度控制,采用开环控制方法,不是十分精确,但控制简单,易实现, 代码编写简单。5.5显示部分系统采用 4 位共阴极数码管实现转速显示。数码管的位选端 14 分别接STC89C52的 P2.0P2.3 管脚,端选段 AG与 DP分别接 STC89C52的 P0.0P0.7 管脚。需要说明的是:实际焊接电路时,数码管的位选端需要焊接三极管,否则 数码管显示亮度将会非常暗。5.6电

9、机控制与驱动部分电机的运行通过 PWM波控制。 PWM波通过 STC89C52的 P2.4 口输出。说明: 测速部分用的是 Motro-encode 电机,实际用 ST151实现测速,焊接电路 如下图:其中 R1=510, R2=4.7KST内部电路:5.7其他电路 复位电路如下所示 :完整仿真电路图:7六、软件部分设计读 P1 口8系统软件采用 Keil 集成开发环境开发 程序代码如下(带注释) :#include sbit P2_0=P20; sbit P2_1=P21; sbit P2_2=P22; sbit P2_3=P23;/ 数码管选定位sbit P2_4=P24;/ 电机控制位s

10、bit keysp0=P10;sbit keysp30=P11;sbit keysp60=P12;/ 电机转速为 0 的控制键/ 电机转速为 30 的控制键/ 电机转速为 60 的控制键sbit keysp100=P13; / 电机转速为 100 的控制键 unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92, 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;unsigned int motorspeed; / 电机转速unsigned char GE,SHI,BAI,QIAN; / 电

11、机转速 motorspeed 的各个位unsigned int counter=0; / 光电传感器脉冲数unsigned int pwm; unsigned int mid; unsigned int calsp;/pwm 占空比/ 占空比设置值/ 设定多长时间计算一次速度void display();/ 数码管显示电机速度9void delay(); / 延迟函数motorspeed 变量中void controlpwm(); / 控制电机占空比 void calspeed(); / 计算电机速度,放于void keyscan(); / 按键扫描void main()P2=P2&0x0f;

12、 mid=0;EA=1; / 开启总中断EX0=1; / 开启外部中断 0IT0=1; / 设置成下降沿触发方式TMOD=0x01; /设置定时器 0为模式 1,即 16位计数模式TH0=(65536-10000)/256; / 计数时间为 10ms TL0=(65536-10000)%256;ET0=1; / 开启定时器 0 中断TR0=1; / 启动定时器 0while(1)keyscan(); display(); controlpwm(); calspeed();void keyscan() / 键盘扫描if(keysp0 = 0)delay(); / 延迟防止抖动 if(keysp0

13、 = 0) mid=0;if(keysp30 = 0)delay();if(keysp30 = 0) mid=1;if(keysp60 = 0)10delay(); if(keysp60 = 0) mid=3; if(keysp100 = 0) delay(); if(keysp100 = 0) mid=5;void calspeed()if(calsp=100) /100*10ms=1s 计算一次电机转速 motorspeed=counter/3; / 转的圈数除以时间counter=0;/ 清零脉冲数calsp=0;/ 清零标志void controlpwm() if(pwm=0 & pw

14、m=mid & pwm10)P2_4=0; / 电机不加速 else pwm=0; void _TIMER0() interrupt 1TH0=(65536-10000)/256;TL0=(65536-10000)%256;pwm+;calsp+;11void _INT0() interrupt 0 counter+; / 接受脉冲数 void display() / 数码管显示函数 GE=motorspeed%10; SHI=motorspeed/10%10;BAI=motorspeed/100%10; QIAN=motorspeed/1000%10;P2_0=0; P0=tableQIAN

15、; delay();P0=0xff;P2_0=1;P2_1=0; P0=tableBAI;delay();P0=0xff;P2_1=1;P2_2=0; P0=tableSHI; delay();P0=0xff;P2_2=1;P2_3=0; P0=tableGE;delay();P0=0xff;P2_3=1; void delay() / 延迟函数 unsigned char i=10; while(i-)12七系统测试测试方案:测试包含仿真测试和硬件测试两个部分。仿真测试指使用 Proteus Pro 7.5 对系统进行仿真测试。主要测试系统电路的 设计和验证程序逻辑的正确性。硬件测试指系统搭

16、建后对硬件电气性能的测试。 主要测试各功能的完整性可 靠性,以及系统电气性能的稳定性。测试工具为示波器万用表等。 仿真测试结果: 真测试中,系统运行正常,程序逻辑正确。按键输入正常、数码管显示正确。 P2.4 管脚间输出 PWM波正常。硬件测试结果: 系统硬件搭建完毕后,进行硬件测试。 系统加电后,振荡电路正常起振, STC89C52在时钟源电路的驱动下运行正常。 系统可在复位电路的作用下正常复位。系统按键输入正常,并能够正确消除 抖动。系统 PWM波输出正常。将示波器接 STC89C52的 P2.4 管脚,可观察到峰峰值 5V 左右的方波,频率与调速要求一致。 ST151传感器测量正常。数码

17、管转速显示正常,数码管可正确显示并正确显示电机转速。八设计中的问题分析1、在最初的设计电路时中没有使用采用硬件消抖的方式来避免三个按键按下时 带来的不稳定信号, 录入数据往往出错, 后来使用软件消抖来解决这个问题, 但 是由于按键复用程度比较高, 因此软件消抖浪费了不少一部分系统资源, 后来采 用 RC 电路硬件消抖比较完美的解决了这个问题。2、在硬件调试过程中出现过某些零件不灵的情况,根据已经画好的电路图使用 外用表可以很快的查找到问题的所在。 经过简单的焊接处理即可解决。 后来为了 避免频繁操作对焊接电路的影响, 专门在单片机的上下焊接了支撑部件, 用来防 止板子上元器件以及后面的焊接线路

18、收到影响, 事实证明这个很大程度保护了单 片机,方便了对单片机的操作。3、在硬件电路完成后遇到的最大问题是无法将程序导入到单片机,通过深入的 研究,发现通过单片机的串口可以很容易的连接上单片机, 进而将 hex 程序写入 到单片机中。为此专门扩展了串口电路,并且完成了相应的软件实现和 PC之间的通信。4、在单片机和 PC通信的时候通过单片机发送数据给 PC的时候经常会出现乱码, 无论发送什么字符还是十六进制数字都无法准确收到, 后来经过研究, 发现问题 出在晶振上, 我们选用了 12M 晶振,12M 的晶振波特率只能是 2400。因为 9600 的情况下会有 7.8%的误差,所以会产生乱码,而

19、 2400 波特率的情况下误差是 0.16%,这样就会相对准确的发送和接收信息。九实验总结13参考资料2008.7系列单片机设计实例 楼然苗 北京航空航天大学出版社 2006.2 单片机原理及应用 张红润 清华大学出版社 2008.11 单片机应用系统开发综合实例 张萌 清华大学出版社 2007.7 51 单片机开发入门与典型实例 王守中 人民邮电出版社 2007.8 单片机典型模块设计实例导航 第二版 求是科技 人民邮电出版社 单片机原理及接口技术 李全利 高等教育出版社 2004.1 C 语言程序设计 王曙燕 科学出版社 2008.8Visual C+程序设计全程指南 杨友东 电子工业出版社 2009.414

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1