在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(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)的項(xiàng)目比較少,最近有個(gè)項(xiàng)目涉及到步進(jìn)電機(jī)的精確控制,參考了一些資料研究了一下S型曲線加減速,這里總結(jié)一下分享給大家。

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

  • Fmin為加速的起始頻率。

  • Fmax為加速的最大頻率。

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

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

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

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

//功能:S加速曲線初始化//參數(shù)1 *pbuff          計(jì)算出的定時(shí)器的周期//參數(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í)器的計(jì)數(shù)頻率。 之后要做的就是在加減速過程中,每輸出一個(gè)PWM脈沖,重新裝載一次定時(shí)器周期。具體怎樣輸出指定個(gè)數(shù)PWM來控制步進(jìn)電機(jī),可參考之前的文章《STM32定時(shí)器產(chǎn)生指定個(gè)數(shù)脈沖》。在PWM中斷中,將計(jì)算好的S曲線數(shù)組,重新裝載到定時(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]);//計(jì)算下一個(gè)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]);//計(jì)算下一個(gè)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是自己定義的一個(gè)結(jié)構(gòu)體:


typedef struct{  uint8_t Status;   //狀態(tài)  int32_t Count;     //加減速過程脈沖計(jì)數(shù)  int32_t CountMax;  //最大加速脈沖數(shù)  uint32_t PWMcount;//PWM計(jì)數(shù)  uint32_t PWMneed; //需要輸出的PWM總數(shù)}Motor_t;
啟動(dòng)時(shí),初始化參數(shù),啟動(dòng)定時(shí)器輸出PWM即可:
//PWM--需要輸出的脈沖個(gè)數(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);  //啟動(dòng)定時(shí)器PWM輸出}
來看一下效果,可以看到,PWM的頻率是逐漸增大的。實(shí)際測試效果也不錯(cuò)。

審核編輯 :李倩

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

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    減速電機(jī)概述了解多少?

    減速微型電機(jī)等。 按用途 :可分為驅(qū)動(dòng)用微型減速電機(jī)和控制用微型減速電機(jī)。前者包括電動(dòng)工具用微型
    發(fā)表于 12-23 15:16

    行星減速步進(jìn)電機(jī)步進(jìn)電機(jī)的區(qū)別

    步進(jìn)電機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制電機(jī)。其工作原理是通過電子電路將直流電分為多相序控制電流,使用這種電流給步進(jìn)電機(jī)供電
    的頭像 發(fā)表于 11-16 15:11 ?356次閱讀
    行星<b class='flag-5'>減速</b><b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>與<b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>的區(qū)別

    減速電機(jī)該如何分類?

    的分類方式: 按減速機(jī)構(gòu)的類型分類 : 齒輪減速電機(jī):使用齒輪組來降低轉(zhuǎn)速,是最常用的減速電機(jī)類型。 行星
    的頭像 發(fā)表于 10-24 10:19 ?416次閱讀

    步進(jìn)電機(jī)如何在加減速過程中控制技術(shù)?

    步進(jìn)電機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)換為角位移或線位移的電機(jī),廣泛應(yīng)用于各種自動(dòng)化控制系統(tǒng)中。在加減速過程中,步進(jìn)
    的頭像 發(fā)表于 10-23 10:02 ?455次閱讀

    步進(jìn)電機(jī)型號(hào)與步進(jìn)電機(jī)命名規(guī)則

    混合式步進(jìn)電機(jī)代碼:SM。 系列代碼:H、高性能二相步進(jìn)電機(jī);C、三相步進(jìn)電機(jī);E、五相
    的頭像 發(fā)表于 08-26 09:42 ?200次閱讀
    <b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>型號(hào)與<b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>命名規(guī)則

    減速步進(jìn)電機(jī)工作原理你知道多少?

    減速步進(jìn)電機(jī)是一種將電機(jī)的旋轉(zhuǎn)運(yùn)動(dòng)轉(zhuǎn)換為齒輪的直線運(yùn)動(dòng)的電機(jī)。它的結(jié)構(gòu)包括固定部分、旋轉(zhuǎn)部分和傳動(dòng)部分。
    的頭像 發(fā)表于 08-22 10:20 ?410次閱讀
    <b class='flag-5'>減速</b><b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>工作原理你知道多少?

    伺服電機(jī)加減速機(jī)慣量怎么計(jì)算

    伺服電機(jī)加減速機(jī)系統(tǒng)是現(xiàn)代工業(yè)自動(dòng)化領(lǐng)域中常見的一種傳動(dòng)裝置,它通過將伺服電機(jī)的高速旋轉(zhuǎn)轉(zhuǎn)化為減速機(jī)的低速大扭矩輸出,實(shí)現(xiàn)對負(fù)載的精確控制。
    的頭像 發(fā)表于 06-14 10:54 ?3488次閱讀

    stm32控制步進(jìn)電機(jī)加減速的穩(wěn)定性?

    各位: 我最近接了一個(gè)項(xiàng)目做agv小車的驅(qū)動(dòng)部分。使用兩個(gè)定時(shí)器和io配合輸出脈沖,控制步進(jìn)電機(jī)。控制上沒問題,但是加減速和轉(zhuǎn)彎的過程不是很平穩(wěn),放一杯水在上邊晃動(dòng)的很厲害。我是用的方法就是勻速變化
    發(fā)表于 05-06 07:21

    STM32的電機(jī)庫適合用來做步進(jìn)電機(jī)嗎? 里面包含有加減速算法沒呢?

    STM32 的電機(jī)庫 適合用來做步進(jìn)電機(jī)嗎? 里面包含有加減速算法沒呢?
    發(fā)表于 05-06 07:02

    如何用stm32f103zet6控制伺服電機(jī)加減速運(yùn)動(dòng)?

    想用stm32f103zet6控制伺服電機(jī)加減速運(yùn)動(dòng),不知該怎么做,請大神指教。具體情況是有個(gè)機(jī)械凸輪,有一根頂桿頂著凸輪邊沿,隨著凸輪轉(zhuǎn)動(dòng)及其外徑的變化,水平頂桿會(huì)沿水平方向作直線運(yùn)動(dòng)。現(xiàn)在可以
    發(fā)表于 04-30 08:00

    步進(jìn)電機(jī)如何減速

    步進(jìn)電機(jī)是一種直接將電脈沖轉(zhuǎn)化為機(jī)械運(yùn)動(dòng)的機(jī)電裝置,通過控制施加在電機(jī)線圈上的電脈沖順序、 頻率和數(shù)量, 可以實(shí)現(xiàn)步進(jìn)
    的頭像 發(fā)表于 03-23 08:42 ?488次閱讀
    <b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>如何<b class='flag-5'>減速</b>?

    如何快速開發(fā)高性能步進(jìn)電機(jī)控制驅(qū)動(dòng)系統(tǒng)RS485 UART通訊Modebus協(xié)議防丟步節(jié)能靜音驅(qū)動(dòng)TMCM1290

    實(shí)現(xiàn)復(fù)雜的運(yùn)動(dòng)控制邏輯,提高系統(tǒng)的自動(dòng)化水平。 三、高級(jí)功能 EightPoint加減速曲線:TMCM-1290采用EightPoint加減速曲線
    發(fā)表于 03-10 20:44

    混合式步進(jìn)電機(jī)的結(jié)構(gòu)圖

    混合式步進(jìn)電機(jī)(Hybrid Stepper Motor)結(jié)合了永磁式和變極式步進(jìn)電機(jī)的特點(diǎn),以實(shí)現(xiàn)高性能和高可靠性。 合式
    的頭像 發(fā)表于 02-06 10:01 ?987次閱讀
    混合式<b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>的結(jié)構(gòu)圖

    步進(jìn)電機(jī)工作原理 步進(jìn)電機(jī)和伺服電機(jī)的區(qū)別

    的應(yīng)用,如打印機(jī)、數(shù)控機(jī)床等。 步進(jìn)電機(jī)的工作原理可以分為兩種類型:可變磁場步進(jìn)電機(jī)和磁轉(zhuǎn)子
    的頭像 發(fā)表于 01-22 10:15 ?1063次閱讀

    解析步進(jìn)電機(jī)三軸聯(lián)動(dòng)的快速加減速算法研究

    步進(jìn)電機(jī)具有快速啟停能力強(qiáng)、高、轉(zhuǎn)速容易控制的特點(diǎn)。但是,步進(jìn)電動(dòng)機(jī)應(yīng)避免轉(zhuǎn)動(dòng)速率的突變,而且從停止到開始轉(zhuǎn)動(dòng)有一個(gè)較低的起動(dòng)頻率,隨后才可以平緩地過渡到較高的轉(zhuǎn)速。相應(yīng)地在步進(jìn)
    發(fā)表于 01-19 14:55 ?1475次閱讀
    解析<b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>三軸聯(lián)動(dòng)的快速<b class='flag-5'>加減速</b>算法研究
    主站蜘蛛池模板: 黄色一级片在线观看| 艹逼视频免费| 日韩大胆| 日本xxxx色视频在线观看| 色综合网天天综合色中文男男| 天堂网| 手机天堂网| 人人舔| 黄色免费毛片| 国产精品你懂的在线播放| 91九色成人| 欧美特黄特色aaa大片免费看| 国产乱子伦| 2015xxxx欧美| 浮荡视频在线观看免费| 亚洲狠狠婷婷综合久久久久图片| 天天看天天摸天天操| 日本久久久| 国产专区青青草原亚洲| 一级精品视频| 韩国午夜影院| 亚洲综合区图片小说区| 中日韩毛片| 日本高清色图| 国产馆精品推荐在线观看| 天天天天操| 欲色啪| 精品一区二区三区视频| 天堂最新版资源www在线| 免费欧美| 夜夜操操| 国产乱子伦| 老师啊灬啊灬用力啊快224视频| 性欧美高清精品videos| 女人被狂躁视频免费网站| aa毛片| 国产精品久久久久久久久免费| 亚洲天堂二区| 四虎影裤| 国产一级特黄aa大片在线| 天堂8资源在线官网资源|