日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

步進(jìn)電機(jī)S型曲線加減速的實(shí)現(xiàn)

GReq_mcu168 ? 來源:嵌入式技術(shù)開發(fā) ? 作者:嵌入式技術(shù)開發(fā) ? 2022-07-01 16:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

之前做電機(jī)相關(guān)的項目比較少,最近有個項目涉及到步進(jìn)電機(jī)的精確控制,參考了一些資料研究了一下S型曲線加減速,這里總結(jié)一下分享給大家。

硬件是:STM32+驅(qū)動器+步進(jìn)電機(jī)。
STM32定時器輸出PWM,控制驅(qū)動器來驅(qū)動步進(jìn)電機(jī)。單片機(jī)只要控制電機(jī)方向,以及PWM的頻率即可,具體驅(qū)動由驅(qū)動器實(shí)現(xiàn)。 首先說一下什么是S型曲線加速,為什么要S型曲線加速。
S型曲線加速是指步進(jìn)電機(jī)的啟動速度按照S型曲線逐漸增加,以達(dá)到設(shè)定的最大速度。具體的S型曲線方程如下:2cf33e0a-f527-11ec-ba43-dac502259ad0.pngx取值-5~5的曲線圖如下:2d043ca0-f527-11ec-ba43-dac502259ad0.png可以看到,剛開始加速和達(dá)到最大速度時加速比較緩慢,中間加速比較快。電機(jī)的轉(zhuǎn)矩和轉(zhuǎn)速的乘積的k倍等于功率,也就是說,功率一定的時候,轉(zhuǎn)速與轉(zhuǎn)矩成反比關(guān)系。所以,轉(zhuǎn)速越低,轉(zhuǎn)矩越大。當(dāng)電機(jī)直接高速啟動時,電機(jī)可能存在震動、丟步甚至啟動不起來的情況。因此需要S型曲線加速,使電機(jī)能夠緩慢啟動。程序?qū)崿F(xiàn)控制電機(jī)的速度,其實(shí)就是控制PWM的輸出頻率。首先需要對S曲線方程進(jìn)行一些變化,如下:Fcurrent = Fmin + (Fmax-Fmin)/(1+exp( -Flexible(i - num )/num) )
  • Fcurrent為計算出的當(dāng)前頻率。

  • Fmin為加速的起始頻率。

  • Fmax為加速的最大頻率。

  • -Flexible*(i - num)/num是對S型曲線進(jìn)行拉伸變化,其中Flexible代表S曲線區(qū)間(越大代表壓縮的最厲害,中間加速度越大;越小越接近勻加速。理想的S曲線的取值為4-6)。

  • i是在循環(huán)計算過程中的索引,從0開始。

  • num為 加速脈沖數(shù)/2 大小

上面計算出的是頻率的S曲線,還需要將頻率轉(zhuǎn)換成定時器的計數(shù)周期,程序如下:

//功能:S加速曲線初始化//參數(shù)1 *pbuff          計算出的定時器的周期//參數(shù)2 fre_max        最大頻率 Hz//參數(shù)3 fre_min        最小頻率 Hz//參數(shù)4 len            加速需要的脈沖數(shù)void CurveS_init(uint16_t *pbuff,uint32_t fre_max,uint32_t fre_min,int16_t len){      int16_t i;      uint16_t flexible =4;floatdelt=fre_max-fre_min;floatdeno;      float melo ;floatfre;
       for(i=0; i       {              melo = flexible* (i-len/2) / (len/2);              deno = 1.0f / (1 + expf(-melo));  //              fre = delt * deno + fre_min;              *pbuff++ = (unsigned short)(TIM2_CLOCK_FREQ / fre);       }
}
TIM2_CLOCK_FREQ為定時器的計數(shù)頻率。 之后要做的就是在加減速過程中,每輸出一個PWM脈沖,重新裝載一次定時器周期。具體怎樣輸出指定個數(shù)PWM來控制步進(jìn)電機(jī),可參考之前的文章《STM32定時器產(chǎn)生指定個數(shù)脈沖》。在PWM中斷中,將計算好的S曲線數(shù)組,重新裝載到定時器的ARR和CCR寄存器中即可。程序如下:
//PWM回調(diào)函數(shù)void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim){    Motor.PWMcount++;    SpeedAdjust();//速度調(diào)節(jié)}
//速度調(diào)節(jié)函數(shù)void SpeedAdjust(void){  switch(Motor.Status)  {    /*加速*/                case SPEED_INCREASE:      if(Motor.Count < Motor.CountMax)      {        __HAL_TIM_SET_AUTORELOAD(&htim2,Period[Motor.Count]);//計算下一個PWM的周期        htim2.Instance->CCR1 = Period[Motor.Count]/2;//占空比50%        Motor.Count++;//加速次數(shù)      }      else      {        Motor.Status = SPEED_STABLE;        Motor.Count--;      }break;    /*勻速*/      case SPEED_STABLE:      if(Motor.PWMcount >= (Motor.PWMneed - Motor.Count))      {            Motor.Status = SPEED_DECREASE;        }break;    /*減速*/      case SPEED_DECREASE:      if(Motor.Count >= 0)      {        __HAL_TIM_SET_AUTORELOAD(&htim2,Period[Motor.Count]);//計算下一個PWM的周期        htim2.Instance->CCR1 = Period[Motor.Count]/2;        Motor.Count--;        }      if(Motor.PWMcount >= Motor.PWMneed)      {        HAL_TIM_PWM_Stop_IT(&htim2,TIM_CHANNEL_1);      }      break;    default :      break;  }

其中Motor是自己定義的一個結(jié)構(gòu)體:


typedef struct{  uint8_t Status;   //狀態(tài)  int32_t Count;     //加減速過程脈沖計數(shù)  int32_t CountMax;  //最大加速脈沖數(shù)  uint32_t PWMcount;//PWM計數(shù)  uint32_t PWMneed; //需要輸出的PWM總數(shù)}Motor_t;
啟動時,初始化參數(shù),啟動定時器輸出PWM即可:
//PWM--需要輸出的脈沖個數(shù)void StartPWM(uint32_t PWM){             Motor.PWMcount = 0;       Motor.PWMneed = PWM;       Motor.Count = 0;       Motor.Status = SPEED_INCREASE;       Motor.CountMax = 300;//初始化加速曲線,最小頻率100,最大頻率10K,加速脈沖數(shù)300CurveS_init(Period,10000,100,Motor.CountMax);       __HAL_TIM_SET_AUTORELOAD(&htim2,Period[0]);       htim2.Instance->CCR1 = Period[0];       HAL_TIM_PWM_Start_IT(&htim2, TIM_CHANNEL_1);  //啟動定時器PWM輸出}
來看一下效果,可以看到,PWM的頻率是逐漸增大的。實(shí)際測試效果也不錯。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 驅(qū)動器
    +關(guān)注

    關(guān)注

    54

    文章

    9118

    瀏覽量

    156604
  • 步進(jìn)電機(jī)
    +關(guān)注

    關(guān)注

    153

    文章

    3272

    瀏覽量

    152804

原文標(biāo)題:步進(jìn)電機(jī)S型曲線加速的實(shí)現(xiàn)

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    24V供電,3A輸出,S曲線:TMCM-3351三軸電機(jī)控制模塊

    TMCM-3351三軸電機(jī)控制模塊24V供電,3A輸出,S曲線如果你正在設(shè)計一臺需要同時驅(qū)動三個步進(jìn)電機(jī)的設(shè)備——比如三軸點(diǎn)膠機(jī)、半導(dǎo)體檢
    的頭像 發(fā)表于 04-08 18:27 ?2782次閱讀
    24V供電,3A輸出,<b class='flag-5'>S</b>形<b class='flag-5'>曲線</b>:TMCM-3351三軸<b class='flag-5'>電機(jī)</b>控制模塊

    變頻器加減速時對容量有哪些影響

    變頻器在加減速過程中,對容量的影響主要體現(xiàn)在瞬時過載能力、制動能力以及熱積累效應(yīng)三個方面。簡單來說,加減速越頻繁、負(fù)載慣性越大、加減速時間設(shè)定得越短,對變頻器的容量要求就越高。
    的頭像 發(fā)表于 04-05 17:14 ?1195次閱讀
    變頻器<b class='flag-5'>加減速</b>時對容量有哪些影響

    變頻器在加減速過程中報主回路過電壓故障如何處理

    變頻器在加減速時報主回路過電壓,本質(zhì)上是因為電機(jī)處于“發(fā)電”狀態(tài),回饋的能量超過了變頻器自身的消耗能力,導(dǎo)致直流母線電壓飆升。
    的頭像 發(fā)表于 04-05 07:13 ?349次閱讀
    變頻器在<b class='flag-5'>加減速</b>過程中報主回路過電壓故障如何處理

    變頻調(diào)速器的加減速方式

    變頻調(diào)速器的加減速方式,核心是解決電機(jī)自身慣性與快速啟停需求之間的矛盾?。設(shè)置的目標(biāo)是在 不引起過流或過壓跳閘的前提下,盡可能縮短加減速時間 ?。 主要包含以下兩個方面: 加減速模式(
    的頭像 發(fā)表于 03-20 07:42 ?477次閱讀
    變頻調(diào)速器的<b class='flag-5'>加減速</b>方式

    電機(jī)加減速曲線控制的選擇

    電機(jī)加減速曲線的選擇,本質(zhì)上是在 平滑性、響應(yīng)速度和系統(tǒng)復(fù)雜性 之間做權(quán)衡。沒有一種曲線是萬能的,最合適的取決于你的負(fù)載特性和性能要求。 下面是三種主流
    的頭像 發(fā)表于 03-16 16:41 ?370次閱讀
    <b class='flag-5'>電機(jī)</b><b class='flag-5'>加減速</b><b class='flag-5'>曲線</b>控制的選擇

    齒輪減速電機(jī)步進(jìn)電機(jī)的特性有哪些區(qū)別

    齒輪減速電機(jī)步進(jìn)電機(jī)作為工業(yè)自動化領(lǐng)域的兩大核心驅(qū)動元件,因其不同的結(jié)構(gòu)原理和性能特點(diǎn),在實(shí)際應(yīng)用中各有側(cè)重。深入理解兩者的差異,有助于工程師在選型時更精準(zhǔn)地匹配需求。以下從工作原理
    的頭像 發(fā)表于 03-04 11:01 ?316次閱讀
    齒輪<b class='flag-5'>減速</b><b class='flag-5'>電機(jī)</b>與<b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>的特性有哪些區(qū)別

    TMCM-1316:S 加減速 + 256 微步 步進(jìn)控制更精準(zhǔn)

    一款在運(yùn)動控制細(xì)節(jié)上表現(xiàn)突出的模塊——TMCM-1316StepRocker,看看它是如何通過S加減速曲線與最高256微步細(xì)分技術(shù),讓步進(jìn)
    的頭像 發(fā)表于 02-09 16:45 ?1091次閱讀
    TMCM-1316:<b class='flag-5'>S</b> <b class='flag-5'>型</b><b class='flag-5'>加減速</b> + 256 微步 <b class='flag-5'>步進(jìn)</b>控制更精準(zhǔn)

    TMC4361A:實(shí)現(xiàn)步進(jìn)電機(jī)S曲線高速平穩(wěn)運(yùn)行!

    效的運(yùn)動控制的。TMC4361A是一款高度集成的小型運(yùn)動控制芯片,專為步進(jìn)電機(jī)驅(qū)動設(shè)計。它不僅支持經(jīng)典的梯形速度曲線,更內(nèi)置了S形斜坡和SixPoint斜坡發(fā)生器,
    的頭像 發(fā)表于 02-05 15:24 ?420次閱讀
    TMC4361A:<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b><b class='flag-5'>S</b>形<b class='flag-5'>曲線</b>高速平穩(wěn)運(yùn)行!

    ?DRV8711 步進(jìn)電機(jī)控制器技術(shù)文檔總結(jié)

    DRV8711器件是一個步進(jìn)電機(jī)控制器,它使用外部 N 溝道 MOSFET 驅(qū)動一個雙極步進(jìn)電機(jī)或兩個有刷直流電機(jī)。集成了微
    的頭像 發(fā)表于 10-17 15:09 ?1142次閱讀
    ?DRV8711 <b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>控制器技術(shù)文檔總結(jié)

    基于L6482的步進(jìn)電機(jī)驅(qū)動評估板技術(shù)解析

    集成的解決方案,適用于驅(qū)動微步進(jìn)兩相雙極步進(jìn)電機(jī)。它將用于N溝道MOSFET功率級的雙路全橋柵極驅(qū)動器與嵌入式非耗散過流保護(hù)相結(jié)合。得益于新的電流控制,通過自適應(yīng)衰減模式實(shí)現(xiàn)1/16微
    的頭像 發(fā)表于 10-17 11:44 ?839次閱讀
    基于L6482的<b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>驅(qū)動評估板技術(shù)解析

    基于ST EVL6480評估板的步進(jìn)電機(jī)驅(qū)動技術(shù)解析

    1/128步進(jìn)分辨率的微步進(jìn)。數(shù)字控制內(nèi)核可生成用戶定義的運(yùn)動曲線,并可通過專用寄存器輕松設(shè)置加速、速度、減速或目標(biāo)位置。所有命令和數(shù)據(jù)寄存器均通過標(biāo)準(zhǔn)5Mbit/
    的頭像 發(fā)表于 10-17 11:41 ?771次閱讀
    基于ST EVL6480評估板的<b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>驅(qū)動技術(shù)解析

    只是加減速和轉(zhuǎn)彎,為啥自動駕駛這么難實(shí)現(xiàn)?

    并不是那么容易?自動駕駛汽車為何發(fā)展這么多年,還是沒有實(shí)現(xiàn)L5?今天智駕最前沿就來和大家聊聊這個話題。 車輛的運(yùn)行軌跡看似簡單,但并不是簡單地“往前跑”或“停下來”那么簡單。任何一次加減速,都與車輛的質(zhì)量、輪胎與
    的頭像 發(fā)表于 06-27 12:20 ?751次閱讀
    只是<b class='flag-5'>加減速</b>和轉(zhuǎn)彎,為啥自動駕駛這么難<b class='flag-5'>實(shí)現(xiàn)</b>?

    升降速曲線對直線電機(jī)系統(tǒng)性能影響的研究

    Matlab仿真證明二次速度曲線是目前最適用于高速高精直線電機(jī)運(yùn)動控制系統(tǒng)的加/減速曲線,并在帶前饋的直線電機(jī)伺服實(shí)驗平臺上進(jìn)行了驗證實(shí)驗。
    發(fā)表于 06-17 08:48

    實(shí)時生成步進(jìn)電機(jī)速度曲線

    一種用于步進(jìn)電機(jī)加速度的新算法可以實(shí)現(xiàn)速度曲線的實(shí)時參數(shù)化和計算。該算法可以在低端微控制器上運(yùn)行,只使用簡單的定點(diǎn)算術(shù)運(yùn)算并且不使用數(shù)據(jù)表。它以恒定的加速度和
    發(fā)表于 05-14 15:09

    線性模組為什么會限定一個加減速時間?

    在工業(yè)自動化領(lǐng)域,線性模組作為精密傳動系統(tǒng)的核心部件,其加減速時間的設(shè)定直接影響設(shè)備性能與壽命。通過對運(yùn)動控制原理的深入分析可以發(fā)現(xiàn),加減速時間的限定是機(jī)械結(jié)構(gòu)強(qiáng)度、電機(jī)特性、運(yùn)動精度、能耗管理等
    的頭像 發(fā)表于 05-11 17:04 ?1414次閱讀
    線性模組為什么會限定一個<b class='flag-5'>加減速</b>時間?
    紫云| 六枝特区| 富蕴县| 安顺市| 定西市| 镇安县| 酒泉市| 盘山县| 龙口市| 龙海市| 七台河市| 滨州市| 土默特左旗| 杭州市| 牙克石市| 乌审旗| 南江县| 琼结县| 莎车县| 焉耆| 仁化县| 安国市| 抚顺市| 尤溪县| 含山县| 珠海市| 西华县| 万安县| 青川县| 和林格尔县| 揭东县| 洪泽县| 大安市| 苏尼特右旗| 南华县| 邳州市| 临江市| 商南县| 易门县| 山西省| 辽源市|