*

Ogultekin

  • *
  • 10
  • KTU EEE^4
    • Profili Görüntüle
Altera De0 Nano PWM ile Servo Motor Kontrolü
« : 29 Şubat 2016, 19:42:57 »
-- Daha fazlası için : http://www.vhdl.club/2016/02/29/vhdl-ile-pwm-olusturup-servo-motor-surme/


Uygulamada kullanacağımız servo motor piyasada rahatlıkla bulunabilen ve oldukça ucuz olan Tower Pro adlı üreticinim Sg90 modelli ürünüdür.



Kod: VHDL
  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3. entity pwm_servo is
  4.         Generic(
  5.                 count_max : integer := 1000000;
  6.                 duty_max : integer := 100000;
  7.                 duty_min : integer := 50000;
  8.                 duty_delta : integer := 200
  9.                 );
  10.   Port( CLK : in STD_LOGIC;
  11.         PWM : out std_logic
  12.       );
  13. end pwm_servo;
  14.  
  15. architecture Behavioral of pwm_servo is
  16.  
  17.  signal counter: integer range 0 to count_max := 0;
  18.  signal duty : integer range duty_min to duty_max := duty_min;
  19. begin
  20.   prescaler: process(all)
  21.    variable direction_up : boolean := true;
  22. begin
  23.         if rising_edge(clk) then
  24.           if counter < count_max then
  25.                 counter <= counter + 1;
  26.           else
  27.            if direction_up then
  28.                 if duty < duty_max then
  29.                   duty <= duty + duty_delta;
  30.                 else
  31.                   direction_up := false;
  32.                 end if;
  33.                 else
  34.                   if duty > duty_min then
  35.                     duty <= duty - duty_delta;
  36.                   else
  37.                   direction_up := true;
  38.              end if;
  39.           end if;
  40.          counter <= 0;
  41.         end if;
  42.        end if;
  43.   end process;
  44.       pwm_s: process(all)
  45.    begin
  46.         if counter < duty then
  47.                 pwm <= '1';
  48.         else
  49.                 pwm <= '0';
  50.         end if;
  51. end process;
  52. end Behavioral;

« Son Düzenleme: 29 Şubat 2016, 20:12:55 Gönderen: alicavuslu »