37种传感器(二十九)MPU6050陀螺仪模块+Stduino Nano&UNO3 S( l0 Y/ r: H9 J" O, `
2 C2 }! g% m) z9 P7 ]: [& P) E
2 }* {7 x* O- W' G4 K8 v关键词: 51 ; stm32 ; arduino ; stduino单片机; stduino UNO&Nano ;MPU6050陀螺仪
6 \/ @0 _2 {% g说明:9 r. Z& M3 q/ S& j- x) V: y
MPU6050 陀螺仪传感器具有很多强大的功能,采用单芯片封装。该芯片由一个MEMS 加速度计,一个MEMS 陀螺仪和温度传感器组成。该模块在将模拟量转换为数字量时非常准确,因为每个通道都有一个16 位的模数转换器硬件。
% r# m. t& T( F- ?' H5 ^- ~7 s
X( C/ N. B4 D% i$ E 1 f; R3 q3 W0 S/ W
该模块能够同时捕获 x ,y 和z 通道。它有一个I2C 接口与主控制器进行通信。对于无人机,机器人,运动传感器等许多应用来说,这是一个非常有用的设备。它也被称为陀螺仪或六轴加速度计。
& @8 l* R9 C5 }8 U% d$ l
" q8 Z1 y f4 I( b! i; m
就像上面的图片一样,在一个立方体的盒子里面有一个小球,盒子的四壁是用石英晶体材料。当盒子加速度发声变化时,由于惯性的作用,球就会向与加速度方向相反的地方倾斜,当小球碰到那里就会产生压电电流,通过此电流可以确定该方向上加速度大小(实际测得的是压力的大小))。 实际上,当模块静止时, Z 轴方向上一直受到小球的挤压(由于重力作用),也应此,该模块无法获得物体在Z 轴上的旋转角。如果必须要获得绝对的旋转角,那么可以选择性MPU9250这个九轴运动跟踪芯片。
' y- ^/ B0 @8 p; M6 C
3 p, i( M! Q5 U& Z6 ]' j y- O2 {实验目的: 在本例中,我们将学习如何将传感器与 Stduino UNO一起使用,利用陀螺仪模块监测物体移动方向。 ( q, J% d' t, u! `- _* s1 W d
器材: Stduino UNO / Nano; 杜邦线; MPU6050 模块
+ u, r! `( r3 g+ F4 V
电路连接: MPU6050-> Stduino UNO /纳米
) Q1 R: W' Q" x4 e% D VCC-> 5V GND->GND SCL-> D9 SDA-> D10 XCL XDA AD0->接地 INT-> D2 6 ~# F0 z& Z& j" D) E
重点说明:
. {% ^( |( P# U9 g
M+ e3 I( s0 x) d% }. B5 r
代码展示: - #include<Wire.h>
3 S& |( C' G/ ` - const int MPU6050_addr=0x68;
2 j/ t4 g9 A* ]# ~& [9 ]' r% o% O8 ` - int16_t AccX,AccY,AccZ,Temp,GyroX,GyroY,GyroZ;
9 Z2 u. X. z- Y5 F - void setup(){
3 }% |' f9 Y- \1 |8 m' |4 c. { - //D9 SCL9 q! ]. a C1 w- U% |# S6 u
- //D10 SDA
5 F" C7 ^6 ]& j% _4 T" j- }- ~% @ - //5V
5 X! Q8 a) V+ U9 @( G0 S. a0 H - //GND
4 V6 ?- d+ B2 B- q! e; V- L: l - Wire.begin();* B* _6 c) g/ K' S1 n
- Wire.beginTransmission(MPU6050_addr);+ I2 N. ~% }2 \) u- z; d2 r
- Wire.write(0x6B);
) i6 ` ~" X, Q. |1 P2 a6 C - Wire.write(0);
& O4 u* s' i9 x/ n0 U: e4 O( @3 N8 @ - Wire.endTransmission(true);5 x9 i. x: L& S; k# c; h1 V
- Serial.begin(9600);3 a8 [5 M _6 ]3 i. s
- }
- Y U5 i8 K/ Y* f - void loop(){
+ X3 V6 E1 c h9 Z2 \1 C: h - Wire.beginTransmission(MPU6050_addr);
4 \9 {$ t3 G _; c& ^' K. S - Wire.write(0x3B);# s0 p( @/ L3 t# P* _
- Wire.endTransmission(false);
$ D! y7 b6 h% s" J - Wire.requestFrom(MPU6050_addr,14,true);//按顺序读取数据
# z U+ z% G* `2 a+ p L& f - AccX=Wire.read()<<8|Wire.read();//X轴方向的加速度分量: ^9 e7 U }& e4 p! f
- AccY=Wire.read()<<8|Wire.read();//Y轴方向的加速度分量9 b1 G: l4 F! k
- AccZ=Wire.read()<<8|Wire.read();//Z轴方向的加速度分量
- R9 G' `3 n; y" y - Temp=Wire.read()<<8|Wire.read(); c/ f3 ^4 p$ {, F, z' A+ }
- GyroX=Wire.read()<<8|Wire.read();//绕X轴旋转的角速度GYR_X! U9 I- Q& q+ e# A+ I# e0 }( n& m3 V
- GyroY=Wire.read()<<8|Wire.read();//绕Y轴旋转的角速度GYR_Y
2 N/ U2 P, [' ~5 ~( B0 b9 U. o7 r - GyroZ=Wire.read()<<8|Wire.read();//绕Z轴旋转的角速度GYR_Z
% @* F5 U, J, O! Q ^ I+ Q - Serial.print("AccX = "); Serial.print(AccX);
8 U; Q" P* {/ E1 j7 J1 K! U - Serial.print(" || AccY = "); Serial.print(AccY);: R3 d. N9 g# Z3 O* B7 }8 j
- Serial.print(" || AccZ = "); Serial.print(AccZ);
: E" f1 \1 A% i - Serial.print(" || Temp = "); Serial.print(Temp/340.00+36.53);
$ Z4 A, i8 j4 k9 U5 p - Serial.print(" || GyroX = "); Serial.print(GyroX);
0 ^0 F9 c, r. b - Serial.print(" || GyroY = "); Serial.print(GyroY);: d/ A* S q+ n& l1 [2 J
- Serial.print(" || GyroZ = "); Serial.println(GyroZ);
4 k0 n; e2 `+ [. ~; D - delay(100); b3 M O5 _8 T& W0 v5 j
- }
复制代码 % p' |! T& `" B! W9 O) L3 ?
( b' u' i2 m, @% u
8 z9 \/ U' d. {6 N" @8 G
6 ^- H. o0 L1 q( jStduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。
5 i% ~2 g/ {* T: pIDE当前支持的功能有: - GDB调试
- 封装库下载安装
- 代码自动补全提示
- 中英文模式
- UTF-8\GBK编码格式
- 代码快速格式化
- SWD\串口程序下载&调试(已验证)
- DFU程序下载方式(待验证)
- USB HID程序下载方式(待验证)
- maple DFU程序下载方式(待验证)
- maple DFU2程序下载方式(待验证)
- MassStorage程序下载方式(待验证)8 y/ q- ~: F+ A, K, ]5 |3 ^
+ }: N6 x% l% ^/ Q. P/ O5 _, `" J2 H- N: U
9 u8 ?" E. Q& G- G: v4 O3 q; v0 ?; |$ q5 h5 [
更多功能细节请前往www.stduino.com进行了解 已经支持的芯片&板型列表: - Stduino UNO&Nano
- Nucleo 144 boards
- Nucleo 64 boards
- Nucleo 32 boards
- Discovery boards
- Eval boards
- STM32MP1 series coprocessor boards
- Generic STM32F0 boards
- Generic STM32F1 boards
- Generic STM32F3 boards
- Generic STM32F4 boards
- Generic STM32H7 boards
- Generic STM32L0 boards
- 3D printer boards
- LoRa boards
- Electronic Speed Controller boards
- Generic flight controllers
- Garatronics boards
- Midatronics boards) S1 l: v. p6 d$ V7 P
7 Q! q# i- U' O ]) [: w1 N% w
5 d9 T4 z- Q/ T9 p9 `. A
更多功能集成正在进行中~
7 u2 U2 e* L9 z) H8 y: n |