




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于TMS320F2812步进电机控制系统【摘要】设计基于DSP芯片TMS320F2812控制步进电机运转。TMS320F281x系列处理器是基于TMS320C2xx内核的32位定点数字信号处理器,器件上集成了多种先进的外设,为电机及其他运动控制领域应用提供了良好的平台。设计实现对步进电机调速、定时、定步、正反转以及励磁方式控制,并通过TMS320F2812片内集成ADC模块获取电机电流。LCD12864结合四个按键以菜单模式选择各项功能,人机交换界面友好。该设计可精确控制步进电机运转,按键控制灵敏,能实现步进电机长时间工作。 关键词:DSP;步进电机;精确控制;ADC;菜单模式电子系统设计任务书本次设计以TMS320F2812 DSP芯片为核心控制步进电机运转,并通过LCD12864显示相关参数。(1)设计实现基于TMS320F2812的最小控制系统;(2)能利用TMS320F2812控制步进电机转向、转速等;(3)用12864液晶显示转向、转速、操作模式等状态信息参数;(4)实现其他外加功能。2011年9月29日目录 1 系统方案 11.1 设计要求11.2 系统总体框图11.3系统方案论证11.3.1控制器的论证与选择11.3.2电源模块的论证与选择21.3.3电机驱动模块选择 32. 系统理论分析与计算32.1 步进电机转速计算 32.2 TMS320F2812的AD校正33. 硬件电路与软件设计43.1各模块电路设计43.1.1 电源模块43.1.2步进电机模块43.2程序设计53.2.1程序功能描述与设计思路53.2.2程序流程图63.2.2.1 主程序流程图63.2.2.2 定时模式状态流程图73.2.2.3 定步模式状态流程图83.2.2.4 励磁方式选择流程图83.2.2.5 按键实时消抖流程图94.总结与心得95.参考文献10附录111.设计PCB图112.相关程序111. 系统方案1.1 设计要求设计并制作一个基于TMS320F2812步进电机控制系统,能控制步进电机各种状态,并用LCD12864显示,按键控制灵敏,能够长时间工作。1.2 系统总体框图本系统主要由TMS320F2812模块、电源模块、液晶显示模块、电机驱动模块组成,系统框图如图1。 TMS320F2812电源模块步进电机驱动模块电机运转按键输入显示模块图1 系统总体框图1. 3系统方案论证1. 3. 1控制器的论证与选择方案一:采用STC89C52单片机芯片控制系统。STC89C52是一种低功耗、高性能CMOS8位微控制器,最高运作频率35Mhz,具有 8K 在系统可编程Flash 存储器,价格便宜。但其RAM只有512Byte空间,不能用于在线调试。且芯片没有集成AD模块,需要另外搭建AD电路,增加了电路的复杂性。方案二:采用TMS320F2812DSP处理芯片控制系统。TMS320F2812具有32位的运算精度,采用增强的哈佛总线结构能够完成指令的并行处理,在单周期内通过流水线完成指令和数据的同时提取,处理能力可达150MIPS。支持JTAG边界扫描接口,可实现在线调试。其片上具有128K*16位的Flash存储器和18K*16位的SRAM,可存储庞大的程序。TMS320F2812器件上还集成了多种先进的外设(如AD模块),为电机及其他运动控制领域应用提供了良好的平台。基于TMS320F2812上述诸多优点,本次设计采用其作为系统控制芯片。1. 3. 2电源模块的论证与选择由于采用SANYODENKI 103-770-1三洋步进电机,其工作电流最大达到1A,可通过7812和7805两级稳压实现1A大电流输出。但由于稳压芯片压降大,导致大电流输出时耗散功率(P=(Vi-Vo)Io)很大,需要解决发热问题。方案一:采用7809在中间过渡,通过这样两级的调整,压差分别是降为3V和4V,两块电源芯片耗散功率及温度随之降低。这样固然对避免发烫有一定的帮助,但是我们注意到,电源芯片78XX的效率只有60%到75%,通过这么多的环节到5V的时候功率已经比较小了。没有负载的时候电源芯片的输出是5V,加上负载后输出容易被拉低,特别是大负载大电流时。方案二:采用降压功耗电阻(串接在12V与7805的输入端之间),来降低7805的耗散功率,电阻取值可用电阻压降(取34V)除以7805的最大输出电流Iom求得。但是加个功耗电阻,由于系统的电流是变化的,那么功耗电阻上的电压会很不稳定的变化,这样7805的输入端电压也会不稳定。而且长时间大电流工作时,如果电阻发热严重,电阻阻值会增大,而7805输入电压不能低于8V,否则7805工作不正常,这样做容易使系统供电不稳定。方案三:采用大面积的散热器进行散热。78XX最大输出电流可达1.5A,只要散热快,就能长时间驱动最大1A的电机。 实验证明,使用大面积散热片后稳压芯片长时间大电流输出都不会很烫,系统能稳定工作。方案四:用PNP管扩流,这样的话可以把7805的负载能力提高,还在大电流的时候提高效率,从而降低功耗。但其电路相对复杂,而且对扩流PNP管要求高。综上所述,选择方案三解决发热问题,同时简化了电路,提高了电路的稳定性。1.3.3电机驱动模块选择方案一:三极管搭建驱动电路,不过比较复杂,可靠性也会降低。方案二:选用专用的电机驱动芯片L298N,接口简单,操作方便,且输出电流可达25 A,能实现对1A电机的驱动。方案三:使用达林顿驱动器ULN2003。该芯片可最多驱动八线步进电机。但是ULN2003最大灌电流只有500mA,不能满足该控制系统大电流驱动的要求。综上,选择L298N作为电机驱动。2. 系统理论分析与计算2.1 步进电机转速计算 不同的励磁方式电机有不同的步距角。全步(一相、二相)励磁方式步距角为1.8,令步进时间为T(s),则每1s步进度数为 ,每分钟的转数为,即转速V=0.3/T;同理,半步(一二相)励磁方式步距角为0.9,转速V=0.15/T。2.2 TMS320F2812的AD校正 ADC的转换结果和实际值相比,误差比较大,最大可达到9%左右。通过AD校正,可将误差控制在1%左右。2812的ADC转换精度较差的主要原因是存在增益误差和偏移误差,要提高转换精度必须对这两种误差进行补偿。理想的12位ADC转换模拟量输入X和数字量输出Y关系为:Y=mi*X (mi=4095/3=1365); 设实际增益为ma,实际偏移为b,则Y=ma*X+b. 通过对开发板上3.3V和1.8V两路精准电压的测量,解二元一次方程可得ma 和 b 。只要知道数字量转换结果Y,就可以得到实际的输入量.通过计算得ma=1290/1289, b=35 ; 故取ma=1;b=35;由于AD转换结果数据时刻变化,因此无法精确获得ma 和 b 值,但可通过平均值法求得ma 和 b ,使AD转换误差控制在1%左右。3. 硬件电路与软件设计3. 1各模块电路设计3.1.1 电源模块 220V交流市电通过电源变压器变换成交流低压15V,再经过桥式整流电路D6D9和滤波电容C2的整流和滤波,在固定式三端稳压器LM7812的Vin和GND两端形成一个并不十分稳定的直流电压(该电压常常会因为市电电压的波动或负载的变化等原因而发生变化)。此直流电压经过7812和7805的稳压和C3C9的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压。D2、D3、D4二极管起保护作用。3. 1. 2步进电机模块图5 步进电机模块原理图图中左边光电耦合器起电气隔离和电平转换作用,中间为L298N驱动芯片,D12D19二极管起保护和续流作用。右边10个10电阻(0.25W)并联得到1(2.5W)采样电阻进行AD采样。3. 2程序设计3. 2. 1程序功能描述与设计思路 设计实现对步进电机调速、定时、定步、正反转以及励磁方式控制,并通过TMS320F2812片内集成ADC模块获取电机电流。LCD12864结合四个按键以菜单模式选择各项功能。(1)为防止功能的冲突,程序中应用大量标志来记录各种功能状态,同一状态下可有显示标志和功能执行标志。显示标志用来显示液晶,显示完成后标志立即清零,避免液晶一直刷新影响显示效果;功能执行标志能够保持功能状态信息,等待功能选择,在功能执行完成(一般在返回上级操作时)后清零标志。(2)利用定时器进行按键实时消抖。利用定时器可对按键进入和退出都进行实时消抖,这样不需等待按键释放就能保证每次按下按键为单次触发,避免了延时按键消抖占时、要等待的弊端,极大地提高了CPU工作效率,实时性好。由于按键消抖不需要很高的优先级,故程序中使用EVA通用定时器1进行按键消抖。同时该定时器也用作时钟计数,这样共用可减少定时器的使用,提高程序的运行效率。(3)CPU定时器0用作步进脉冲延时来控制电机转速。由于电机转速要求精度高,故使用优先级最高的定时器CPU定时器0作为步进延时。(4)过采样法进行AD转换。程序对单一通道多次采样,通过取平均值法提高采样精度,同时可以减慢AD转换结果的变化,有利于LCD12864液晶显示。3. 2. 2程序流程图3.2.2.1 主程序流程图开始系统初始化定时器初始化液晶初始化AD初始化并启动转换加速KEY1按下?减速模式选择状态反转KEY2按下?KEY4按下?KEY3按下?励磁方式选择状态定时模式状态定步模式状态YYYYNNNNKEY1按下?KEY2按下?KEY3按下?YYYNNNKEY4按下?NY3.2.2.2 定时模式状态流程图 KEY3按下?返回模式选择状态KEY4按下?YYNN定时模式KEY1按下?KEY2按下?YYNN定时开启定时关闭设定位切换设定位加1设定位减1KEY1按下?KEY2按下?KEY3按下?YYYNNNKEY4按下?NKEY3按下3次?N启动/暂停复位KEY1按下?KEY2按下?YYNNYY3.2.2.3 定步模式状态流程图电机启动设定位切换设定位加1设定位减1KEY1按下?KEY2按下?KEY3按下?YYYNNNKEY4按下?N返回模式选择状态Y定步模式KEY3按下5次?YN电机停止到步?NY3.2.2.4 励磁方式选择流程图一二相励磁一相励磁二相励磁KEY1按下?KEY2按下?KEY3按下?YYYNNNKEY4按下?N返回模式选择状态Y励磁方式选择3.2.2.5 按键实时消抖流程图读取键值keynowflagKeynow=keylastKeynow!=keylastKeyvalue=keynowFlag=1;Keyvalue=keylast;Flag=0Keylast=keynowFlag=2定时器定时NY21NKeylast=keynow;flag=1;开始YYN4.总结与心得 通过本次系统设计,收获了许多。(1)学会对DSP芯片TMS320F2812的初步控制应用。设计过程中,通过老师课堂讲解DSP控制器原理及应用以及课后学习各种参考书籍,对TMS320F2812理论知识有了较深入的了解,然后通过对SR-DSP2812V20开发板的实验调试,掌握了对SR-DSP2812V20开发板的基本应用。(2)在程序应用方面,掌握了按键实时消抖原理及其编程应用,懂得了应用标志来规划功能状态的思想。这两点能够极大地优化程序设计,为以后的程序设计提供了很好的方案。同时,通过对上千行程序的编写,提高了程序调试分析能力。(3)硬件设计方面。为了实现1A电流输出的电源设计,通过相关书籍和互联网查阅了大量资料,从中学到了关于电源方面的许多知识,特别是懂得了从阻抗匹配和功率去分析问题的思想。设计中通过分析并解决步进电机控制中出现的现象及问题,加深了对步进电机的控制应用。(4)本次电子系统设计是毕业设计前的最后一次系统设计,通过认真完成设计任务将更好的为毕业设计做准备。5.参考文献(1)郭天祥.新概念51单片机C语言教程.电子工业出版社.(2)严桂兰.C语言程序设计与应用教程.厦门大学出版社.(3)马建国.电子系统设计教程.高等教育出版社.(4)苏奎峰、吕强、陈圣俭.TMS320F2812原理与开发.电子工业出版社.附录1. 设计PCB图2. 相关程序/AD转换 if(AdcRegs.ADC_ST_FLAG.bit.SEQ1_BSY=0&1=zhujiemian) if(1=adfinish) a1m=AdcRegs.RESULT04; adresult+=a1m;m+; if(50=m) m=0; if(adresult*300/20475speed) speed+; ConfigCpuTimer(&CpuTimer0,80,speed*5000); StartCpuTimer0();zhuansushuaxin=1; else if(0=GpioDataRegs.GPADAT.bit.GPIOA2) if(1speed) speed-; ConfigCpuTimer(&CpuTimer0,80,speed*5000); StartCpuTimer0();zhuansushuaxin=1; else if(1=moshixuanze) if(0=GpioDataRegs.GPBDAT.bit.GPIOB11)/右上 licifangshi=1; licifangshixianshi=1; if(0=licikeyflag)yixianglicixianshi=1; else if(1=licikeyflag)yixianglicixianshi=1; else if(2=licikeyflag)yierxianglicixianshi=1; else if(3=licikeyflag)erxianglicixianshi=1; moshixuanze=0; else if(0=GpioDataRegs.GPBDAT.bit.GPIOB14)/右下 zhujiemian=1; zhujiemianxianshi=1; moshixuanze=0; shijianshuaxin1=1; else if(0=GpioDataRegs.GPADAT.bit.GPIOA0)/左下 dingbumoshi=1; dingbumoshixianshi=1; moshixuanze=0;else if(0=GpioDataRegs.GPADAT.bit.GPIOA2)/左上 dingshimoshi=1; dingshimoshixianshi=1; moshixuanze=0; else if(1=dingshimoshi) if(0=GpioDataRegs.GPBDAT.bit.GPIOB14)/右下 if(1=dingshixuanze) dingshixuanze=0;dingshimoshixianshi=1;if(0=dingshiset)flag1=0; else if(1=dingshikaiqi|1=dingshiguangbi|1=dingshiready|1=dingshistart) dingshikaiqi=dingshiguangbi=dingshiready=dingshistart=0;dingshixuanze=1;dingshixuanzexianshi=1;dingshikaiqiflag=dingshiguangbiflag=0;resetstart=0;StartCpuTimer0(); else dingshimoshi=0; moshixuanze=1;moshixuanzexianshi=1;dingshishijianxianshi=0; else if(0=GpioDataRegs.GPBDAT.bit.GPIOB11)/右上 if(0=flag1) flag1=0; dingshixuanze=1;dingshixuanzexianshi=1; else if(1=dingshikaiqi|1=dingshiguangbi) dingshiset+; if(3=dingshiset) dingshiready=1; dingshireadyxianshi=1; dingshikaiqi=dingshiguangbi=0; dingshiset=0; else if(0=GpioDataRegs.GPADAT.bit.GPIOA2)/左上 if(1=dingshixuanze) dingshikaiqi=1; dingshikaiqiflag=1; dingshiguangbiflag=0; dingshikaiqixianshi=1; dingshixuanze=0; StopCpuTimer0(); else if(1=dingshikaiqi|1=dingshiguangbi) shijianshuaxin3=1; if(2=dingshiset) if(23=hour2)hour2=0; else hour2+; else if(1=dingshiset) if(59=min2)min2=0; else min2+; else if(0=dingshiset) if(59=sec2)sec2=0; else sec2+; else if(1=dingshiready) start+; if(1=start) if(0=hour2&0=min2&0=sec2) StartCpuTimer0(); else if(1=dingshikaiqiflag) StopCpuTimer0(); if(1=resetstart) StartCpuTimer0(); else if(1=dingshiguangbiflag) StartCpuTimer0(); if(2=start) start=0; StopCpuTimer0(); else if(0=GpioDataRegs.GPADAT.bit.GPIOA0)/左下 if(1=dingshixuanze) dingshiguangbi=1; dingshiguangbiflag=1; dingshikaiqiflag=0; dingshiguangbixianshi=1; dingshixuanze=0; dingshishijianxianshi=1; shijianshuaxin2=shijianshuaxin3=1; StopCpuTimer0(); else if(1=dingshikaiqi|1=dingshiguangbi) shijianshuaxin3=1; if(2=dingshiset) if(0=hour2)hour2=23; else hour2-; else if(1=dingshiset) if(0=min2)min2=59; else min2-; else if(0=dingshiset) if(0=sec2)sec2=59; else sec2-; else if(1=dingshiready) dingshikaiqiflag=dingshiguangbiflag=0; shijianshuaxin2=shijianshuaxin3=1; hour1=hour2=min1=min2=sec1=sec2=0; start=0; StopCpuTimer0(); else if(1=dingbumoshi) if(0=GpioDataRegs.GPBDAT.bit.GPIOB11)/右上 dingbusetxianshi=1; if(4=dingbuset) dingbuset=0; dingbustart=1;dingbucount=0;StartCpuTimer0(); else dingbuset+; dingbustart=0;StopCpuTimer0(); else if(0=GpioDataRegs.GPBDAT.bit.GPIOB14)/右下 dingbumoshi=0; moshixuanze=1; moshixuanzexianshi=1; StartCpuTimer0(); dingbucount=dingbuset=0; qian=bai=ge=shi=0; else if(0=GpioDataRegs.GPADAT.bit.GPIOA0)/左下 dingbupresetxianshi=1; switch(dingbuset) case 1: if(0=ge)ge=9; else ge-; break; case 2: if(0=shi)shi=9;else shi-; break; case 3: if(0=bai)bai=9;else bai-; break; case 4: if(0=qian)qian=9;else qian-; break; default: break; dingbupreset=qian*1000+bai*100+shi*10+ge;else if(0=GpioDataRegs.GPADAT.bit.GPIOA2)/左上 dingbupresetxianshi=1; switch(dingbuset) case 1: if(9=ge)ge=0; else ge+; break; case 2: if(9=shi)shi=0;else shi+; brea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甘肃省武威凉州区四校联考2026届九上化学期中监测模拟试题含解析
- 2025年物流运输管理策略考试试题及答案解析
- 2025年物流管理师资格认证考试试题及答案解析
- 2026届广东省东莞市中学堂星晨学校化学九上期中达标测试试题含解析
- 职业建筑cad考试题及答案
- 体育事业考试题及答案
- 2025年文秘行政助理文档处理能力考核试题及答案解析
- 德邦面试题目及答案
- 工会会议考试题目及答案
- 服装代理分红方案(3篇)
- 龙虎山正一日诵早晚课
- 米粉及杂粮类制品课件
- 楔形平板产生的等厚干涉
- 骨髓腔穿刺在急诊急救中的应用课件
- 机械动力学PPT完整全套教学课件
- 年产2.03万吨高端精细化学品及5G新材料项目环评报告书
- 群众文化副高答辩问题及答案
- GB/T 41972-2022铸铁件铸造缺陷分类及命名
- 主编-孙晓岭组织行为学-课件
- 中医刮痧法诊疗操作评分标准
- 《师范生教师职业能力证书》样式及说明
评论
0/150
提交评论