Studyhard/VHDL2010. 1. 5. 00:46

library ieee;     
use ieee.std_logic_1164.all;

entity revstep is
     port(clk        : in std_logic;
            reverse : in std_logic;
            q          : out std_logic_vector(3 downto 0));
end revstep;

 

architecture arc of revstep is
  type state_type is (s0, s1, s2, s3);
  signal state  : state_type;

  signal clock : std_logic;
begin
     process(clk)
       variable cnt : integer range 0 to 49999; --16Mhz, Step Motor Voltage 9V 에서
    begin                                                 -- 5999 최고 속도, 49999 적정 판단
              if (clk'EVENT and clk='1') then    -- Votage 가 더 높아지면 최고 속도가 
                        if (cnt=49999)then             --  더 높아질 것이라고 판단됨
                            clock <= not clock;
                            cnt:=0;
                        else 
                            cnt:=cnt+1;
                        end if;
              end if;
    end process;
  
    process (clock)   -- signal 로 clock 을 설정 해 줌,process 가능
        begin
    IF (clock'EVENT and clock = '1') then
            case state is
                    when s0 => state <= s1;
                    when s1 => state <= s2;
                    when s2 => state <= s3;
                    when s3 => state <= s0;
            end case;
   end if;
   end process;

 

    process(reverse)--reverse 입력에 따른 스텝 모터 Direction 조절
        begin
       if(reverse='0')then
               case state is
                         when s0=>q<="1100";
                         when s1=>q<="0110";
                         when s2=>q<="0011";
                         when s3=>q<="1001";
               end case;
 

       else   
               case state is
                         when s0=>q<="1100";
                         when s1=>q<="1001";
                         when s2=>q<="0011";
                         when s3=>q<="0110";
               end case;
       end if;
 
   
   end process;
END arc;

--------------------------

스텝 모터를 테스트 하기 위한 부분이다.

 

스텝 모터 드라이버는 7026 을 썼고..

 

2상 여자 방식을 썼다..

 

AB/A/B

 

테스트 시에는 스텝 모터가 한 방향으로 무한정 돌아가고..

 

reverse 버튼이 눌렸을 경우 반대 방향으로 돌아가는 걸 확인 할 수 있었다.

Posted by 리얼한놈