久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM32收集的步進電機資料 S型加減速分析
[打印本頁]
作者:
飛向藍天nie
時間:
2021-6-3 09:17
標題:
STM32收集的步進電機資料 S型加減速分析
STM32收集的步進電機S加減速資料
#include "Speed.h"
//函數(shù)名稱: CalculateSpeedTab
//函數(shù)功能:計算加減速表
//參數(shù)參數(shù):Speed 速度結(jié)構(gòu)體
// V0; //初速度,單位:step/s
// Vt; //末速度,單位:step/s
// S; //路程,單位:step
// t; //加速時間,單位:s
// time; //加速次數(shù) 單位:次
// *SpeedTab; //加速速度表,速度單位:step/s
// SecSpeedPoint; //減速點 單位:step
//返回輸出:速度結(jié)構(gòu)體
static Speed_t CalculateSpeedTab(Speed_t Speed)
{
int i;
double aa; //加加速
int DeltaV; //速度變化量
int tempVt;
//如果速度記錄表的指針為空,說明沒有分配內(nèi)存
RT_ASSERT(Speed->SpeedTab != RT_NULL);
//各參數(shù)是否超范圍
RT_ASSERT(IS_SPEED(Speed->V0, Speed->Vt));
RT_ASSERT(IS_SPACE(Speed->S));
RT_ASSERT(IS_ADDTIMING(Speed->t));
RT_ASSERT(IS_ADDTIME(Speed->time));
//根據(jù)加速法則計算末速度
tempVt = LASTVELOCITY(Speed->S / SPEEDPRINCIPLE, Speed->V0, Speed->t);
Speed->Vt = (tempVt > Speed->Vt) ? Speed->Vt : tempVt;
Speed->SecSpeedPoint = ACCELERATESPACE(Speed->V0, Speed->Vt, Speed->t); //計算減速點位置,剩余路程為該值時開始減速
aa = (double)((Speed->Vt - Speed->V0) / 2) //加速度變化拐點時的速度值 a| /|\
* 2 //知道直角三角形面積,逆推三角型高度時將面積*2 | / | \面積為DeltaV
/ (Speed->time / 2) //除以底邊 | / | \
/ (Speed->time / 2); //再除以底邊,得到斜率,即加加速 |/___|___\__time
//開始速度計算
for(i = 0; i < ((Speed->time / 2) + 1); i++)
{
DeltaV = (aa * i * i) / 2; //V = V0 + a * t / 2; a = aa * t;
*(Speed->SpeedTab + i) = Speed->V0 + DeltaV; //當前點的速度
*(Speed->SpeedTab + Speed->time - i) = Speed->Vt - DeltaV; //對稱點的速度
}
return Speed;
}
//函數(shù)名稱:TestSpeed
//函數(shù)功能:測試速度表計算函數(shù)
//函數(shù)參數(shù):V0 初速度,單位:轉(zhuǎn)/min
// Vt 末速度,單位:轉(zhuǎn)/min
// S 路程,單位:mm
// time 加速次數(shù)
//函數(shù)返回:無
void TestSpeed(int V0, int Vt, int S, int time)
{
int i;
Speed_t Speed = (Speed_t)rt_malloc(sizeof(struct SPEED));
Speed->V0 = STEPSPEED(V0); //起速
Speed->Vt = STEPSPEED(Vt); //末速
Speed->S = TOTALSTEP(S); //路程
Speed->t = 0.2; //加速時間設為0.2秒
Speed->time = time; //加速次數(shù)
Speed->SpeedTab = (int *)rt_malloc(sizeof(int) * (Speed->time + 1)); //根據(jù)加速次數(shù)申請表格內(nèi)存,加1,以防用的時候超界
CalculateSpeedTab(Speed); //開始計算
for(i = 0; i < Speed->time; i++)
{
rt_kprintf("SpeedTab[%d] = %d, Acceleration = %d\n"
, i
, *(Speed->SpeedTab + i)
, *(Speed->SpeedTab + i + 1) - *(Speed->SpeedTab + i));
}
rt_kprintf("SpeedTab[%d] = %d\n", i, *(Speed->SpeedTab + i));
rt_free(Speed->SpeedTab);
rt_free(Speed);
}
FINSH_FUNCTION_EXPORT(TestSpeed, Test Speed table calculate);
復制代碼
#ifndef __SPEED_H__
#define __SPEED_H__
#include "rtthread.h"
#include "finsh.h"
/* 三分之一加減速法則:
加速路程不超過三分之一總路程,
這樣做的目的是給減速留有足夠的時間去檢測減速點,
進而實現(xiàn)平穩(wěn)的將速度減到初速度,
如果在處理速度夠快的情況下,
可以選擇二分之一加減速
*/
//加減速法則,2分之一法則或3分之一法則
#define SPEEDPRINCIPLE 3
//電機最大轉(zhuǎn)速,單位轉(zhuǎn)/min
#define MOTOMAXSPEED 1500
//電機每轉(zhuǎn)對應的傳動距離,單位:mm
#define MOTOROUNDLENGTH 36
//電機最大初速度,初速度超過該值會對電機造成傷害,單位轉(zhuǎn)/min
#define MOTOMAXSTART 200
//驅(qū)動器細分數(shù)
#define DRIVERSFRACTION 1
//電機細分數(shù)
#define MOTOFRACTION 200
//根據(jù)初速度,末速度,以及時間,計算加速路程
#define ACCELERATESPACE(V0,Vt,t) (((V0) + (Vt)) * (t) / 2)
//根據(jù)加速路程,初速度,以及時間,計算末速度
#define LASTVELOCITY(S,V0,t) (2 * (S) / (t) - (V0))
//根據(jù)電機轉(zhuǎn)速(轉(zhuǎn)/min),計算電機步速度(step/s)
#define STEPSPEED(RV) ((RV) * MOTOFRACTION * DRIVERSFRACTION / 60)
//根據(jù)長度計算電機所需走的步數(shù),S的單位為mm
#define TOTALSTEP(S) S * MOTOFRACTION * DRIVERSFRACTION / MOTOROUNDLENGTH
struct SPEED
{
int V0; //初速度,單位:step/s
int Vt; //末速度,單位:step/s
long long S; //路程,單位:step
double t; //加速時間,單位:s
int time; //加速次數(shù) 單位:次
int *SpeedTab; //加速速度表,速度單位:step/s
int SecSpeedPoint; //減速點 單位:step(在電機運動過程中,如果剩余路程小于等于該值,那么電機開始減速)
};
typedef struct SPEED * Speed_t;
//各參數(shù)范圍值,可以在此設置參數(shù)范圍
//初速度大于0小于電機最高起速,末速度大于初速度,小于電機最高轉(zhuǎn)速
#define IS_SPEED(V0,Vt) (((V0) >= 0) && ((V0) <= STEPSPEED(MOTOMAXSTART)) \
&& ((Vt) >= (V0)) && ((Vt) <= STEPSPEED(MOTOMAXSPEED)))
#define IS_SPACE(S) ((S) > 0)
#define IS_ADDTIMING(t) ((t) > 0)
#define IS_ADDTIME(time) ((time) >= 32) //讓加速次數(shù)必須大于等于32,否則計算表格就沒什么意義
#endif
復制代碼
51hei.png
(5.99 KB, 下載次數(shù): 73)
下載附件
2021-6-5 02:29 上傳
以上代碼下載:
S型加減速分析.7z
(1.34 MB, 下載次數(shù): 67)
2021-6-5 02:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
信濃步進電機STP-43D2035選型及使用說明.docx
(280.68 KB, 下載次數(shù): 21)
2021-6-3 09:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日本xxxx69
|
亚洲在线视频
|
日本熟妇毛耸耸xxxxxx
|
亚洲精品色
|
av狠狠干
|
国产中文在线
|
日韩成人综合
|
亚洲国产精品suv
|
黄色一级片免费看
|
久久视频这里只有精品
|
成人aaaa
|
黄色小视频免费
|
色激情网
|
日日夜夜综合网
|
久久av网站
|
四虎四虎
|
亚洲在线视频
|
麻豆一级片
|
黄色免费小视频
|
国产探花在线精品一区二区
|
av三级在线观看
|
伊人亚洲综合
|
欧美一级淫片免费视频黄
|
国产精品午夜视频
|
日韩精品免费视频
|
亚洲成人黄色
|
国产三级黄色
|
日韩视频在线播放
|
免费一级黄色录像
|
午夜成人免费视频
|
国产在线www
|
电家庭影院午夜
|
日韩专区在线观看
|
日韩理论视频
|
国产视频在线观看视频
|
国产又粗又黄又爽又硬的视频
|
久久香蕉国产
|
欧美精品区
|
日韩午夜av
|
久久亚洲成人
|
亚洲国产天堂
|