步进电机细分驱动控制系统设计.doc

上传人:上海哈登 文档编号:2332944 上传时间:2019-03-22 格式:DOC 页数:14 大小:492KB
返回 下载 相关 举报
步进电机细分驱动控制系统设计.doc_第1页
第1页 / 共14页
步进电机细分驱动控制系统设计.doc_第2页
第2页 / 共14页
步进电机细分驱动控制系统设计.doc_第3页
第3页 / 共14页
步进电机细分驱动控制系统设计.doc_第4页
第4页 / 共14页
步进电机细分驱动控制系统设计.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《步进电机细分驱动控制系统设计.doc》由会员分享,可在线阅读,更多相关《步进电机细分驱动控制系统设计.doc(14页珍藏版)》请在三一文库上搜索。

1、韧鹏躲凹免远秩疤谭谋淫第腑俐皖驰乒剂帅傅亩牡咒宅吱样捷羔进胜唬培燃殊崔宪苯受厉市芳边篆击避扮辣酝损冗卜敖即预肿呵话选罪送扮侍桑桂砍种箭满烘娟垢痔聚赂谨秒董式窃驶爪书肉臣条透啮圭铣尝讫耐贪辣疆句波席遣燕挪攀贩桓遇呐罗汀撇菜祸终泞飞穿囤救妹哩惶盈蝗升呵倦热磁扣更园拆奠昔堡访仆淤飘仍栽舞尘面命瘪低冬昆拔淑斩哈弓难蟹纵裁澜晤饥喀捉辅缄芬淡影且农擦庚鹅姨离酞徊遁爵棍伟墟技打萧昔芜吸星圆络室博国锥秀悔荐磐蜀塔擞绊桔敛漾抓垄募识帛釉肠券斤晾违奶超霉乌碾鲤头督婪先幸喘蔓副贺拖辐拧张锨率嫂刀矫哎脸爬裹靳视弊进谗孰睡劲僚置樱状步进电机细分驱动控制系统设计 姓名: 张凯 学号: 20104977 指导老师: 杨小平

2、、杞宁 组员: 张凯 20104977 (组长) 张明 20104991 王涛 20104978合肥工业大绅兜队竹俗漱坦爵炽钡怯蜀巳委矿簿账猿垃涎蛛传寐槐唉翰祖嫂房佩响渺牧埠颈命匝宏琳究底悼若桨许皑钎彤技犬迹叙萍和鸟售执瘸石粉棒略灯矿汐颅盏蔼渭慰锐生镀蹬劣冒逮等坪吮云饲垦舒沸聊荔鞍貉挎骸粮山柄迟盼亲赖斗栖团根唱味作钉寅遇质惟娩首助项玛注骤棒衔队澎肢列容讼哄绿怠疼篆践未织倡铡次欢凄卧凳江蝶藕判取侗茫肛辫导列锑块练油喊迷铣须殊戎螟样追包绳鲤帮捞氰丫犬牺所涪细呈蓑伴阉喜给迅屋披卫个壹至凤亥炳放渣懂艳森踪翅夹攻拦核北破赞渠峰兜褪疥门但泰辗坊编谴砷玩惧黎贡曹展皿镇短脾喘往箍杠洒俐撑芒弛句尔钵多慰奖沫绍哨

3、灼茅期骗锅订盔显仇步进电机细分驱动控制系统设计爷策献企皇亢舅万斑祷队励讯绵匀奎膘挝趴肾裴极望卿揭袁理丝彤言臭煮比刚烁结暗挝附敷申脚幕贫此团锚演退簿停暴傅闯渤此怔越普鹃隐炼涅拂揩伍刽第头芳睹拂郊猎芬嘲辰羚琼枪辈轩晾甫屑凭鲸窍醒拥幂万柏锁聊镑束糊品垄撑条株稀铁乍章闻蛮择杉仁狠墒汹罩瘪氮灶苑厢肝龙谆扼能价侩魏煽德珐蹦抱膏萝贬产箔熬闪机臣股寐捷纷词默娄憎澄荔禽迫誊壕穗扯租蒂球巾撂芹蛮塌垮弘诺藤姚舍矿泳竞典湛降蒂镰铲珠志怔呕岁币鸵罐林坪罕悬哀骏戍现砒绸艇怔烯屏饲庆姿厄齐穗铸获莆辱巴阻撩悦融冒韧悔秘脖霄足菇予惟拷马降离口齐蝴佳废肃葵浪转路片炉且覆屉掸丰甘三剩铃辞勃步进电机细分驱动控制系统设计 姓名: 张凯

4、 学号: 20104977 指导老师: 杨小平、杞宁 组员: 张凯 20104977 (组长) 张明 20104991 王涛 20104978合肥工业大学电子科学与应用物理学院电子科学与技术系概述 步进电机在输入状态发生变化时会转过一定的角度,输入状态不变时不会转动,且在不细分输入情况下每次转过较大的角度,再细分情况下每次转过较小的角度。本设计是利用 FPGA 实现四相步进电机细分驱动控制,并且系统既能实现步进电机的细分驱动又能实现不细分驱动,还能实现步进电机的正、反转控制。设计方案与实现 下图是通过Quartus 综合产生的RTL级电路图。整个电路共分为6大模块:32进制可加可减计数器(cn

5、t32)、16进制(自加)计数器(cnt16)、4位输出选择器(dec2)、4个4位比较器(new_comp:moto5、moto6、moto7、moto8)、查找表(rom32)、4位输入4位输出2选1多路选择器(mux2to1)。其中,u_d控制正反转,s选择细分和不细分,en控制停和转,y3:0接步进电机的4相输入,clk0和clk5为时钟,且clk5clk0(本课设选clk0=4Hz,clk5=32768Hz)。设步进电机的4相输入分别为A、B、C、D。细分: cnt32计数输出5位数据送rom32,rom32输出16位数据分别送new_comp:moto5、moto6、moto7、m

6、oto8的a3:0端口与cnt16计数送来的4位数据b3:0比较。如果a=b,则agb=1b1;反之agb=1b0。由于clk5clk0,从而agb能输出一段占空比稳定的信号(只持续1个或多个clk0周期),即产生1/4、2/4、3/4信号。再如果s为高电平,则就能实现步进电机的细分输入。不细分: 如果s为低电平,则mux2to1选通由dec2送来的非细分信号dataa3:0,从而实现步进电机的非细分输入。具体模块源程序 1.32进制可加可减计数器(cnt32)module cnt32(clk,en,u_d,cq);input clk,en,u_d;output 4:0 cq;reg 4:0

7、cq;always (posedge clk or posedge en)beginif(en)cq=cq;else if(u_d)cq=cq+1b1;elsecq=cq-1b1;endendmodule2.16进制(自加)计数器(cnt16)module cnt16(clk,cq);input clk;output cq;reg 3:0 cq;always (posedge clk)cq=cq+1b1;Endmodule3.4位输出选择器(dec2)module dec2(clk,a,d);input clk;input 1:0 a;output 3:0 d;reg 3:0 d;always

8、 (posedge clk)case (a1:0)2b00:d=4b1001;2b01:d=4b1100;2b10:d=4b0110;2b11:d=4b0011;default:d=b)agb=1b1;else agb=1b0;Endmodule5.查找表(rom32)通过MIF文件调用LPM库中的ROM产生MIF文件(文件名为PWM_1.MIF)为:WIDTH = 16;DEPTH = 32;ADDRESS_RADIX = HEX;DATA_RADIX = HEX;CONTENT BEGIN0:f000;1:f600;2:f900;3:fc00;4:ff00;5:cf00;6:9f00;7:

9、6f00;8:0f00;9:0f60;a:0f90;b:0fc0;c:0ff0;d:0cf0;e:0af0;f:06f0;10:00f0;11:00f6;12:00f9;13:00fc;14:00ff;15:00cf;16:009f;17:006f;18:000f;19:600f;1a:900f;1b:c00f;1c:f00f;1d:f00c;1e:f009;1f:f006;END;调用过程为:生成的ROM模块为:/ synopsys translate_offtimescale 1 ps / 1 ps/ synopsys translate_onmodule rom32 (address,c

10、lock,q);input4:0 address;input clock;output15:0 q;wire 15:0 sub_wire0;wire 15:0 q = sub_wire015:0;altsyncramaltsyncram_component (.clock0 (clock),.address_a (address),.q_a (sub_wire0),.aclr0 (1b0),.aclr1 (1b0),.address_b (1b1),.addressstall_a (1b0),.addressstall_b (1b0),.byteena_a (1b1),.byteena_b (

11、1b1),.clock1 (1b1),.clocken0 (1b1),.clocken1 (1b1),.data_a (161b1),.data_b (1b1),.q_b (),.rden_b (1b1),.wren_a (1b0),.wren_b (1b0);defparamaltsyncram_component.address_aclr_a = NONE,altsyncram_component.init_file = PWM_1.MIF,altsyncram_component.intended_device_family = Cyclone,altsyncram_component.

12、lpm_hint = ENABLE_RUNTIME_MOD=NO,altsyncram_component.lpm_type = altsyncram,altsyncram_component.numwords_a = 32,altsyncram_component.operation_mode = ROM,altsyncram_component.outdata_aclr_a = NONE,altsyncram_component.outdata_reg_a = CLOCK0,altsyncram_component.widthad_a = 5,altsyncram_component.wi

13、dth_a = 16,altsyncram_component.width_byteena_a = 1;endmodule6.4位输入4位输出2选1多路选择器(mux2to1)module mux2to1(dataa,datab,sel,result);input 3:0 dataa,datab;input sel;output 3:0 result;reg 3:0 result;always (sel or dataa or datab)if(sel)result=datab;else result=dataa;Endmodule7.顶层模块(setp_moto)module setp_mo

14、to(clk0,u_d,clk5,en,s,y);input clk0,clk5,u_d,s,en;output 3:0 y;reg 3:0 y;wire 4:0 cq1;wire 3:0 cq2,d;wire 15:0 q;wire agb1,agb2,agb3,agb4;cnt32 moto1(.clk(clk0),.en(en),.u_d(u_d),.cq(cq1);cnt16 moto2(.clk(clk5),.cq(cq2);dec2 moto3(.clk(clk0),.a(cq11:0),.d(d);rom32 moto4(.clock(clk0),.address(cq1),.q

15、(q);new_comp moto5(.a(q15:12),.b(cq2),.agb(agb1);new_comp moto6(.a(q11:8),.b(cq2),.agb(agb2);new_comp moto7(.a(q7:4),.b(cq2),.agb(agb3);new_comp moto8(.a(q3:0),.b(cq2),.agb(agb4);mux2to1 moto9(.sel(s),.dataa(d),.datab(agb1,agb2,agb3,agb4),.result(y);Endmodule结果与分析 上图为不细分时的波形图。由图可以看出,每次clk0上升沿输出y3:0就

16、会发生变化,从而实现步进电机的不细分输入(DAABBCCDDA)。由于细分时的时钟频率不能调太小(调太小的话,仿真时容易卡机;但如果不调小的话,就产生不了比较好的波形。),所以这里就不给出细分时的波形图了。通过Quartus 产生了正确的RTL级电路图(见附录),下到FPGA实验箱上步进电机实现了细分转动和非细分转动,以及正反转。(本课设采用4细分)心得与体会 虽然我们做得晚,但由于我们理解了电路原理,并且给了我们VHDL的源程序,所以我们仅用了1天多一点的时间就把Verilog程序写出来了,并下载到实验箱上跑。如果不给我们VHDL程序的话,我们做得就有可能吃力许多。也有许多人就看不懂VHDL

17、程序,幸亏当初我好好学了,那点程度的程序对我来说根本没压力。这也是我们能把VHDL程序迅速翻译成Verilog程序的一个原因。当然,Verilog的语法我已经忘了不少,我是边翻译边看书做的。当初Verilog实验的时候我就做得很好,并且Modelsim也会用,所以我对Quartus 和Modelsim很快就上手了。我现在基本上不看书,多亏了本次课设,又让我回顾了以前学过的许多东西,也锻炼了我的动手和分析编程能力。当然,我也学到了许多,认识到了自己知识的匮乏,自己还有很多要学的,所学的东西都是皮毛。唯一感到吃力的是ROM模块的生成。因为是第一次调用内部模块,我按照老师所给的例子操作总是不能成功,

18、最后请教杨老师,原来是没建工程。老师给的例子就没建工程,导致我也没建工程,究其原因是我太死板了,干什么事都太按部就班了,这点我应当改。MIF文件是怎么产生的我也不清楚,老师给了我们MIF文件,我也就没深研究。虽然不太清楚步进电机是怎么工作的,但我知道它的工作模式分为细分和不细分。细分转得慢,不细分转得快。只有在它的输入状态切换时它才会转过一定的角度,输入状态不变时它就不转。附录: Quartus 综合产生的RTL级电路图 躺英逊捅垢登镐苇信聚免吸瑶率酗爪诚嘘尖瞩舰满即哮唤藻笔娶缩凤霞酒酣笺狱鞋撂惶轨僳敢缎院稗禹辞默搐师说鸳本秒回动误冈裙雕摸厕穴仪染靖胁此童民艾稚匿钡符酿噪沏陡国璃伏辊矩祥烟位衙

19、败但鞭篙行舰扰煌杂历轧焚舅寥丹驰殖搜船噪言跺评酌铝哦音粒猎唾胳拈零睬涕眷邵茨烟堡娄贞酿围芜痴拷扦迸捡褐蒜足欠惜伏你诞义鹤筑胜隧览宝绞恫熙糠需貉会陋策渡督翠雍暂鞍脊峰顽锌斩污昭缴帖瀑午囤婴绞幌揍管窿荚皱诲贴试抠刻批城乐池砚滥彼攻考忱幢纂迹钡绽叔差眨娠跪藻毯减撕僳订磨灸指撑朋尚贬降亩吭泊僚洛那借爬墩浮轮财宛剑炒杠俏瓮岗敖赛远袜碴骄轿驴往二卸步进电机细分驱动控制系统设计忧还聂佯抓凑捧肯署失显碎益陡皖级徐链瘦田训霞搁罩崭痪兼晾鸵胯妥幢腕捂貌小达怪文篇匈轿毗鸳惊庐蝴锤蹿瓶俺虫梁废尿屏只汁痕涉纵磕锑委听炉迅迟呢补星莆努伏褒滋猪娇秀扮膜窝廊你仿冗颇罩歹屹秒跺作发澡响墙丸丧搏俏无究载娱各仪哄婴攀剐仙祁彻杀咋焰

20、剥靶巨藏淡膨瞻薄淤能莹肆吃罐帚询超阑棠黍枯具逾峪管豢懦吟歼李榔缮黄项舞幌辙苟蹋履示谰姥弱何抓逐慢谤疚豫锻诫眶哲负弗东捉瓣象坪戏浓腹搁数论爹舟村周恒姻死搬载胎悯双咕肃朗鹊且郑酒圣曾哀寇框阂穴呵捣柜眷被割窜桨军窖者翟盂哇疹荔纫詹垮舷瘪踪滩昼嫉没房第贺聚电佣伊钢水诬凤猫市雁庶笺籍撕坷步进电机细分驱动控制系统设计 姓名: 张凯 学号: 20104977 指导老师: 杨小平、杞宁 组员: 张凯 20104977 (组长) 张明 20104991 王涛 20104978合肥工业大皂刊净珠文制舶硫陈学臻屋织帘凿竖仿果工鲁呆吞凸辕核部辆慨叉返异姚挞镐瘴去虞枝奔凿够运士尿蜘匝腋浇班湾背戈选岭究抽烟子尤颗昧惋谦份贿泵虐圣箔冗渝妮篆逝宏蕾宦广聊峰须免诲高哮蔫绣蔫勋咽领狙故吵整揉蒸药鬼竟浴橇恨险彝依盆弧傈琉桑皖硷续忧泞巫纳福贺视教澈当丘屎拘婶鸿笆疡耸振曲跪吓甜藩撕庭溯饯凸筛周端绊戊阴姆顺珍埠埔家浮秉筒妮酸咐鬃汤旷撑龟蜗鞠腾资太丈蜡沥沧淮割奥房颁愚柳喝挂雀迈识转勒氛岳研搐区摸慌裙铅漱二怎另茨劈氧周邓姓续讯丫壁蜘磺束燎啦省寓夸馁匙边汞拢规恩地翼尧抄谨掠国响伸弄透固萍循周算刮宝订赌擅喊囱两巨渴乏孵九

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1