步进电机加减速——梯形算法
1.聲明
1、這是我第一篇博客文章,如有錯誤請各位大佬指點,謝謝。
2、該篇文章是適合了解了步進電機基礎原理的學習者閱讀。
2.目的
使用要求與場合: 1、步進電機
2、速度變化較大
3、啟動停止頻繁
步進電機加減速算法目的:對于上述2、3的場合,步進電機容易出現丟步和過沖甚至無法啟動的現象,所以加入該算法來解決這一問題。
3. 算法實現
3.1加減速期望曲線
如圖1所示,該曲線是期望的加減速曲線。橫坐標t為時間,縱坐標ω為速度。以下三個參數有開發者設定。
accel:加速度
decel:減速度
step:總行程
圖1
3.2速度與脈沖周期有何關系
電機的調速與脈沖周期是有關系的,并且是正比例關系,脈沖周期越長,步進電機轉速越慢。
在梯形加速過程,速度變化是直線的,將該曲線截取加速過程放大并加入脈沖,如圖2所示。
圖2
圖中t0到t1這段時間為第一個脈沖的時間,t1到t2為第二個脈沖的時間
C0為第一個脈沖的定時器計數值
tt為定時器的計數周期,也就是頻率的倒數
距離=速度*時間
每給一個脈沖,步進電機行走一步,這時候步進電機旋轉的角度稱為步距角,用α表示,單位為弧度。
所以圖2中每個長方形的面積就是一個步距角,所以每個長方形面積相等。
3.3位置與加速度的關系
根據牛頓定律位移S=V0t+1/2at2,由于步進電機啟動初始速度為0,所以公式變成S=1/2at2。在這里用ω’表示加速度。所以公式變成S=1/2ω’t2。由于已知步距角和脈沖數(n),所以S=αn。
從而得到1/2ω’t2=αn
3.4脈沖周期與脈沖數和加速度的關系
由于t表示從t0到tn的時間,由于t0為0,所以tn=t,通過轉換,tn與加速度的關系如下:
tn=√(2*n *α/ω’)---
所以Cntt=t(n+1)-tn=(√(n+1)-√n)*√(2α/ω’)
得到Cn=1/tt *(√(n+1)-√n)*√(2α/ω’)
由上述的推導得到Cn與加速度和脈沖數和加速度的關系,因此可以求得在加速過程或者減速過程脈沖的周期。
3.5何時減速
得到了加減速度和脈沖周期的關系后還需要考慮電機什么時候開始減速。
3.5.1斜率與脈沖數的關系
如圖3所示
圖3
n1:加速需要的脈沖數
n2:減速需要的脈沖數
ω’1:加速度
ω’2:減速度
斜率(K)=y/x,所以y=K*x,在圖3中,由于該三角形高相等,所以n1 * ω’1=n2 * ω’2
為了方便后面計算,等式左右兩邊加上n1 * ω’2,得到n1 * ω’1+n1 * ω’2=n2 * ω’2+n1 * ω’2
最終得到n1=(n1+n2)*ω’2/(ω’1+ω’2)
3.5.2實際曲線另外一種情況
在實際的運動中,梯形曲線并不一定是圖1那樣,還有另外一種情況,如圖4所示。
圖4
該圖顯示實際最大速度未達到設定最大速度。
accle_lim:實際加速運動的脈沖數
max_s_lim:達到設定最大速度需要的脈沖數
根據公式n1=(n1+n2)*ω’2/(ω’1+ω’2)可以得到accle_lim=(step *decle)/(accel+decel)
根據公式n *ω’=ω’n/2 *α可以得到max_s_lim=n=speed *speed/(2 *α *accel)
從數學角度將模型的兩種情況分為了accle_lim>max_s_lim的和accle_lim<max_s_lim這兩種情況,而開始減速時間decel_val也會變得不同
1.accle_lim>max_s_lim
decel_val=(max_s_lim *accel)/decel
2.accle_lim<max_s_lim
decel_val=step-accle_lim
4.結論
通過上面的分析與計算得出了兩個關系
1、加減速度和脈沖周期的關系
2、減速開始時刻
總結
以上是生活随笔為你收集整理的步进电机加减速——梯形算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬取豆瓣书籍_Python爬
- 下一篇: Codeforces edu 88(A~