Arduino云台,关键是可以调角度!!!基于MPU6050,用卡尔曼滤波进行角度处理,保证你能一次过学会从硬件到软件的制做!!!(第一节)

这篇具有很好参考价值的文章主要介绍了Arduino云台,关键是可以调角度!!!基于MPU6050,用卡尔曼滤波进行角度处理,保证你能一次过学会从硬件到软件的制做!!!(第一节)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

哈哈哈,我又来啦!!!

   大家好啊!我是菜鸟啊啊啊,今天给大家带来的是Arduino云台,云台分为处理部分和执行部分,执行部分只需要用电机驱动就可以了,但是菜鸟这边只不过是用舵机就可以了因为经费这东西不支持我大手大脚,所以才选用了较为便宜的SG90舵机,下面是实物图:要是想要扭矩大一些的话可以选用右图的这种,因为它的规格是相同的所以他们是可以通用的之后我会吧之前设计的云台模型开源也是可以用的!但是假如你是想要超大扭矩的话,那可能无刷电机会更适合你!!!但是无刷电机也有不好的地方,就是它需要DC12V供电,还需要磁编码器来配合使用!!!(既然大家感兴趣我会专门出一篇文章来讲讲),而这里我推荐大家用MG90S舵机,因为它的齿轮是金属齿轮所以比较稳定,玩过航模的都知道扫齿之王是谁(MG90),但这里我只能说:各位看官自吧,因为萝卜白菜各有所爱!

 arduino 云台,开源,单片机,嵌入式硬件arduino 云台,开源,单片机,嵌入式硬件

讲完了执行部分,再让我们来看看舵机的控制原理;

其实舵机这样的伺服系统通常由小型电动机电位计嵌入式控制系统和变速箱组成,

电机输出轴的位置由内部电位计不断采样测量,并与Arduino设置的目标位置进行比较;

根据相应的偏差,控制设备会调整电机输出轴的实际位置,使其与目标位置匹配。这样就形成了闭环控制系统,总之就像一个电机在没有接入传感器前会不断的旋转下去,但当接入传感器后就可以控制电机想转到那就转到哪,随时控制转向和起停,当接入Arduino后甚至可以让它旋转到固定的角度。

那我们现在了解了舵机的控制原理,那就来看看怎么样Arduino控制舵机旋转吧,首先我们需要用的库只有<Servo.h>这是舵机库,因为考虑到有些人没有学过,或是自学不知道怎么下载库,就因为这一下就放弃了不干了,所以我找了两篇Arduino库的下载文章,不会的可以自己看一看,学一学,毕竟我之前也是自学的也有想放弃的念头。

Arduino老版本(1.9.8):Arduino库安装方法 - 哔哩哔哩

 Arduino IDE如何安装库文件_Madon_G的博客-CSDN博客_arduino安装库文件

Arduino新版本(2.0.1)安装方式和老版几乎一样但首次安装可能要调语言(有需要我会出教程)

Arduino一些官网没有的库安装过程:为Arduino IDE安装添加库 – 太极创客

好了现在现在我们讲讲Arduino控制舵机的程序部分,来来来就看一看,真的只是一点点,不是亿点点,如下:

#include<Servo.h>//引用<Servo.h>库

Servo myservo;

void setup(){

myservo.attach(A0);//设置舵机的(引脚端口)

}

void loop(){

myservo.write(90);//让舵机旋转到90度
delay(15);//等待舵机旋转到对应角度

}

假如是两个舵机就是这样子(和上面的几乎一样只不过是增加了一个引脚端口和对另外一个 舵机的定义;如下

#include<Servo.h>//引用<Servo.h>库

Servo myservo;
Servo myservo_1;

void setup(){

myservo.attach(A0);//设置舵机的(引脚端口)
myservo_1.attach(A1);//设置舵机的(引脚端口)

}

void loop(){

myservo_1.write(90);//让舵机旋转到90度
myservo.write(90);//让舵机旋转到90度
delay(15);//等待舵机旋转到对应角度

}

好了这就是舵机的控制代码,也是最简单的,你可以通过自己的改动来慢慢学习舵机,慢慢的增加舵机数量,实现不同的功能;

下面是重点:

执行部分我们已经讲完了,下面来讲讲主控部分的算法和姿态的解析;

首先让我们来看看arduino是怎么去和电脑通信的,怎么把传感器读取的数据显示在电脑上的,首先我们要明白什么是串口通信;这里运用到CSDN博主「TonyIOT」博主的话(如有侵权,马上删除)

在PC机上最常见的串行通讯协议是RS-232串行协议,而各种微控制器(单片机)上采用的是TTL串行协议,两者电平不同,需要经过相应电平转换才能进行相互通讯。

Arduino Uno R3开发板上,硬件串口位于Rx(0)和Tx(1)引脚上,Arduino的USB口通过转换芯片与这两个引脚连接。该转换芯片会通过USB接口在PC机上虚拟出一个用于Arduino通讯的串口,我们下载程序也是通过串口进行的。

其实串口通信是很简单的东西只不过是它所包含的东西比较多,可以实现的功能比较多而已,只要我们把它所包含的基础东西搞懂后,就可以灵活运用好它;

因为他所包含的基础性东西实在太多所以在这里我推荐大家去看看CSDN博主「TonyIOT」博主的串口通信的基础性文章,网址:Arduino基础入门篇23—串口通讯_TonyIOT的博客-CSDN博客_arduino串口通信

因为在这单单的举一个例子没有太大的意义所以我将结合下文的读取电位器来帮助大家理解代码!

首先我们要知道电位器是什么电位器其实就是电阻,但电阻的阻值是固定的而电位器的电阻值是可以调的,但就是因为电位器的特性是这样所以我们可以用Arduino的A0-A5引脚(A0-A5一般都可以读取模拟量的值)来读取电位器的模拟量,因为大家有可能都有不同的Arduino主板,所以我把市面上比较主流的开发板的引脚图都放出来;如图所示

左边为ArduinoNUOR3,右边为ArduinoNANO

 arduino 云台,开源,单片机,嵌入式硬件arduino 云台,开源,单片机,嵌入式硬件

代码非常简单我结合了串口通信的程序,大家可以慢慢了解了解,最后读取的模拟量的值需要我们打开串口监视器来观看,代码如下:

#include<Servo.h>

int val;//定义函数值val

void setup() {
  Serial.begin(115200);//设置串口通信频率为115200
}

void loop() {
  val = analogRead(A1);//设置引脚A1读取的值为val
  val = map(val, 0, 1023, 0, 180);//把A1读取的值赋值给val
//这里需要大家自己测量编码器的最大电阻值和最小电阻(0,1023,0,180)分别对应的是(Rmin,Rmax,角度min,角度max)
  Serial.print(val);//串口监视器打印val的值
}

把舵机和电位器结合到一起就可以用电位器控制舵机了,代码如下:

#include <Servo.h>

int val;

Servo myservo;

void setup() {
  myservo.attach(A0);
  Serial.begin(115200);
}

void loop() {

  val = analogRead(A1);
  val = map(val, 0, 1023, 0, 180);
  myservo.write(val);
  delay(15);
}

经过学习我相信大家应该可以理解了吧,那我就不加注释了!!!

好了,本章节到此先告一段落,这期我们讲到了执行端的执行器的选择,和执行器的控制方法,还讲到了什么是串口通信,以及怎么去读取模拟量显示在电脑上,和怎么去通过电位器去控制舵机旋转,这就是本章节的所有内容了,喜欢的话可以点赞,收藏,转发,订阅文章来源地址https://www.toymoban.com/news/detail-623872.html

到了这里,关于Arduino云台,关键是可以调角度!!!基于MPU6050,用卡尔曼滤波进行角度处理,保证你能一次过学会从硬件到软件的制做!!!(第一节)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32MPU6050角度的读取(STM32驱动MPU6050)

    注:文末附STM32驱动MPU6050代码工程链接,需要的读者请自取。 MPU6050是一款集成了三轴陀螺仪和三轴加速度计的传感器芯片,由英国飞利浦半导体(现为恩智浦半导体)公司生产。它通过电子接口(如I2C或SPI)与微控制器进行通信,可用于测量物体的加速度和角速度,广泛应

    2024年02月20日
    浏览(39)
  • FPGA实现卡尔曼滤波算法——融合MPU6050的Acc和Gyro

    参考GITHUB大神DOA.c作品: 原理回顾: MPU6050传感器原理: 陀螺仪存在静态误差(积分运算导致),加速度计存在动态误差(重力加速度g),因此需要通过数据融合来消除误差,得到理想数据。Mpu6050是六轴姿态传感器,包括三轴Acc和三轴Gyro,gyro采样频率8000HZ,acc采样频率10

    2024年03月25日
    浏览(44)
  • STM32外设系列—MPU6050角度传感器

    🎀 文章作者:二土电子 🌸 关注公众号获取更多资料! 🐸 期待大家一起学习交流!   MPU6050是由InvenSense公司生产的全球首款整合性六轴运动处理模块,它可以实时获取运动物体的在三维坐标系内的偏转角度,如图所示。   其中roll为绕X轴偏转的角度,pitch为绕Y轴偏转

    2024年02月03日
    浏览(41)
  • stm32 mpu6050 cubemx DMP法读取角度

    文件 记录使用dmp库来读取mpu6050的角度。 这是参考文件 参考1–主要参考 github参考 参考2 参考三 相关文件在这里下载(未填,不过可以在上面的git中下载) over

    2024年02月15日
    浏览(40)
  • 【无人机/平衡车/机器人】详解STM32+MPU6050姿态解算—卡尔曼滤波+四元数法+互补滤波(文末附3个算法源码)

     效果: MPU6050姿态解算-卡尔曼滤波+四元数+互补滤波 目录 基础知识详解 欧拉角

    2024年04月14日
    浏览(58)
  • [Arduino ESP32] mpu6050使用笔记(含dmp)

    Arduino ESP32 I2C管脚定义:Arduino.h(第209行左右) - pins_arduino.h如图: VCC---3.3v GND--GND 简单使用() 代码位置 代码如下(直接粘的): 上传,然后卡在初始化 原因: 可能是I2Cdev库和MPU6050库不同步(I2Cdev太新了) 解决: 依次检查 (F12) main.cpp的accelgyro.initialize();== MPU6050.cpp的setClockSource

    2024年02月11日
    浏览(35)
  • 【STM32】I2C练习,HAL库读取MPU6050角度陀螺仪

    MPU-6000(6050)为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时间轴之差的问题,减少了大量的封装空间。当连接到三轴磁强计时,MPU-60X0提供完整的9轴运动融合输出到其主I2C或SPI端口(SPI仅在MPU-6000上可用)。 寄存器地址 寄存器内容 0X3B

    2024年02月16日
    浏览(39)
  • MPU6050 加速度计和陀螺仪传感器与 Arduino 连接

    MPU6050是一款非常流行的加速度计陀螺仪芯片,具有六轴感应和 16 位测量分辨率。这种意义上的高精度和低廉的成本使其在 DIY 社区中非常受欢迎。甚至许多商业产品都配备了 MPU6050。陀螺仪和加速度计的组合通常被称为惯性测量单元或 IMU。 IMU 传感器用于各种应用,例如手机

    2024年02月02日
    浏览(38)
  • 【ESP32Arduino+MPU6050姿态解算】自制无人机学习笔记2 PLatformIO 下载即可使用

    本人之前发表过一篇关于esp32读取mpu6050数据的文章,链接:http://t.csdn.cn/AwzSZ,但其存在一些漏洞,具体表现在输出数据存在不连贯和错误,在mpu6050高速运动时存在较大误差等。仅作为参考。故在此重发作为修正。当前该篇文章中所述的模块,已经过无人机稳定性控制的测试

    2024年02月16日
    浏览(29)
  • 基于51单片机驱动MPU6050模块(LCD1602显示)

    @TOC MPU-6050集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP,可用IIC接口连接一个第三方的数字传感器。MPU-6050对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范

    2024年02月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包