PFGA的直流电机控制

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

【连载】FPGAVerilogHDL系列实例VerilogHDL之直流电机PWM控制一、实验前知识准备在上一篇中总结了步进电机的控制,这次我将学习一下直流电机的控制,首先,我们简要了解下步进电机和直流电机的区别。(1)步进电机是以步阶方式分段移动,直流电机通常采用连续移动的控制方式。(2)步进电机采用直接控制方式,它的主要命令和控制变量都是步阶位置;直流电机则是以电机电压为控制变量,以位置或速度为命令变量。(3)直流电机需要反馈控制系统,他会以间接方式控制电机位置。步进电机系统多半以“开环方式”进行操作。1、什么是直流电机输出或输入为直流电能的旋转电机,称为直流电机,它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。2、什么是PWMPWM(脉冲宽度调制)是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。3、开发平台中直流电机驱动的实现开发板中的直流电机的驱动部分如图1.1所示。利用FPGA设计一个0、1组成的双极性PWM发生器。图1.1直流电机的驱动部电路二、实验平台QuartusII7.2集成开发环境、SOPC-MBoard板、ByteBlasterII下载电缆三、实验目标1、了解直流电机PWM的控制方法。2、具有调速功能。四、实验实现详细实现步骤请参考【连载】FPGAVerilogHDL系列实例--------8-3编码器1、在设计文件中输入Verilog代码。1//--------------------------------------------------------------------------------------------------2//Title:pwm3//Author:liwei4//Generated:ThuJun1622:30:1220055//-------------------------------------------------------------------------------------------------6`timescale1ns/1ps78modulepwm(enable,rst,Dir,clk,spd_sel,MA);910inputrst;11inputclk;12inputenable;//控制开关13inputDir;//控制方向14input[1:0]spd_sel;//控制转速1516output[1:0]MA;//电机控制1718reg[15:0]cntReg;19reg[15:0]cnt;20reg[15:0]cnt_r;21regpulseout;22reg[1:0]MA_r;2324parameterperiod='d10000;25assignMA=MA_r;2627always@(posedgeclkornegedgerst)2829begin30if(!rst)//复位31begin32cntReg=#116'b0;33cnt=#116'b0;34pulseout=#11'b0;35end36else37if(enable==1'b0)MA_r=2'b00;38else39begin40MA_r[0]=pulseout;41MA_r[1]=~pulseout;4243if(Dir==1'b1)cntReg=cnt_r;44elseif(Dir==1'b0)cntReg=period-cnt_r;4546cnt=cnt+1;47if(cnt==cntReg-1)pulseout=#11'b1;//设定周期时间的一半48elseif(cnt==period-1)//设定的周期时间49begin50pulseout=#11'b0;51cnt=#1'b0;52end53end54end5556always@(spd_sel)57begin58case(spd_sel)592'b00:cnt_r=period-'d3500;602'b01:cnt_r=period-'d2500;612'b10:cnt_r=period-'d1750;622'b11:cnt_r=period-'d1000;63endcase64end6566endmodule2、分析思考:(1)如何控制顺时针转和逆时针转?(2)速度的大小如何控制的?第38行~第53行:由2个引脚控制生成双极性PWM发生器。结论:(1)以MA_r[0]为准,当状态0的时间大于状态1的时间时,电机逆时针转动;反之,电机顺时针转动。那且看上面代码中是如何控制状态0的时间和状态1的时间长短的。不难看出,时间长短是由方向变量Dir(第43、44行)和预设值cnt_r(第59行~第62行)决定。可以好好体会一下。(2)速度的快慢是由占空比决定的,占空比越大,速度越快。当然,这里指的是比值大于1。占空比是如何确定的呢?这是由第59行~第62行中的数值确定的,这些数值可以自己定义,但必须在0~10000之间,这里所说的占空比是指不小于的值,当数值设置为5000时,就会得到最慢的速度了。3、由设计文件生成的.bsf文件,其外接接口如图1.2所示。图1.2外接接口图4、引脚分配enable接按键,控制开关;rst接复位信号;Dir接按键,控制转动方向;clk接系统时钟;spd_sel接2个按键,调节转动速度;MA接直流电机。5、实验结果通过拨动开关控制开关、转速、方向。【连载】FPGAVerilogHDL系列实例VerilogHDL之步进电机驱动控制步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心。那么,下面我们就了解下什么是步进电机,它是怎么控制的。一、步进电机相关知识简介1、步进电机概述步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它实际上是一种单相或多相同步电动机。单相步进电动机有单路电脉冲驱动,输出功率一般很小,其用途为微小功率驱动。多相步进电动机有多相方波脉冲驱动,用途很广。使用多相步进电动机时,单路电脉冲信号可先通过脉冲分配器转换为多相脉冲信号,在经功率放大后分别送入步进电动机各相绕组。每输入一个脉冲到脉冲分配器,电动机各相的通电状态就发生变化,转子会转过一定的角度(称为步距角)。正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。由于步进电动机能直接接收数字量的输入,所以特别适合于微机控制。2、步进电机的种类目前常用的步进电机有三类:(1)反应式步进电动机(VR):它的结构简单,生产成本低,步距角可以做的相当小,但动态性能相对较差。(2)永磁式步进电动机(PM):它的出力大,动态性能好;但步距角一般比较大。(3)混合步进电动机(HB):它综合了反应式和永磁式两者的优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机。如果还想做更深入的了解,自行查找相关资料。3、步进电机控制的实现我们实验中所使用的步进电机为四相步进电机。转子小齿数为64。系统中采用四路I/O进行并行控制,FPGA直接发出多相脉冲信号,在通过功率放大后,进入步进电机的各相绕组。这样就不再需要脉冲分配器。脉冲分配器的功能可以由纯软件的方法实现。四相步距电机的控制方法有四相单四拍,四相单、双八拍和四相双四拍三种控制方式。步距角的计算公式为:其中:m为相数,控制方法是四相单四拍和四相双四拍时C为1,控制方法是四相单、双八拍时C为2,Zk为转子小齿数。本系统中采用的是四相单、双八拍控制方法,所以步距角为360°/512。但步进电机经过一个1/8的减速器引出,实际的步距角应为360°/512/8。试验中使用EXI/O的高四位控制四相步进电机的四个相。按照四相单、双八拍控制方法,电机正转时的控制顺序为A→AB→B→BC→C→CD→D→DA。EXI/O的高四位的值参见表1.1。表1.1电机正转时,FPGA四位IO口的值反转时,只要将控制信号按相反的顺序给出即可。步进电机的频率不能太快,也不能太慢。在200Hz附近最好。频率太快是转动不起来的。注:为什么步进电机高于一定速度就无法启动:步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。二、实验平台QuartusII7.2集成开发环境、SOPC-MBoard板、ByteBlasterII下载电缆三、实验实现详细实现步骤请参考【连载】FPGAVerilogHDL系列实例--------8-3编码器1、在设计文件中输入Verilog代码。1//--------------------------------------------------------------------------------------------------2//Title:StepMotorPorts3//Author:wangliang4//Generated:2011.08.165//-------------------------------------------------------------------------------------------------67moduleStepMotorPorts(StepDrive,clk,Dir,StepEnable,rst);89inputclk;10inputDir;11inputStepEnable;12inputrst;1314output[3:0]StepDrive;1516reg[3:0]StepDrive;17reg[2:0]state;18reg[31:0]StepCounter=32'b0;19parameter[31:0]StepLockOut=32'd200000;//250HZ20regInternalStepEnable;2122always@(posedgeclkornegedgerst)23begin24if(!rst)25begin26StepDrive=4'b0;27state=3'b0;28StepCounter=32'b0;29end3031else32begin33if(StepEnable==1'b1)InternalStepEnable=1'b1;3435StepCounter=StepCounter+31'b1;36if(StepCounter=StepLockOut)37begin38StepCounter=32'b0;3940if(InternalStepEnable==1'b1)41begin42InternalStepEnable=StepEnable;43if(Dir==1'b1)state=state+3'b001;44elseif(Dir==1'b0)state=state-3'b001;45case(state)463'b000:StepDrive=4'b0001;473'b001:StepDrive=4'b0011;483'b010:StepDrive=4'b0010;493'b011:StepDrive=4'b0110;503'b100:StepDrive=4'b0100;513'b101:StepDrive=4'b1100;523'b110:StepDrive=4'b1000;533'b111:StepDrive

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功