直流电机的速度控制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)。