亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

DIY Arduino 万向节 |自稳定平台

在本教程中,我们将学习如何使用伺服电机构建 Arduino 云台或自稳定平台。本教程其实是上一篇MPU6050教程的延伸。

您可以观看以下视频或阅读下面的书面教程。

概览

我使用 3D 建模软件设计了云台。它由3个用于3轴控制的MG996R伺服电机和一个放置MPU6050传感器、Arduino和电池的底座组成。

您可以在 Thangs 的浏览器中找到并下载此 3D 模型,并进行探索。

STL 文件:

使用我的 Creality CR-10 3D 打印机,我 3D 打印了所有部件,它们非常完美。

组装

组装云台非常容易。我开始安装偏航伺服。我使用 M3 螺栓和螺母将其固定在底座上。

接下来,使用相同的方法固定滚动伺服。这些部件经过专门设计,可轻松安装 MG996R 舵机。

为了将零件相互连接,我使用了作为伺服器附件的圆形喇叭。

首先,我们需要用两个螺栓将圆角固定在底座上,然后用另一个螺栓将它连接到之前的舵机上。

我重复了这个过程来组装其余的组件,Pitch 伺服和顶部平台。

接下来,我将伺服线穿过支架开口,以保持它们井井有条。然后我插入 MPU6050 传感器并用螺栓和螺母将其固定在底座上。

为了为项目供电,我使用了 2 节锂离子电池,我将它们放在这个电池座中。我用两个螺栓和螺母将电池座固定在底座上。

2 节锂离子电池将产生大约 7.4V 的电压,但我们需要 5V 来为 Arduino 和舵机供电。

这就是我使用降压转换器将 7.4V 转换为 5V 的原因。

Arduino云台电路图

现在剩下的就是将所有东西连接在一起。这是这个项目的电路图以及所有需要如何连接的东西。

您可以从以下链接获取本 Arduino 教程所需的组件:

  • MPU6050 IMU………………………………. 亚马逊棒棒哒 /速卖通
  • MG996R伺服………………………………. 亚马逊棒棒哒 /速卖通
  • 降压转换器………………………………
  • Arduino 板…………………………..……..
  • 面包板和跳线………… 

最后,我将电子元件和电线挤入底座,并用底部的这个盖子盖住它们。

有了这个,自平衡平台或 Arduino 万向节就完成了,它按预期工作得很好。剩下的就是看一下程序了。

Arduino 代码

此示例的 Arduino 代码是 Jeff Rowberg 对 i2cdevlib 库中 MPU6050_DMP6 示例的修改。

你可以在这里下载代码:

代码说明: 所以,我们使用的是输出可读的偏航、俯仰和横滚。

// Get Yaw, Pitch and Roll values
#ifdef OUTPUT_READABLE_YAWPITCHROLL
    mpu.dmpGetQuaternion(&q, fifoBuffer);
    mpu.dmpGetGravity(&gravity, &q);
    mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);

    // Yaw, Pitch, Roll values - Radians to degrees
    ypr[0] = ypr[0] * 180 / M_PI;
    ypr[1] = ypr[1] * 180 / M_PI;
    ypr[2] = ypr[2] * 180 / M_PI;
    
    // Skip 300 readings (self-calibration process)
    if (j <= 300) {
      correct = ypr[0]; // Yaw starts at random value, so we capture last value after 300 readings
      j++;
    }
    // After 300 readings
    else {
      ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract  the last random Yaw value from the currrent value to make the Yaw 0 degrees
      // Map the values of the MPU6050 sensor from -90 to 90 to values suatable for the servo control from 0 to 180
      int servo0Value = map(ypr[0], -90, 90, 0, 180);
      int servo1Value = map(ypr[1], -90, 90, 0, 180);
      int servo2Value = map(ypr[2], -90, 90, 180, 0);
      
      // Control the servos according to the MPU6050 orientation
      servo0.write(servo0Value);
      servo1.write(servo1Value);
      servo2.write(servo2Value);
    }
#endifCode language: Arduino (arduino)

一旦我们得到值,首先我们将它们从弧度转换为度数。

// Yaw, Pitch, Roll values - Radians to degrees
    ypr[0] = ypr[0] * 180 / M_PI;
    ypr[1] = ypr[1] * 180 / M_PI;
    ypr[2] = ypr[2] * 180 / M_PI;Code language: Arduino (arduino)

然后我们等待或读取 300 个读数,因为此时传感器仍在自校准过程中。另外,我们捕获 Yaw 值,它一开始并不是像 Pitch 和 Roll 值那样为 0,而是总是一些随机值。

// Skip 300 readings (self-calibration process)
    if (j <= 300) {
      correct = ypr[0]; // Yaw starts at random value, so we capture last value after 300 readings
      j++;
    }Code language: Arduino (arduino)

在 300 个读数之后,首先我们通过减去上面捕获的随机值将 Yaw 设置为 0。然后我们将 Yaw、Pitch 和 Roll 的值从 – 90 到 +90 度映射为 0 到 180 的值,用于驱动舵机。

// After 300 readings
    else {
      ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract  the last random Yaw value from the currrent value to make the Yaw 0 degrees
      // Map the values of the MPU6050 sensor from -90 to 90 to values suatable for the servo control from 0 to 180
      int servo0Value = map(ypr[0], -90, 90, 0, 180);
      int servo1Value = map(ypr[1], -90, 90, 0, 180);
      int servo2Value = map(ypr[2], -90, 90, 180, 0);
      
      // Control the servos according to the MPU6050 orientation
      servo0.write(servo0Value);
      servo1.write(servo1Value);
      servo2.write(servo2Value);
    }Code language: Arduino (arduino)

最后使用 write 函数,我们将这些值作为控制信号发送到伺服系统。当然,如果你只想稳定 X 轴和 Y 轴,你可以禁用 Yaw 伺服,并将这个平台用作相机云台。

请注意,这远非良好的相机云台。运动并不顺畅,因为这些伺服系统并非用于此目的。真正的相机云台使用一种特殊类型的 BLDC 电机来获得平稳的运动。因此,请将此项目仅用于教育目的。

这就是本教程的全部内容,我希望你喜欢它并学到了一些新东西。随时在下面的评论部分提出任何问题,不要忘记查看我收集的 Arduino 项目。


制造工艺

  1. DIY LUMAZOID Arduino 音乐可视化器
  2. 使用 Arduino 和智能手机的 DIY 电压表
  3. 带伺服电机的机器人避障
  4. DIY 虚拟现实滑板
  5. Arduino 培训平台
  6. DIY Arduino RADIONICS 治疗MMachine
  7. DIY 2D 运动赛车模拟器
  8. Arduino Trash-Bot(自动打开/关闭垃圾箱)
  9. 单独伺服扫描
  10. 使用 RFID 的 DIY 创意
  11. DIY 3 轴 CNC VMC
  12. DIY Arduino + GY-906 红外测温仪