直流电机的速度控制

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDA课程设计报告

直流电机的PWM调速

一、概述

直流电动机具有优良的调速特性,调速平滑、方便,调速范围广;过载能力大,能承受频繁的冲击负载,可实现频繁的快速起动、制动和反转;能满足生产过程自动化系统各种不同的特殊运行要求。电动机调速系统采用微机实现数字化控制,是电气传动发展的主要方向之一。采用微机控制后,整个调速系统实现全数字化,结构简单,可靠性高,操作维护方便,电动机稳态运转时转速精度可达到较高水平,静动态各项指标均能较好地满足工业生产中高性能电气传动的要求。由于CPLD/FPGA性能优越,具有较佳的性能价格比,所以在工业过程及设备控制中得到日益广泛的应用。

PWM 调速系统与可控整流式调速系统相比有下列优点:由于PWM 调速系统的开关频率较高,仅靠电枢电感的滤波作用就可获得平稳的直流电流,低速特性好;同样,由于开关频率高,快速响应特性好,动态抗干扰能力强,可以获得很宽的频带;开关器件只工作在开关状态,主电路损耗小,装置效率高。

二、PWM调速的原理

图(1)

图(1)是全桥型的电机驱动电路,利用的是三极管的电流放大来驱动电机。从图上我们可以看到当Q4和Q3导通时,电机正转;当Q1和Q2导通时,电机反转。

设电机速度从静止开始加速,如图(2)所示,首先Q3,Q4必须维持导通一段时间,此时电机所承受的电压约为供电电压U,称之为强加速。待速度接近目标

速度时,加速可以减缓,此时Q3,Q4和Q1,Q2轮流导通,只是Q3,Q4在一个周期内所导通的时间t on比Q1,Q2导通的时间t off长一些,在此称为弱加速。任何时刻,电机所承受的平均电压U O,表示为U O = U×(t on-t off)( t on +t off)。如果速度已经达到目标,便可以调整t off和t on的时间比例使之相等,此时平均电压为0,是定速控制。由此可知,平均电压若为正值时,是加速控制;负值时是减速控制;为零时即达到匀速。

图(2)

三、程序的设计

在整个程序设计中,我们可以把他分成几个部分

1、PWM波形的产生

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY PWM IS

PORT ( CLK : IN STD_LOGIC;

U_D ,D_D: IN STD_LOGIC;

CQ : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END PWM;

ARCHITECTURE ONE OF PWM IS

SIGNAL CQI : STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

PROCESS(CLK)

BEGIN

IF CLK'EVENT AND CLK = '1' THEN

IF U_D = '1'AND D_D = '0' THEN

IF CQI = 255 THEN CQI <= "11111111";

ELSE CQI <= CQI + 1;

END IF;

ELSIF U_D = '0'AND D_D = '1' THEN

IF CQI=0 THEN CQI <= "00000000";

ELSE CQI<= CQI-1;

END IF;

ELSE CQI <= CQI;

END IF;

END IF;

END PROCESS;

CQ <= CQI;

END PROCESS ;

END ONE;

上述程序中,一个PWM周期由256个时钟周期clk组成。通过U_D和D_D来改变一个周期中PWM周期中高低电平的比值,即PWM输出信号的占空比。驱动直流电机转动的是PWM电流的平均值,PWM输出信号的占空比变化,也就改变了直流电机的转速。

U_D表示增加占空比;D_D表示减少占空比。

下面四幅仿真图表示的是四种状态:

当U_D=1,D_D=0时CQ增加;

当U_D=0,D_D=1时CQ减少;

当U_D=1,D_D=1时CQ不变;

当U_D=0,D_D=0时CQ不变;

程序的仿真图为:

图(3)

图(4)

图(5)

图(6)

2、7段译码器程序

LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL ;

ENTITY DECL7S IS

PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ;

END ;

ARCHITECTURE one OF DECL7S IS

BEGIN

PROCESS( A )

BEGIN

CASE A IS

WHEN "0000" => LED7S<= "0111111" ;

WHEN "0001" => LED7S<= "0000110" ;

WHEN "0010" => LED7S<= "1011011" ;

WHEN "0011" => LED7S<= "1001111" ;

WHEN "0100" => LED7S<= "1100110" ;

WHEN "0101" => LED7S<= "1101101" ;

WHEN "0110" => LED7S<= "1111101" ;

WHEN "0111" => LED7S<= "0000111" ;

WHEN "1000" => LED7S<= "1111111" ;

WHEN "1001" => LED7S<= "1101111" ;

WHEN "1010" => LED7S<= "1110111" ;

WHEN "1011" => LED7S<= "1111100" ;

WHEN "1100" => LED7S<= "0111001" ;

WHEN "1101" => LED7S<= "1011110" ;

WHEN "1110" => LED7S<= "1111001" ;

WHEN "1111" => LED7S<= "1110001" ;

WHEN OTHERS => NULL ;

END CASE ;

END PROCESS ;

END ;

这个程序是7段数码管的显示程序,改程序中没有考虑数码管的小数点(h 段)。如果需要添加段h,则程序中LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)的(6 DOWNTO 0)改为(7 DOWNTO 0)。

相关文档
最新文档