源码见附件。
在h文件中修改IO口引脚即可。
/I2C管脚定义/
#define IIC_GPIO (GPIOB)
#define IIC_GOIO_SDA (GPIOB)
#define IIC_GPIO_SCL (GPIOB)
#define IIC_SDA (GPIO_Pin_8)
#define IIC_SCL (GPIO_Pin_6)
//
函数说明:
void I2C_GPIO_Init(void); //I2C初始化
void MPU6050_Init(void); //陀螺仪初始化
//获取加速度计的值
short getAccX(void);
short getAccY(void);
short getAccZ(void);
//获取角速度值
short getGyroX(void);
short getGyroY(void);
short getGyroZ(void);
1和角速度陀螺仪和加速度6050计算的角度。
答:陀螺角计算,很多帖子都提到与整合,但在这里我还是再次谈论未来。
= angle_n-1 +(陀螺仪C_Gyro) R_Gyro;
angle_n当前角度值,这是度(°)
angle_n-1
计算的角度值
陀螺陀螺的敏感轴的挠度值,这是目前的敏感轴的读数
C_Gyro陀螺零点偏移值,这个值的测量方法是:把敏感轴陀螺仪液位读数在休息,我的零点偏移值是水平,垂直,倒立,1024个进行平均来读数-1778865041,但最终方案的做法,调整为-9990。或许还有其他的方法来弄明白。
R_Gyro陀螺仪的比例。提到飞思卡尔的参考值计算,我将在下面的下载,看看大家都怎么算,但在他们的论坛和调试手册所提到的,这个比例的值仍然是实验测量它更准确。
B加速度角度计算。
加速度传感器有很多种方法来计算的角度来看,有两个论坛。但它们在三角函数中使用,数学没学好,复制也不行。也许这样的事情后,飞思卡尔参考计算方法。
=(AZ-C_Z) R_Z;
angle_z Z轴计算产生,以度(°)加速度计敏感轴的倾斜角度
AZ是一样的Z轴加速度计读数
C_Z中Z轴的零点偏置的测量方法和陀螺仪。
R_Z Z轴加速度计比例
感觉使用陀螺仪是很难的,毕竟,都更多地参与面。如果你想学习的最好看的更在论坛!
下面简单列出财务函数的种类和使用方法,具体的内容可下载本题附件参考:
1
投资计算
(1)fv:用途:基于固定利率及等额分期付款方式,返回某项投资的未来值。
语法:fv(rate,nper,pmt,pv,type)
参数:rate为各期利率。nper为总投资期。pmt为各期应付金额。pv为现值或一系列未来付款的当前值的累积和,也称为本金。type为数字0或1(0为期末,1为期初)。
示例:如果a1=6%(年利率),a2=10(付款期总数),a3=-100(各期应付金额),a4=-500(现值),a5=1(各期的支付时间在期初),则公式“=fv(a1/12,a2,a3,a4,a5)”计算在上述条件下投资的未来值。
(2)pv:用途:返回投资的现值(即一系列未来付款的当前值的累积和)。
语法:pv(rate,nper,pmt,fv,type)
参数:rate为各期利率。nper为总投资(或贷款)期数。pmt为各期所应支付的金额。fv为未来值。type为数字0或1(0为期末,1为期初)。
示例:如果a1=500(每月底一项保险年金的支出),a2=8%(投资收益率),a3=20(付款年限),则公式“=pv(a2/12,12a3,a1,,0)”计算在上述条件下年金的现值。
2本金和利息
(1)pmt:用途:基于固定利率及等额分期付款方式,返回投资或贷款的每期付款额。
语法:pmt(rate,nper,pv,fv,type)
参数:rate贷款利率。nper该项贷款的付款总数。pv为现值(也称本金)。fv为未来值。type为数字0或1(0为期末,1为期初)。
示例:如果a1=8%(年利率),a2=10(支付的月份数),a3=10,000(贷款额),则公式“=pmt(a1/12,a2,a3)”计算在上述条件下贷款的月支付额。
(2)ipmt:用途:基于固定利率及等额分期付款方式,返回投资或贷款在某一给定期限内的利息偿还额。
语法:ipmt(rate,per,nper,pv,fv,type)
参数:rate为各期利率。per用于计算其利息数额的期数。nper为总投资期数。pv为现值(本金)。fv为未来值。type为数字0或1(0为期末,1为期初)。
示例:如果a1=10%(年利率),a2=1(用于计算其利息数额的期数),a3=3(贷款的年限),a4=8000(贷款的现值)则公式“=ipmt(a1/12,a23,a3,a4)”计算在上述条件下贷款第一个月的利息。
只需要把mpu6050模块的sda和scl接到arduino的AD4和AD5脚,另外再接上电源和地就可以了。
至于数据的读取,需要先了解一下mpu6050的基础寄存器等知识,以及arduino的基础知识。
另外还需要arduino的i2c和mpu6050库。
基本原理可以参考这里http://hibaiducom/zhb1190/item/e0d880781d3625205d1789f8
如果想用真正的串口中断,你需要去学习avr芯片相关知识才可以(Arduino使用的就是avr芯片 ATmega系列),因为绝大多数东西被Arduino隐藏了,你看不到也用不了,甚至会坏,比如强行手动使用串口中断会导致所有Serial函数无法使用等等。
mpu6050库导入后可以读出数据,通常需要进行卡曼滤波。如果找到的例程不会用,也可以直接买 串口mpu6050模块, 该模块自带单片机,帮助你把数据读出且滤波处理后串口输出,这样就容易使用了,目前价格30以内。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)