毕业论文

打赏
当前位置: 毕业论文 > 电子通信 >

基于EDA开发平台的红外遥控电机转速电路设计(10)

时间:2017-06-23 20:43来源:毕业论文
该程序中有三个输入端,分别是clock_48M、key[2..0]、pwm_in,其中clock_48M是接系统时钟端;key[2..0]是开关控制输入端,其中开关1控制电机的加速,开关2控制电


该程序中有三个输入端,分别是clock_48M、key[2..0]、pwm_in,其中clock_48M是接系统时钟端;key[2..0]是开关控制输入端,其中开关1控制电机的加速,开关2控制电机的启动或停止,开关3控制电机的正反转;pwm_in是PWM产生的波形在这一模块的输入,接在脉宽调制模块的pwm_out端。该程序还有五个输出端,即pwm_en、duty_cycle[3..0]、motora、motorb、led[4..0],其中pwm_en是输出使能信号,以便控制电机的启动和停止,接在脉宽调制模块的使能端,从而达到控制pwm_out的波形信号,进而控制本模块的motora、motorb输出信号,也就控制了电机的启动和停止;duty_cycle[3..0]是由开关1直接控制的,当开关1打开时,duty_cycle的值依次加1,从而控制脉宽调制模块的输出占空比;motora、motorb是输出信号电平信号加载到直流电机两端的控制端口;led[4..0]是输出显示。
(4)仿真波形及分析
 
图4.5  电机控制仿真波形
Fig.4.5 Motor control simulation waveform
由仿真波形可以看出,在给定pwm_in固定输入的情况下,当开关3打开、开关1和开关2关闭时,duty_cycle不变,且pwm_en输出为0;当开关1和开关3打开、开关2关闭时,duty_cycle依次增加,pwm_en输出仍为0;当开关1、开关2、开关3同时打开时,此时,duty_cycle依次增加,pwm_en输出为1。因为设计满足了开关1控制电机的加速,开关2控制电机的启动或停止,开关3控制电机的正反转。
4.4.3  消抖模块
(1)生成的功能模块图
 
图4.6  消抖功能模块图
Fig.4.6 Debounce function module chart
(2)消抖模块的VHDL编程
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_Arith.ALL;
USE IEEE.STD_LOGIC_Unsigned.ALL;
ENTITY filter_200us IS
PORT(
clk,in_bit:    IN    STD_LOGIC;
out_bit:    OUT    STD_LOGIC
);
END;
ARCHITECTURE one OF    filter_200us IS
SIGNAL cnt:STD_LOGIC_VECTOR(19 DOWNTO 0);
SIGNAL out_bit_r:STD_LOGIC;
BEGIN
out_bit<=out_bit_r;
PROCESS(clk)
BEGIN
    IF RISING_EDGE(clk) THEN
        IF    in_bit ='1'    THEN    --一旦出现高电平即复位计数器
            cnt    <=X"00000";        --清0计数器
            out_bit_r <='1';    --输出置1
        ELSE
            IF cnt>=9600    THEN    --clk=48M 约为200us
                out_bit_r<='0';    --低电平宽度大于200us时输出低电平.
            ELSE    --低电平宽度小于200us时输出高电平.
                cnt<=cnt+1;    --计数器累加
                out_bit_r<='1';
            END IF;
        END IF;
    END IF;
END PROCESS;
END;
(3)VHDL程序分析
该程序主要实现消抖功能,原因是红外光电电路测得的转速脉冲信号没经过整形,所以存在很多干扰脉冲,如果直接对其计数,则测得的结果不正确,因此在本设计中加入了消抖模块filter_200us。 基于EDA开发平台的红外遥控电机转速电路设计(10):http://www.751com.cn/tongxin/lunwen_9829.html
------分隔线----------------------------
推荐内容