<strong id="0toem"><dl id="0toem"></dl></strong><b id="0toem"><menuitem id="0toem"></menuitem></b>

      <b id="0toem"><menuitem id="0toem"></menuitem></b>
    1. <code id="0toem"><abbr id="0toem"></abbr></code>
      <strong id="0toem"><dl id="0toem"></dl></strong>
      <kbd id="0toem"></kbd>
              1. <code id="0toem"></code>
                <th id="0toem"><progress id="0toem"></progress></th><strong id="0toem"><form id="0toem"></form></strong>

                <th id="0toem"></th>
              2. 131 1300 0010
                電機伺服
                當前位置: 首頁>> 電源技術>>電機伺服>>
              3. 導航欄目
              4. 逆變電源
              5. 開關電源
              6. 電機伺服
              7. 其他電源
              8. 如何使用脈沖加方向方式對步進電機進行位置的自由控制
                如何使用脈沖加方向方式對步進電機進行位置的自由控制
              9. 如何使用脈沖加方向方式對步進電機進行位置的自由控制
              10.   發(fā)布日期: 2022-10-15  瀏覽次數(shù): 2,053

                總體介紹

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

                步進電機驅(qū)動

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

                控制原理

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

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

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

                代碼分析

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

                /*步進電機控制類*/

                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;

                步進電機控制核心函數(shù),由一個簡易狀態(tài)機組成,此函數(shù)放上面提到的第二個中斷函數(shù)執(zhí)行,先得到當前偏差,狀態(tài)轉(zhuǎn)換,再發(fā)脈沖

                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;

                }

                }


              11. ·上一篇:
                ·下一篇:
              12. 其他關聯(lián)資訊
                深圳市日月辰科技有限公司
                地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
                電話:0755-2955 6626
                傳真:0755-2978 1585
                手機:131 1300 0010
                郵箱:[email protected]

                深圳市日月辰科技有限公司 版權所有:Copyright?2010-2023 www.xydibang.com 電話:13113000010 粵ICP備2021111333號
                <strong id="0toem"><dl id="0toem"></dl></strong><b id="0toem"><menuitem id="0toem"></menuitem></b>

                    <b id="0toem"><menuitem id="0toem"></menuitem></b>
                  1. <code id="0toem"><abbr id="0toem"></abbr></code>
                    <strong id="0toem"><dl id="0toem"></dl></strong>
                    <kbd id="0toem"></kbd>
                            1. <code id="0toem"></code>
                              <th id="0toem"><progress id="0toem"></progress></th><strong id="0toem"><form id="0toem"></form></strong>

                              <th id="0toem"></th>
                            2. 黄色日逼视频 | 欧美高清无码 在线观看 | 色综合色综合网色综合 | 日韩福利资源 | 99久久精品国产99久久久久久红桃 |