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

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


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

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

数字逻辑课设报告--三相六拍步进电机控制器.doc

二、方案论证利用数字逻辑电路设计一个三相六拍步进电机控制器,可以实现正转、...数电实习报告--三相步进... 14页 1下载券 喜欢此文档的还喜欢 三相...

三相步进电机控制系统设计.doc

三相步进电机控制系统设计_电子/电路_工程科技_专业...(步距角)的大小与转子的齿数及通电的方式有关, ...(4) 本实训项目中步进电动机采用三相六拍工作方式...

步进电机控制器设计报告.pdf

常熟理工学院课程设计报告 步进电机控制器设计报告 1.绪言在本次EDA课程设计中,...数电实习报告--三相步进... 14页 1下载券 《步进电机驱动器》课程... ...

三相步进电机的PLC控制课程设计.doc

设计(调查报告/论文)题目 三相步进电机的模拟控制 2...度而五相步进角一般为 0.72 度,这种步进电 机的...想起来容易做起来难,理论到实践之间还存在着 巨大的...

步进电机控制驱动电路设计.doc

课程实习报告 实习名称:电子设计制作与工艺实习 学生...控制电 开关控制电路 路 步进电机 显示电路 光电...由此可见:电机的位置和速度由导电次数(脉 冲数)和...

三相六拍步进电机控制器的设计.pdf

三相六拍步进电机控制器设计 - 一、概述 步进电机是一种数字信号控制的传动机构

步进电机的运行控制实习报告_图文.doc

步进电机的运行控制实习报告_信息与通信_工程科技_...因此,设计步进电机具有重要的现实意义和实用价值。 2...数电实习报告--三相步进... 14页 1下载券 ...

三相六拍步进电机课程设计报告.doc

它是由电动机本身转子的齿数和每一个通电循环内通...电路设计要求对三相六拍步进电机控制,主要分为两...我们对书本知识的掌握,也把我从理论水平提高到实践...

步进电机控制器.doc

9 基于单片机控制的步进电机控制器摘 要 : 本设计...进行控制,即电 机总转动角度由输入脉冲数决定,电机...对个人而言, 短短的三周实习使我收获了很多东西,...

基于单片机控制的步进电机控制器实习报告电气工程及其....doc

基于单片机控制的步进电机控制器实习报告电气工程及其自动化106程琦2010190624 - 步进电机控制 摘要 :本设计是基于单片机控制的步进电机,实现步进电机的启停、正转、...

基于单片机的步进电机的控制课程设计报告.doc

基于单片机的步进电机控制课程设计报告_实习总结_...当有一相绕组被通电激励时

三相六拍步进电机控制系统设计.doc

三相步进电机控制系统,设计一个计算机步进电机程序...2.2 步进电机的工作原理 步进电机是一种用电脉冲...对书本知识的掌握,也把我从理论水平提高到实践水平...

基于单片机的三相步进电机控制系统设计.doc

设计详细介绍了基于单片机的三相步进电机控制系统。...若绕组通电顺 序为Ⅰ-Ⅱ-Ⅲ-Ⅰ-Ⅱ-Ⅲ-?,则...而课程设计似乎更加地考验 所学的知识,所谓实践与...

三相单三拍步进电机控制系统设计.doc

三相单三拍步进电机控制系统设计_电子/电路_工程科技...;当/EA 端保持高电 平时, 此间内部程序存储器。 ...设计说明书 总结及心得本次课程设计能够实现步进电机...

步进电机控制实训报告.doc

单片机控制的步进电机的设计,系统分为单片机控制、 LCD 显示、 摘要: 步进电机...数电实习报告--三相步进... 14页 1下载券 实训一 步进电机控制实训... ...

步进电机实习报告.doc

2 总体设计方案步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进...数电实习报告--三相步进... 14页 1下载券 基于单片机控制步进电... ...

三相步进电机控制程序及电路.doc

成绩 课程论文题 目: 三相步进电机控制系统设计 Proteus 刘卫东 1214030221 ...通道数:7 2 硬件电路设计 2.1 总体的硬件设计 (1) 用 K0-K2 做为通电...

三相六拍步进电机PLC控制系统设计.doc

三相六拍步进电机 PLC 控制系统设计 系别: 电气工程...步进电机有多种通电方式, 以下介绍三相六拍步进电机...只有 在动手实践的过程中才会一个个出现,阻拦在自己...

控制步进电机LCD显示.doc

2011 - 2012 学年 第 1 学期 学生课程实习报告 ...设计一个单片机三相步进电机控制系统,要求系统具有以下...(1)用 K0-K2 作为通电方式选择键,K0 为单三拍...