电子

电子 · 圈子

1429 位酷友已加入

电子圈子中包含常用的源代码、电路图、学习教程、产品样本、技术报告等干货资料,加入圈子可以上传、下载资料,也可以使用提问来寻求资料或分享你认为有价值的站外链接~

关注推荐最新

热门标签

电子

电子·圈子   首发

蝈蝈 发布了
电子

电子·圈子   首发

karry 发布了
电子

电子·圈子   首发

anna 发布了
电子

电子·圈子   首发

karry 发布了
资源

使用MPU9250获取实时运动数据

需要的元件 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编程ATtiny85

需要的元件 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

  • 1
  • 111
  • 112
  • 113
  • 120
前往