日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > R/C伺服電機FPGA

          R/C伺服電機FPGA

          作者: 時間:2023-12-22 來源:電子森林 收藏

          適用于控制R / C。 

          本文引用地址:http://yuyingmama.com.cn/article/202312/454182.htm

          R / C伺服(“遙控”)由一個電機,一些電子設備和一組裝在一個小盒子中的齒輪組成。單軸從伺服器出來。您可以通過向伺服器發(fā)送脈沖來精確控制軸的旋轉角度。軸旋轉角度限制為大約270度(它不能旋轉一整圈,而只能旋轉3/4圈)。

          這是一個伺服器的圖片(已被咬住,但已說明了我們的目的)。

          有用的信息鏈接包括:

          • RC伺服控制
          • RC飛機伺服系統(tǒng)使用指南
          • 遙控伺服器101

          R / C Servos用于:

          • 在遙控模型中(汽車,飛機…)。
          • 在機器人技術中。

          伺服系統(tǒng)有3條線:

          • 黑色:地面。
          • 紅色:電源(+ 5V)。
          • 白色:旋轉控制(使用PWM)。

          白線上的PWM控制脈沖長度需要在1ms到2ms之間。
          1.5ms的脈沖使軸在其旋轉范圍的中間旋轉。
          即使不需要更改角度位置,也需要定期發(fā)送新脈沖(每10到20ms),否則伺服將停止嘗試保持該脈沖。

          讓我們以8位分辨率(256步,從0到255)控制一個伺服器。這意味著我們需要產(chǎn)生一個1ms(0)到2ms(255)的脈沖,分辨率為1ms / 256 = 3.9μs。
          分鐘
          使用25MHz時鐘(周期為40ns),第一步是對時鐘進行分頻,以產(chǎn)生周期的“滴答聲”,使其盡可能接近3.9μs。

          parameter ClkDiv = 98;    // 25000000/1000/256 = 97.56 
          reg [6:0] ClkCount;reg ClkTick;
          always @(posedge clk) ClkTick <= (ClkCount==ClkDiv-2);
          always @(posedge clk) if(ClkTick) ClkCount <= 0; 
          else ClkCount <= ClkCount + 1;

          使用“ ClkTick”,我們實例化一個12位計數(shù)器,該計數(shù)器在每個滴答處遞增。

          reg [11:0] PulseCount;
          always @(posedge clk) if(ClkTick) PulseCount <= PulseCount + 1;

          每個滴答持續(xù)3.9μs,因此256個滴答持續(xù)1ms,12位計數(shù)器“ PulseCount”每16ms翻轉一次。正是我們需要定期產(chǎn)生新的脈沖。

          產(chǎn)生PWM脈沖
          當“ PulseCount”等于0時,我們開始每個脈沖。當“ PulseCount”
          在256和511之間時,我們結束每個脈沖。這將在1ms和2ms之間產(chǎn)生脈沖。

          假設“ RCServo_position”是8位位置值(從0到255),我們在其前面連接一個“ 0001”以創(chuàng)建一個范圍為256 ot 511的12位值。最后,我們將這12位與“ PulseCount”進行比較以產(chǎn)生脈沖。

          reg RCServo_pulse;
          always @(posedge clk) RCServo_pulse = (PulseCount < {4'b0001, RCServo_position});


          關鍵詞: FPGA 伺服電機

          評論


          相關推薦

          技術專區(qū)

          關閉