1429 位酷友已加入
电子圈子中包含常用的源代码、电路图、学习教程、产品样本、技术报告等干货资料,加入圈子可以上传、下载资料,也可以使用提问来寻求资料或分享你认为有价值的站外链接~
需要的元件 Arduino mega 2560 SparkFun IMU Breakout -MPU- 9250 Arduino IDE 原理及流程 运动处理是一个重要的概念。如果要与实时数据进行交互,则应该能够与运动参数进行交互,例如:线性加速度,角加速度,磁力。 MPU9250具有加速度计,陀螺仪和磁力计。我们可以从MPU9250获得的信息是:偏航,俯仰角和侧倾角。鉴于此,我将仅在本文中处理偏航。 处理来自MPU9250的数据 MPU的三个传感器均具有一个16位寄存器。它们临时存储来自传感器的数据,然后再通过I2C进行中继。 读取数据 我们一次接收8位数据,然后将它们连接在一起以再次形成16位。如下面的kriswiners代码片段所示: 校准原始数据 然后必须根据用户环境校准接收到的数据。需要对磁力计进行校准以补偿磁偏角。校正的确切值取决于位置。有两个必须校准的变量:偏航和磁偏角。 下面显示了特定磁偏角的偏航校准(印度钦奈的Potheri)。磁偏角数据可从不同站点获得: http://geomag.nrcan.gc.ca/calc/mdcal-en.php http://www.ngdc.noaa.gov/geomag-web/ 请参见下面的代码片段[给定的代码片段,用于校正偏斜的数据来自另一个函数(magcalMPU9250(float * dest1, float * dest2)): 自动校准磁力计 这是MPU代码中最简单和重要的部分之一。 当你在移动传感器时,该功能将magcalMPU9250(float * dest1, float * dest2)校准磁力计。它存储最大和最小读数并取平均值。 有关更多详细信息,请访问源: https://github.com/kriswiner/MPU6050/wiki/Simple-and-Effective-Magnetometer-Calibration 永久校准特定位置 如果你不想每次都进行自动校准,则只需在计算了magbias []后记下平均值,并使用以下代码段即可: 对于我的位置,值470、120、125是固定的,因此在执行此操作后,就不需要**void magcalMPU9250(float * dest1,float * dest2)函数,**因此你可以将其注释掉或将其删除。同样也不要忘记注释掉调用语句: 筛选 因为原始数据包含很多噪声,所以我们在传感器的输出上使用某些滤波器将其转换为四元数(Madgwick / Mahony / Kalman): 数据平均 由于数据变化非常快,我们采样了一段时间(50毫秒)并取平均值。 提取现实世界的信息 最后,我们从四元数获得偏航,俯仰和滚动形式的读数。 使用Arduino Mega 2560从MPU9250获取读数 我们有许多MPU9250的库。kriswiner提供了一种流行的方法:Kriswiner提供的MPU-9250 Arduino库 将库保存到Arduino文件夹后,即可开始使用。打开示例MPU9250BasicAHRS.ino.还准备好此设置: MPU9250突破——— Arduino VIN ———————— 5V SDA ———————– SDA(引脚20) SCL ———————– SCL(引脚21) GND ———————- GND 这些导线不应太长,因为I2C连接不适用于长导线。 现在缩减MPU9250BasicAHRS代码。它具有LCD代码,但我们不需要它,因此请删除不必要的行。另外,我还添加了一部分自动校准代码。这是修改后的代码,没有不必要的代码,并且添加了自动校准:Github。 现在将代码上传到你的Arduino并进行上述连接。打开串行终端,并将波特率更改为115200。你应该看到以下输出: 如果看到以下内容: 这意味着肯定存在接线问题(或在最坏的情况下,MPu / arduino故障)请在尝试之前纠正此问题。 如果一切顺利,你会看到“ MPU处于联机状态”和“ Mag Calibration:图8中的波形设备,直到完成!” 然后一切正常,你应该将MPU调整为八字形,直到完成自动校准。一段时间后,你应该获得如下的偏航,俯仰和侧倾输出: 这就意味着你有数据来 使用P-控制器对RTPT进行自动方位角(偏航)校准 我们首先通过执行以下操作将偏航从(-180到+180)转换为(0到360): 然后,我们只需使用简单的比例控制器在偏航中找到错误,然后将错误添加回偏航,然后使用新偏航进行伺服映射: 这样就完成了该项目。 所有代码在下载区均可找到。 最后 所有需要的文件在下载区均可找到。 via:https://create.arduino.cc/projecthub/30503/using-the-mpu9250-to-get-real-time-motion-data-08f011?ref=platform&ref_id=424_popular___&offset=35
需要的元件 Arduino UNO Microchip Technology ATtiny85 杜邦线 Arduino IDE 原理及流程 我正在一个项目中,该项目需要在不同位置读取多个传感器数据。这些仅需几个PWM引脚,因此使用多个Arduino Uno既昂贵又不必要。因此,我决定使用ATtiny85微控制器代替Arduino Uno开发板。当你不需要太多的PWM引脚时,ATtiny85是一种廉价而强大的替代产品。由于ATtiny85只是一个微控制器,我们需要Arduino Uno对其进行编程。在这个项目中,我将解释如何做。以下是ATtiny85的引脚配置,其数据表可在http://www.atmel.com/images/atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_datasheet.pdf处找到 。 将Arduino Uno配置为ISP(系统内编程) 要对ATtiny85进行编程,我们需要首先将Arduino Uno设置为ISP模式。将你的Arduino Uno连接到PC。打开Arduino IDE并打开Arduino ISP示例文件(File -> Examples -> ArduinoISP)并上传。 向Arduino IDE添加ATtiny85支持 默认情况下,Arduino IDE不支持ATtiny85,因此我们应该在Arduino IDE中添加ATtiny板。打开文件->首选项,并在附加板管理器中的URL中提供以下URL :https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json 完成此操作后,打开 Tools -> Board -> Board Manager 打开Board Manager后,向下滚动列表,上面写着 "attiny by Davis A. Mellis",单击并安装它。 现在安装后,你将可以在“ Board”菜单中看到一个新条目。 将ATtiny85与Arduino Uno连接 现在,上述所有事情都准备就绪,我们将开始对attiny85进行编程。如下使用面包板将arduino uno连接到attiny85。 Arduino Uno-ATtiny85 5V – Vcc Gnd – Gnd Pin 13 – Pin 2 Pin 12 – Pin 1 Pin 11 – Pin 0 Pin 10 –RESET 在arduino的RESET和GND之间添加一个10uF电容器。这是为了避免在我们将程序上传到attiny85时将arduino自动重置。如果使用电解电容器,请确保阳极进入uno的GND。 将程序上传到ATtiny85 现在回到Arduino IDE。在Tools -> Board下选择ATtiny。然后在工具->处理器下选择ATtiny85。然后在 Tools -> Clock下选择8 MHz(internal) 。 然后确保在Tools -> Programmer下选择了Arduino as ISP 默认情况下,ATtiny85以1MHz运行。要使其以8MHz的频率运行,请选择Tools -> Burn Bootloader。 如果成功启动引导加载程序,你将收到上述消息。 现在,从arduino示例中打开Blink示例,并将引脚号从13更改为0并上传。 如果一切成功,则可以看到以上消息。现在,我们将Blink程序上传到ATtiny85,现在对其进行测试。 测试ATtiny85闪烁 现在该测试了。断开Arduino的所有连接并接通电源。在这里,我将使用纽扣电池为ATtiny85供电。 下载区提供的代码是在ATtiny85上运行的Blink程序,只要一个电池即可为其供电。你可以以低成本,低功耗和小空间完成许多项目。 最后 所有需要的文件在下载区均可找到。 via:https://create.arduino.cc/projecthub/arjun/programming-attiny85-with-arduino-uno-afb829?ref=platform&ref_id=424_popular___&offset=6