智能车制作

标题: 电磁组 PID参数问题 [打印本页]

作者: 蒹葭之尹    时间: 2012-4-21 18:31
标题: 电磁组 PID参数问题
电磁组利用卡尔曼滤波得到倾角,将倾角经过PID算法之后,输出波形如下:这是什么原因?
[attach]23439[/attach]
其中蓝色是倾角,淡红色是经过PID处理之后的输出.

作者: QianDE1991    时间: 2012-4-21 22:48
楼主图形是用什么软件画的啊??
作者: xfx    时间: 2012-4-22 10:24
ting hao kan de a

作者: 蒹葭之尹    时间: 2012-4-22 16:56
就是从论坛下的那个仿真软件(Serial_Digital_Scope V2)~~~~
作者: 扬光小葵    时间: 2012-4-22 22:06
你们进程真快
作者: chenkun    时间: 2012-4-22 23:35
跑的怎么样啊??
作者: 谢小强55    时间: 2012-5-11 15:14
请问楼主大神,虚拟示波器怎么用?
作者: 蒹葭之尹    时间: 2012-5-11 15:45
跟串口结合就可以用了~~
作者: 阿童木    时间: 2012-5-22 14:13
蒹葭之尹 发表于 2012-5-11 15:45
跟串口结合就可以用了~~

替代串口助手之类的软件么?还是要另外写程序额?

作者: 蒹葭之尹    时间: 2012-5-22 16:10
阿童木 发表于 2012-5-22 14:13
替代串口助手之类的软件么?还是要另外写程序额?

unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT)
{
    unsigned short CRC_Temp;
    unsigned char i,j;
    CRC_Temp = 0xffff;

    for (i=0;i<CRC_CNT; i++){      
        CRC_Temp ^= Buf;
        for (j=0;j<8;j++) {
            if (CRC_Temp & 0x01)
                CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001;
            else
                CRC_Temp = CRC_Temp >> 1;
        }
    }
    return(CRC_Temp);
}
/*
****************************************************************
*    配合串口示波器的输出协议,float 字长设为16位!!!注意工程
*    设置有的是32位!
*  1  可以输出4路信息,每路数据长度是16位。
*  2  每次输出字节总数10个,最后两个字节为校验
*****************************************************************
*/
void OutPut_Data(float OutData[4])
{
  int temp[4] = {0};
  unsigned int temp1[4] = {0};
  unsigned char databuf[10] = {0};
  unsigned char i;
  unsigned short CRC16 = 0;
  for(i=0;i<4;i++)
   {

    temp  = (int)OutData;
    temp1 = (unsigned int)temp;

   }

  for(i=0;i<4;i++)
  {
    databuf[i*2]   = (unsigned char)(temp1%256);
    databuf[i*2+1] = (unsigned char)(temp1/256);
  }

  CRC16 = CRC_CHECK(databuf,8);
  databuf[8] = CRC16%256;
  databuf[9] = CRC16/256;

  for(i=0;i<10;i++)
    uart_putchar(databuf);
}



作者: 阿童木    时间: 2012-5-24 14:08
蒹葭之尹 发表于 2012-5-22 16:10
unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT)
{
    unsigned short CRC_Tem ...

for(i=0;i<4;i++)
  {
    databuf[i*2]   = (unsigned char)(temp1%256);
    databuf[i*2+1] = (unsigned char)(temp1/256);
  }

  CRC16 = CRC_CHECK(databuf,8);
  databuf[8] = CRC16%256;
  databuf[9] = CRC16/256;


这段是什么意思,256是测试程序的正弦波怎么这么操作的吧
如果是要官方的图,加速度计和陀螺仪的怎么写啊

作者: fancy0xue    时间: 2013-5-15 07:05
VisualScope群321184302,串口示波器群,希望对你有帮助





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2