射频和无线供应商和资源的家

一站式满足您的射频和无线需求

Arduino接口与陀螺传感器图,工作,代码

这个应用程序说明涵盖Arduino接口与陀螺传感器图及其工作。它描述了使用的陀螺传感器,并提到arduino代码。

简介
陀螺传感器广泛应用于可穿戴设备中。它被用来确定旋转运动和方向的变化。现在的陀螺传感器配有I2C接口,可以轻松实现arduino板,微控制器或微处理器板。

陀螺传感器的典型应用是角速度传感、角度传感和控制机构。

关于陀螺传感器

所示的陀螺传感器型号为MPU-6050。它同时提供x轴、y轴和z轴数据。同样的代码将被解析以获得单独的值。

陀螺传感器MPU 6050

I2C总线协议使用两条线路在主设备和从设备之间进行通信。线路是SDA(串行数据)和SCL(串行时钟)。请参考I2C vs SPI vs UART >>参阅I2C接口的详细资料。

关于Arduino板

Arduino电路板

•Arduino Uno包含ATMEL的ATmega328微控制器。该微控制器包含闪存(32 KB), RAM (2 KB), 8位宽CPU和1 KB EEPROM。
•它还支持6个模拟引脚,读取电压而不是电流。在内部,它将模拟测量转换为各种用途的数字测量。它支持数字引脚(0到13),可以作为输入或输出。
•具有I2C、数字引脚、模拟引脚、串行通信、USB等多种接口。
•它还具有复位引脚,电源端口,晶体振荡器和Tx/Rx led。
•该开源原型板可以使用易于使用的arduino IDE和笔记本电脑与arduino板之间的USB接口轻松编程。
•IDE采用简化的c++程序。
•电路板需要5V DC,可以使用AC/DC适配器或电池供电。

Arduino与陀螺传感器图的接口及其工作原理

如图-1所示,陀螺传感器的五个引脚与arduino板相连。下表提到了它们之间的联系。

Arduino接口与陀螺传感器
陀螺传感器 Arduino Uno板
VCC 5伏
接地 接地
sci A5
SDA A4
INT 销2

Arduino陀螺传感器接口代码

以下是使用arduino IDE编译并上传到arduino板的arduino代码。以下代码从与arduino连接的MPU-6050陀螺传感器读取数据。要获得完整的代码及其描述,请访问howtomechatronics.com > >

# include
const int MPU = 0x68;// MPU6050 I2C地址
浮动AccX, AccY, AccZ;
浮动GyroX, GyroY, GyroZ;
浮动accAngleX, accAngleY, gyroAngleX, gyroAngleY, gyroAngleZ;
浮滚、俯仰、偏航;
浮动AccErrorX, AccErrorY, GyroErrorX, GyroErrorY, GyroErrorZ;
float elapsedTime, currentTime, previousTime;
Int c = 0;
无效的设置()

Serial.begin (19200);
Wire.begin ();//初始化通信
Wire.beginTransmission(微控制器);//开始与MPU6050通信// MPU=0x68
Wire.write (0 x6b);//与寄存器6B对话
Wire.write (0 x00);//重置-在6B寄存器中放入0
Wire.endTransmission(真正的);//结束传输

无效循环(){
// ===读取加速度计数据=== //
Wire.beginTransmission(微控制器);
Wire.write (0 x3b);//启动寄存器0x3B (acceler_xout_h)
Wire.endTransmission(假);
电线。requestFrom(MPU, 6, true);
//共读6个寄存器,每个轴的值存储在2个寄存器中
//根据数据表,对于+-2g的范围,我们需要将原始值除以16384
AccX = (Wire.read() << 8 | Wire.read())) / 16384.0;/ / X-axis-value
AccY = (Wire.read() << 8 | Wire.read())) / 16384.0;/ / Y-axis-value
AccZ = (Wire.read() << 8 | Wire.read())) / 16384.0;/ / Z-axis-value
//从加速度计数据中计算Roll和Pitch
accAngleX = (atan(AccY /√(pow(AccX, 2) + pow(AccZ, 2)) * 180 / PI) - 0.58;
更多细节请参见calculate_IMU_error()自定义函数
accAngleY = (-1 * AccX /√(pow(AccY, 2) + pow(AccZ, 2)) * 180 / PI) + 1.58;
// AccErrorY ~(-1.58)
// ===读取陀螺仪数据=== //
previousTime = currentTime;//之前的时间存储在实际读取时间之前
currentTime = millis();//当前时间读取的实际时间
elapsedTime = (currentTime - previousTime) / 1000;//除以1000得到秒数
Wire.beginTransmission(微控制器);
Wire.write (0 x43);//陀螺数据第一个寄存器地址0x43
Wire.endTransmission(假);
电线。requestFrom(MPU, 6, true);//共读4个寄存器,每个轴的值存储在2个寄存器中
GyroX = (Wire.read() << 8 | Wire.read())) / 131.0;
//根据数据表,在250°g/s范围内,我们必须首先将原始值除以131.0
GyroY = (Wire.read() << 8 | Wire.read())) / 131.0;
GyroZ = (Wire.read() << 8 | Wire.read())) / 131.0;
//用计算出的错误值修正输出
GyroX = GyroX + 0.56;// GyroErrorX ~(-0.56)
GyroY = GyroY - 2;// GyroErrorY ~(2)
GyroZ = GyroZ + 0.79;// GyroErrorZ ~ (-0.8)
//当前原始值的单位是度/秒,所以我们需要乘以
//通过发送(s)获得角度
gyroAngleX = gyroAngleX + GyroX * elapsedTime;// deg/s * s = deg
gyroAngleY = gyroAngleY + GyroY * elapsedTime;
偏航=偏航+ GyroZ * elapsedTime;
//互补滤波器-结合加速度计和陀螺角度值
roll = 0.96 * gyroAngleX + 0.04 * accAngleX;
螺距= 0.96 * gyroAngleY + 0.04 * accAngleY;

//打印串行显示器上的值
并同时(卷);
并同时(“/”);
并同时(沥青);
并同时(“/”);
以偏航);


结论:在这个应用笔记中,我们已经看到了陀螺传感器与Arduino Uno板的接口。Arduino板也用于接口不同类型的传感器应用。arduino接口的典型传感器有声音传感器、心跳传感器、LDR传感器、GPS传感器、颜色传感器、pH传感器等。请参考加速度计和陀螺仪>>的区别而且陀螺仪>>的优缺点获取更多信息。

物联网系统芯片教程相关链接

本教程的IoT(物联网)部分涵盖以下子主题:
主要的教程物联网部分物联网的文章移动物联网组件传感器印度公司天线类型无线技术物联网收发器SoC


射频和无线术语


分享本页

翻译本页
Baidu