欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 關(guān)于步進電機梯形加減速單片機程序 [打印本頁]

作者: 叫大個不叫老朱    時間: 2023-9-6 22:14
標(biāo)題: 關(guān)于步進電機梯形加減速單片機程序
請教各位大佬個問題,我寫了一個步進電機梯形加減速程序,但是運行時不夠平順,實際運行時表現(xiàn)就是急啟急停,我是業(yè)余初學(xué)者,學(xué)歷不高,想了很久,網(wǎng)上也沒有實際的例程,有的看不懂,如果哪位大佬有空的話能不能幫我改一下,感激不敬。還有一個問題就是如果多個步進脈沖放在主程序內(nèi)的話因為定時器的影響,步進運行時會卡頓,所以只能放在定時器內(nèi),但是所有步進程序都放在定時器內(nèi)的話,又太多了,擔(dān)心會出錯,這兩個問題困擾了很久不知道怎么改,芯片用的STC89c52rc單片機
感謝!。!

下面是我的單片機代碼,目前是只有加速


#include<reg52.h>
#define uint unsigned
#define uchar unsigned

uchar TY1,TY2;//Y軸
uint M2;//脈沖數(shù)

void Delay(uint);//延時子程序
void YY();//Z軸

sbit Y2=P2^1;//Y        
sbit A1=P3^4;//按鍵1

void main()//主函數(shù)
        {
                TY2=20;//加速初始
                EA=1;
                TMOD=0x11;
                ET0=1;
                TH0=(65536-400)/256;
                TL0=(65536-300)%256;
                TR0=1;//啟動定時器0

                while(1)
                        {        
                                Delay(6);
                        }
        }

void timer0() interrupt 1 //定時器0
{
        TH0=(65536-400)/256;
        TL0=(65536-300)%256;
        TY1++;//進入中斷計數(shù)
        if(TY1>=TY2)//中斷數(shù)對比
                {
                        YY();//調(diào)用Y軸步進
                        TY2--;
                        TY1=0;
                        if(TY2<=1)//勻速
                                {
                                        TY2=1;
                                }
                }
}
void YY()//發(fā)送脈沖和脈沖計數(shù)
        {
                Y2=1;
                Y2=0;
                M2++;
        }

void Delay(uint n)//延時函數(shù)
{
uint i,j;
for(i=0;i<n;i++)
  for(j=0;j<10;j++);
}




作者: xuyaqi    時間: 2023-9-7 06:26
要想步進電機運行平順,應(yīng)該選用帶細(xì)分的步進電機驅(qū)動器。
作者: glinfei    時間: 2023-9-7 08:54
梯形加速是角加速度線性啊,你這想做的是脈沖加速線性,可能思路就不大對。不過這么做也可以緩起緩?fù)。建議你下載個例程吧。如果堅持你的程序,建議所有變量要賦值,特別是M2必須有初值。
作者: 叫大個不叫老朱    時間: 2023-9-7 14:33
xuyaqi 發(fā)表于 2023-9-7 06:26
要想步進電機運行平順,應(yīng)該選用帶細(xì)分的步進電機驅(qū)動器。

細(xì)分相當(dāng)于把轉(zhuǎn)速調(diào)慢了,那加減速不就沒有意義了
作者: 叫大個不叫老朱    時間: 2023-9-7 14:34
glinfei 發(fā)表于 2023-9-7 08:54
梯形加速是角加速度線性啊,你這想做的是脈沖加速線性,可能思路就不大對。不過這么做也可以緩起緩?fù)!=ㄗh ...

角加速是什么意思呢,什么樣的思路,我只會脈沖
作者: yzwzfyz    時間: 2023-9-7 14:55
試試:將中斷時間間隔拉長一點。
作者: 叫大個不叫老朱    時間: 2023-9-7 15:19
yzwzfyz 發(fā)表于 2023-9-7 14:55
試試:將中斷時間間隔拉長一點。

這個試過了,中斷時長拉長只是電機速度減慢了,加減速還是不夠平順
作者: Hephaestus    時間: 2023-9-7 17:04
急啟急停是夢寐以求的理想狀態(tài)好不好???步進電機的難點就是如何能更快的啟動停止而不丟步,樓主已經(jīng)做得很好,或者電機功率裕量足夠。
作者: dyx811    時間: 2023-9-7 17:55
實現(xiàn)加減速的構(gòu)思是如何的呢?我的理解是不是調(diào)節(jié)輸出脈沖頻率的變化來控制?我也想學(xué)學(xué)
作者: ColeYao    時間: 2023-9-7 18:29
   如圖,加速時使用PID加速,減速時使用某特定形狀的函數(shù)波形限速,使得速度降為0時剛好停在設(shè)定的目標(biāo)位置。這種加減速方式可以在很大速度范圍內(nèi)通用,缺點是加速和減速時的加速度波形不對稱,減速時的加速度值略大,但影響不大。

步進電機加減速波形_位移速度加速度.jpg (124.59 KB, 下載次數(shù): 49)

步進電機加減速波形_位移速度加速度.jpg

作者: 叫大個不叫老朱    時間: 2023-9-7 18:36
dyx811 發(fā)表于 2023-9-7 17:55
實現(xiàn)加減速的構(gòu)思是如何的呢?我的理解是不是調(diào)節(jié)輸出脈沖頻率的變化來控制?我也想學(xué)學(xué)

我也是這樣想的,但是前面有人說是角加速,不知道是什么意思
作者: xuyaqi    時間: 2023-9-7 19:00
叫大個不叫老朱 發(fā)表于 2023-9-7 14:33
細(xì)分相當(dāng)于把轉(zhuǎn)速調(diào)慢了,那加減速不就沒有意義了

把你沒細(xì)分前的一步電流到位,通過驅(qū)動器高速細(xì)分為多步電流階梯上升,下降到位,運行就比較平順。
作者: 叫大個不叫老朱    時間: 2023-9-7 19:24
xuyaqi 發(fā)表于 2023-9-7 19:00
把你沒細(xì)分前的一步電流到位,通過驅(qū)動器高速細(xì)分為多步電流階梯上升,下降到位,運行就比較平順。

這個太深奧
作者: yzwzfyz    時間: 2023-9-8 08:26
再拉大TY2試試。
作者: 叫大個不叫老朱    時間: 2023-9-8 09:55
yzwzfyz 發(fā)表于 2023-9-8 08:26
再拉大TY2試試。

TY2拉大后只是前半段脈沖頻率拉長了,接近勻速階段還是會急加速,就是接近勻速這個階段,啟停都是這個階段太急了
作者: dongdongxixi    時間: 2023-9-18 14:37
用定時器中斷去做,每進一次中斷改變輸出的占空比,就可以達(dá)到梯形加減速效果
作者: 叫大個不叫老朱    時間: 2023-9-19 23:47
dongdongxixi 發(fā)表于 2023-9-18 14:37
用定時器中斷去做,每進一次中斷改變輸出的占空比,就可以達(dá)到梯形加減速效果

這樣只能改變進入中斷次數(shù)的變量,不能改變定時器初值,因為還有別的電機公用一個定時器,如果改變進入中斷次數(shù)的話就是我現(xiàn)在遇到的問題
作者: lkc8210    時間: 2023-9-20 10:14
試試這段
  1. uchar TY3 = 0;
  2. void timer0() interrupt 1 //定時器0
  3. {
  4.     TH0 = (65536 - 400) / 256;
  5.     TL0 = (65536 - 400) % 256;
  6.     TY1++;//進入中斷計數(shù)

  7.     if(TY1 >= TY2) //中斷數(shù)對比
  8.     {
  9.         YY();//調(diào)用Y軸步進
  10.         if(TY3++ >= 10)
  11.         {
  12.             TY3 = 0;
  13.             TY2--;
  14.         }
  15.         TY1 = 0;
  16.         if(TY2 <= 1) //勻速
  17.         {
  18.             TY2 = 1;
  19.         }
  20.     }
  21. }
復(fù)制代碼




作者: dongdongxixi    時間: 2023-9-20 14:34
叫大個不叫老朱 發(fā)表于 2023-9-19 23:47
這樣只能改變進入中斷次數(shù)的變量,不能改變定時器初值,因為還有別的電機公用一個定時器,如果改變進入中 ...

我說的定時器的意思是PWM的意思,每進一次PWM中斷,改變一下周期和占空比
作者: 叫大個不叫老朱    時間: 2023-9-28 00:57
lkc8210 發(fā)表于 2023-9-20 10:14
試試這段

謝謝,確實有改善,但是在接近最高速時還是加速過快
作者: 叫大個不叫老朱    時間: 2023-9-28 00:58
dongdongxixi 發(fā)表于 2023-9-20 14:34
我說的定時器的意思是PWM的意思,每進一次PWM中斷,改變一下周期和占空比

好的,我研究研究




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1