课程设计方案直流电机说明说.docx

上传人:b****7 文档编号:8906793 上传时间:2023-02-02 格式:DOCX 页数:22 大小:102.58KB
下载 相关 举报
课程设计方案直流电机说明说.docx_第1页
第1页 / 共22页
课程设计方案直流电机说明说.docx_第2页
第2页 / 共22页
课程设计方案直流电机说明说.docx_第3页
第3页 / 共22页
课程设计方案直流电机说明说.docx_第4页
第4页 / 共22页
课程设计方案直流电机说明说.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

课程设计方案直流电机说明说.docx

《课程设计方案直流电机说明说.docx》由会员分享,可在线阅读,更多相关《课程设计方案直流电机说明说.docx(22页珍藏版)》请在冰豆网上搜索。

课程设计方案直流电机说明说.docx

课程设计方案直流电机说明说

河南科技大学

课程设计说明书

 

课程名称现代电子系统课程设计

题目_直流电机控制设计__

 

学院_电子信息工程学院

班级_电信科081

学生姓名__000__

指导教师_齐晶晶、张雷鸣___

日期_2018年12月16日____

 

课程设计任务书

<指导教师填写)

课程设计名称现代电子系统课程设计学生姓名袁伟伟_专业班级信科081

设计题目直流电机控制设计

一、课程设计目的

学习直流电机PWM的FPGA控制;

掌握PWM控制的工作原理;

掌握GW48_SOPC实验箱的使用方法;

了解基于FPGA的电子系统的设计方法。

二、设计内容、技术条件和要求

利用PWM控制技术实现直流电机的速度控制。

<1)基本要求:

a.速度调节:

4档,数字显示其档位。

b.能控制电机的旋转方向。

c.通过红外光电电路测得电机的转速,设计频率计用4位10进制显示电机的转速。

<2)发挥部分

a.设计“去抖动”电路,实现直流电机转速的精确测量。

b.修改设计,实现直流电机的闭环控制,旋转速度可设置。

c.其它。

三、时间进度安排

布置课题和讲解:

1天

查阅资料、设计:

4天

实验:

3天

撰写报告:

2天

四、主要参考文献

何小艇《电子系统设计》浙江大学出版社2008.1

潘松黄继业《EDA技术实用教程》科学出版社2006.10

齐晶晶《现代电子系统设计》实验指导书电工电子实验教案中心2009.8

指导教师签字:

2018年11月28日

 

摘要

电机是指依据电磁感应定律实现电能转换或传递的一种电磁装置。

电动机也俗称马达,它的主要作用是产生驱动转矩,作为用电器或各种机械的动力源。

21世纪,在工业化集成电路设计中,直流电机得到了广泛的应用,直流电动机是依靠直流工作电压运行的电动机,广泛应用于收录机、录像机、电吹风、电子表、玩具等。

所以,多功能、人性化、易操作的电机设计成了一个趋势。

本文对于直流电机方面的研究,是基于Quartus2软件,利用FPGA器件,通过VHDL语言编程对直流电机进行基本的自动操作控制。

本次直流电机主要有以下功能:

1.转速调节。

转速调节通过档位来实现,档位为一、二、三、四档,每个档位都设定自己的速度,随着档位的的升高速度逐渐增大,速度的改变通过改变PWM信号的占空比来是实现。

2.正反转控制。

设置一个按键,调节按键时电机能够改变转动方向。

原理为档按下按键时,改变了加在电机两端电压的极性。

3.转速显示。

转机转动时会有一个速度,速度能够正确的显示在数码管上,并能用实验仪器正确测出。

原理为设计一个频率计,测试电机转速。

 

目录

一、任务解读5

1.1设计要求5

1.2要求分析5

二、方案论证6

2.1设计思路6

2.2思路实现7

三、设计原理及模块8

3.1电机驱动原理8

3.2频率计计数原理8

3.3PWM模块电路原理9

3.3.1转速控制模块10

3.3.2频率计计数模块11

3.4数码管读数模块12

3.5消抖电路模块设计12

3.6总体电路图及其它13

四、结果评估及误差分析16

五、心得体会总结17

六、参考文献18

一、任务解读

1.1设计要求

本设计利用PWM控制技术实现直流电机的速度控制。

要求电机的速度要分为四档,要求有数码管可以档位显示。

通过按键可以控制直流电机的正反转,通过红外光可以测得直流电机的转速,并能在数码管上用4位十进制显示电机具体的转动速度。

在整个电路中,要有去抖动部分,以求实现直流电机转速的精确测量。

在基本功能实现之后,可以尝试修改设计,实现直流电机的闭环控制,这样可以随意设置旋转速度。

1.2要求分析

根据设计要求,本次电路的实现大概要分为以下几大部分:

1.FPGA中PWM模块。

2.频率计计数模块。

3.数码管读数模块

4.消抖电路模块

由此,可以得出整个电路系统的原理框图:

二、方案论证

2.1设计思路

此次电机设计主要实现的功能是:

四档速度;电机正反转;转速显示;

四档转速的实现在硬件上通过按键实现,按下一次加一档,档位升高,档速提高,软件方面通过程序来设置不同的档位占空比,占空比不同,转速也就不同。

当输入电源的占空比大时,直流电机的转速较快;当输入电源的占空比小时,直流电机的转速较慢。

直流电机转动方向的控制,主要是通过一个比较器,一个二选一选择器来实现。

通过比较器产生高低电平,然后通过键盘输入的改变来选择通过比较器产生的两个不同电平中的一个,最后把选择的电平加载到直流电机模块上,至此,实现电机转动的正转或反转。

直流电机的工作/停止,需要一个二选一选择器来实现。

即当通过键盘输入start为1或0时,把二选一选择器选择PWM块所产生的高低电平作为直流电机模块的一个输入端口,作为使能端,从而实现电机的工作/停止。

2.2思路实现

由上所知,本次设计的关键部分是PWM模块的设计。

该模块可以详细分为下面几个小模块:

速度等级设置模块、数字比较器模块、锯齿波发生器、旋转方向控制模块。

PWM模块设计是整个电路设计的基础,只有很好的实现并产生了直流电机的四个不同速度等级,通过比较器所产生的高低电平,进而通过二选一选择器实现了方向控制信号的高低电平选择,后面的频率计计数模块和数码管读数模块才能更好的实现。

 

三、设计原理及模块

3.1电机驱动原理

一台直流电机原则上既可以作为电动机运行,也可以作为发电机运行,这种原理在电机理论中称为可逆原理。

当原动机驱动电枢绕组在主磁极N、S之间旋转时,电枢绕组上感生出电动势,经电刷、换向器装置整流为直流后,引向外部负载<或电网),对外供电,此时电机作直流发电机运行。

如用外部直流电源,经电刷换向器装置将直流电流引向电枢绕组,则此电流与主磁极N.S.产生的磁场互相作用,产生转矩,驱动转子与连接于其上的机械负载工作,此时电机作直流电动机运行。

3.2频率计计数原理

下图所示表达出了数字频率计测频计数的原理。

被测频率f1的讯号u(t>自输入通道经过整形、放大和微分形成于u(t>周期个数相同的计数脉冲进入“主控与门”电路,在门控双稳态电路开门讯号的控制下,将计数脉冲送入计数、锁存、译码、驱动与显示电路,有LED<半导体发光数码管)、LCD<液晶显示器)或其它显示器件显示出被测频率f1的值。

若主门电路的开门时间T恰好选为1秒,则数字频率计指示的即为f1的频率值。

为适应被测频率高低不同的要求,由晶体振荡器发出的时钟讯号频率f0经过分频或倍频,选择的主闸门开启时间可以不是1秒,而是数秒或毫秒,有时读数应计入量程倍率系数,在智能数字频率计中,量程是自动转换的。

3.3PWM模块电路原理

PWM控制就是对脉冲的宽度进行调制的技术。

即通过对一系列脉冲的宽度进行调制来等效地获得所需要的波形。

图二中,设定值计数器设置PWM信号的占空比。

当U\D=1,输入CLK2,使设定值计数值的输出值增加,PWM的占空比增加,电机转速加快;

当U\D=0,输入CLK2使设定值计算器的输出值减小,PWM的占空比减小,电机转速变慢。

在CLK0的作用下,锯齿波计数器输出周期性线性增加的锯齿波。

当计数值小于设定值时,数字比较器输出低电平;当计数值大于设定值时,数字比较器输出高电平,由此产生周期性的PWM波形。

旋转反向控制电路控制直流电动机转向和启/停,该电路由两个2选1多路选择器组成,Z\F键控制选择PWM波形从正端Z进入H桥,还是从负端进入H桥,以控制电机的旋转方向。

START键通过“与”门控制PWM的输出,实现对电机的工作/停止控制。

H桥电路由大功率晶体管组成,PWM波形通过方向控制电路送到H桥,经功率放大以后驱动电机转动。

3.3.1转速控制模块

在用FPGA控制直流电机转速时,其核心是改变每个PWM周期的占空比。

此时需要产生一个设定值计数器,一个锯齿波发生器和一个数字比较器。

设定值计数器就是根据按键按下时选取的不同档位,输出一个不同的数值。

本次设计速度分为四档,档位为0时转速为0,每增加一档,转速相应增加,四档时转速达到最大。

据此,首先要设计一个档位调节模块,当输入不同的档位数值时,要输出一个计数值,这个数值规定了设定值计数器的输出数值。

当档位增加时,设定值计数器的值相应增加,从而改变PWM信号占空比,使其占空比增大,电机转速加快。

设定值计数器的输出加到比较器的一端,和锯齿波发生器的数值进行比较。

锯齿波发生器的数值来自对CLK0的分频,它的位数取决于电机能够达到的最大转数。

我们实验室的电机大概在70转左右,所以锯齿波发生器的位数不应低于7位,若更低的话,每改变一位数,对应的转数还达不到一转,这样就不能对每一转进行细分,也就无法精确控制电机的转速。

3.3.2频率计计数模块

转速显示模块实际上就是设计一个频率计。

电机转动时,每转一圈,电机旁边的红外检测电路就会产生一个脉冲。

把这个脉冲通过一个消抖电路后作为频率计待测频率的输入端。

频率计部分的工作原理是:

先设置一个计数器,然后由1Hz的输入时钟经过倍频得到2Hz的时钟信号,当2Hz的时钟信号为高电平时,去检测有无红外电路的脉冲信号到来,每当红外脉冲信号到来,计数器加一。

其原理就是检测在一秒时间内红外电路产生的脉冲的个数,即检验在一秒时间内电机转动了多少圈。

最后把一秒时间内电机转过的圈数输出到数码管显示。

频率计计数模块模块的总体框图:

3.4数码管读数模块

该模块的原理是:

当输入端信号lk为高电平且为上升沿时,输出端dout读出输入端din当时的值,并在数码管上显示出来。

数码管读数模块的总体框图如下图14所示:

数码管读数模块的框图

 

3.5消抖电路模块设计

红外检测电路产生的脉冲信号在加到频率计输入端时,在开始的一段短暂的时间里,会产生抖动,所以要设计一个消抖电路去除抖动。

消抖电路设计原理图如下:

消抖电路原理图

输入信号开始会有一段抖动,然后频率趋于稳定。

很明显,抖动的那一段信号的周期相对于稳定后的信号来说很短。

我们就可以通过两个D触发器滤除抖动的那一段信号。

假设第一个D触发器的输出为D1,第二个D触发器的输出为D2。

当CLK上升沿到来时,若这时的输入信号为高电平,那么输出的D1就为1,D1经过一个非门变成0,D1的非与D2相与,输出是0。

第二个CLK上升沿到来时,若输入信号还为高电平,则这时D1为1,D2为1,D1的非与D2相与,输出还是0。

只有当CLK上升沿到来,输入信号变成低电平时,这时D1变成0,D2为1,D1的非与D2相与后,输出才为1。

由此分析,当CLK频率选取合适时,在一个输入信号高电平到来时,至少需要两个CLK周期才能输出高电平,而抖动的那一段信号由于周期太短,满足不了这个要求,因此抖动信号就不会输出,这样就完成了消抖功能。

3.6总体电路图及其它

电路图:

管脚锁定情况:

PWM信号的占空比随着档位的不同而改变的原因:

由前面所知,已经设计好了一个设定值计数器和一个锯齿波发生器,这两个数值加在数字比较器输入端进行比较;当设定值计数器的值大于锯齿波比较器的值时,比较器输出高电平;当设定值计数器的值小于锯齿波比较器的值时,比较器输出低电平。

锯齿波发生器其实就是一个计数器,它的变化范围是0-256,每来一个clk时钟信号,计数器就加1。

如果我们现在设定一个计数值128,那么在前128个clk时钟信号内,设定值都是大于计数值,比较器输出高电平,后128个clk时钟信号内,设定值都是小于计数值,比较器输出低电平;由此往复得知,在每一个PWM信号周期内,高电平和低电平各占一半,因此占空比为50%。

不同档位对应不同的设定值,由此不同档位下PWM信号的占空比改变,电机转速也会改变。

关于clk0:

Clk0选取的频率不能过高也不能过低。

Clk0频率过高时,相邻两个PWM周期信号之间高电平相距很近,当PWM信号的占空比增大时,由于两个PWM信号周期相距很近,加在电机上的电压可以认为一直是高电平,那么再增大PWM信号的占空比时电机的转速就不会明显的增大了。

若CLK0的频率再高,超过了H桥的承受能力的话,电机就不会转了。

CLK0频率过低时,输出的相邻两个PWM周期信号高电平相距较远,这样的PWM信号加到电机上,在低占空比的时候,和正常频率,相同占空比的PWM信号相比,频率低的PWM信号高电平维持的时间较长,这样的话,当电机遇到高电平时,就会一直加速,遇到低电平时又一直减速,转速很不稳定。

 

四、结果评估及误差分析

本次实验用的模式5,完成整个程序仿真,管脚锁定及下载后会有以下结果:

按下按键1为电机使能键,实现电机启动/停止;按下按键2一次,档位提高一档,电机转速增加;按下按键3电机转动方向改变。

数码管4、3、2、1显示电机的转速。

D1和D2用来显示档位,D1为个位显示,D2为十位显示。

基本功能实现正常;有所欠缺的是未能实现闭环电路的控制。

在实验中,会发现电机有出现转速不稳,示波器测量频率与数码管显示有一些误差<1~2),这主要是因为设计电路中消抖电路做的不够完善,VHDL代码没有达到最优化,另外跟实验仪器本身硬件有关,由于红外测速是通过红外传感器结合直流电机码盘上的小孔进行的,码盘摆放不平整或有其它因素出现时会影响红外传感器的正常计数。

 

五、心得体会总结

本次课程设计大概用了两天时间,开始的时候一无所知,还好之前准备的有些文档资料,基本上刚去的一上午没有做多少实质性的工作,就是看看资料后才了解自己应该做哪些东西,下午才开始进入正题。

在基本功能实现后,遇到的第一个问题是:

电机转速在数码管上的显示与示波器测量出来的数据不能保持一致,调节许久后才发现问题在于对于示波器的了解过于肤浅,在操作上有些瑕疵,多次调试后才显示正常。

遇到的第二个问题是:

电机的转速不稳定时快时慢,通过查资料得知电机之所以不稳定是由于clk0频率选取有问题,经过选调之后电机才开始有所稳定。

从最后结果来看本次设计基本功能都能实现,不足的是在发挥部分未能实现闭环控制,这凸显了自己知识能力的不足。

每做完一个实验,其实最大的感受就是自己的知识层次欠佳,很多东西都是浅尝辄止,本次两天实验,加深了我对一个完整电子系统设计时应该统筹兼顾的理解,完成了从理论到实践的过度。

这让我明白了,只要敢于去做,敢于去理解,问题都能解决。

另外在完成一个完整的电子系统时,要善于从整体上把握设计的思路,否则,将很难看清问题的核心关键所在,理论终是理论,实践才是最重要的,只有脚踏实地才能真正提高自己的能力,希望能在以后的历程中多多进步。

 

六、参考文献

[1]潘松,黄继业.EDA技术实用教程【M】.北京:

科学出版社,2007

[2]侯伯亨,刘凯,顾新.VHDL硬件描述语言与数字逻辑电路设计

【M】.西安:

西安电子科技大学出版社,2009

[3]齐晶晶,李娜.现代电子系统设计实验指导书【M】.河南科技大学:

电子信息工程学院,2018.

 

附:

PWM模块:

libraryieee。

useieee.STD_LOGIC_1164.ALL。

useieee.STD_LOGIC_unsigned.ALL。

ENTITYPWMIS

PORT(

rst,Level,clk,Z_F:

INSTD_LOGIC。

z,f,level_display0,level_display1,zkb:

OUTSTD_LOGIC

>。

endPWM。

architecturezldjofPWMis

signalcnt4:

std_logic_vector(1downto0>。

signalcnt16:

std_logic_vector(7downto0>。

signalagb:

std_logic。

signalspeed:

std_logic_vector(7downto0>。

begin

process(rst,level>--速度等级设置模块

begin

ifrst='1'then

cnt4<=(others=>'0'>。

elsiflevel='1'andlevel'eventthen

cnt4<=cnt4+1。

endif。

endprocess。

process(rst,clk>

begin

ifrst='1'then

speed<=(others=>'0'>。

elsifclk'eventandclk='1'then

casecnt4is

WHEN"00"=>speed<="01110111"。

WHEN"01"=>speed<="01010111"。

WHEN"10"=>speed<="01000100"。

WHEN"11"=>speed<="00110101"。

WHENOTHERS=>NULL。

ENDCASE。

endif。

ENDPROCESS。

process(clk,rst>--数字比较器模块

begin

ifrst='1'then

agb<='0'。

elsifclk'eventandclk='1'then

ifcnt16>speedthen

agb<='1'。

else

agb<='0'。

endif。

endif。

endprocess。

process(rst,clk>--锯齿波模块

begin

ifrst='1'then

cnt16<=(others=>'0'>。

elsifclk='1'andclk'eventthen

cnt16<=cnt16+1。

endif。

endprocess。

process(rst,clk>--旋转方向控制模块

begin

ifrst='1'then

z<='0'。

f<='0'。

elsifclk'eventandclk='1'then

ifz_f='1'then

z<=agb。

f<='0'。

else

z<='0'。

f<=agb。

endif。

endif。

endprocess。

zkb<=agb。

level_display0<=cnt4(0>。

level_display1<=cnt4(1>。

end。

4Hz信号转换成1Hz信号模块:

libraryieee。

useieee.std_logic_1164.all。

useieee.std_logic_unsigned.all。

entityFTCTRLis

port(clkk:

instd_logic。

cnt_en:

outstd_logic。

rst_cnt:

outstd_logic。

load:

outstd_logic>。

endFTCTRL。

architectureoneofFTCTRLis

signaldiv2clk:

std_logic。

begin

process(clkk>

begin

ifclkk'eventandclkk='1'then

div2clk<=notdiv2clk。

endif。

endprocess。

process(clkk,div2clk>

begin

ifclkk='0'anddiv2clk='0'thenrst_cnt<='1'。

elserst_cnt<='0'。

endif。

endprocess。

load<=notdiv2clk。

cnt_en<=div2clk。

endone。

频率计计数模块:

libraryieee。

useieee.std_logic_1164.all。

useieee.std_logic_unsigned.all。

useieee.std_logic_arith.all。

entityCNT32bis

PORT(FIN:

INSTD_LOGIC。

CLR:

INSTD_LOGIC。

ENABL:

INSTD_LOGIC。

DOUT:

OUTSTD_LOGIC_VECTOR(15DOWNTO0>>。

END。

architectureoneofCNT32Bis

signaltmp1,tmp2,tmp3,tmp4:

std_logic_vector(3downto0>。

begin

process(CLR,ENABL,FIN>

begin

ifCLR='0'then

ifENABL='1'then

ifFIN'eventandFIN='1'then

iftmp1="1001"then

tmp1<="0000"。

elsetmp1<=tmp1+1。

endif。

endif。

endif。

elsetmp1<="0000"。

endif。

endprocess。

process(CLR,ENABL,FIN>

begin

ifCLR='0'then

ifrising_edge(FIN>then

iftmp2="1001"then

tmp2<="0000"。

elsiftmp1="1001"then

tmp2<=tmp2+1。

endif。

endif。

elsetmp2<="0000"。

endif。

endprocess。

process(CLR,ENABL,FIN>

begin

ifCLR='0'then

ifrising_edge(FIN>then

iftmp3="1001"then

tmp3<="0000"。

elsiftmp2="1001"then

tmp3<=tmp3+1。

endif。

endif。

elsetmp3<="0000"。

endif。

endprocess。

process(CLR,ENABL,FIN>

begin

ifCLR='0'then

ifrising_edge(FIN>then

iftmp4="1001"then

tmp4<="0000"。

elsiftmp3="1001"then

tmp4<=tmp4+1。

endif。

endif。

elsetmp4<="0000"。

endif。

endprocess。

DOUT(3downto0><=tmp1。

DOUT(7downto4><=tmp2。

DOUT(11downto8><=tmp3。

DOUT(15downto12><=tmp4。

end。

数码管读数模块:

libraryieee。

useieee.std_logic_1164.all。

useieee.std_logic_unsigned.all。

entityREG32B

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

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1