网站大量收购独家精品文档,联系QQ:2885784924

数电实习报告--三相步进电机控制器设计.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
三相步进电机控制器设计 设计任务及要求: 设计任务: 1、输入信号: (1)、系统上电后,若S1=1,S2=1时,电机停止转动,步数清零(个8421BCD数码管显示为000) (2)、系统上电后,若S1=X(无关项),S2=0时,电机停止转动,步数显示保持(即暂停); 时,; 2、外部输入脉冲Hz),供控制器和使用。 3、脉冲分配器将连续脉冲分配给A、B、C三相绕组,根据上面的要求,设计三相三拍控制方式,且具有正反转控制功能的脉冲分配器,即下列两种情况: (1)三相三拍正转(S3=1) (2) 其中每种状态切换时,对应电机转过1度角。 4、脉冲分配输出的三路信号A、B、C分别经过脉冲放大器放大后驱动步进电机的三相绕组,本设计中A、B、C分别用三个LED显示。 5、输出组8421BCD信号(每组4个),。 设计要求: 按照现代数字系统的Top-Down模块化设计方法,提出系统的整体设计方案,并进行正确的功能划分,分别提出并实现控制器、等模块化子系统的设计方案。 在的EDA设计环境中,采用原理图和语言混合输入的方法,完成系统的顶层设计、各子系统的模块化设计。分别完成各个基于语言实现的子模块(包括控制器)的逻辑功能仿真对顶层设计进行功能仿真。 在2步的基础上,采用公司的CPLD器件对顶层设计进行适配(Fit Design) 采用DownLoad软件将设计的JED文件烧录到试验板的芯片上,实际测试。 二、设计原理与方案: (一)、顶层设计方案: 该控制器共含有四大部分:主控制器、步数计数器、译码扫描显示电路、分频器。 ①分频器由时钟源输入50MHz的脉冲,经过分频器可分频为5Hz和400Hz频率的脉冲,输入给下一级电路。 ②主控制器部分根据外部输入的控制按键控制电机的转动方向,根据输入的脉冲控制电机的转动频率,并显示相序的变化。同时向步数计数器输出控制数值,以使步数计数器与主控器同步。另外在主控制器中还应有一个控制端来接收计数器的反馈,使电机在转动360度后能够停止转动。 ③计数器部分根据分频器输入的脉冲数进行计数,并由主控制器的输出来控制其是否计数以及清零、暂停等功能。同时当记数到360步后反馈给主控制器一个控制值使其控制电机停止转动。将计数的数值输出给译码扫描电器。 ④译码扫描电路中由分频器的400Hz脉冲控制数码管的扫描频率。根据计数器的数值通过4-7译码器显示到数码上。 (二)、控制器设计方案: (1)、系统上电后,若S1=1,S2=1时,电机停止转动,步数清零 (2)、系统上电后,若S1=X(无关项),S2=0时,电机停止转动,步数显示保持(即暂停); 时,; 控制器共有四个输出端口,分别为xiang、key1、key2、key3。 key1、key2、key3控制计数器与电机同步计数和清零。xiang为三个相位的输出。 主控器程序如下: module kongzhiqi(clk,s1,s2,s3,k,xiang,key1,key2,key3); input clk,s1,s2,s3,k; output [2:0]xiang; output key1,key2, key3; reg key1,key2; reg [2:0]xiang; reg [2:0]state; reg[1:0]i=2d0; always @(posedge clk ) begin if(s1==1 s2==1) begin key1=1b0;key2=1b0; end else if(s1==1 s2==0) begin key1=1b1;key2=1b0; end else if(s1==0 s2==0) begin key1=1b1;key2=1b0; end else if(s1==0 s2==1) begin if(k==1) begin key1=1b1;key2=1b1; xiang=xiang;end else begin i=(i==2d3)? 0:(i+2d1); case(i) 2d0: begin key1=1b1;key2=1b1;xiang=3b110;end 2d1: begin key1=1b1;key2=1b1;xiang=(s3==1d0)? 3b011:3b101; end 2d2: begin key1=1b1;key2=1b1;xiang=(s3

文档评论(0)

14576 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档