nbhkdz.com冰点文库

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

时间:2011-05-22


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

(1)三相三拍正转(S3=1)
ABC 110(AB) 101(CA) 011(BC)

(2)三相三拍反转(S3=0) 其中每种状态切换时,对应电机转过 1 度角。 4、脉冲分配输出的三路信号 A、B、C 分别经过脉冲放大器放大后驱动步进电机的三相绕组,本 设计中 A、B、C 分别用三个 LED 显示。 5、输出 3 组 8421BCD 信号(每组 4 个输出端) ,并在 FPGA 内部经过译码后获得七段 LED 显示 码,并通过扫描方式在三个发光 LED 显示数码光上显示歩进电机的步数(即角度数) 。三个数码管 共享 7 位数据线,依靠扫描方式工作,用来计数电机步数或角度数(此处电机转一步即一度) 。根据 要求 3 中所述,数码管计数显示 000—360 之间的数字。

设计要求:
1、 按照现代数字系统的 Top-Down 模块化设计方法,提出步进电机控制系统的整体设计方案,并进 行正确的功能划分,分别提出并实现主控制器、分频器、步数计数器、扫描显示译码模块等四部分

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

二、设计原理与方案: 设计原理与方案:
(一) 、顶层设计方案: 设计原理图如下所示:

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

设计思路:控制器共有五个输入端口,分别为 Clk、s1、s2、s3、k。Clk 为脉冲 输入端口。Clk 为输入脉冲,为 5Hz,由分频器输入。k 为计数器的返回值,在步数达到 360

时,该值有效,电机停转。s1、s2、s3 为三个控制键的输入在不同的情况下执行不同的动

作,如下:
(1) 、系统上电后,若 S1=1,S2=1 时,电机停止转动,步数清零; (2) 、系统上电后,若 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,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=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;key2<=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);

case(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 assign 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 <= (Cout1 == 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
(三) 、受控器设计方案: 受控器有步数计数器和译码扫描器两个。 (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 步时,添加 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 个数码管进行扫描,使每 个管显示不同数值。 译码扫描器有两个输入端 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 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(k==0) begin k=0; if(bushu1!=4'b0||bushu2!=4'd6||bushu3!=4'd3)

case(key1) 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) begin 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; end

else begin bushu1=bushu1;bushu2=bushu2;bushu3=bushu3;end end endcase end if(bushu1==4'b0 && bushu2==4'd6 && bushu3==4'd3) begin end end endmodule 译码扫描器程序如下: 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)? end always @(i) case(i) 3'b000: case(bushu1) 4'b0000: 4'b0001: 4'b0010: 4'b0011: shuzhi <= 7'b0111_111; shuzhi <= 7'b0000_110; shuzhi <= 7'b1011_011; shuzhi <= 7'b1001_111; 3'b0 : (i+3'b001); bushu1=4'b0000;bushu2=4'b0110;bushu3=4'b0011;k<=1'b1;end

4'b0100: 4'b0101: 4'b0110: 4'b0111: 4'b1000: 4'b1001: endcase 3'b001: case(bushu2) 4'b0000: 4'b0001: 4'b0010: 4'b0011: 4'b0100: 4'b0101: 4'b0110: 4'b0111: 4'b1000: 4'b1001: endcase 3'b010:case(bushu3) 4'b0000: 4'b0001: 4'b0010: 4'b0011: default: endcase

shuzhi <= 7'b1100_110; shuzhi <= 7'b1101_101; shuzhi <= 7'b1111_101; shuzhi <= 7'b0000_111; shuzhi <= 7'b1111_111; shuzhi <= 7'b1101_111;

shuzhi <= 7'b0111_111; shuzhi <= 7'b0000_110; shuzhi <= 7'b1011_011; shuzhi <= 7'b1001_111; shuzhi <= 7'b1100_110; shuzhi <= 7'b1101_101; shuzhi <= 7'b1111_101; shuzhi <= 7'b0000_111; shuzhi <= 7'b1111_111; shuzhi <= 7'b1101_111;

shuzhi <= 7'b0111_111; shuzhi <= 7'b0000_110; shuzhi <= 7'b1011_011; shuzhi <= 7'b1001_111; shuzhi <= 7'b0000_000;

default: shuzhi <=7'b0111111; endcase assign assign shumaguan=shuzhi; del=i;

endmodule

三、电路设计、仿真与实现: 电路设计、仿真与实现:
(一) 、顶层设计实现: 顶层电路图如下:

图 1.1 顶层电路图 总程序的 RTL 视图:

图 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 视图

图 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 时,计数器会清零重新计数。表示转向发生变化。

四、分析与讨论: 分析与讨论:


赞助商链接

DY3E系列三相混合式步进电机驱动器使用手册(EV1.3)

十几年来 致力于专业研发、 设计及制造机床数控系统...1 DY3E 系列三相混合式步进电机驱动器 使用手册 1 ...°° 输出信号 掉电相位记忆 自动减电流锁 定 ...

步进电机是通过输入脉冲信号来进行控制

步进电机是通过输入脉冲信号来进行控制 - 引言 步进电机是通过输入脉冲信号来进行控制, 电机的总转动角度由输入脉冲数决定, 而电 机的转速由脉冲信号频率决定。 ...

北工大_电子实验课设报告_图文

北工大_电子实验课设报告 - 数电:步进电机 模电:测量放大器... 数电:步进电机模电:测量放大器 北京工业大学...步进电机控制电路一、设计要求 (一) 、设计任务...

数电课程设计

数电课程设计 - 课程设计 课程名称 题目名称 学生学院 专业班级 学号 数字电子技术基础 5 相 10 拍步进电机控制器 材料与能源学院 微电子学(1)班 3112007312 ...

...数字电子线路课程设计 四相一拍 步进电机仿真制作_...

频率及电动机各相绕组的通电顺序来控制步进电机的...编写设计报告 写出设计的全过程,附上有关资料和图纸...通过这次课程设计使我对以前学过的模电、数电等...

步进电机的应用

将电脉冲信号转变为角位移或线位移的开环控制元 件...PLC 控制三相步进电机的方 用 法简单易行.可靠性...对任何相 数的步进电机都可以使用,在设计方法上简单...

步进电机控制系统设计

步进电机控制系统设计摘 要 步进电机是一种用电脉冲进行控制 ,将电脉冲信号转换成相位 移的电机 ,其机械位移和转速分别与输入电机绕组的脉冲个数和脉 冲频率成...

步进电机数字伺服系统分析与设计

新型电机及控制技术实验报告 学院:电气工程学院 班级...(三相)混合式步进电动机,主要 特点是具有高分辨率和...数成 3 正比、转速与脉冲频率成正比,改变绕组通电...

武汉理工大学数字电子技术步进电机数电课程设计报告

武汉理工大学数字电子技术步进电机数电课程设计报告_...信息工程学院 步进电机控制及驱动电路设计与制作 初始...学到了很多知识,真正将所学知识运用于实践中,使人...

步进电机控制系统设计

步进电动机的 拍数控制采用步进指令,分别实现单三拍...通过实践加强 对所学知识的理解,具备设计单片机应用...步进电机的驱动电路,微电脑向步进电 机输入端传送 ...