Ufes - Eletronica Digital - Vhdl - Gerador de Pwm Para Motor Dc

Embed Size (px)

Citation preview

UFES - UNIVERSIDADE FEDERAL DO ESPRITO SANTO CENTRO TECNOLGICO CT II

ELETRNICA DIGITAL

TRABALHO COMPUTACIONAL - VHDL GERADOR DE PWM PARA MOTOR DC CONTADOR DE 0 A 9

Alunos: Marcelo Siqueira Silva Jiennie Hanna de Mendona Gustavo Perini Professor: Evandro

VITRIA, 18 DE MARO DE 2005.

1

INTRODUO

O projeto consiste no desenvolvimento da descrio de hardware de um controle de PWM para motor DC. Foram usados 3 botes, um para ligar (ch1), outro para controlar o sentido do giro do motor (ch2) e um terceiro para selecionar o ciclo de trabalho do sinal PWM (ch3). Assumindo uma freqncia do PWM de 1Khz, foram implementadas trs velocidades: 25%, 50% e 75%. Foi usado um display de 7 segmentos para mostrar se o motor estava parado (P), se girava no sentido horrio (H) ou anti-horrio (A). Uma fonte de 24 Vcc usada para alimentar o motor e uma outra, de 9 Vcc, para alimentar o kit e a parte lgica interna do CI driver L298.

2

INICIANDO A DESCRIO DO CONTROLE DE MOTOR

Nas entidades, designamos as portas, que no caso so o clock e os 3 botes de comando como entrada e para a sada os sinais responsveis pela ligao do motor, controle do sentido de giro e qual largura de pulso o PWM deve usar. A ltima sada um vetor de 7 bits usado para acender os 7 LEDs do display de 7 segmentos.

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; entity motordc is Port (clk,ch1,ch2,ch3 :in std_logic; pwm,giro,habi :out std_logic; display :out std_logic_vector(6 downto 0)); end motordc; Na arquitetura sero declaradas as variveis que sero usadas nos processos adiante.

architecture controle of motordc is signal contab :integer range 0 to 199; signal clk_bot,A,B,C,G,H :std_logic; signal bot1,bot2,bot3 :std_logic_vector(1 downto 0); signal gera_pwm :std_logic_vector(2 downto 0); signal pwmstate :std_logic_vector(1 downto 0); begin

3

PROCESSO DE REDUO DE CLOCK

Como a freqncia de trabalho do chip diferente da que queremos trabalhar, precisamos fazer uma reduo, que nesse caso foi de 1 kHz, para que fosse efetuada a contagem, atravs da varivel CONTAB. Foi criada um varivel clk_bot para demonstrar o pulso de clock de 1 segundo. Ento, quando a contagem chegar ao nmero final, designado no programa, ele efetua um pulso passando clk_bot de 0 para 1.

process (CLK) --processo para abaixar o clock do botao de 200KHz para 1KHz begin if (clk'event and clk = '1') then if contab < 199 then contab pwmstate pwmstate pwmstate pwmstate