37种传感器(二十九)MPU6050陀螺仪模块+Stduino Nano&UNO6 Z% ~: k% [6 a0 }3 O
' m( T- e" Q& q
$ s( |5 b# |- W' Z; B' R4 }
关键词: 51 ; stm32 ; arduino ; stduino单片机; stduino UNO&Nano ;MPU6050陀螺仪
2 U" @& Q+ A0 V) {6 I说明:. i: n& k) Z% h
MPU6050 陀螺仪传感器具有很多强大的功能,采用单芯片封装。该芯片由一个MEMS 加速度计,一个MEMS 陀螺仪和温度传感器组成。该模块在将模拟量转换为数字量时非常准确,因为每个通道都有一个16 位的模数转换器硬件。
6 ^. z- J8 V3 U- f/ n! f6 t4 [: V
) q& {; Z J9 w' t3 D 3 C$ x6 X5 B1 O6 u m% h
该模块能够同时捕获 x ,y 和z 通道。它有一个I2C 接口与主控制器进行通信。对于无人机,机器人,运动传感器等许多应用来说,这是一个非常有用的设备。它也被称为陀螺仪或六轴加速度计。
: i( r2 I; R0 x1 V3 K8 s: Y
5 _+ v6 L% A6 t 就像上面的图片一样,在一个立方体的盒子里面有一个小球,盒子的四壁是用石英晶体材料。当盒子加速度发声变化时,由于惯性的作用,球就会向与加速度方向相反的地方倾斜,当小球碰到那里就会产生压电电流,通过此电流可以确定该方向上加速度大小(实际测得的是压力的大小))。 实际上,当模块静止时, Z 轴方向上一直受到小球的挤压(由于重力作用),也应此,该模块无法获得物体在Z 轴上的旋转角。如果必须要获得绝对的旋转角,那么可以选择性MPU9250这个九轴运动跟踪芯片。
1 o. f5 t0 P8 j: v `7 M
' {; q$ L& o0 G" {6 w- r# T5 U& Q3 h
实验目的: 在本例中,我们将学习如何将传感器与 Stduino UNO一起使用,利用陀螺仪模块监测物体移动方向。
+ u. M& h$ ?: g4 h" ?' h# v器材: Stduino UNO / Nano; 杜邦线; MPU6050 模块 ; l. o' Y4 x( a1 T6 Y
电路连接: MPU6050-> Stduino UNO /纳米5 c1 c w& E! p# b% R0 p
VCC-> 5V GND->GND SCL-> D9 SDA-> D10 XCL XDA AD0->接地 INT-> D2
6 W5 @$ \) q3 w( Q& p$ {
重点说明:
v0 k- F$ X( b, z- ]1 N- {9 l
" j1 R: o& s4 k$ @/ y5 N
代码展示: - #include<Wire.h>3 _" m1 o6 ]9 Z
- const int MPU6050_addr=0x68;
; ?& Z1 h' I- d+ j - int16_t AccX,AccY,AccZ,Temp,GyroX,GyroY,GyroZ;; q+ F; @9 `" d8 n; n
- void setup(){
6 u( [2 v! y8 R3 G; r6 H- V) X - //D9 SCL3 k( M" U$ {4 i# N4 _$ ` U8 c# p
- //D10 SDA- P4 J# a- e( t% B( Q; i
- //5V( D% V! u0 p$ D3 T* ?
- //GND
2 @' u9 q: M& I/ [ {5 T* z - Wire.begin();0 b5 i, O; \0 s
- Wire.beginTransmission(MPU6050_addr);
: a7 j2 K/ ^& I% w- u/ c$ e - Wire.write(0x6B);) W6 t6 ^! b7 b1 w( O
- Wire.write(0);! d3 r# T& I( Y4 Z1 m# R, f
- Wire.endTransmission(true);/ W9 w( e+ L" C8 k# \! g5 v' V
- Serial.begin(9600);# g( ~' [" t+ ^/ |' n ]. v
- }' p9 Q/ Z( Y6 N) n% j
- void loop(){% i' l; e' d+ y2 |
- Wire.beginTransmission(MPU6050_addr);
7 h) J6 o \% L9 _! o' t/ N4 e. i - Wire.write(0x3B);
* P7 }( }' u% t. s! x# u* U - Wire.endTransmission(false);
+ B9 M" R% [7 P3 u! C - Wire.requestFrom(MPU6050_addr,14,true);//按顺序读取数据
4 i) Q3 B7 \$ v - AccX=Wire.read()<<8|Wire.read();//X轴方向的加速度分量
% a; @, K% l! f" Q' ] - AccY=Wire.read()<<8|Wire.read();//Y轴方向的加速度分量* h$ H$ H* a1 \/ N
- AccZ=Wire.read()<<8|Wire.read();//Z轴方向的加速度分量/ M+ v. X8 `/ ?; r! b% b( B
- Temp=Wire.read()<<8|Wire.read();! O y% O; P! z4 q3 e
- GyroX=Wire.read()<<8|Wire.read();//绕X轴旋转的角速度GYR_X
o5 e8 y8 n6 I! m1 j0 i - GyroY=Wire.read()<<8|Wire.read();//绕Y轴旋转的角速度GYR_Y
! [. V7 E% T( ~5 a - GyroZ=Wire.read()<<8|Wire.read();//绕Z轴旋转的角速度GYR_Z: s0 ?8 m" q4 u4 ]
- Serial.print("AccX = "); Serial.print(AccX);
" ^# m& S- v; H- B8 c; ?- Y$ l! F' g - Serial.print(" || AccY = "); Serial.print(AccY);
. _- s; `6 D% y- {" v1 H0 A - Serial.print(" || AccZ = "); Serial.print(AccZ);
+ z. A% q; {; w+ I - Serial.print(" || Temp = "); Serial.print(Temp/340.00+36.53);; G- Z1 c9 `$ m1 o
- Serial.print(" || GyroX = "); Serial.print(GyroX);
& X7 ^" t( R( j' i0 y: D - Serial.print(" || GyroY = "); Serial.print(GyroY);
" E- f# Z- X* P! r - Serial.print(" || GyroZ = "); Serial.println(GyroZ);3 J6 O9 {# R& {: z: {( }7 j/ @1 W: k
- delay(100);9 I: C" Q- ?) R' t6 [% |8 K4 X- _
- }
复制代码 : p. z) S6 e% x
1 ? G9 q: Z" H$ U, N
: c5 Y3 p8 ?, y N9 |
# q$ L: k( W6 k; t; l& @# F
Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。
: p& G4 Y8 L2 L2 F6 [) \/ gIDE当前支持的功能有: - GDB调试
- 封装库下载安装
- 代码自动补全提示
- 中英文模式
- UTF-8\GBK编码格式
- 代码快速格式化
- SWD\串口程序下载&调试(已验证)
- DFU程序下载方式(待验证)
- USB HID程序下载方式(待验证)
- maple DFU程序下载方式(待验证)
- maple DFU2程序下载方式(待验证)
- MassStorage程序下载方式(待验证)$ ~- ]8 p% U* t2 V( `7 j
( j4 o! S% ^; M5 C8 c1 W5 F& O; s- M8 X" E# L3 l) Y: w4 `. q
+ [3 z$ [1 S# E0 ?, W6 v. M1 o% q5 y" V! y0 n b/ g$ P* q5 W' f3 O
更多功能细节请前往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 K0 ], S6 k5 K8 t# _: O d7 G
y1 w$ U5 t0 k$ F4 L( g" t
' L' `2 D3 O$ b- s
更多功能集成正在进行中~
& K$ n4 V# K: Y* f- {; M6 S |