技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 如何使用脈沖加方向方式對步進(jìn)電機(jī)進(jìn)行位置的自由控制

如何使用脈沖加方向方式對步進(jìn)電機(jī)進(jìn)行位置的自由控制

時(shí)間:2022-10-17 15:59:20來源:中國傳動(dòng)網(wǎng)

導(dǎo)語:?關(guān)閉定時(shí)器。以上控制方式都沒實(shí)現(xiàn)對步進(jìn)電機(jī)的位置的自由控制,即讓步進(jìn)電機(jī)跟隨任意位置曲線運(yùn)動(dòng),此項(xiàng)目是為了實(shí)現(xiàn)步進(jìn)電機(jī)的自由控制,能準(zhǔn)確定位??梢允褂镁幋a器或者電位器作為控制器,用手?jǐn)Q編碼器,步進(jìn)電機(jī)可跟隨一起運(yùn)動(dòng),也可以按照函數(shù)曲線運(yùn)動(dòng)。

  總體介紹

  對步進(jìn)電機(jī)的控制通常使用PWM控制,改變頻率來控制速度,然后統(tǒng)計(jì)脈沖個(gè)數(shù)知道電機(jī)當(dāng)前位置,可以很容易實(shí)現(xiàn)加減速規(guī)劃,或者不考慮加減速平穩(wěn)性,直接以小于最大啟動(dòng)速度的速度啟動(dòng),發(fā)完給定個(gè)脈沖后直接關(guān)閉定時(shí)器。以上控制方式都沒實(shí)現(xiàn)對步進(jìn)電機(jī)的位置的自由控制,即讓步進(jìn)電機(jī)跟隨任意位置曲線運(yùn)動(dòng),此項(xiàng)目是為了實(shí)現(xiàn)步進(jìn)電機(jī)的自由控制,能準(zhǔn)確定位??梢允褂?a href="http://www.treenowplaneincome.com/p/coding/" target="_blank" rel="nofollow">編碼器或者電位器作為控制器,用手?jǐn)Q編碼器,步進(jìn)電機(jī)可跟隨一起運(yùn)動(dòng),也可以按照函數(shù)曲線運(yùn)動(dòng)。

  步進(jìn)電機(jī)驅(qū)動(dòng)

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

  控制原理

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

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

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

  代碼分析

  此程序可實(shí)現(xiàn)對多個(gè)步進(jìn)電機(jī)的控制,以下是步進(jìn)電機(jī)類

  /*步進(jìn)電機(jī)控制類*/

  typedef struct

  {

  volaTIle unsigned long *gpio_dir; //電機(jī)方向控制GPIO

  volaTIle unsigned long *gpio_pluse; //電機(jī)脈沖GPIO

  int pluse_count;

  int goal_posiTIon;

  int last_posiTIon;

  int cur_position;

  int pos_bias;

  int speed;

  uint8_t status;

  }stepMotor;

  步進(jìn)電機(jī)控制核心函數(shù),由一個(gè)簡易狀態(tài)機(jī)組成,此函數(shù)放上面提到的第二個(gè)中斷函數(shù)執(zhí)行,先得到當(dāng)前偏差,狀態(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; //負(fù)方向

  *(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;

  }

  }


標(biāo)簽: 步進(jìn)電機(jī)

點(diǎn)贊

分享到:

上一篇:運(yùn)動(dòng)控制的定義、電機(jī)控制和...

下一篇:工業(yè)控制系統(tǒng)異常檢測方法的...

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號