ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:417.61KB ,
资源ID:8990506      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8990506.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(数电实习报告--三相步进电机控制器设计.docx)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

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

1、 三相步进电机控制器设计 一、 设计任务及要求: 设计任务: 1、输入信号:四个控制开关S1、S2、S3(开关拨下时S=0,开关拨上时S=1,)和一个外部的时钟源。其中: (1)、系统上电后,若S1=1,S2=1时,电机停止转动,步数清零(三个8421BCD数码管显示为000); (2)、系统上电后,若S1=X(无关项),S2=0时,电机停止转动,步数显示保持(即暂停); (3)、系统上电后,若S1=0,S2=1时,步进电机三相三拍转动1周(360度),转动完成后停止,停止以后再操作S1、S2、S3无效,直至重新上电后才能从头工作; (4)、系统正常工作时,若S3=0时,步

2、进电机正转,S3=1时,步进电机反转。 2、外部输入脉冲信号时钟源(50MHz),经分频后产生两路5Hz信号,供主控制器和步数计数器使用。还要产生一个400Hz信号供三个7段数码管扫描显示使用。 3、脉冲分配器将连续脉冲分配给A、B、C三相绕组,根据上面的要求,设计三相三拍控制方式,且具有正反转控制功能的脉冲分配器,即下列两种情况: (1)三相三拍正转(S3=1)ABC 110(AB) 011(BC) 101(CA) (2)三相三拍反转(S3=0)ABC 110(AB) 101(CA) 011(BC) 其中每种状态切换时,对应电机转过1度角。 4、脉冲分配输出的

3、三路信号A、B、C分别经过脉冲放大器放大后驱动步进电机的三相绕组,本设计中A、B、C分别用三个LED显示。 5、输出3组8421BCD信号(每组4个输出端),并在FPGA内部经过译码后获得七段LED显示码,并通过扫描方式在三个发光LED显示数码光上显示歩进电机的步数(即角度数)。三个数码管共享7位数据线,依靠扫描方式工作,用来计数电机步数或角度数(此处电机转一步即一度)。根据要求3中所述,数码管计数显示000—360之间的数字。 设计要求: 1、 按照现代数字系统的Top-Down模块化设计方法,提出步进电机控制系统的整体设计方案,并进行正确的功能划分,分别提出并实现主控制器、分频器、步

4、数计数器、扫描显示译码模块等四部分模块化子系统的设计方案。 2、 在Quartus的EDA设计环境中,采用原理图和Verilog语言混合输入的方法,完成系统的顶层设计、各子系统的模块化设计。分别完成各个基于Verilog语言实现的子模块(包括分频器、步数计数器、主控制器、扫描显示译码四部分)的逻辑功能仿真,并对顶层设计进行功能和时序仿真。 3、 在2步的基础上,采用Altera公司的CPLD器件EP1C12F324C8对顶层设计进行适配(Fit Design),生成下载文件。 4、 采用DownLoad软件将设计的JED文件烧录到试验板的芯片上,实际测试。 二、设计原理与方案: (

5、一)、顶层设计方案: 设计原理图如下所示: 该控制器共含有四大部分:主控制器、步数计数器、译码扫描显示电路、分频器。 ①分频器由时钟源输入50MHz的脉冲,经过分频器可分频为5Hz和400Hz频率的脉冲,输入给下一级电路。 ②主控制器部分根据外部输入的控制按键控制电机的转动方向,根据输入的脉冲控制电机的转动频率,并显示相序的变化。同时向步数计数器输出控制数值,以使步数计数器与主控器同步。另外在主控制器中还应有一个控制端来接收计数器的反馈,使电机在转动360度后能够停止转动。 ③计数器部分根据分频器输入的脉冲数进行计数,并由主控制器的输出来控制其是否计数以及清零、暂停等功能。同时当

6、记数到360步后反馈给主控制器一个控制值使其控制电机停止转动。将计数的数值输出给译码扫描电器。 ④译码扫描电路中由分频器的400Hz脉冲控制数码管的扫描频率。根据计数器的数值通过4-7译码器显示到数码上。 (二)、控制器设计方案: 设计思路:控制器共有五个输入端口,分别为Clk、s1、s2、s3、k。Clk为脉冲输入端口。Clk为输入脉冲,为5Hz,由分频器输入。k为计数器的返回值,在步数达到360时,该值有效,电机停转。s1、s2、s3为三个控制键的输入在不同的情况下执行不同的动作,如下: (1)、系统上电后,若S1=1,S2=1时,电机停止转动,步数清零; (2)、系统上电后,

7、若S1=X(无关项),S2=0时,电机停止转动,步数显示保持(即暂停); (3)、系统上电后,若S1=0,S2=1时,步进电机三相三拍转动1周(360度),转动完成后停止,停止以后再操作S1、S2、S3无效,直至重新上电后才能从头工作; (4)、系统正常工作时,若S3=0时,步进电机正转,S3=1时,步进电机反转。 控制器共有四个输出端口,分别为xiang、key1、key2、key3。 key1、key2、key3控制计数器与电机同步计数和清零。xiang为三个相位的输出。 主控器程序如下: module kongzhiqi(clk,s1,s2,s3,k,xiang,key1,ke

8、y2,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=2'd0; always @(posedge clk ) begin if(s1==1 && s2==1) begin key1<=1'b0;key2<=1'b0; end else if(s1==1 && s2==0) begin key1<=1'b1;ke

9、y2<=1'b0; end else if(s1==0 && s2==0) begin key1<=1'b1;key2<=1'b0; end else if(s1==0 && s2==1) begin if(k==1) begin key1<=1'b1;key2<=1'b1; xiang=xiang;end else begin i=(i==2'd3)? 0:(i+2'd1); ca

10、se(i) 2'd0: begin key1<=1'b1;key2<=1'b1;xiang=3'b110;end 2'd1: begin key1<=1'b1;key2<=1'b1;xiang=(s3==1'd0)? 3'b011:3'b101; end 2'd2: begin key1<=1'b1;key2<=1'b1;xiang=(s3==1'd0)? 3'b101:3'b011; end endcase end end end as

11、sign key3=s3; endmodule 分频器程序如下: module fenpin(Clk,pin5,pin400 ); input Clk; output pin5; output pin400; reg [31:0] Cout1; reg [31:0] Cout2; reg Clk_En1; reg Clk_En2; always @(posedge Clk ) begin Cout1 <= (Cout1 == 32'd10000_000) ? 32'd0 : (Cout1 + 32'd1); Clk_En1 <= (C

12、out1 == 32'd10000_000) ? 1'd1 : 1'd0; end always @(posedge Clk ) begin Cout2 <= (Cout2 == 32'd125_000) ? 32'd0 : (Cout2 + 32'd1); Clk_En2 <= (Cout2 == 32'd125_000) ? 1'd1 : 1'd0; end assign pin400=Clk_En2; assign pin5=Clk_En1; endmodule (三)、受控器设计方案: 受控器有步数计数

13、器和译码扫描器两个。 (1)、步数计数器由主控器控制,有四个输入端,分别为Clk、key1、key2、key3。Clk为输入脉冲,为5Hz,由分频器输入,与主控器同频。key1、key2、key3为三个控制键的输入在不同的情况下执行不同的动作,如下: ①、key1=0,key2=0或key2=1时,步数为零; ②、key1=1, key2=1时,步数在脉冲上升沿时加一; ③、key1=1, key2=0时,步数保持上一次的数值; 在程序中,添加变量w1、w2,判断key3的值是否与上次的不同,不同则说明电机转向改变,执行步数清零,重新计数。输出变量k,当计数达到360步时,添加

14、if语句使k值会由原来的0变为1,计数停止,并且根据k值为1使计数在此后都不计数。 步数计数器有四个输出端,分别为bushu1、bushu2、bushu3,k。bushu1、bushu2、bushu3为步数的8421BCD码,每一个数都是一个4位的二进制数,输出给译码扫描器。k就是反馈到主控器中的变量。 (2)、译码扫描器由步数计数器控制,有四个输入端,分别为Clk,bushu1、bushu2、bushu3。bushu1、bushu2、bushu3由步数计数器输入,经过4-7译码器后将译码后的7位二进制数赋值给7位的数码管。Clk由分频器产生,经过再分频后,对应输出端的del,对8个数码管

15、进行扫描,使每个管显示不同数值。 译码扫描器有两个输入端shumaguan,del。shumaguan为7位数值对应电路板上的数码管的7段显示。del端对应电路板上的3-8译码器的3个输入端,对数码管扫描。 步数计数器程序如下: module jishu(Clk,key1,key2,key3,bushu1,bushu2,bushu3,k ); input Clk,key1,key2,key3; output k; output [3:0]bushu1; output [3:0]bushu2; output [3:0]bushu3; reg

16、w1, w2,k; reg [3:0]bushu1; reg [3:0]bushu2; reg [3:0]bushu3; always @(posedge Clk ) begin w2=key3; if(w2!=w1) begin bushu1=4'b0000;bushu2=4'b0000;bushu3=4'b0000; end begin if(bushu1!=4'b0||bushu2!=4'd6||bushu3!=4'd3) if(k==0) begin k=0; case(key1)

17、 1'b0: begin case(key2) 1'b0: begin bushu1=4'b0000;bushu2=4'b0000;bushu3=4'b0000;end 1'b1: begin bushu1=4'b0000;bushu2=4'b0000;bushu3=4'b0000;end endcase end 1'b1: begin if(key2==1'b1) b

18、egin bushu1 =(bushu1==4'b1001)? 4'b0:(bushu1+4'b1); if(bushu1==4'b0) bushu2 =(bushu2==4'b1001)? 4'b0:(bushu2+4'b1); if(bushu2==4'b0 && bushu1==4'b0) bushu3 =bushu3+4'b1; w1=key3;

19、 end else begin bushu1=bushu1;bushu2=bushu2;bushu3=bushu3;end end endcase end if(bushu1==4'b0 && bushu2==4'd6 && bushu3==4'd3) begin bushu1=4'b0000;bushu2=4'b0110;bushu3=4'b0011;k<=1'b1;end end end endmodule 译码

20、扫描器程序如下: module yima(Clk,shumaguan,bushu1,bushu2,bushu3,del ); input Clk; input [3:0]bushu1; input [3:0]bushu2; input [3:0]bushu3; output [2:0]del; output [6:0]shumaguan; reg [6:0]shuzhi; reg [2:0]i; always @(posedge Clk ) begin i<= (i==3'b010)? 3'b0 : (i+3'b001); e

21、nd always @(i) case(i) 3'b000: case(bushu1) 4'b0000: shuzhi <= 7'b0111_111; 4'b0001: shuzhi <= 7'b0000_110; 4'b0010: shuzhi <= 7'b1011_011; 4'b0011: shuzhi <= 7'b1001_111; 4'b0100: shuzhi <=

22、 7'b1100_110; 4'b0101: shuzhi <= 7'b1101_101; 4'b0110: shuzhi <= 7'b1111_101; 4'b0111: shuzhi <= 7'b0000_111; 4'b1000: shuzhi <= 7'b1111_111; 4'b1001: shuzhi <= 7'b1101_111; endcase 3'b001: case(bushu2) 4'b000

23、0: shuzhi <= 7'b0111_111; 4'b0001: shuzhi <= 7'b0000_110; 4'b0010: shuzhi <= 7'b1011_011; 4'b0011: shuzhi <= 7'b1001_111; 4'b0100: shuzhi <= 7'b1100_110; 4'b0101: shuzhi <= 7'b1101_101; 4'b0110: shuzhi <= 7'b1111_101;

24、 4'b0111: shuzhi <= 7'b0000_111; 4'b1000: shuzhi <= 7'b1111_111; 4'b1001: shuzhi <= 7'b1101_111; endcase 3'b010:case(bushu3) 4'b0000: shuzhi <= 7'b0111_111; 4'b0001: shuzhi <= 7'b0000_110; 4'b0010: shuzhi

25、<= 7'b1011_011; 4'b0011: shuzhi <= 7'b1001_111; default: shuzhi <= 7'b0000_000; endcase default: shuzhi <=7'b0111111; endcase assign shumaguan=shuzhi; assign del=i; endmodule 三、电路设计、仿真与实现: (一)、顶层设计实现: 顶层电路图如下: 图1.1 顶层电路图 总程序的RTL视图:

26、 图1.2 顶层电路RTL视图 总程序的technology 视图: 图1.3 顶层电路technology视图 总程序仿真波形如下: 图2.1 总程序仿真波形1 该波形为s1为0,s2为1,s3为0时产生的,相序显示为正转,数码管计数并且到360后停止计数保持。 (二)、控制器设计实现: 分频器的RTL视图 图1.4 分频器的RTL视图 主控制器的RTL视图 图1.5 主控制器的RTL视图 主控器的technology 视图

27、 图1.6 主控器的technology 视图 主控制器的仿真波形 图2.2 主控制器的仿真波形1 该波形为s1为0,s2为1,s3为0时的主控制器波形,相序显示为正转,当k变为1是相序保持。 (三)、受控器设计实现: 步数计数器的RTL视图 图1.7 步数计数器的RTL视图 步数计数器的仿真波形: 图2.3 步数计数器的仿真波形 该波形为key1为1,key2为1时,步数计数,当key3变为1时,步数清零重新计步。 译码扫描器的RTL视图 图1.8 译码扫描器的RTL视图 (四)、Fit Design 结果;实际DownLoad及测试结果。 程序下载到电路板上,结果符合要求。 当对按键无操作时,数码管显示0,相序灯前两个亮。 当按下s1时,数码管从0开始计数,相序按反向顺序闪亮。此时按下s2计数保持,相序保持。 当数码管计到360时,计数停止,相序停止。 当按下s1和s3时,数码管同上,相序顺序按正向闪亮, 当按下s1后一段时间,再按s3时,计数器会清零重新计数。表示转向发生变化。 四、分析与讨论:

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服