观看麻豆影视文化有限公司-国产 高清 在线-国产 日韩 欧美 亚洲-国产 日韩 欧美 综合-日日夜夜免费精品视频-日日夜夜噜

stm32步進電機控制程序系統(步進電機控制程序編寫)

  • 生活
  • 2023-04-24 12:57

表面

為了實行步進電機的緩慢啟停以及制止轉高轉速時不失步停轉。在步進電機啟用、遏止進程中,須要沿用加放慢的算法對啟用進程舉行遏制。S弧線是加放慢遏制最理念的計劃。然而S弧線的公式以及遏制進程都比擬攙雜。鑒于單片機實行這一算法須要有深沉的數學以及單片機軟硬件安排本領。

本視頻從淺入深引見S弧線加減數的表面、編制程序與試驗。

將S弧線分割化,在所有加放慢進程中,以確定的功夫間隙革新頻次,總的革新度數為2*N,i表白為第i次的革新,則第i次革新的頻次f(i)表白為:

個中fb為發端的頻次,fr是最后運轉的頻次,α是弧線的舒卷系數,普遍不妨取3-5之間的常數。

比方,啟用加快,發端頻次為400Hz,運轉頻次為5KHz。

遏止放慢,發端頻次為5KHz,遏止頻次為400Hz,

加放慢的功夫均為1s,按10ms的功夫間隙革新頻次,所有革新100次,α取5。

則不妨繪制以次的加放慢弧線:

編制程序

經過以次辦法實行實行步進電機的S弧線的加放慢遏制:

擺設1ms的準時器以及1ms的阻礙步調在阻礙步調中對加放慢的頻次革新度數i舉行計數擺設爆發步進電機啟動旗號的PWM模塊,樹立PWM的準時阻礙以及阻礙步調在PWM的準時阻礙步調中,計劃暫時革新度數對應的頻次,并按出來的頻次革新PWM的頻次以及占空比在PWM的準時阻礙步調中,計劃步進電機運轉的步數,即使到達樹立的步數減去遏止的S弧線放慢運轉所樹立的步數,則發端放慢運轉。同聲檢驗和測定外部輸出,即使有須要遏止運轉的輸出前提,則發端放慢運轉。所有加放慢遏制進程的難點在乎:

步進電機的計步以及頻次革新須要在每一個PWM阻礙中舉行。步進電機的運轉頻次最高到40KHz,這種頻次下,PWM的準時阻礙周期到達了25us,PWM準時器阻礙步調運轉總功夫盡管小,按照體味起碼小于阻礙周期的30%,即7.5us。一旦勝過這個數值,引導一切阻礙步調(囊括PWM準時阻礙步調)漏運轉,基礎主步調沒轍運轉,引導所有遏制器佯死局面。按照S弧線的公司是一個攙雜的非線性的指數浮點數演算,須要奢侈洪量的功夫,徑直挪用C談話的庫因變量計劃這一數值大概奢侈幾十上百毫秒。為領會決S弧線的演算功夫題目,鑒于STM32F103,我沿用了查表法,簡直辦法如次:

1.將α值設置5,

的取值范疇為-5~5之間。

2.在所有加放慢進程中,表白式

在取值范疇-5~5內平均取1024個數值,獲得數值表。

3.設置一個unsignedshort型有1024個元素的const典型的數組,用來保存數值表。

4.Const數組保存在里面的flash,數值表共占用2048字節。

STM32F103RTC6共256K,步調組和樹立參數占用48K,bootloader步調占用了8K,長途晉級空間占用了100K,暫時運用步調只用到40K安排。

結余60K安排的空間,騰出2K的空間來保存數值表,有空間,即是這么大肆。

5.在阻礙步調中,按照總的革新度數以及暫時的革新計數值,計劃

值,再映照到0-1023的數值有的索引值,經過索引獲得數值。

6.須要提防的是stm32f103不扶助浮點數的演算,以是對于浮點數的演算,須要折算成乘以一個數再除以另一個數,比方*α,須要變化為*65535/13107。

底下一段代碼是按照革新的計數值獲得頻次的因變量:

U16fnMC_GetFreq(U16n,U16halftn,U16alpha,U16minfreq,U16maxfreq){//alpha=alpha*4096signedintudataA;signedshortuiDataA;U16uiRes;U32uwData;udataA=(signedint)alpha*(signedint)n;udataA=(signedint)udataA/halftn;if(udataA>32767){udataA=32767;}uiDataA=(signedshort)alpha-(signedshort)udataA;uiDataA=(signedshort)4*4096-uiDataA;if(uiDataA<0){uiDataA=0;}uiRes=(U16)uiDataA;uiRes=uiRes/32;//*1023/8/4096if(uiRes>1023){uiRes=1023;}udataA=(signedint)(maxfreq-minfreq)*g_mc_uchExp[uiRes];udataA=udataA/65535;uiDataA=(signedint)udataA;uiDataA+=minfreq;if(uiDataA<200){uiDataA=200;}return(uiDataA);}底下一段代碼是爆發步進電機遏制旗號的PWM周期阻礙步調:

intdata;U16freq;STRMotorRegs*motor;motor=&g_motor_regs[0];MOTOR_A_CLEARINT();motor->steps++;data=(int)MOTOR_A_STEPS_GET();if(motor->direction==0){data=data+1;}else{data=data-1;}MOTOR_A_STEPS_SET(data);freq=motor->runfrequency;if(motor->runstate==MOTOR_RUN_STATE_INC){if(motor->runtimer>=motor->starttime){motor->runstate=MOTOR_RUN_STATE_IDLE;}else{freq=fnMC_GetFreq(motor->runtimer,motor->halfstarttime,motor->alpha,motor->startfreq,motor->runfrequency);//U16n,U16halftn,U16alpha,U16maxfreq,U16minfreq)}motor->runsnapfreq=freq;}elseif(motor->runstate==MOTOR_RUN_STATE_IDLE){if(motor->totalstep<=(motor->steps+motor->stopremainstep)){motor->runstate=MOTOR_RUN_STATE_DEC;motor->runtimer=0;}motor->runsnapfreq=freq;}else{if(motor->runtimer>=motor->stoptime){freq=motor->stopfreq;}else{freq=fnMC_GetFreq(motor->runtimer,motor->halfstoptime,motor->alpha,motor->runsnapfreq,motor->stopfreq);//U16n,U16halftn,U16alpha,U16maxfreq,U16minfreq)}}if(motor->steps>=motor->totalstep){motor->starting=FALSE;}if(FALSE==motor->starting){MOTOR_A_DISABLE();}else{motor->curfrequency=freq;fnMT_Cal_MotorA_TimeConf();}試驗

底下是天生S弧線數值表、遏制步進電機啟用、遏止的視頻,從視頻上不妨鮮明看到啟用時慢加快->快加快->慢加快的進程,以及遏止時慢放慢->快放慢->慢放慢的進程。

猜你喜歡

主站蜘蛛池模板: 亚洲成人高清在线观看 | 久草国产在线观看 | 欧美美女视频网站 | 亚欧美图片自偷自拍另类 | 在线视频一区二区三区三区不卡 | 色综合天天综合网看在线影院 | 久久久久国产 | 色综合色狠狠天天久久婷婷基地 | 亚洲欧美久久精品1区2区 | 欧美成年免费a级 | 韩国一级性生活片 | 女人叉开腿让男人捅 | 99久久精品国产一区二区成人 | 国产午夜毛片一区二区三区 | 美女张开腿让男人桶下面 | 国产精品久久一区一区 | 免费一级毛片私人影院a行 免费一级毛片无毒不卡 | 亚洲美色综合天天久久综合精品 | 成人国产在线视频 | tubesexvideo日本护士 | 日韩欧美一二区 | 日本精品一在线观看视频 | 肥婆毛片 | 久草免费在线播放 | 日韩专区欧美 | 视频一区久久 | 亚洲精品一区二区在线观看 | 欧美视频精品在线 | 日本一级看片免费播放 | 久久久精品久久 | 在线观看的毛片 | 伊人久热这里只有精品视频99 | 大学生一级一片第一次欧美 | 成人在线精品 | ccav在线永久免费看 | 亚洲成人91 | 久久亚洲国产午夜精品理论片 | 日韩一级视频 | 手机在线精品视频 | 一区自拍 | 日日摸人人看97人人澡 |