智能车制作
标题:
电磁组两个电感的算法
[打印本页]
作者:
easy颠倒黑白
时间:
2013-4-12 18:59
标题:
电磁组两个电感的算法
//方向控制
uint16 ADValue0,ADValue1; // 1 主程序使用的变量定义
float Direction_diff=0.0,Direction_sub=0.0,Direction_add=0.0;
float Direction_sub_value=0.0,Direction_sub_old=0.0;
float DirectionOutold=0.0,DirectionOutnew=0.0;
void DirectionControl(void)
{
Direction_sub=(float)ADValue0-(float)ADValue1;
Direction_add=(float)ADValue0+(float)ADValue1;
Direction_diff=Direction_sub/Direction_add;
Direction_sub_value=Direction_sub-Direction_sub_old;
Direction_sub_old=Direction_sub;
DirectionOutold=DirectionOutnew;
DirectionOutnew=1100+K_Direction_P*Direction_diff+K_Direction_D*Direction_sub_value;
}
大神帮我看看程序哪错了啊,大弯道正向能跑过去反向跑不过去
作者:
天涯々湖畔
时间:
2013-4-12 20:07
你这程序看着真晕,给哪整来的???是PID吗??
作者:
Αρηδ
时间:
2013-4-12 21:37
这不是第七届参考方案吗
作者:
严鸿雁
时间:
2013-4-12 23:50
不懂呀
:(
作者:
jingqi
时间:
2013-4-13 21:07
做差的时候不管大小,只会出负值,不信你看看 所以只能往一个方向转 似乎if也不好使
作者:
时光自由
时间:
2013-4-14 00:24
对呀。我的也是只打一边角。另一边不打角。好像一边采集的值永远大于另一边的值。求解!
作者:
jingqi
时间:
2013-4-14 08:57
有个方法 可以自己写个减法函数 但是不能出现减号
作者:
时光自由
时间:
2013-4-14 12:04
void AD_Init(){ //AD初始化
ATD0CTL1=0X00;
ATD0CTL2=0XC2;
ATD0CTL3=0X10;
ATD0CTL4=0X6F;
ATD0CTL5=0X30;
ATD0DIEN=0X00; //禁止数字输入
}
void interrupt 22 ADT0()
{
DisableInterrupts;
AD_ls0+=ATD0DR0L;
AD_ls1+=ATD0DR1L;
AD_cnt++;
if (AD_cnt==8)
{ AD_flag=1;
AD_cy0=AD_ls0>>3; //四次
AD_cy1=AD_ls1>>3;
AD_ls0=0;
AD_ls1=0;
AD_cnt=0;
ad_djg();
AD_flag=0;
}
EnableInterrupts;
}
请问上面的AD程序应该每进一次中断就能采到0,和1通道的模拟量的转换结果吧?
作者:
jingqi
时间:
2013-4-14 14:57
不是吧 没转换完读走数据你说会怎么样
作者:
jingqi
时间:
2013-4-14 14:58
我想看看楼主剩下的程序
作者:
水墨l丹青
时间:
2013-6-25 20:23
这个算法貌似在弯道上不怎么靠谱啊!
作者:
轻风鹤舞
时间:
2014-2-19 14:05
作者:
新哥哥
时间:
2014-3-19 16:01
Αρηδ 发表于 2013-4-12 21:37
这不是第七届参考方案吗
不是
作者:
gulang007
时间:
2016-4-19 21:25
你的 Direction_sub_old=Direction_sub;而后面运算 Direction_sub_value=Direction_sub-Direction_sub_old。 这不就等于0了吗?还怎么控制?不懂,求问你的思想是什么?
作者:
任小人
时间:
2017-1-17 20:23
你好,请问你舵机转角只能朝一边的问题解决了吗
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2