請問微控制器控制步進電機脈衝頻率如何思路。C

時間 2021-10-14 20:16:12

1樓:匿名使用者

需要照顧兩個因素:

一是不要高於該型步進電機允許的最高頻率;

二是加速過程(即頻率由小到大的變化過程)和減速過程(即頻率由大到小的變化過程)中加速度不可過大以致於扭矩超過了該型步進電機允許的扭矩。

否則都有可能發生失步。

第一條比較簡單,第二條牽涉到機械負載的轉動慣量,計算比較複雜。但是大多數應用中,技術上的餘量都相當大,所以也可以不計算,而用試驗的方法來確定。一般只要注意頻率不要「突變」,而要「漸變」,最好構成「勻加速」、「勻減速」。

如果試驗後發現有失步,只要將加速度減小些,再試試就行了。

(補充:按步進電機原理,失步通常必須有一定積累才會發生,若偶然有一兩步加速度超限,只要緊接著下幾步不超,通常也不會失步。所以,我上面說的最好「勻加速」、「勻減速」,假如因為軟體實現困難做不到完全均勻,做成小台階式的「階梯型加速、減速」,常常也是可以的。

)(再補充:

若經常是固定頻率,您可以用定時器控制頻率。但若頻率經常變化,這樣就比較麻煩。

介紹一下我的做法:

將定時器設成固定的定時中斷,頻度要高於用到的步進電機的最高頻率。例如我的系統中步進電機最高頻率1khz左右,但我的中斷週期設成0.5ms。

然後在每次中斷中都執行一次以下程式。

void rout(unsinged int f)

xs &= 0xffff;}注:

其中的引數f是當前頻率,但需要換算為「步/節拍」,同時放大65536倍(也就等於將小數點右移16個二進位制位)以便用unsigned int數表達小於1的「頻率」值(例如我的節拍是0.5ms,頻率若為500hz就換算為0.25步/節拍,放大65536倍後就是16384)。

其中靜態變數xs是該傳送的步數累計,看做保留了16位小數的32位數。故「xs>>16」就相當於取出了它的「整數部分」。步數累計超出1步時「xs>>16」就為1。

xs初值0x8000等於預留了半步,起「四捨五入」的效果。

如此,當頻率是0.5步/節拍時,執行此程式就會每隔一次輸出1步;當頻率是0.15步/節拍時,就會勻開來每100次中輸出15步;……等等。)

2樓:大鵬和小鳥

一般來講步進電機在購買的時候隨機的說明書或者產品質量保證條件裡邊有一項電機的最高響應頻率,就是說高於這個頻率電機可能丟步。那麼微控制器也好,硬體也好,既然是為這個電機服務,那麼其輸出的步進脈衝頻率一定不能高於電機引數中的響應頻率。步進電機的響應頻率各不相同,需要購買時甄別。

3樓:匿名使用者

有加速曲線的,否則失步,可以用時器,到時前進或後退一步,改變初值,就改變了頻率

4樓:做而論道

樓主先說說你的微控制器控制步進電機,是怎麼控制的?頻率是多少?

然後才能討論如何改變頻率。

----

上位機發來指令,比如16 代表 10進製20,意思是20步/s ,就可以定時1/20秒,即50ms,每到50ms,輸出一組脈衝即可。

5樓:匿名使用者

直接用三極體做驅動電路,不建議用達林頓管,電流太小,我的步進電機就無法用2003、2803驅動,我用的是兩級驅動,第一級用8050,第二級好像是用的b77,8050電流500ma,b77是中功率管,電流更大,足夠驅動.

微控制器如何控制步進電機 越詳細越好本人菜鳥不懂

南子欣 首先你需要解決的是一個步進電機的控制 查閱步進電機的資料 步進電機是一種作為控制用的特種電機,它的旋轉是以固定的角度 稱為 步距角 一步一步執行的,其特點是沒有積累誤差 精度為100 所以廣泛應用於各種開環控制。步進電機的執行要有一電子裝置進行驅動,這種裝置就是步進電機驅動器,它是把控制系統...

如何用電位器和微控制器控制步進電機轉角

hi漫海 步進電機轉角等於脈衝數除細設定數 專用驅器 再乘步距角 而電位器是模擬訊號,電位器作為輸入訊號,微控制器作為控制中心輸出訊號去控制步進電機的轉角。步進電機是將電脈衝訊號轉變為角位移或線位移的開環控制元步進電機件。在非超載的情況下,電機的轉速 停止的位置只取決於脈衝訊號的頻率和脈衝數,而不受...

步進電機脈衝頻率與輸出轉速的換算

餜挵澶氭潀 步進電機在整步是,1圈需要200個脈衝,即200hz時,電機速度1rps,8000hz時,轉40rps。半步時,1圈需要400個脈衝,即400hz時,電機轉速1rps,8000hz時,轉速20rps,4細分時,1圈需要800個脈衝,即800hz時,電機轉速1rps,8000hz時,轉速1...