完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
#include "stdafx.h"
#include "string.h" //已知初速度、加速度、目标速度,求加速时间及对应的加速路程最优化(误差最小)的整型算法 void CalcS() { int v0 = 5, vt = 40;//初始速度、目标速度 int dv = vt - v0;//差值 int c = 3, b = 10;//加速度参数 int a = c / b;//定义加速度为分数形式 int t = dv*b / c;//加速时间计算 int s = v0 * dv * b / c + dv * dv * b / (2 * c);//根据s=v0t+at^2/2公式推导出 printf("vt=%dmm/s,连续行程s= %dumn", vt, s); } //使用离散方式计算加速的路程,程序里适用 void CalcRs() { int v0 = 5, vt = 40;//初始速度、目标速度,mm/s或um/ms int a = 3;//加速度,每次加速多少mm int dt = 10;//10ms//加速时间间隔 int times = (vt - v0)/a;//达到目标速度的间隔次数,ms int S = 0;//路程,um for (int i = 0; i < times; i++)//积分求和 { S += (v0 + i * a)*dt; } printf("vt=%dmm/s,离散行程S=%dumn",vt,S); } int main() { CalcS(); CalcRs(); getchar(); return 0; } 运行结果: 分析:离散运算和连续运算差距还是挺大的,单片机进行计算应该尽量采用离散方式来计算能减小误差。 用matlab进行加速时间及行程计算代码如下:v0=5;vt=40;dv=vt-v0;c=3;b=10;a=c/b;t=dv*b/c;s=v0*dv*b/c+dv^2*b/(2*c) |
|
|
|
只有小组成员才能发言,加入小组>>
2444 浏览 0 评论
9148 浏览 4 评论
36829 浏览 19 评论
5036 浏览 0 评论
24813 浏览 34 评论
1550浏览 2评论
1775浏览 1评论
2221浏览 1评论
1576浏览 0评论
549浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 16:07 , Processed in 1.233625 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号