MPU9150和MPU9250有什么区别

MPU9150和MPU9250有什么区别,第1张

1、支持输入方式不同

MPU9150只支持I2C输入方式,而不支持SPI输入方式。

MPU9250不仅支持SPI输入方式,还支持I2C输入方式。

2、内部传感器不同

MPU9150内部是由MPU6050+AK8975C组成。

MPU9250内部是由MPU6515+AK8963组成。

3、性能不同

MPU9150性能不及MPU9250,但功耗要比MPU9250低。

MPU9250性能要比MPU9150高一些,功耗较高。

四轴之所以能够流行起来,全仰仗于飞控技术的提升。飞控是飞机的大脑,它基本上就是一块集成了很多传感器的大脑。它接收飞手发送的指令,并通过控制马达让飞机达到预期姿态。几乎所有的飞控都内置惯性导航系统IMU一些高级的点飞控还会内置气压传感器和电子指南针。除了内置的传感器以外,飞控还可以外接很多其他外围设备,比如GPS、LED、雷达等。接下来我将教大家如何选择无人机飞控。

选择飞控固件

固件就是在硬件上跑的飞控软件,一般情况的不同的硬件对应有不同的固件,但是有些流行的固件也可以同时兼容好多种硬件。比较流行的固件有 Betaflight、PX4、Cleanflight、KISS、Raceflight 等。

由于飞控理论相对来说相对来说还是开放的,很多固件也都是开源的,所以对于本身飞行算法来说其实并没有什么好烂之分。在选择的时候主要考虑固件的成熟度,扩展能力,以及上位机配套软件的便利性。由于每个固件的上位机软件区别还是比较大的,所以有一定的学习成本需要考虑进去。

如果你不知道怎么选的话这里有个建议就是,单纯飞穿越机选择Betaflight,如果想深入学习飞控算法并在将来尝试进行飞控开发,选择PX4。

处理器

[图]

2/9

选择处理器

这里的处理器指的是飞控 上面主MCU,飞控的MCU一般会选择stm32系列,所以会有F1, F3, F4 and F7等。 目前来说F1的性能已经不太够用了,现在主流的是F3和F4的MCU,当然高端点的飞控就直接上F7了,尤其是PX4的高级飞控。

3/9

选择接口

这里说的接口主要说的是可以外接外围设备的接口,一般有UART、IIC、SPI等。接口的数量受所选的MCU所限制,最终由硬件电路决定留出多少接口,有些飞控为了减少板子尺寸并没有把所有可用的接口给预留出来。下表是每种MCU可以支持的串口数量。

F1F3F4F72 UART’s3-5 UART’s3-6 UART’s7+ UART’s

接口数量决定了可以外接多少个外围设备,可以根据实际情况进行选择。

另外,SPI能够达到的速度比IIC好高,IIC最大只能达到4KHz。而且SPI是全双工的,所以在SPI和

4/9

选择惯性导航芯片

典型的惯性导航芯片可参考下表

IMU支持的通讯协议最大的采样频率MPU6000SPI, i2c8KMPU6050i2c4KMPU6500SPI, i2c32KMPU9150i2c4KMPU9250SPI, i2c32KICM20602SPI, i2c32KICM20608SPI, i2c32KICM20689SPI, i2c32K

其中MPU9150 相当于MPU6050加AK8975指南针,而MPU9250相当于MPU6500加AK8975。

目前来说,使用最广泛的是MPU6000,虽然说它的采样频率只有8kHz,但是它的抗噪鲁棒性很好,一般不推荐使用MPU6500和MPU9250,它们虽然采样频率很快但是采样出来的数据噪声也很高。

采样频率本身是个双刃剑,如果在干净的电源下面,采样频率越高,数据越平滑。但是如果是带有电调和马达干扰的电源下面,采样频率过高并不能带来好处,数据可能比低采样频率采出来的数据更糟糕。

有些飞控会单独把惯性导航模块外置,然后垫个海绵垫进行缓冲。如果没有外置的话,最好在飞控安装的时候将整个飞控安装在海绵垫上面。

[图]

5/9

选择功能模块

飞行控制算法是飞控的基本功能,但是还有很多其他的功能也很值得考虑。

6/9

选择OSD

OSD能将飞行信息显示在FPV屏幕上,比如电池电压,飞行时间。摄像头将图像数据传入飞控,飞控会将飞行信息跟图像数据融合并一并发给图传,图传可以将带有OSD的信息发回FPV显示器显示。有些还可以支持通过OSD调整参数。

7/9

选择电流计

飞控能够通过电流计能够计算出当前剩余的电量,这比单单测量电池电压要好的多。它能更准确的让你留出降落时间。

8/9

选择黑盒子

黑盒子听起来高达上,其实这里只是一个SD卡,飞控可以把飞行数据写到SD卡上方便后面的分析。这个对于调节PID来说是特别有用的。

9/9

选择安装尺寸

安装尺寸在写机架的时候也有聊到过,主要是为了保证飞控能够准确的安装在飞机上。

通用的飞控尺寸有 305×305mm, 20x20mm和16x16mm等 5寸浆或者更大的机架一般使用305×305mm的飞控,更小点的使用20x20mm的飞控,而16x16mm也在100mm以下的机架上流行起来了。

[图]

注意事项

如果有帮助到你的麻烦点个赞。

MPU9250和MPU9255内部都是集成MPU6515+AK8963两个传感器,接口也是一样兼容都含有I2C和SPI接口。真没看出有什么硬件有什么区别,只有内部固件有一点区别,后者dmp库多了几个功能接口函数,支持如骑行等运动模式检测等。

MPU9150是只支持I2C的,MPU9250是支持SPI/I2C两种方式。里面的传感器也是不同的,MPU9150里面是MPU6050+AK8975,而MPU9250里面是MPU6500+AK8963,这两个传感器组合不同,前者性能上要高一些,后者主打低功耗方面的,各种参数要略低一些,比如唤醒速度等。具体请对照数据手册。

您好,S1参数如下:

手机特点:

支持频段 2G:GSM850/900/1800/1900MHz;3G:WCDMA2100

网络连接支持:3G网络 HSDPA 72 Mbps、HSUPA 58Mb; 2G网络 GPRS/EDGE

*** 作系统:Android OS 236 RAM:512M ROM:4G HS USB 20:480Mb/s

可选颜色:波尔多红(其它颜色待定) 重 量:130g(带电池)

整机尺寸:125X644X99mm(标配高度)

单 屏:40英寸电容触摸屏和显示屏 OLED WVGA,1600万色 480×800

电 池: BK-B-45 容 量:1880 mAh

待机/通话时间(视网络优劣而定)

通话时间≤12小时 待机时间≤290小时

MP3播放时间:外 放≤75小时 耳 机≤34小时

主摄像头:800W像素 副摄像头:100W像素 TF卡:最大可支持32G

内置三第三方软件:社交汇(QQ2011、新浪微博、人人网)、音乐汇(QQ音乐)、游戏汇(祖玛季节)、影视汇(优酷、搜狐视频)、阅读汇(ViVa畅读)、资讯汇(网易新闻)、iReader(掌阅电子书)、大众点评、百度地图、百度魔图、淘宝软件、支付宝软件。

功 能:单卡单待、CPU主频:14G 支持Wi-Fi/WAPI(支持移动热点)、电子罗盘应用、GPS及AGPS、自动锁屏、图案锁、SIM卡锁、信息加密、短信字体大小设置、双麦降噪、菜单升级、账户管理、字体选择、百度搜索、短信群发、蓝牙(21)、重力感应、光感应控制、红外靠近传感应用、手电筒、安全助手(包含短信防火墙、来电防火墙—数量无限制)、同步助手、节能助手、来电大头照、主题更换、节日换锁机壁纸(与节日换墙纸类似)、通话录音、号码归属地查询(支持在线更新)、天气查询、电子邮件、STK增值、TF卡接口、照相机(支持自动变焦,闪光灯)、音乐播放器、闹钟、万年历(支持农历)、世界时钟、便签、计算器

主要芯片:MSM8255+PM8058+TQM7M5013+RF7241+BCM4330+QTR9215+YDA145+ H9TKNNN4KDMPRR-NYM+ADP1650+BH1772GLC+SFH4056+LIS3DH+AK8975C

最近由于工作的需要,接触了Linux iio子系统,对于这个目录其实以前是很少接触,接下了对 Linux iio 子系统进行分析。

1、首先 iio子系统在内核树中位置:drivers/staging/iio

详细的iio子系统说明文档位置:drivers/staging/iio/Documentation(文档是个好东西,详细阅读文档,有利于更深层次的理解iio子系统)

2、简介:

iiO子系统全称是 Industrial I/O subsystem(工业 I/O 子系统),此子系统的目的在于填补那些分类时处在hwmon(硬件监视器)和输入子系统之间的设备类型。在某些情况下,iio和hwmon、Input之间的相当大的重叠。

3、iio目录结构架构:

[plain] view plain copy

iio

├── accel

├── adc

├── addac

├── cdc

├── dac

├── dds

├── Documentation

│ └── dac

├── gyro

├── impedance-analyzer

├── imu

│ └── mpu

│ └── inv_test

├── light

├── magnetometer

├── meter

├── pressure

├── resolver

└── trigger

4、iio 目录结构说明:

进入相应目录,里面都有相关IC的驱动,网上查阅资料,对iio子系统做如下简要的说明:

accel :

该文件夹下是一些加速度传感器,例如:adis16201、kxsd9、lis3l02dq、sca3000等

adc :

该文件夹下是一些模数转换器,将模拟信号转换成数字信号,例如:ad7192、adt7310(数字温度传感器)等

addac :

Temperature Sensor 温度传感器,例如:adt7316

cdc :

电容数字转换,例如:ad7150

dac :

一些数模转换器,将数字信号转换成模拟信号,例如:ad5064、ad5791(单通道、20位、无缓冲电压输出DAC)等

dds :

频率扫描仪,频率合成器,例如:ad5930、ad9951等

Documentation :

iio子系统相关文档说明,相关说明比较详细,说明文档是个好东西……

gyro:

陀螺仪,例如:adis16060(角速度陀螺仪)、adis16260(数字陀螺仪)、adxrs450(角速率陀螺仪)等

impedance-analyzer :

阻抗测量芯片,只有一个芯片ad5933

imu:

惯性陀螺仪、磁力计、加速度计,例如:adis16400,其中的mpu子目录有些重要的传感器(目前工作中正在使用)

imu

└── mpu:有MPU3050(三轴)、MPU6050(六轴)、MPU9150(整合了MPU6050及AK8975电子罗盘)、MPU6515等

light :

光学传感器,例如:isl29018、tsl2563等

magnetometer :

地磁传感器、磁力计传感器,例如:hmc5843、ak8975

meter :

有功功率和电能计量,例如:ade7759(电能计量数据转换器)、ade7753等

pressure :

压力传感器,例如:bmp182

resolver :

旋转变压器/数字转换器,例如:ad2s1200(旋转变压器输出的模拟信号转化为数字信号)等

trigger:

触发器

5、iio子系统架构图:

6、iio子系统功能:

(1)、设备注册和处理

(2)、通过虚拟文件系统(VFS)轮训访问设备

(3)、chrdevs事件

chrdevs事件包括阈值检测器,自由下落检测器和更复杂的动作检测。chrdevs事件的输入,iio为底层硬件触发与用户空间通行提供了通道,chrdevs事件本身已经不仅仅是一个事件的代码和一个时间戳,与chrdevs事件相关联的任何数据必须通过轮询访问。

(4)、硬件环缓冲支持

现在很多传感器芯片上本身就包括 fifo / ring 缓冲,通过sensor自带 fifo / ring 缓冲,可以大大的减少主芯片处理器的负担。

(6)、触发和软件缓冲区(kfifo)支持

在许多数据分析中,触发和软件缓冲区(kfifo)支持就显得非常有用,能够更加高效的捕捉到外部信号数据。这些触发包括(数据准备信号、GPIO线连接到外部系统、处理器周期中断、用户空间访问sysfs中的特定文件等),都会产生触发。

7、iio子系统的内核接口

为各种sensor提供了内核接口

8、iio子系统环形缓冲区(如下图)

iio子系统采用环形缓冲区,环形缓冲区本质是一个数据结构(单一,固定大小,可调并首尾相连),这种结构非常适合缓冲数据流。这些缓冲区通常用来解决生产者消费者问题,在一些应用中,它被设计成生产者会(例如一个ADC)覆盖消费者(例如一个用户空间应用程序)无法暂时处理的过期数据。但是通常这种缓冲会被设置为适当的大小,以使这种情况不会发生。

1,同目录下的makefile,如

#

# Makefile for industrial I/O Magnetometer sensors

#

obj-$(CONFIG_SENSORS_AK8975) += ak8975o

obj-$(CONFIG_SENSORS_HMC5843) += hmc5843o

2,同目录下的kconfig

#

# Magnetometer sensors

#

comment "Magnetometer sensors"

config SENSORS_AK8975

tristate "Asahi Kasei AK8975 3-Axis Magnetometer"

depends on I2C

help

Say yes here to build support for Asahi Kasei AK8975 3-Axis

Magnetometer

To compile this driver as a module, choose M here: the module

will be called ak8975

3,总的config(配置变量为Y)

各项目配置文件的位置不同,

coffee:kernel/arch/arm/configs/M7023Q-debug-perf_defconfig

juice:common/customer/configs

配置信息如下:

# CONFIG_CFG80211 is not set

CONFIG_EXPERIMENTAL=y

CONFIG_LOCALVERSION="$(KERNEL_LOCAL_VERSION)-perf"

CONFIG_SWAP=y

CONFIG_ZRAM=m

CONFIG_SYSVIPC=y

CONFIG_SENSORS_AK8975=y

查看变量是否在编译时配置成功:

out/target/product/m7023q/obj/KERNEL_OBJ/include/generated/Autoconfh

查找CONFIG_SENSORS_AK8975

若在编译时有配置成功,将找到这一行:

#define CONFIG_SENSORS_AK8975 1

4、修改板级文件:

40及后续项目统一在:kernel/arch/arm/mach-msm/board-qrd7627ac

注意juice中,很多配置(如tp)写在kernel/arch/arm/mach-msm/board-msm7627a-ioc

在代码中增加新模块的内容,应该有两处,第一处设置函数和结构体,第二处实际调用,注意引用上述第3步新增的编译开关将代码限制起来。

这些内容大多可以拷贝其它模块,但是名字要和driver中的相同,注意要改的地方除了名字之外,还有中断脚和I2C脚。其中固定模块的中断脚大部分时候不会改变(如tp就是int:48,reset:26),除非板子的datasheet特别注明才需要改变。但是I2C脚是会随着slaver device的改变而改变的,需要查清楚。

配置platform_data:

一般需要初始化一个xxx_platform_data结构体(这个结构体的声明应该让驱动文件可视,probe中才知道去读某个platformdatayyy),并在i2c_board_info结构体中用platform_data指向它,然后这个i2c_board_info将在板级文件中被注册(作为函数i2c_register_board_info()的参数)。而这个platform_data很有可能在驱动的probe函数中调用到,例如:

static struct msg2133_ts_platform_data msg2133_platformdata= {

irq = 0,

reset = GPIO_TP_RESET,

};

static struct i2c_board_info i2c_info_msg2133_dpt = {

I2C_BOARD_INFO("msg2133", 0x27),

platform_data = &msg2133_platformdata,

};

i2c_info_msg2133_dptplatform_data->irq = gpio_to_irq(GPIO_TP_INT);//结构体初始化的时候只能以常量赋值,因为此处需要做GPIO到irq的映射,所以要在此处赋值。

i2c_register_board_info(MSM_GSBI1_QUP_I2C_BUS_ID, &i2c_info_msg2133_dpt, 1);

在驱动的probe中:pdata =client->devplatform_data;

= pdatayyy; //(msg2133_ts_platform_data在该文件中可见)

以上就是关于MPU9150和MPU9250有什么区别全部的内容,包括:MPU9150和MPU9250有什么区别、无人机飞控类别、mpu9250和mpu9255有什么区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10211915.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存