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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

运动控制M法T法测速单片机程序设计.docx

1、运动控制M法T法测速单片机程序设计M法、T法测速单片机程序设计摘 要本设计为M法、T法测速的单片机程序设计。使用STC89C52单片机作为控制器,使用该单片机的外部中断和定时器对编码器的输出的脉冲进行采样来计算出电机的转速。可以使用按键输入来调整M法、T法测速法中Z、Tc和Tt等参数以及测速方法的选择,以此来增强本设计的适应性。参数选择结果和电机转速计算结果均显示在LCD1602上。关键字:STC89C52,M法、T法测速,LCD1602,电机转速AbstractThis design as m, t-law velocity measurement of single-chip comput

2、er programming. Using STC89C52 single-chip computer as the controller, using the microcontrollers external interrupts and timers for encoder output pulse is sampled to calculate the speed of the motor. Can be adjusted using touchtone m, t law Velocimetry parameters such as z, Tt and Tc, as well as i

3、n speed measurement method of choice, as a way to enhance the adaptability of this design. Parameter selection and calculation of motor speed results are available on LCD1602.Keywords:STC89C52,M、T method, the LCD1602, Motor speed第1章 绪论1.1 旋转编码器旋转编码器是用来测量转速的装置,光电式旋转编码器通过光电转换,可将输出轴的角位移、角速度等机械量转换成相应的电脉

4、冲以数字量输出(REP)。它分为绝对式和增量式两种。技术参数主要有每转脉冲数(几十个到几千个都有),和供电电压等。单路输出是指旋转编码器的输出是一组脉冲,而双路输出的旋转编码器输出两组A/B相位差90度的脉冲,通过这两组脉冲不仅可以测量转速,还可以判断旋转的方向。1、增量式编码器 增量式编码器轴旋转时,有相应的相位输出。其旋转方向的判别和脉冲数量的增减,需借助后部的判向电路和计数器来实现。其计数起点可任意设定,并可实现多圈的无限累加和测量。还可以把每转发出一个脉冲的Z信号,作为参考机械零位。当脉冲已固定,而需要提高分辨率时,可利用带90度相位差A,B的两路信号,对原脉冲数进行倍频。增量式旋转编

5、码器示意图如图1-1所示。图1-1 增量式旋转编码器示意图2、绝对值编码器 绝对值编码器轴旋转器时,有与位置一一对应的代码(二进制,BCD码等)输出,从代码大小的变更即可判别正反方向和位移所处的位置,而无需判向电路。它有一个绝对零位代码,当停电或关机后再开机重新测量时,仍可准确地读出停电或关机位置地代码,并准确地找到零位代码。一般情况下绝对值编码器的测量范围为0360度,但特殊型号也可实现多圈测量。1.2 数字测速的精度指标1.2.1 分辨率分辨率定义:改变一个计数值所对应的转速变化量,用符号Q表示。当被测转速由n1变为n2时,引起记数值增量为1,则该测速方法的分辨率是 分辨率Q越小,说明测速

6、装置对转速变化的检测越敏感,从而测速的精度也越高。1.2.2 测速误差率测速误差率:转速实际值和测量值之差与实际值之比, 记作 测速误差率反映了测速方法的准确性,越小,准确度越高。测速误差率的大小决定于测速元件的制造精度,并与测速方法有关。1.3 M法测速 M法是测量单位时间内的脉数换算成频率,因存在测量时间内首尾的半个脉冲问题,可能会有2个脉的误差。速度较低时,因测量时间内的脉冲数变少,误差所占的比例会变大,所以M法宜测量高速。如要降低测量的速度下限,可以提高编码器线数或加大测量的单位时间,使用一次采集的脉冲数尽可能多。计算公式为:时钟Z = 倍频系数 x 编码器光栅数。M法测速的分辨率:M

7、法测速误差率:在上式中,Z 和 Tc 均为常值,因此转速 n 正比于脉冲个数。高速时M1大,量化误差较小,随着转速的降低误差增大。所以,M法测速只适用于高速段。1.4 T法测速T法是测量两个脉冲之间的时间换算成周期,从而得到频率。因存在半个时间单位的问题,可能会有1个时间单位的误差。速度较高时,测得的周期较小,误差所占的比例变大,所以T法宜测量低速。如要增加速度测量的上限,可以减小编码器的脉冲数,或使用更小更精确的计时单位,使一次测量的时间值尽可能大。计算公式为:T法测速的分辨率 法测速误差率 低速时,编码器相邻脉冲间隔时间长,测得的高频时钟脉冲个数M2多,所以误差率小,测速精度高,故T法测速

8、适用于低速段。第2章 硬件系统设计2.1 STC89C52介绍STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,2个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模

9、式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。 单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。 单片机也被称为微控制器(Microcontroler),是

10、因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳图2-2 单片机原理图2.2硬件电路2.3.1时钟电路STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图42(a) 所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振

11、荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.212MHz之间选择,电容值在530pF之间选择,电容值的大小可对频率起微调的作用。其电路图2-3如下所示:图2-3 STC89C52的时钟电路2.3.2 显示电路本设计的显示部分使用的是液晶显示器LCD1602,该显示器只能显示英文字母和数字,所以参数的说明尤其英语意思或是符号代替。屏幕上会显示参数、模式以及计算后的速度。 图2-4 显示电路原理图2.3.3 速度检测电路光电编码器是开漏输出,所以在和单片机连接时需要加上拉电阻。编码器输出端连接到51单片机外部中断0引脚上所以就可以在每次接收到脉冲时就能触发外部中断。

12、图2-5 测速电路原理图2.3.4 按键输入电路 按键输入负责调整测速模式和改变参数的值,一个按键是“确认”按键,一个是“加”按键,在模式选择时为T法选择键;另一个是“减”按键, 在模式选择时为M法选择键。在调整参数的时候,也是根据“减”“加”调整参数。其电路图如图2-6所示。图2-6 按键输入电路第3章 系统软件设计3.1 主程序设计本设计程序运行时,通过按键输入首先来选择测速方法,然后设定测速法中T和Z等参数。如果选择M法测速则外部中断0和定时器0同时打开,当计时时间Tc到时,读取外部中断中对脉冲个数M1,最终计算出转速并显示。如果选择的是T法测速则只开外部中断0关闭定时器0,当外部中断检

13、测到第一脉冲时打开定时器0开始计数。检测到第二个脉冲是关闭定时器计算转速。图3-1为主程序流程图。图 3-1 主程序流程图3.1 M法测速程序设计选择M法测速模式后,打开外部中断0,同时开启定时器0开始一定时间的定时,外部中断开始计数脉冲个数。当定时间到的时候关闭外部中断和定时器,读取外部中断计数的个数并计算速度。M法测速程序流程如图 3-2所示。图 3-2 M法测速程序流程图3.2 T法测速程序设计程序初始化完成后选择T法测速模式,只打开外部中断0,当外部中断检测到脉冲的第一个跳变时打开定时器0的中断开始计时。当外部中断检测到第二个跳变是关闭外部中断0和定时器并读取计时的时间值。图 3-3

14、T法测速程序流程图:图 3-3 T法测速程序流程图总结本设计是单片机对电机转速的测量。不进使我熟练掌握了STC89C52的使用方法,而却将书本上学到的M法,T法测速应用到实践,有了更深入的了解。关于本次课程设计,感慨颇深。总的来说收获颇丰,尽管其中充满了艰辛与困难。但看到自己的成果时,。在亲身实践中,发现自己的一些不足的地方,有待进一步提高与改善。此次课程设计任务是电机转速测量系统,在实际调试中遇到的种种问题使我在设计与调试中学习到了许多知识。除此之外,我们要在拥有扎实的专业知识的前提条件下,在整个设计与调试过程中要有信心和耐心,对自己有信心,相信自己能够很好的完成本次设计任务。在调试中不断发

15、现问题进而解决问题,这是一个再学习的过程,其本身就是对自己的一次锻炼,培养了自己独立思考,动手解决问题的能力。从而从各个方面得到提高与完善了自己,使自己的各个方面提高到一个新的台阶,同时为以后的工作打下基础。参考文献1彭介华.电子技术课程设计指导M 湖南大学:高等教育出版社,19992新型高精度测速方法探讨J. 安徽机电学院学报, 1997年02期.3张友德.单片微型机原理M.上海:复旦大学出版社,2005.4康华光.电子技术基础.数字部分(第四版).北京:高等教育出版社,20005张锡富.传感器.北京:机械工业出版社,20016陈敏逊.近代电机调速技术G:科学技术文献出版社,20047于海生

16、.微型计算机控制技术选编.北京:清华大学出版社,19998赖寿宏.微型计算机控制技术M. 北京:北京航空航天大学出版社,19959高伟.AT89单片机原理及应用.北京:国防工业出版社,2008.10 Schroeder,ME Wolman,RL Wetterneck,TB Carayon,PTubing misload allows free flow event with smart intravenous infusion pumpJAnesthesiology,200611 R Gabriel,W Leonhard,Microprocessor Control of Induction

17、MotorJIEEE,1982附录A 系统原理图附录B 主要C语言源程序#include #include #define uchar unsigned char#define uint unsigned int #define DataPort P0 /LCD1602数据端口sbit LCM_RS=P25; /LCD1602命令端口 sbit LCM_EN=P27; /LCD1602命令端口 sbit KEY1=P11; /确认按键sbit KEY2=P13; /减按键sbit KEY3=P15; /加按键uchar table = Mode selection:;uint M1 = 0;b

18、it M_FLAG = 0; /M法测速参数uint M2 = 0;bit T_FLAG = 0; /T法测速参数uint Z = 1,T = 1000,n = 100; /倍频系数*编码器光栅数 采样周期bit flag = 0;void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void write_com(uchar com) LCM_RS=0; DataPort=com; delay(5); LCM_EN=1; delay(5); LCM_EN=0;void write_data(uchar date) LCM_RS

19、=1; DataPort=date; delay(5); LCM_EN=1; delay(5); LCM_EN=0;void init() LCM_EN=0; write_com(0x38); write_com(0x0e); write_com(0x06); write_com(0x01); write_com(0x80+0x00);void main(void) uchar i; init(); /液晶初始化 write_com(0x80); for(i = 0;i 15;i+) write_data(tablei); while(!flag) if(!KEY2) delay(15);wr

20、ite_com(0x80 + 15);write_data(M); M_FLAG = 1;T_FLAG = 0;while(!KEY2); if(!KEY3) delay(15);write_com(0x80 + 15);write_data(T); T_FLAG = 1;M_FLAG = 0;while(!KEY3); if(!KEY1 &(T_FLAG | M_FLAG) flag = 1;while(!KEY1); write_com(0x80 + 0x40); write_data(Z); write_data(=); write_data(Z / 100 + 0); write_da

21、ta(Z / 10 % 10 + 0); write_data(Z % 10 + 0); flag = 0; while(!flag) if(!KEY2) delay(15); Z-; write_com(0x80 + 0x42); write_data(Z / 100 + 0); write_data(Z / 10 % 10 + 0); write_data(Z % 10 + 0); delay(15);while(!KEY2); if(!KEY3) delay(15); Z+; write_com(0x80 + 0x42); write_data(Z / 100 + 0); write_d

22、ata(Z / 10 % 10 + 0); write_data(Z % 10 + 0); delay(15);while(!KEY3); if(!KEY1) flag = 1;while(!KEY1); write_com(0x80 + 0x48); write_data(T); write_data(=); write_data(T / 1000 + 0); write_data(T / 100 % 10 + 0); write_data(T / 10 % 10 + 0); write_data(T % 10 + 0); write_com(0x80 + 0x4E); write_data

23、(m); write_data(s); flag = 0; while(!flag) if(!KEY2) delay(15); T-; write_com(0x80 + 0x4A); write_data(T / 1000 + 0); write_data(T / 100 % 10 + 0); write_data(T / 10 % 10 + 0); write_data(T % 10 + 0); while(!KEY2); if(!KEY3) delay(15); T+; write_com(0x80 + 0x4A); write_data(T / 1000 + 0); write_data

24、(T / 100 % 10 + 0); write_data(T / 10 % 10 + 0); write_data(T % 10 + 0); while(!KEY3); if(!KEY1) flag = 1;while(!KEY1); flag = 0;write_com(0x01); IT0 = 1; /下降沿触发 EX0 = 1; TMOD = 0x11; /定时/计数器0、1工作于方式1 TH0 = 0xFC; /12.000 TL0 = 0x18; ET0=1; /允许定时/计数器0 中断 if(M_FLAG) TR0=1; /启动定时/计数器0 中断 else if(T_FLAG

25、) TR0=0; /启动定时/计数器0 中断 EA=1; while(1) ; void Int0(void) interrupt 0 if(M_FLAG) M1+; if(T_FLAG) TR0=1; if(flag) flag = 0; n = T*60/Z/M2; write_com(0x80); write_data(S); write_data(p); write_data(e); write_data(e); write_data(d); write_data(:); write_data(n / 10000 + 0); write_data(n / 1000 % 10 + 0);

26、 write_data(n / 100 % 10 + 0); write_data(n / 10 % 10 + 0); write_data(n % 10 + 0); write_data(r); write_data(/); write_data(m); write_data(i); write_data(n); EA = 0; flag = 1;M2 = 0; void Timer0(void) interrupt 1 TH0 = 0xFC; /12.000 TL0 = 0x18; M2+; if(T = M2) T = T / 1000; n = M1*60/Z/T; write_com

27、(0x80); write_data(S); write_data(p); write_data(e); write_data(e); write_data(d); write_data(:); write_data(n / 10000 + 0); write_data(n / 1000 % 10 + 0); write_data(n / 100 % 10 + 0); write_data(n / 10 % 10 + 0); write_data(n % 10 + 0); write_data(r); write_data(/); write_data(m); write_data(i); write_data(n); EA = 0;

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

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