基于单片机的步进电机控制系统设计_第1页
基于单片机的步进电机控制系统设计_第2页
基于单片机的步进电机控制系统设计_第3页
基于单片机的步进电机控制系统设计_第4页
基于单片机的步进电机控制系统设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2017届电子信息工程专业本科毕业论文第第YN按键扫描减速键是否被按下(p3.4=0?)State=1改变speed值调用减速子程序END开始图4-6减速部分流程图5系统的调试与检测5.1程序编译时的错误与解决方法将编写好的正反转程序、停止程序、显示等程序整理打包后,进行编译。用Keil编程软件编译检查语法漏洞和错误,去除语法错误之后,检查电路查看逻辑错误有无。程序修改好以后,直至编译器界面的编译结果窗口显示编译0错误,0警告为止。接着烧录程序进入单片机电路板,接通电源开始仿真。观察步进电机能否正常转动,显示是否正常。5.2步进电机转动异常及解决方法最初步进电机不能正常转动,怀疑其工作原理是否弄错,有无电路焊接错误。为了解决问题,防止电路出现虚焊、漏焊,使用万用表表笔测试,结果无导通断开等问题。继续查阅资料得出结果:步进电机要实现正常正反转,首要问题是转子该如何通电,通电绕组相的次序应该谁先谁后,其工作模式选用是否又存在错误呢?通过查阅网上步进电机相应数据资料,终于搞清了电机的四个相序和相序通电时的工作模式。其接线顺序分别是A相(橙),B相(黄),E(红),C相(粉),D相(蓝),其中ABCD为电机四个相,E为电源+5V接线。把电路板排针和单片机引脚连线重新整理焊接后,继续通上电源观察电机转动情况,结果电机转动显示正常。5.3结论与展望利用本次毕业设计对步进电机各项功能及其工作原理的研究,让我对代码的书写和设计硬件电路有了更深刻的认识和理解,并且熟悉了ULN2004电机驱动芯片、LCD1602液晶显示屏的使用和步进电机的工作原理。本次毕业设计让我对单片机的工作原理、各引脚功能、以及定时器和中断的应用都有了更深刻的认识。并且,自己能够以单片机为基础元件设计一个简单的工作系统。在现科技发展中,日渐成熟的智能家居以及机器人应用领域,步进电机将有着更为广泛的发展空间。参考文献[1]李夙.异步电动机直接转矩控制[M].北京:机械工业出版社,1998.[2]张友德.单片微型机原理、应用与实验[M].上海:复旦大学出版社,2005.[3]江一,朱凌,申仲涛.异步电动机直接转矩控制仿真研究[J].华北电力大学学报,2003.[4]袁任光,张伟武.电动机控制电路选用与258实例[M].北京:机械工业出版社,2005.[5]房玉明,杭柏林.基于单片机的步进电机开环控制系统[J].电机与控制应用,2006.[6]孙笑辉,韩曾晋.减少感应电动机直接转矩控制系统转矩脉动的方法[J].电气传动,2001.[7]王鸿钰.步进电机控制入门[M].上海:同济大学出版社,1990.[8]韩利虎.浅谈步进电机的基本原理[J].内蒙古石油化工,InnerMongoliaPetrochemicalIndustry,2007.[9]乔璐.,景林,韩英桃.一种实用的步进电动机驱动器设计[J].微特电机,2005.[10]张巍.浅谈单片机控制步进电机[J].安防科技,2006.致谢首先诚挚的感谢我的论文指导老师邓凌云老师,从论文的写作、修改到最后定稿过程中,自始至终都倾注着老师的心血。特别是她多次询问写作进程,并为我指点迷津,不断与我交流,帮助我开拓思路。老师以严谨的治学之道、宽厚仁慈的胸怀、积极乐观的生活态度,兢兢业业的工作作风和大胆创新的进取精神为我树立了学习的典范,她的教诲与鞭策将激励我在学习和生活的道路上励精图治,开拓创新并不断进取。为我在以后的工作领域中提供了一系列坚实的专业基础。她渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。我以最诚挚的心意感谢邓凌云老师。在毕业设计期间,我要感谢许多让我分享他们宝贵经验和知识的老师,教会我正确的思考问题的方式。同时也要感谢在论文写作过程中,帮助过我、并且共同奋斗四年的大学同学们。能够顺利完成论文,离不开他们的帮助,在此表示最深的谢意。附录A:系统总电路图图A系统原理图附录B:源程序清单#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintuchari;sbitlcdrs=P2^0;//lcdrs 脚sbitlcdrw=P2^1; //lcdrw脚sbitlcden=P2^2; //lcden脚 sbitkey_zheng=P3^1; //定义正传按键sbitkey_fan=P3^0; //定义反转按键sbitkey_stop=P3^2; //定义停止按键sbitkey_jiasu=P3^3; //定义加速按键sbitkey_jiansu=P3^4; //定义减速按键#definestep24//定义一圈步数ucharcodedis_speed[]={"Speed=.RPM"};ucharcodedis_state[]={"Mode:"};ucharcodedis_positive[]={"FWD"}; ucharcodedis_negative[]={"REV"};ucharcodedis_stop[]= {"STOP"};uintmoto_delay,speed,state; //转速变量电机工作状态变量 ucharrotate2[8]={0x03,0x02,0x06,0x04,0x0c,0x08,0x09,0x01}; //电机转动/*下面设定19个转速值,及19个转速值的定时器时间*/uintzhuansu[]={1400 ,1350 ,1300 ,1250 ,1200 ,1150 ,1100 ,1050 ,1000 ,950 ,900 ,850 ,800 ,750 ,700 ,650 ,600 ,550 ,500} ;uinttimer_set[]={63443,63366 ,63282 ,63192 ,63095 ,62988 ,62873 ,62746 ,62606 ,62452 ,62281 ,62089 ,61874 ,61630 ,61351 ,61029 ,60653 ,60209 ,59677 ,};//液晶显示模块voiddelay(uintz){ uintx,y; for(x=100;x>1;x--) for(y=z;y>1;y--);}voidwrite_com(ucharcom){ lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0;}voidwrite_date(uchardate){ lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0;}voidinit_lcd(){ lcden=0; lcdrw=0; write_com(0x38); write_com(0x01); write_com(0x0c); write_com(0x06); write_com(0x80); for(i=0;i<16;i++) { write_date(dis_state[i]); delay(1); } write_com(0x80+0x40); for(i=0;i<16;i++) { write_date(dis_speed[i]); delay(1); }}voiddisplay(){ uchara,b,c,d,i;//个十百千位数字 if(state!=0) { a=(zhuansu[speed]/2)/1000; //千位 b=((zhuansu[speed]/2)%1000)/100; // 百位 c=((zhuansu[speed]/2)%100)/10; // 十位 d=((zhuansu[speed]/2)%10); // 个位 } else { a=0; b=0; c=0; d=0; }write_com(0x80+0x40+6); write_date(a+'0'); //+'0'将数字转化为asc字符 write_com(0x80+0x40+7); write_date(b+'0'); write_com(0x80+0x40+9); write_date(c+'0'); write_com(0x80+0x40+10); write_date(d+'0'); if(state==0) { write_com(0x80+6); for(i=0;i<5;i++) { write_date(dis_stop[i]); delay(0); } } elseif(state==1) { write_com(0x80+6); for(i=0;i<7;i++) { write_date(dis_positive[i]); delay(0); } } elseif(state==2) { write_com(0x80+6); for(i=0;i<7;i++) { write_date(dis_negative[i]); delay(0); } }}voidkey_scan(void){ if(key_stop==0) //停止按键按下 { delay(20); //延时20ms消抖 if(key_stop==0) state=0; //确认停止按键按下 正反转标记=ting while(key_stop==0); //等待停止按键松开 display(); } elseif(key_zheng==0) { delay(20); if(key_zheng==0) state=1;//确认正传按键按下 正反转标记=zheng while(key_zheng==0); display(); } elseif(key_fan==0) { delay(20); if(key_fan==0) state=2;//确认反转按键按下 正反转标记=fan while(key_fan==0); display(); } elseif(key_jiasu==0) { delay(20); if(key_jiasu==0) { if(speed!=0)speed--; while(key_jiasu==0); //加速 display(); } } elseif(key_jiansu==0)//减速 { delay(20); if(key_jiansu==0) { if(speed<18)speed++; while(key_jiansu==0); display(); } }}voidmoto_control(void){ staticuchari; if(state==1) {P1=rotate2[i];//正传P1一次输出rotate[0]rotate1[1]rotate1[2]rotate1[3]……rotate1[7] }if(state==2) { P1=rotate2[7-i]; ///反传P1一次输出rotate1[7]……rotate1[3]rotate1[2]rotate1[1]rotate1[0] } if((++i)>7)i=0;}voidtimer_0(void) interrupt1 //2ms{ staticucharj; TH0=timer_set[speed]>>8; TL0=timer_set[speed]&0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论