杜骁释
发表于 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
我尝试版主的程式,可以烧,可是监视却没有出现数据,不知道哪里出错