杜骁释 发表于 2012-5-14 12:47:19

通过加速度计算的角度值与实际传感器的倾斜角度比较接近,而滤波后的角度与实际的角度相差有点大。
下图是我将传感器翻转到90度方向测量值,第一列数据位时间,第二列数据位加速度计算的角度值,
第三列数据为一阶滤波,第四列数据为二阶滤波。

Y-Edison 发表于 2012-6-9 00:28:41

求解绘图过程

天天向上/tp 发表于 2012-6-11 10:47:05

有没其他滤波直接可以用的代码啊??

johnsonzzd 发表于 2012-6-11 23:26:04

MPU-6050的一阶互补滤波


我爱胆机妙音 发表于 2012-6-12 12:59:04

请教:
float dt = (timer - o_timer) / 1000.0;
dt是什么意思?(timer - o_timer) 是运行程序一遍所用的时间吗?包不包括前期设置变量和setup所费的时间?
1000.0; 这个数值是怎么得出的?
谢谢

黑马 发表于 2012-6-12 13:15:34

我爱胆机妙音 发表于 2012-6-12 12:59 static/image/common/back.gif
请教:
float dt = (timer - o_timer) / 1000.0;
dt是什么意思?(timer - o_timer) 是运行程序一遍所用的 ...

一次loop的时间,就是每两次采样的间隔,前面的都是启动时运行一次,loop里的内容才是循环的。
除以1000是把毫秒换算成秒。

我爱胆机妙音 发表于 2012-6-12 20:46:31

多谢,请问怎样用加速度计得出角度?貌似没有看到三角函数啊?

黑马 发表于 2012-6-13 10:03:02

我爱胆机妙音 发表于 2012-6-12 20:46 static/image/common/back.gif
多谢,请问怎样用加速度计得出角度?貌似没有看到三角函数啊?

角度比较小的时候不用三角函数误差也没多大,三角函数计算比较耗资源

我爱胆机妙音 发表于 2012-6-13 19:21:08

Fixed timed loop
The main loop duration is critical for the filtering and PID modulesint STD_LOOP_TIME = 9;
int lastLoopTime = STD_LOOP_TIME;
int lastLoopUsefulTime = STD_LOOP_TIME;
unsigned long loopStartTime = 0;

void loop(){

// your code ...


// *********************** loop timing control **************************
lastLoopUsefulTime = millis()-loopStartTime;
if(lastLoopUsefulTime<STD_LOOP_TIME)         delay(STD_LOOP_TIME-lastLoopUsefulTime);
lastLoopTime = millis() - loopStartTime;
loopStartTime = millis();
}请教:这一段程序是计算一个循环所用的时间的,为什么不能在循环开始和结束时分别使用millis()函数,然后将这两个时间值相减得到一个循环所用时间,而写的这么复杂呢?
这段代码第一行“int STD_LOOP_TIME = 9;”怎么理解?为什么等于9?9是怎样定出来的?

This loop runs 100 times per second (100 Hz)
Motor will receive an updated PWM value every 10 milliseconds

程序每秒钟循环100次,这个值是怎么定出来的?怎样改为1000次?
刚接触arduino 请多关照,谢谢。

成可风 发表于 2012-6-21 10:38:13


黑马,大侠
请问下从txt数据导入到excel,怎么更快捷的整个导入,就可以直接分析呢
我从串口那得到的数据,还要一个个的复制黏贴,感觉效率太低了

[email protected] 发表于 2012-6-24 18:46:40

为什么你们都能正常运行呢?
没人觉得这一段很奇怪吗int v;
    byte vL, vH, address;               // 存放byte数值
    if (device == Acc) address = 0x32;// ADXL345的读数地址
    if (device == Gyr) address = 0xA8;// L3G4200D的读数地址
    if (device == Mag) address = 0x03;// HMC5883L的读数地址
    address = address + axis * 2;       // 数据偏移-坐标轴
    Wire.beginTransmission(device);   // 开始传输数据
    Wire.send(address);               // 发送指针

micro_听海 发表于 2012-8-8 19:46:21

楼主,请教个问题,这个二阶互补滤波算法是怎么回事?貌似在网上没找到啊!

micro_听海 发表于 2012-8-9 09:47:01

二阶互补算法怎么比一阶的还快,这算怎么回事?

i9630 发表于 2012-8-20 17:19:45

35.    angleG = angleG + omega * dt;         // 对角速度积分得到的角度(degree)

对这句不太理解,angleG 一直在累加,这个数值的意义是什么?

Neil 发表于 2012-11-2 19:26:33

我尝试版主的程式,可以烧,可是监视却没有出现数据,不知道哪里出错
页: 1 [2] 3 4 5
查看完整版本: 我的自平衡小车D3——滤波算法