课程设计实验报告-直流电机测速.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
直流电机测速 摘要 设计一种直流电机调速系统,以STC89C52为控制核心,通过ULN2003驱动电机,使用ST151测量转速,实现了按键输入、电机驱动、转速控制、转速显示等功能。 关键词:直流电机, 80C51, ULN2003, 转速控制 题目描述 直流小电机调速系统: 采用单片机、uln2003为主要器件,设计直流电机调速系统,实现电机速度开环可调。 要求:1、电机速度分30r/m、60r/m、100r/m共3档; 2、通过按选择速度; 3、检测并显示各档速度。 所需器件: 实验板(中号)、直流电机、STC89C52、电容(30pFⅹ2、10uFⅹ2)、数码管(共阳、四位一体)、晶振(12MHz)、小按键(4个)、ST151、电阻、发光二极管等。 方案论述 按照题给要求,我们最终设计了如下的解决方案: 用户通过键盘键入控制指令(开关),微控制器在收到指令后改变输出的PWM波,最终在ULN2003的驱动下电机转速发生改变。通过ST151传感器测量电机扇叶的旋转情况,将转速显示在数码管上。 在程序主循环中实现按键扫描与转速显示,将定时器0作为计数器,计数ST151产生的下降沿,可算出转速,并送至数码管显示。 硬件部分设计 系统硬件部分包含输入模块、显示模块、控制模块、测速模块等。在硬件搭建前,先通过Proteus Pro 7.5进行硬件仿真实现。 1.时钟电路 系统采用12M晶振与两个30pF电容组成震荡电路,接STC89C52的XTAL1与XTAL2引脚,为微控制器提供时钟源 2.按键电路 四个按键分别控制电机的不同转速,即控制PWM波高电平的占空比,以实现电机的速度控制,采用开环控制方法,不是十分精确,但控制简单,易实现,代码编写简单 3.显示部分 系统采用4位共阴极数码管实现转速显示。数码管的位选端1~4分别接STC89C52的P2.0~P2.3管脚,端选段A~G与DP分别接STC89C52的P0.0~P0.7管脚。 需要说明的是:实际焊接电路时,数码管的位选端需要焊接三极管,否则数码管显示亮度将会非常暗。 4.电机控制与驱动部分 电机的运行通过PWM波控制。PWM波通过STC89C52的P2.4口输出。 说明:测速部分用的是Motro-encode电机,实际用ST151实现测速,焊接电路如下图: 其中R1=510Ω,R2=4.7KΩ ST内部电路: 5.其他电路 复位电路如下所示: 完整仿真电路图: 软件部分设计 1.开发环境 系统软件采用Keil集成开发环境开发 程序代码如下(带注释): #include reg51.h sbit P2_0=P2^0; //数码管选定位 sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3; sbit P2_4=P2^4; //电机控制位 sbit keysp0=P1^0; //电机转速为0的控制键 sbit keysp30=P1^1; //电机转速为30的控制键 sbit keysp60=P1^2; //电机转速为60的控制键 sbit keysp100=P1^3; //电机转速为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; //电机转速motorspeed的各个位 unsigned int counter=0; //光电传感器脉冲数 unsigned int pwm; //pwm占空比 unsigned int mid; //占空比设置值 unsigned int calsp; //设定多长时间计算一次速度 void display(); //数码管显示电机速度 void delay(); //延迟函数 void controlpwm(); //控制电机占空比 void calspeed(); //计算电机速度,放于motorspeed变量中 void keyscan(); //按键扫描 void main() { P2=P20x0f; mid=0; EA=1; //开启总中断 EX0=1; //开启外部中断0 IT0=1; //设置成下降沿触发方式 TMOD=0x01; //设置定时器0为模式1,即16位计数模式 TH0=(65536-10000)/256; //计数时间为10ms TL0=(65536-10000)%256; ET0=1; //开启定时器0中断 TR0=1;

文档评论(0)

文档分享 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档