37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百四十二:GY-25 串口直接输出角度数据 倾斜度角度传感器模块 MPU-6050



知识点:MPU-6050(6000)芯片

为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时间轴之差的问题,减少了大量的封装空间。当连接到三轴磁强计时,MPU-60X0提供完整的9轴运动融合输出到其主I2C或SPI端口(SPI仅在MPU-6000上可用)。MPU-6050(6000)的角速度全格感测范围为±250、±500、±1000与±2000°/sec (dps),可准确追踪快速与慢速动作,并且,用户可程式控制的加速器全格感测范围为±2g、±4g±8g与±16g。产品传输可透过最高至400kHz的IIC或最高达20MHz的SPI(MPU-6050没有SPI)。MPU-6000可在不同电压下工作,VDD供电电压介为2.5V±5%、3.0V±5%或3.3V±5%,逻辑接口VDDIO供电为1.8V± 5%(MPU6000仅用VDD)。MPU-6000的包装尺寸4x4x0.9mm(QFN),在业界是革命性的尺寸。其他的特征包含内建的温度感测器、包含在运作环境中仅有±1%变动的振荡器。

陀螺仪传感器
是一个简单易用的基于自由空间移动和手势的定位和控制系统,它原本是运用到直升机模型上,现已被广泛运用于手机等移动便携设备。对于不熟悉这类产品的人来说,陀螺仪传感器是一个简单易用的基于自由空间移动和手势的定位和控制系统。在假想的平面上挥动鼠标,屏幕上的光标就会跟着移动,并可以绕着链接画圈和点击按键。当你正在演讲或离开桌子时,这些操作都能够很方便地实现。 陀螺仪传感器原本是运用到直升机模型上的,已经被广泛运用于手机这类移动便携设备上(IPHONE的三轴陀螺仪技术)。陀螺仪的原理就是,一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的。人们根据这个道理,用它来保持方向。然后用多种方法读取轴所指示的方向,并自动将数据信号传给控制系统。我们骑自行车其实也是利用了这个原理。轮子转得越快越不容易倒,因为车轴有一股保持水平的力量。现代陀螺仪可以精确地确定运动物体的方位的仪器,它在现代航空,航海,航天和国防工业中广泛使用的一种惯性导航仪器。传统的惯性陀螺仪主要部分有机械式的陀螺仪,而机械式的陀螺仪对工艺结构的要求很高。70年代提出了现代光纤陀螺仪的基本设想,到八十年代以后,光纤陀螺仪就得到了非常迅速的发展,激光谐振陀螺仪也有了很大的发展。光纤陀螺仪具有结构紧凑,灵敏度高,工作可靠。光纤陀螺仪在很多的领域已经完全取代了机械式的传统的陀螺仪,成为现代导航仪器中的关键部件。光纤陀螺仪同时发展的除了环式激光陀螺仪外。


陀螺仪
是用高速回转体的动量矩敏感壳体相对惯性空间绕正交于自转轴的一个或二个轴的角运动检测装置。利用其他原理制成的角运动检测装置起同样功能的也称陀螺仪。绕一个支点高速转动的刚体称为陀螺(top)。通常所说的陀螺是特指对称陀螺,它是一个质量均匀分布的、具有轴对称形状的刚体,其几何对称轴就是它的自转轴。 与苍蝇退化的后翅(平衡棒)原理类似。在一定的初始条件和一定的外在力矩作用下,陀螺会在不停自转的同时,环绕着另一个固定的转轴不停地旋转,这就是陀螺的旋进(precession),又称为回转效应(gyroscopic effect)。陀螺旋进是日常生活中常见的现象,许多人小时候都玩过的陀螺就是一例。人们利用陀螺的力学性质所制成的各种功能的陀螺装置称为陀螺仪(gyroscope),它在科学、技术、军事等各个领域有着广泛的应用。比如:回转罗盘、定向指示仪、炮弹的翻转、陀螺的章动等。陀螺仪的种类很多,按用途来分,它可以分为传感陀螺仪和指示陀螺仪。传感陀螺仪用于飞行体运动的自动控制系统中,作为水平、垂直、俯仰、航向和角速度传感器。指示陀螺仪主要用于飞行状态的指示,作为驾驶和领航仪表使用。陀螺仪分为,压电陀螺仪,微机械陀螺仪,光纤陀螺仪和激光陀螺仪,它们都是电子式的,并且它们可以和加速度计,磁阻芯片,GPS,做成惯性导航控制系统。


陀螺仪原理

是指陀螺仪工作的原理,螺旋仪是一种用来传感与维持方向的装置,基于角动量守恒的理论设计出来的。陀螺仪主要是由一个位于轴心且可旋转的转子构成。 陀螺仪一旦开始旋转,由于转子的角动量,陀螺仪有抗拒方向改变的趋向。陀螺仪多用于导航、定位等系统常用实例如手机GPS定位导航、卫星三轴陀螺仪定位。陀螺仪基本上就是运用物体高速旋转时,角动量很大,旋转轴会一直稳定指向一个方向的性质,所制造出来的定向仪器。不过它必需转得够快,或者惯量够大(也可以说是角动量要够大)。不然,只要一个很小的力矩,就会严重影响到它的稳定性。高速旋转的物体的旋转轴,对于改变其方向的外力作用有趋向于垂直方向的倾向。而且,旋转物体在横向倾斜时,重力会向增加倾斜的方向作用,而轴则向垂直方向运动,就产生了摇头的运动(岁差运动)。当陀螺经纬仪的陀螺旋转轴以水平轴旋转时,由于地球的旋转而受到铅直方向旋转力,陀螺的旋转体向水平面内的子午线方向产生岁差运动。当轴平行于子午线而静止时可加以应用。陀螺仪基本上就是运用物体高速旋转时,角动量很大,旋转轴会一直稳定指向一个方向的性质,所制造出来的定向仪器。不过它必需转得够快,或者惯量够大(也可以说是角动量要够大)。不然,只要一个很小的力矩,就会严重影响到它的稳定性。

加速度(Acceleration)
是速度变化量与发生这一变化所用时间的比值Δv/Δt,是描述物体速度变化快慢的物理量,通常用a表示,单位是m/s2。加速度是矢量,它的方向是物体速度变化(量)的方向,与合外力的方向相同。表示质点速度变化的快慢的物理量。举例:假如两辆汽车开始静止,均匀地加速后,达到10m/s的速度,A车花了10s,而B车只用了5s。它们的速度都从0变为10m/s,速度改变了10m/s。所以它们的速度变化量是一样的。但是很明显,B车变化得更快一些。我们用加速度来描述这个现象:B车的加速度(a=Δv/Δt,其中的Δv是速度变化量)>A车的加速度。显然,当速度变化量一样的时候,花时间较少的B车,加速度更大。也就是说B车的启动性能相对A车好一些。因此,加速度是表示物体速度变化快慢的物理量。加速度 (acceleration) 表征单位时间内速度改变程度的矢量。一般情况下,加速度是个瞬时概念,它的常用单位是米/秒²、m/s2等。


加速度传感器(acceleration transducer)
是一种能够测量加速度的传感器。通常由质量块、阻尼器、弹性元件、敏感元件和适调电路等部分组成。传感器在加速过程中,通过对质量块所受惯性力的测量,利用牛顿第二定律获得加速度值。根据传感器敏感元件的不同,常见的加速度传感器包括电容式、电感式、应变式、压阻式、压电式等。线加速度计的原理是惯性原理,也就是力的平衡,A(加速度)=F(惯性力)/M(质量) 我们只需要测量F就可以了。怎么测量F?用电磁力去平衡这个力就可以了。就可以得到 F对应于电流的关系。只需要用实验去标定这个比例系数就行了。当然中间的信号传输、放大、滤波就是电路的事了。多数加速度传感器是根据压电效应的原理来工作的。所谓的压电效应就是 "对于不存在对称中心的异极晶体加在晶体上的外力除了使晶体发生形变以外,还将改变晶体的极化状态,在晶体内部建立电场,这种由于机械力作用使介质发生极化的现象称为正压电效应 "。一般加速度传感器就是利用了其内部的由于加速度造成的晶体变形这个特性。由于这个变形会产生电压,只要计算出产生电压和所施加的加速度之间的关系,就可以将加速度转化成电压输出。当然,还有很多其它方法来制作加速度传感器,比如压阻技术,电容效应,热气泡效应,光效应,但是其最基本的原理都是由于加速度产生某个介质产生变形,通过测量其变形量并用相关电路转化成电压输出。每种技术都有各自的机会和问题。使用加速度传感器有时会碰到低频场合测量时输出信号出现失真的情况,用多种测量判断方法一时找不出故障出现的原因,经过分析总结,导致测量结果失真的因素主要是:系统低频响应差,系统低频信噪比差,外界环境对测量信号的影响。 所以,只要出现加速度传感器低频测量信号失真情况,对比以上三点看看是哪个因素造成的,有针对性的进行解决。


MPU 6050属于IMU传感器系列,通常被用于自平衡机器人、无人机、智能手机等领域。IMU传感器可以帮助我们在三维空间中获取物体当前三维位置的值,这些值可以用来帮助我们确定物体的精确位置,通过MPU6050可以检测智能手机的水平或倾斜状态或是使用IMU传感器来追踪运动状态等。MU传感器通常包含两个或多个功能,按优先级分别是加速计、陀螺仪、磁力计和测高仪。MPU 6050是6自由度或6轴的IMU传感器,这意味着它提供了6个值作为输出:包含加速度计的3个值和陀螺仪的3个值。MPU 6050是一种基于MEMS(微机电系统)技术的传感器,它将加速度计和陀螺仪嵌入到一块芯片中,芯片使用的I2C通信协议。

GY25是一款低成本倾斜模块
工作电压3-5v 功耗小,体积小。其工作原理,是通过陀螺仪与加速度传感器经过数据融合算法最后得到直接的角度数据。此倾斜度模块以串口TTL 电平全双工方式与上位机进行通信。该产品精度高,稳定性高。能够在任意位置得到准确的角度,输出的波特率有9600bps 与115200bps有连续输出与询问输出两种方式,可适应不同的工作环境,与各种的单片机及电脑连接。



GY25是一款低成本倾斜模块
工作电压3-5v 功耗小,体积小。其工作原理,是通过陀螺仪与加速度传感器经过数据融合算法最后得到直接的角度数据。此倾斜度模块以串口TTL 电平全双工方式与上位机进行通信。该产品精度高,稳定性高。能够在任意位置得到准确的角度,输出的波特率有9600bps 与115200bps有连续输出与询问输出两种方式,可适应不同的工作环境,与各种的单片机及电脑连接。

GY25模块参数
1.工作电压:3~5 V(内部低压差稳压)
2.工作电流:15mA
3.测量范围:-180°~ 180°
4.分辨率:0.01°
5.测量精度:1 °(倾斜度)
6.响应频率:100HZ(115200bps)
7.工作温度:-20°~ 85°
8.使用芯片:MCU+MPU6050
9.产品尺寸:15.5×15.5mm,引脚间距2.54mm
10.通信方式:串口通讯(波特率9600,115200), IIC通信(仅读取原始数据)



GY25数据读取
1.YAW/OLL/PITCH直接数据:
航向角(YAW ) ±180°
横滚角(ROLL ) ±180°
俯仰角(PITCH) ±180°( ±90°+±90°)
角度分辨率0.01°
2.原始数据直接数据:
陀螺仪原始数据
加速度原始数据
温度数据
角度数据

GY25注意事项
(1)模块上电自校正,需保持3秒以上静止状态,建议不要用手拿着模块;
(2)角度欧拉角由于万向锁问题,横滚,俯仰在90度时候会有相互影响;
(3)模块右侧的焊接点短接,重启后模块进入 IIC 模式,客户可自行操作传感器,模块 MCU 不对传感器进行任何操作;
(4)模块I/O是TTL电平,可以直接与单片机串口连接,但不能与电脑九针串口直接连接;
(5)修改波特率指令
A5 56 修改波特率成为115200
A5 57 修改波特率成为9600




Arduino实验开源代码

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百四十二:GY-25 串口直接输出角度数据 倾斜度角度传感器模块 MPU-6050使用步骤:1.先下载GY25_uart程序至arduino2.再接上GY25模块3.按复位按键4.打开串口,波特率1152005、接线GY25        arduino unoVCC----------------------VCCRX-----------------------TXTX-----------------------RXGND----------------------GND实验之一:串口显示动态角度数值*/#include <Wire.h>int YPR[3];unsigned char Re_buf[8], counter = 0;unsigned char sign = 0;int led = 13;//-----------------------------------------------------------void setup(){Serial.begin(115200);delay(2000);Serial.write(0XA5);Serial.write(0X52);  //初始化GY25,连续输出模式}//-------------------------------------------------------------void loop() {if (sign){sign = 0;if (Re_buf[0] == 0xAA && Re_buf[7] == 0x55)  //检查帧头,帧尾{YPR[0] = (Re_buf[1] << 8 | Re_buf[2]) / 100; //合成数据,去掉小数点后2位YPR[1] = (Re_buf[3] << 8 | Re_buf[4]) / 100;YPR[2] = (Re_buf[5] << 8 | Re_buf[6]) / 100;Serial.print("YPR:\t");Serial.print(YPR[0], DEC); Serial.print("\t"); //显示航向Serial.print(YPR[1], DEC); Serial.print("\t"); //显示俯仰角Serial.println(YPR[2], DEC);          //显示横滚角delay(50);}}}//---------------------------------------------------------------void serialEvent() {while (Serial.available()) {Re_buf[counter] = (unsigned char)Serial.read();if (counter == 0 && Re_buf[0] != 0xAA) return; // 检查帧头counter++;if (counter == 8)       //接收到数据{counter = 0;        //重新赋值,准备下一帧数据的接收sign = 1;}}}

实验串口返回情况



GY-25串口倾斜度模块实验场景图

Arduino实验开源代码之二

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百四十二:GY-25 串口直接输出角度数据 倾斜度角度传感器模块 MPU-6050使用步骤:1.先下载GY25_uart程序至arduino2.再接上GY25模块3.按复位按键4.打开串口,波特率1152005、接线GY25        arduino unoVCC----------------------VCCRX-----------------------TXTX-----------------------RXGND----------------------GND---------------------------------------IICLCD2004      arduino unoVCC----------------------VCCSCL----------------------A5SDA----------------------A4GND----------------------GND实验之二:IICLCD2004显示动态角度数值*/#include <Wire.h>#include <LiquidCrystal_I2C.h>int YPR[3];unsigned char Re_buf[8], counter = 0;unsigned char sign = 0;int led = 13;LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x20 for a 20 chars and 4 line display//-----------------------------------------------------------void setup(){lcd.init();           // initialize the lcd// Print a message to the LCD.Serial.begin(115200);delay(2000);Serial.write(0XA5);Serial.write(0X52);  //初始化GY25,连续输出模式lcd.backlight();lcd.setCursor(0, 0);  //I2C接口LCD2004显示初始值lcd.print("Yaw:");lcd.setCursor(0, 1);lcd.print("Pitch:");lcd.setCursor(0, 2);lcd.print("Roll:");}//-------------------------------------------------------------void loop() {if (sign){sign = 0;if (Re_buf[0] == 0xAA && Re_buf[7] == 0x55)  //检查帧头,帧尾{YPR[0] = (Re_buf[1] << 8 | Re_buf[2]) / 100; //合成数据,去掉小数点后2位YPR[1] = (Re_buf[3] << 8 | Re_buf[4]) / 100;YPR[2] = (Re_buf[5] << 8 | Re_buf[6]) / 100;lcd.setCursor(4, 0);lcd.print("  ");lcd.setCursor(4, 0);lcd.print(YPR[0]);   //显示航向lcd.setCursor(6, 1);lcd.print("  ");lcd.setCursor(6, 1);  //显示俯仰角lcd.print(YPR[1]);lcd.setCursor(5, 2);lcd.print("  ");lcd.setCursor(5, 2);  //显示横滚角lcd.print(YPR[2]);delay(100);}}}//----------------------------------------------------------void serialEvent() {while (Serial.available()) {Re_buf[counter] = (unsigned char)Serial.read();if (counter == 0 && Re_buf[0] != 0xAA) return; // 检查帧头counter++;if (counter == 8)       //接收到数据{counter = 0;        //重新赋值,准备下一帧数据的接收sign = 1;}}}

GY-25串口倾斜度模块实验场景图二,未输出角度数据,不知哪里出问题了

经过调试,LCD2004A可以显示动态角度数据了



经过调试,LCD2004A可以显示动态角度数据了,实验视频40秒

https://v.youku.com/v_show/id_XNTAyNTI1MDY0MA==.html?spm=a2hzp.8253869.0.0

【雕爷学编程】Arduino动手做(142)---GY-25串口倾斜度模块相关推荐

  1. 【雕爷学编程】Arduino动手做(105)---压电陶瓷振动模块

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...

  2. 【雕爷学编程】Arduino动手做(107)---PCF8574扩展板模块

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...

  3. 【雕爷学编程】Arduino动手做(110)---JDY-31 蓝牙模块

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...

  4. 【雕爷学编程】Arduino动手做(133)---LCD1602扩展板模块

    7款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目 ...

  5. 【雕爷学编程】Arduino动手做(88)---水流量传感器模块

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...

  6. 「雕爷学编程」Arduino动手做(30)——光敏二极管模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(动手做)的理念,以学习和交流为目的,这里准备逐 ...

  7. 「雕爷学编程」Arduino动手做(29)——DS1302时钟模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  8. 「雕爷学编程」Arduino动手做(17)---人体感应模块

    37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...

  9. 【雕爷学编程】Arduino动手做(16)---数字触摸传感器

    37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...

最新文章

  1. git管理和自动部署项目
  2. 多线程程序在多核和单核上运行的不同
  3. 我最印象深刻的编程错误经历
  4. leetcode 581. Shortest Unsorted Continuous Subarray | 581. 最短无序连续子数组(单调栈)
  5. HTML---HTML简介
  6. Matlab:*.txt转换为*.mat
  7. MOOS学习笔记3——命令行
  8. HNU 实验五 拜访朋友
  9. python中paramiko模块_如何使用python中paramiko模块?
  10. oracle hang analyze,Oracle hanganalyze工具的使用
  11. 波轮全自动洗衣机分解与典型部件拆装技巧
  12. 使用广义α方法(the generalized-α method)求解时变动力学问题
  13. ValueError: operands could not be broadcast together with shapes (204,111104
  14. win10系统暴雪战网连不上服务器,win10系统暴雪战网无法登陆的解决方法
  15. MFC 108问题
  16. 【JAVA】集合框架及复杂度
  17. 类似 迈图7608 Monentive7608 上海荟研 高新材料 印刷油墨 合成革离型纸 水性涂料基材润湿剂 超润湿剂资料
  18. uniapp uview 图片上传
  19. 【前端学习-25】【day04】正则表达式、表单验证、用户名验证
  20. 爬虫奇遇记——爬不到想要的内容

热门文章

  1. 通过 Tensorflow 的基础类,构建卷积神经网络,用于花朵图片的分类
  2. 港科夜闻|香港科大与微软合作,推出香港首个AI相关工商管理硕士选修课
  3. SONY索尼VAIO进入BIOS并设置U盘启动
  4. Android Wear 之 WearableListView
  5. chrome浏览器快速访问stackoverflow
  6. 清晰易懂的NumPy 图解教程!
  7. 橙知学堂3.0运营思路揭秘-世界500强企业的在线学习平台
  8. emoji表情上传服务器的问题
  9. 网络安全p10内容sql注入教程
  10. VUE浅拷贝和深拷贝