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

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

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

STM32步進電機驅(qū)動的算法

汽車玩家 ? 來源:CSDN ? 作者:CSDN ? 2021-07-23 15:01 ? 次閱讀

在脈沖模式下,步進電機啟動器的脈沖頻率與速度成正比,函數(shù)void CalculateSModelLine(float fre[], unsigned short period[], float len, float fre_max, float fre_min, float flexible)主要目的就是生成每一個細分步加速的速度。芯片用的是stm32f103c8t6,驅(qū)動器用的是2DM420。

程序流程如下:

  • STM32硬件基本初始化,主要是針對定時器

  • 調(diào)用函數(shù)CalculateSModelLine()生 成每一個細分步定時器的自動重裝載值(實際就是改變脈沖的周期)

  • 打開定時器

  • 更新中斷發(fā)生,將數(shù)組中的數(shù)據(jù)賦值給定時器的自動重裝載寄存器

  • 跳出中斷后脈沖頻頻率就變化了

  • 下一次更新中斷產(chǎn)生


對應(yīng)的計算接口code:

/* calculate the Period and Freq array value, fill the Period value into the Period register during the timer interrupt.

*calculate the acceleration procedure , a totally 1000 elements array.

* parameter fre[]: point to the array that keeps the freq value.

* period[]: point to the array that keeps the timer period value.

* len: the procedure of acceleration length.it is best thing to set the float number, some compile software maybe transfer error if set it as a int

* fre_max: maximum speed, frequency vale.

* fre_min: start minimum speed, frequency vale. mind : 10000000/65535 = 152, so fre_min can't less than 152.

* flexible: flexible value. adjust the S curves

*/

void CalculateSModelLine(float fre[], unsigned short period[], float len, float fre_max, float fre_min, float flexible)

{

int i=0;

float deno ;

float melo ;

float delt = fre_max-fre_min;

for(; i

{

melo = flexible * (i-len/2) / (len/2);

deno = 1.0 / (1 + expf(-melo)); //expf is a library function of exponential(e)

fre[i] = delt * deno + fre_min;

period[i] = (unsigned short)(10000000.0 / fre[i]); // 10000000 is the timer driver frequency

}

return ;

}

文章整合自:CSDN

編輯:ymf

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

    關(guān)注

    53

    文章

    8263

    瀏覽量

    146683
  • 步進電機
    +關(guān)注

    關(guān)注

    151

    文章

    3115

    瀏覽量

    147649
  • 脈沖模式
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    6456
收藏 人收藏

    評論

    相關(guān)推薦

    基于STM32F405RGT6的TMC2660步進電機驅(qū)動器,附帶原理圖+PCB

    驅(qū)動電路主要包括以下部分,信號接口電路,邏輯控制電路,功率開關(guān)電路,保護電路。TMC2660是步進電機驅(qū)動芯片,集成了先進的電流控制算法、微
    的頭像 發(fā)表于 12-14 19:24 ?556次閱讀
    基于<b class='flag-5'>STM32</b>F405RGT6的TMC2660<b class='flag-5'>步進</b><b class='flag-5'>電機</b><b class='flag-5'>驅(qū)動</b>器,附帶原理圖+PCB

    什么是步進電機驅(qū)動器?它具有什么特點?

    步進電機驅(qū)動器是一種用于控制步進電機運動的電子設(shè)備。它通過接收來自控制系統(tǒng)的脈沖信號,精確地控制步進
    的頭像 發(fā)表于 10-24 11:52 ?487次閱讀

    51步進電機仿真程序

    電子發(fā)燒友網(wǎng)站提供《51步進電機仿真程序.rar》資料免費下載
    發(fā)表于 09-24 17:20 ?3次下載

    步進電機可能因素

    ? ? ? 步進電機是一種特殊類型的電機,通過一定的脈沖信號驅(qū)動,以步進的方式進行轉(zhuǎn)動,具有精準位置控制和簡單
    的頭像 發(fā)表于 07-23 09:00 ?625次閱讀
    <b class='flag-5'>步進</b><b class='flag-5'>電機</b>失<b class='flag-5'>步</b>可能因素

    步進電機步進驅(qū)動器計算方法

    步進電機是一種將電脈沖信號轉(zhuǎn)換為機械角位移的執(zhí)行元件,廣泛應(yīng)用于自動化設(shè)備、機器人、打印機等領(lǐng)域。步進電機驅(qū)動器是
    的頭像 發(fā)表于 06-12 09:41 ?1443次閱讀

    步進電機驅(qū)動器細分怎么調(diào)

    電機驅(qū)動器細分的定義 步進電機驅(qū)動器細分是指通過增加步進電機
    的頭像 發(fā)表于 06-12 09:40 ?2350次閱讀

    75FB003步進電機有幾種方法

    75FB003步進電機的工作原理、特點、驅(qū)動方式、控制方法以及應(yīng)用領(lǐng)域等方面的內(nèi)容。 75FB003步進電機的工作原理
    的頭像 發(fā)表于 06-12 09:30 ?491次閱讀

    如何正確選擇步進電機驅(qū)動

    步進電機驅(qū)動器是步進電機系統(tǒng)中的重要組成部分,它負責將控制信號轉(zhuǎn)換為步進
    的頭像 發(fā)表于 06-05 18:04 ?2380次閱讀

    控制步進電機驅(qū)動NSD8381調(diào)試指南

    本文將結(jié)合具體的案例,針對納芯微全新發(fā)布的微控制步進電機驅(qū)動NSD8381,在用于步進電機控制
    的頭像 發(fā)表于 05-29 14:10 ?2794次閱讀
    微<b class='flag-5'>步</b>控制<b class='flag-5'>步進</b><b class='flag-5'>電機</b><b class='flag-5'>驅(qū)動</b>NSD8381調(diào)試指南

    求助,關(guān)于STM32F030進行步進電機控制問題求解

    做一個項目用到STM32F030C8T6,在進行步進電機控制時,碰到過很多讓人心酸的問題,電機轉(zhuǎn)動無力,丟等等,目前卡了兩天了,希望從各位
    發(fā)表于 04-30 07:23

    基于52單片機的28BYJ48步進電機運用

    基于52單片機的28BYJ48步進電機運用
    發(fā)表于 04-10 08:28

    步進電機如何讓動起來?步進電機轉(zhuǎn)動原理

    42步進電機距角為1.8°,是由定子和轉(zhuǎn)子的齒數(shù)共同決定的,定子有48齒,轉(zhuǎn)子有50齒,具體是怎么算的,感興趣的同學可以自行學習,今天的重點是讓步進
    發(fā)表于 04-01 10:40 ?2619次閱讀
    <b class='flag-5'>步進</b><b class='flag-5'>電機</b>如何讓動起來?<b class='flag-5'>步進</b><b class='flag-5'>電機</b>轉(zhuǎn)動原理

    步進伺服電機出現(xiàn)失現(xiàn)象的有哪些原因?

    步進伺服電機出現(xiàn)失現(xiàn)象,在工作中,這可真麻煩的事情。有沒有想過,為什么好好的步進伺服電機會出現(xiàn)失
    的頭像 發(fā)表于 03-19 08:44 ?881次閱讀
    <b class='flag-5'>步進</b>伺服<b class='flag-5'>電機</b>出現(xiàn)失<b class='flag-5'>步</b>現(xiàn)象的有哪些原因?

    步進電機的微驅(qū)動原理是什么

    驅(qū)動(Microstepping)是一種細分步進電機距的技術(shù),允許電機以比全
    的頭像 發(fā)表于 02-06 09:46 ?2120次閱讀

    步進電機驅(qū)動電路原理 步進電機驅(qū)動器可以通用嗎

    步進電機驅(qū)動電路原理是指通過特定的電信號驅(qū)動步進電機工作的原理。而
    的頭像 發(fā)表于 01-24 10:46 ?2615次閱讀