欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年基于FPGA的直流电机PWM调速系统设计与实现.pdf

    • 资源ID:14568837       资源大小:3.65MB        全文页数:16页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年基于FPGA的直流电机PWM调速系统设计与实现.pdf

    精心整理FPGA 课程设计精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 16 页 - - - - - - - - - - 精心整理题目:基于 FPGA 的直流电机 PWM 调速系统设计与实现班级:微电子学1202 班姓名:杜英学号: 1206080201 日期: 2016 年 3 月 24 日基于 FPGA 的直流电机 PWM 调速系统设计与实现1 设计任务与要求1.1 设计任务完成基于 FPGA 的直流电机 PWM 调速系统设计与实现, 实现对直流电机的闭环调速,速度值采用LCD或数码管显示。1.2 设计要求1.2.1 了解 PWM 控制方法及应用; 掌握 PWM 直流电机调速控制原理; 掌握直流电机调速及驱动控制原理;完成基于FPGA 的直流电机 PWM 调速系统设计。采用PWM(脉冲宽度调制)技术,速度值采用LCD或数码管显示。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 16 页 - - - - - - - - - - 精心整理1.2.2 通过课程设计的实践,进一步了解和掌握硬件描述语言(VHDL或 Verilog )和TOP-DOWN的设计流程, 提高对实际项目的分析和设计能力,体会 FPGA 项目开发的过程,熟悉实验报告的编写规范。2 设计原理分析21 直流电机结构如下图1.1 所示图 2.1 直流电机的构造将直流电源通过电刷接通线组线圈,使线组线圈导体 (电枢导体)有电流通过,在电磁的作用下,线组线圈将会产生磁场,同时产生的磁场与主磁极的磁场产生电磁力,这个电磁力作用于转子,使转子以一定的速度开始旋转,电机就开始工作。在电机的外部电路加入开关型的霍尔元件,同时在电子转子的转盘上加入一个使霍尔元件产生输出的带有磁场的磁钢片。当直流电机旋转时转盘与磁钢片一起旋转,当磁钢片转到霍尔元件上方时,可以使霍尔元件的输出端高电平变为低电平。当磁钢片离开霍尔元件上方后,霍尔元件输出端又恢复高电平。如此,点击每旋转一周,会使霍尔元件的输出端产生一个低脉冲,可以通过检测单位时间内霍尔元件输出端低脉冲的个数推算出直流电机的转速。本次设计中,调节PWM 占空比进而控制直流电机转速,在本次设计中,为了保精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 16 页 - - - - - - - - - - 精心整理护霍尔元件,故设定程序每6 秒刷新一次数据,所以在数码管显示的数据乘以10 就是在该占空比时的直流电机每分钟转速。在这次的实验中数码管采用的8 位共阴极数码管,通过锁存器输入数据使得数码管的 8 个段码数字显示,再通过选择输出数据对所需数码管进行选择。22 电路原理图图 2.2 电路原理图3 设计方案上述原理图中包含PWM 模块、测速模块、计数模块、电机模块、滤波模块。电机的外部电路加入开关型的霍尔元件,同时在电子转子的转盘上加入一个使霍尔元件产生输出的带有磁场的磁钢片。当直流电机旋转时转盘与磁钢片一起旋转,当磁钢片转到霍尔元件上方时,可以使霍尔元件的输出端高电平变为低电平。当磁钢片离开霍尔元件上方后,霍尔元件输出端又恢复高电平。如此,点击每旋转一周,会使霍尔元件的输出端产生一个低脉冲,可以通过检测单位时间内霍尔元件输出端低精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 16 页 - - - - - - - - - - 精心整理脉冲的个数推算出直流电机的转速。本次设计为六秒记一次数,乘十就是每分钟转速值。再通过驱动模块显示数码管数据。4 设计步骤(1)首先确定整体设计方案,确定设计需要使用的软件;(2)设计电路模块,编写各模块程序代码并进行仿真编译;(3)完成整体电路图设计后,使用Quartus 软件对整体电路进行仿真调试;(4)连接硬件,使用示波器观察产生的波形,对不足之处进行改进调试。5 调试结果说明连接好试验箱,把硬件与实验箱接通,将程序下载到实验箱中。进行实验,示波器观察 PWM 脉冲波形(占空比),看实验结果与预期效果是否相同,若相同,则实验无误。其波形如下:占空比为 50% 时精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 16 页 - - - - - - - - - - 精心整理占空比为 90% 时将程序下载到实验箱中后,其实际操作过程如下:K12为使能键,使 K12= 1 ;输入时钟信号为1MHZ ;(1) K4=1 时,示波器和 LED的显示如下:精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 16 页 - - - - - - - - - - 精心整理示波器显示的是霍尔元件单位时间内计数的个数为31.011 显示器是每六秒电机转的圈数为186转结论:31.011*6=186.066 于 186 近似,所以结论符合要求。(2) K4=1,k3=1 时,示波器和 LED的显示如下:精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 16 页 - - - - - - - - - - 精心整理结论: 68.6338*6=411.8028 于 412 近似,所以结论符合要求。(3) K4=1,k3=1,K2=1 时,示波器和 LED的显示如下:结论:85.516*6=513.096 于 513 近似,所以结论符合要求。(4) K4=1,k3=1,K2=1,K1=1 时,示波器和 LED的显示如下:精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 16 页 - - - - - - - - - - 精心整理结论: 90.0339*6=540.2034 于 541 近似,所以结论符合要求。通过以上的比较,发现示波器中的结果与数码管上数据大概一致,即实验结果基本达到要求。6 心得体会本次课程设计, 用 FPGA 控制直流电机, 完成直流电机 PWM 调速系统设计, 实现对直流电机的闭环调速,速度值采用LCD或数码管显示。是一次很好的学习和实践的机会。通过课程设计,我明白了电机工作的原理, 以及用 FPGA 控制电机的原理。最重要的是,对如何设计一个系统有了更进一步的了解,积累了很多经验。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 16 页 - - - - - - - - - - 精心整理从下载测试的结果来看,设计的要求基本上都实现了。但是仍存在不少问题。每个模块生成基本电路后,把各个模块的进行连接,仿真结果是正确的。但是当连接到试验箱后,电机正常转动,LED却无法显示。检查电路和程序还有电路图,并发现什么问题。无意中发现LED偶尔会出现数字,但也只是闪一下。最后才发现是因为电机转动太快了, LED无法及时显示或者是一直在闪,人眼无法识别。 在程序中加入了滤波模块,才解决了问题。在设计的过程中,开始照着EDA课本上的原理设计,后来才发现所设计的电路有很多地方都满足不了设计要求,使设计一度遭遇了很大困难。通过与同学讨论请教,逐步改进了设计,终于使设计的电路和设计要求相吻合。在这中间,通过不断提出问题,解决问题,我对这次设计的原理有了更深的了解,也给我分析问题,解决问题提供了很多好的方法,好的思路。同时,我也发现了自己存在的很多不足。发现自己在设计一个系统的时候不能够统筹兼顾,不能够从总体上把握设计的思路,也不能看清问题的核心与关键所在。这些都需要在下面不断学习实践,理论毕竟只是理论,要多参加实践,这样才能提高自己的能力,积累经验。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 16 页 - - - - - - - - - - 精心整理附录一PWM 模块程序Library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity PWM is port( clock:in std_logic; duty_cycle:in std_logic_vector(3 downto 0); pwm_en:in std_logic; pwm_out:out std_logic); end entity; architecture art of PWM is signal pwm_out_io:std_logic; signal count:std_logic_vector(3 downto 0); begin pwm_out=pwm_out_io; process(clock) begin 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 16 页 - - - - - - - - - - 精心整理if rising_edge(clock) then if pwm_en=1 then count=count+1; end if; end if; end process; process(clock) begin if rising_edge(clock) then if pwm_en=1 and countduty_cycle then pwm_out_io=1; else pwm_out_io=0; end if; end if; end process; end; 测速模块程序library ieee ; use ieee.std_logic_1164.all ; use ieee.std_logic_arith.all ; use ieee.std_logic_unsigned.all ; entity cesu is port( clk : in std_logic; -时钟输入 1Mhz ena : out std_logic; -允许计数clr : out std_logic; -计数器清零信号产生load : out std_logic); - 锁存、显示输出允许高有效end cesu; architecture behav of cesu is signal clkk :std_logic; -1HZ 时钟信号signal count :integer range 0 to 7;-6 秒计数signal clr1 :std_logic; -清零信号signal ena1 :std_logic; -允许计数信号signal load1 :std_logic; -允许计数信号-signal cq1,cq2,cq3,cq4 : INTEGER RANGE 0 TO 15;- 计数数据begin process(clk) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 16 页 - - - - - - - - - - 精心整理variable c:std_logic; variable cnt:integer range 0 to 500000; begin if clkevent and clk=1 then cnt:=cnt+1; if cnt=500000 then cnt:=0; c:=not c; end if; end if; clkk=c; end process; process(clkk) -6 秒计数begin if clkkevent and clkk=1 then count=count+1; if count6 then ena1=1;load1=0;clr1=0; elsif count=6 then ena1=0;load1=1;clr1=0; elsif count=7 then ena1=0;load1=1;clr1=1; end if; end if; ena=ena1; load=load1; clr=clr1; end process; end behav; 计数模块程序library ieee; use ieee.std_logic_1164.all; entity cnt10 is port (clk:in std_logic; -计数时钟信号clr:in std_logic; -清零信号ena:in std_logic; -计数使能信号cq :out integer range 0 to 15; -4 位计数结果输出carry_out:out std_logic); -计数进位精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 16 页 - - - - - - - - - - 精心整理end cnt10; architecture behav of cnt10 is signal cq1:integer range 0 to 15; begin process(clk,ena) begin if clr= 1 then cq1= 0; -计数器异步清零elsif clkevent and clk= 1 then if ena= 1 then if cq1=10 then cq1=1; else cq1=cq1+1; end if; -等于 9,则计数器清零end if; end if; end process; process (cq1) begin if cq1=10 then carry_out= 1; -进位输出else carry_out= 0; end if; end process; cq=cq1; end behav; 驱动模块程序library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity qudong_8 is port(clk:in std_logic; -动态显示刷新速度时钟QQ1,QQ2,QQ3:in std_logic_vector(3 downto 0); -32 位 BCD 码输入,最 03 低位, 2831最高位qudong1:out std_logic_vector(7 downto 0); -驱动信号输出, 07分别为 abcdefgp contrl:buffer std_logic_vector(2 downto 0); -数码管位选输出, 000 最低位数码管有效, 111最高位数码管有效end qudong_8; architecture behavior of qudong_8 is signal disp:std_logic_vector(3 downto 0); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 16 页 - - - - - - - - - - 精心整理signal temp:std_logic_vector(2 downto 0); begin process(clk) begin if clkevent and clk=1 then temp=temp+1; end if; contrldispdispdispdispdispdispdispdispdispqudong1qudong1qudong1qudong1qudong1qudong1qudong1qudong1qudong1qudong1qudong1=00000110; end case; end process; end behavior; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15 页,共 16 页 - - - - - - - - - - 精心整理消抖模块程序library ieee; use ieee.std_logic_1164.all; entity xiaodou is port(clk,input: in std_logic; output: out std_logic); end xiaodou; architecture behav of xiaodou is signal cp:std_logic; signal count:integer range 0 to 3; begin process(clk) begin if(clkevent and clk=1) then -检测上升沿if(input=1)then -如果有输入信号if(count=3)then count=count; -当计数达到 3 时,保持计数值不变else count=count+1; -当其小于 3 时,进行加 1处理end if; if(count=2)then cp=1; -如果计数达到 2,cp 置 1 else cp=0; - 其余情况全部为0 end if; else count=0; -如果计数出现非法状况,进行清零复位end if; end if; output=cp; -信号输出end process; end behav; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 16 页 - - - - - - - - - -

    注意事项

    本文(2022年基于FPGA的直流电机PWM调速系统设计与实现.pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开