<wbr id="n9wtc"></wbr>
      <tbody id="n9wtc"><dfn id="n9wtc"></dfn></tbody>
        <bdo id="n9wtc"></bdo>
        <bdo id="n9wtc"></bdo>
          <progress id="n9wtc"></progress>
            <progress id="n9wtc"><strong id="n9wtc"></strong></progress>
                  <progress id="n9wtc"><strong id="n9wtc"></strong></progress>
                      <progress id="n9wtc"></progress><progress id="n9wtc"></progress>
                      131 1300 0010
                      電機伺服
                      當前位置: 首頁>> 電源技術>>電機伺服>>
                    1. 導航欄目
                    2. 逆變電源
                    3. 開關電源
                    4. 電機伺服
                    5. 其他電源
                    6. 如何使用脈沖加方向方式對步進電機進行位置的自由控制
                      如何使用脈沖加方向方式對步進電機進行位置的自由控制
                    7. 如何使用脈沖加方向方式對步進電機進行位置的自由控制
                    8.   發布日期: 2022-10-15  瀏覽次數: 1,282

                      總體介紹

                      步進電機的控制通常使用PWM控制,改變頻率來控制速度,然后統計脈沖個數知道電機當前位置,可以很容易實現加減速規劃,或者不考慮加減速平穩性,直接以小于最大啟動速度的速度啟動,發完給定個脈沖后直接關閉定時器。以上控制方式都沒實現對步進電機的位置的自由控制,即讓步進電機跟隨任意位置曲線運動,此項目是為了實現步進電機的自由控制,能準確定位??梢允褂?u>編碼器或者電位器作為控制器,用手擰編碼器,步進電機可跟隨一起運動,也可以按照函數曲線運動。

                      步進電機驅動

                      步進電機驅動器有很多種,如A4988、TMC2208等,常用的驅動方式是脈沖加方向,有的高端點的使用can、串口等方式控制。本篇介紹如何使用脈沖加方向方式對步進電機進行位置的自由控制!

                      控制原理

                      使用通信協議方式控制步進電機,可周期性同步位置到驅動器,實現位置的自由控制,脈沖加方向方式也可抽象為使用通信協議在與驅動器通信,只不過是使用增量方式在通信,通過對脈沖的累計得到目標位置。

                      程序使用兩個定時器,一個中斷頻率為1k,用于周期采樣目標位置,并計算當前速度,當前速度值用于修改另一個定時器中斷頻率,所以在第二個定時器中判斷目標位置與當前位置的偏差,然后翻轉電平,實現對脈沖發送,同時判斷方向,對應控制方向控制IO電平。

                      在其他函數中可給定任意形式的位置變化,根據采樣定理,應該位置變化頻率不大于500Hz的都能被1k的定時器中斷正常采樣,由于發送脈沖需要以一定的頻率發送,所以第二個定時器頻率根據目標位置變化率而改變,可以讓速度平滑,也可以減小CPU帶寬占用。以此方式可實現對步進電機的自由控制,可使用編碼器或函數隨意控制電機!

                      代碼分析

                      此程序可實現對多個步進電機的控制,以下是步進電機類

                      /*步進電機控制類*/

                      typedef struct?

                      {

                      ? ? volaTIle unsigned long? *gpio_dir; //電機方向控制GPIO

                      ? ? volaTIle unsigned long? *gpio_pluse; //電機脈沖GPIO

                      ? ? int pluse_count;

                      ? ? int goal_posiTIon;

                      ? ? int last_posiTIon;

                      ? ? int cur_position;

                      ? ? int pos_bias;

                      ? ? int speed;

                      ? ? uint8_t status;

                      }stepMotor;

                      步進電機控制核心函數,由一個簡易狀態機組成,此函數放上面提到的第二個中斷函數執行,先得到當前偏差,狀態轉換,再發脈沖

                      void StepMotorCtrl(stepMotor *motor)

                      {

                      switch(motor->status)

                      {

                      case 0:

                      if(motor->goal_position != motor->cur_position)? //掃描

                      {

                      motor->pos_bias = motor->goal_position - motor->cur_position; //得到偏差

                      motor->status = 1;

                      }

                      break;

                      case 1:

                      if(motor->pos_bias > 0)

                      {

                      motor->pluse_count ++;

                      *(motor->gpio_dir) = 1;? //正方向

                      *(motor->gpio_pluse) = !*(motor->gpio_pluse);

                      if(motor->pluse_count == (motor->pos_bias * 2))

                      {

                      motor->cur_position += motor->pos_bias;

                      motor->pluse_count = 0;

                      motor->status = 0;

                      }

                      }

                      else

                      {

                      motor->pluse_count ++;

                      *(motor->gpio_dir) = 0;? //負方向

                      *(motor->gpio_pluse) = !*(motor->gpio_pluse);

                      if(motor->pluse_count == ((-motor->pos_bias) * 2))

                      {

                      motor->cur_position += motor->pos_bias;

                      motor->pluse_count = 0;

                      motor->status = 0;

                      }

                      }

                      break;

                      default:

                      break;

                      }

                      }


                    9. ·上一篇:
                      ·下一篇:
                    10. 其他關聯資訊
                      深圳市日月辰科技有限公司
                      地址:深圳市寶安區松崗鎮潭頭第二工業城A區27棟3樓
                      電話:0755-2955 6626
                      傳真:0755-2978 1585
                      手機:131 1300 0010
                      郵箱:hu@szryc.com

                      深圳市日月辰科技有限公司 版權所有:Copyright?2010-2023 www.nikuware-sos.com 電話:13113000010 粵ICP備2021111333號
                      漂亮人妻偷人精品视频_国产理论片午午伦夜理片2021_凸输偷窥xxxx间谍自由_国模gogo中国人体私拍
                      <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>