اطلاعیه

Collapse
No announcement yet.

کنترل موتور DC با استفاده از ّFPGA

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کنترل موتور DC با استفاده از ّFPGA

    سلام به همه دوستان
    میخوام دور یک موتور DC رو به وسیله برد Spartan3 کنترل کنم. میدونم که برای این کار نیاز به تولید PWM دارم. اما نحوه تولید اون رو بلد نیستم.
    در روی خود برد آموزشی (RN-ASIC)، موتور و درایورش موجوده.
    دوستان اگر لطف کرده و راهنمایی کنند ممنون میشم.
    با تشکر

    #2
    پاسخ : کنترل موتور DC با استفاده از ّFPGA

    سلام.
    شما باید با استفاده از سیگنال کلاک FPGA یک تاخیر ایجاد کنید مثلا پریود سیگنال PWM شما 100 میکرو ثانیه هست ها با فرض اینکه دیوتی سایکل %50 باشد شما با استفاده از کلاک FPGA یک شمارنده درست می کنید که وقتی به پنجاه میکرو ثانیه رسید پایه مورد نظر شما یک شود و وقتی به 100 میکرو ثانیه رسید مقدار پایه صفر شود به این طریق شما می تونید یک سیگنال PWM درست کنید .امید وارم که تونسته باشم منظورم رسونده باشم.
    D.C=(50us/100us)*100=50%
    جدیدترین ویرایش توسط MM320; ۱۷:۰۲ ۱۳۹۶/۰۳/۲۲.

    دیدگاه


      #3
      پاسخ : کنترل موتور DC با استفاده از ّFPGA

      نوشته اصلی توسط MM320 نمایش پست ها
      سلام.
      شما باید با استفاده از سیگنال کلاک FPGA یک تاخیر ایجاد کنید مثلا پریود سیگنال PWM شما 100 میکرو ثانیه هست ها با فرض اینکه دیوتی سایکل %50 باشد شما با استفاده از کلاک FPGA یک شمارنده درست می کنید که وقتی به پنجاه میکرو ثانیه رسید پایه مورد نظر شما یک شود و وقتی به 100 میکرو ثانیه رسید مقدار پایه صفر شود به این طریق شما می تونید یک سیگنال PWM درست کنید .امید وارم که تونسته باشم منظورم رسونده باشم.
      D.C=(50us/100us)*100=50%
      بله منظورتون رو متوجه شدم. اما سوالی که دارم اینه که تاخیر رو چطوری باید ایجاد کنم؟ شما میتونید کدش رو بنویسید؟
      با تشکر

      دیدگاه


        #4
        پاسخ : کنترل موتور DC با استفاده از ّFPGA


        library IEEE;
        use IEEE.STD_LOGIC_1164.all;
        use IEEE.STD_LOGIC_UNSIGNED.ALL;


        entity PWM is
        port (
        clk : in std_logic;
        PWM_in : in std_logic_vector (7 downto 0) := "00000000";
        PWM_out : out std_logic
        );
        end PWM;


        architecture PWM_arch of PWM is
        signal PWM_Accumulator : std_logic_vector(8 downto 0);
        begin
        process(clk, PWM_in)
        begin
        if rising_edge(clk) then
        PWM_Accumulator <= ("0" & PWM_Accumulator(7 downto 0)) + ("0" & PWM_in);
        end if;
        end process;


        PWM_out <= PWM_Accumulator(8);
        end PWM_arch;


        دیدگاه


          #5
          پاسخ : کنترل موتور DC با استفاده از ّFPGA

          نوشته اصلی توسط sepehr63 نمایش پست ها

          library IEEE;
          use IEEE.STD_LOGIC_1164.all;
          use IEEE.STD_LOGIC_UNSIGNED.ALL;


          entity PWM is
          port (
          clk : in std_logic;
          PWM_in : in std_logic_vector (7 downto 0) := "00000000";
          PWM_out : out std_logic
          );
          end PWM;


          architecture PWM_arch of PWM is
          signal PWM_Accumulator : std_logic_vector(8 downto 0);
          begin
          process(clk, PWM_in)
          begin
          if rising_edge(clk) then
          PWM_Accumulator <= ("0" & PWM_Accumulator(7 downto 0)) + ("0" & PWM_in);
          end if;
          end process;


          PWM_out <= PWM_Accumulator(8);
          end PWM_arch;


          بسیار متشکرم
          میدونید فرکانس پالس PWM که تولید می کنه چقدره؟

          دیدگاه

          لطفا صبر کنید...
          X