赞
踩
在制作倒立摆数字孪生示范项目中要读取单摆摆动的角度问题,在黑胡桃实验室开发的waffle nano开发版中集成了ICM20948这个九轴传感器,本项目中需要读取三个坐标轴中的角速度值,并作合成计算。
在读取角速度的返回值中,发现数值并不是角速度的国际单位制,查阅用户手册得知:
由于ICM20948数据寄存器是一个16位的,由于最高位是符号位,故而数据寄存器的输出范围是-7FFF~7FFF ,也既是-32767~32767。
如果选择陀螺仪范围是±2000,那么意味着-32767对应的是-2000(°/s),32767对应是2000(°/s),当读取陀螺仪的值是1000时,对应的角速度计算如下:32767/2000 =1000/x; 既x = 1000/16.4(°/s),可以看出32767/2000 = 16.4 ,对应手册中的精度 16.4 LSB/(°/s),其他范围也是如此。
在本项目中,我调整的精确度为2000dpi
imu = icm20948.ICM20948(I2C(0),gyro_scale=icm20948.DPS_2000,accel_scale=icm20948.GPM_2,dmp=False)
由于waffle nano开发板中已对数值进行了单位换算,我的板子中读取出来的数值是角度/秒,即°/s,我换算成弧度制只需要借助以下公式:
Omiga表示角速度,我希望用到的单位是国际单位rad/s,故使用以下代码进行换算:
Omiga =sensor_read()*math.pi/180
保存代码,上传到开发板中,即可读出期望的数值。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。