DIY小四轴之电路设计(二)

2023-05-16

DIY小四轴之电路设计(二)

上次我分析了四轴电源的电路,这次我们来看电机驱动与传感器电路。

三、空心杯电机驱动电路

一般的小型四轴都选用空心杯电机来驱动旋翼,空心杯电机不仅节能而且灵敏,是一种比较理想的电机。
在这里插入图片描述
常用720空心杯电机,它是指直径是7mm长度为20mm的电机,同理我们可以估计其他一些型号的电机,如820、614等等。

除了尺寸参数,其电器参数如下:

   电压:3.7V  
   转速:45000转/分钟   
   轴径:1mm

那简单,既然要求是3.7的电压,那我直接找个3.7V的电池直接把空心杯的两根线怼在电池的正负极不就好了(感兴趣的同学可以自己动手试试)。我自己试了一下,觉得转速挺大的,应该是能够带动四轴飞行的。

然而直接将它接在电源正负极有一个问题,那就是没法控制它的转速,也就是说,运气好的话四轴是近似垂直飞行的,运气不好的话因为细小的结构不对称,会导致四轴侧向一边飞行。这一点也就暴露出我们空心杯电机驱动电路的核心问题——控制速度。

电路上常用的一种控制模拟量输出的方式是PWM控制(脉冲宽度调制)。

所谓的PWM控制,说简单一点就是,我们在电源正极和电机之间接一个开关。这个开关的工作有一个周期T,在周期T内,一半时间是打开的,有一半时间是关闭的,这样总体上转速就比原来慢了。

试想,如果T比较大,比如10s,那可能5s是转的,5s是不转的;但如果T非常小,比如0.1s,其实前0.05s内电机是转的,后0.05s内电机反应不过来,所以也是转的,但总体的速度相比之前要慢不少。

在这里插入图片描述

这个开关开启时间长度与整个周期的比值,我们称之为占空比。如果占空比是100%,说明电机正在全力运转,50%就是我们刚刚讨论过的情况,0%就是不转。我们通过调整占空比就可以调整它的速度了。

但是这又产生了另一个问题:我们需要一个周期足够小才行,通常PWM的频率都是兆赫兹级别,也就是周期T大约在微秒级别(10-6s)。用手去控制开关的话,那手速简直是需要麒麟臂级别的手速。因而我们要考虑用一种电子开关,比如MOS管。

在这里插入图片描述
上面是一个典型的空心杯驱动电路。Q1是一个N沟道的MOS管,型号为SI2302,它有三个接口,自上之下分别是D极、G极和S极。在这里我不去讲MOS管的原理(感兴趣的话可以去翻看一下有关模拟电路的书籍)。我们只把书上的结论拿出来:

当G极输入高电压时,D和S之间导通,相当于开关闭合;当G极输入低电压时,D和S之间截止,相当于开关被断开。

我们看到如果DS导通则电机M1两端会工作,而DS截止电机M1不会,这样在PWM1端输入一个方波信号,调整方波的占空比,就可以控制电机转动了。

这里还有两处细节,其一是R12与R13,这个两个电阻是分压的,G点读取的电压实际上应该是VG=VPWM1*100/10K+100,这个R13必须要有,不然前一级输入的输出电阻可能会分得前一级的全部电压,十分恐怖(详见模电)。其二是C18这个电容,它的作用是去耦,避免上升沿过于陡峭时产生噪声。

最后是PWM1端,这个端口作为开关的控制输入端,它应该被接在STM32的一个GPIO端口上面,通过STM32单片机的定时器功能就可以在PWM1端控制输出较高频率的方波信号了。一旦PWM1端的信号是方波,有时开,有时断,则电机处自然也被控制着有时开有时闭。从而调整单片机IO口的输出占空比,就可以控制转速了。

四、传感器配置电路

之前我们在第一篇讲过,常用的传感器有陀螺仪、加速度传感器、气压计、激光定高、光流定位等等,为了实现四轴的静态闭环,必须要有的传感器是前三个。

其中商业上常用的惯性测量单元是MPU6050,俗称陀螺仪,但实际上上面集成了三个轴的陀螺仪和三个轴方向上的加速度计。

在这里插入图片描述

上图是MPU6050陀螺仪的实物图,它的实际尺寸非常小,只有小拇指指甲的一半大小。背面是引脚,用来焊接在设计的电路板上,基本上是属于手焊中最难焊接的。
在这里插入图片描述
上面是MPU6050的引脚定义和三个轴方向的定义,因为能测量XYZ三个方向的加速度,又能测量垂直于XYZ三个轴的角速度,因而被称为6轴陀螺仪。

与此相对的,MPU9250是一个9轴陀螺仪,因为它除了3轴加速度、3轴角速度之外,还能具有三个方向上的磁力计功能。在这里我们只介绍MPU6050的硬件电路设计,MPU9250也大同小异。

首先我们要了解的是,MPU6050本身是一个芯片,自己就能读取惯性信息,然后我们单片机只需要负责接收和解读就可以了。它一般与单片机通过IIC通信协议进行通信,IIC的通信线有两条分别是SDA和SCL分别传输数据信号和时钟信号。

我们来从上往下看这个引脚定义。

SDA与SCL对应引脚定义中的24和23引脚,应该将它们接在单片机负责IIC的IO口上面。

19、21、22都是预留输出端,都不需要接,直接悬空。

20为CPOUT,需要通过一个小电容接地。

18号GND和13号VDD分别是电源的正负极,其中电源正极应该为3.3V供电,同时为了滤波,我们需要在GND和VDD之间接一个0.1uF的滤波电容。

我们注意到引脚中有许多NC,它的意思是不用接线,直接悬空。

12号为INT,是中断信号输出,可以将它接在单片机的一个IO口上面,通过接收外部中断来判断是否需要读取MPU6050的信号。

11号是帧同步信号数字输入,一般不用,可连于GND。

10号是参考源的滤波电容接入,这个电容要和GND/VDD之间的滤波电容一致。

9号AD0是用来改变IIC地址的,我们知道一个单片机的IIC总线上通常可以连着好多个设备,每个设备都有一个独特的IIC地址从而将不同设备区别开。但万一就有这么个设备,它恰好地址与我们的MPU6050重合了,那么我们需要在AD0上加一个高电平,这样MPU6050就换成备用的IIC地址了,从而避免混淆。(默认是0x68,加了AD0后是0X69)

8号VLOGIC是逻辑参考电压,我们前面讨论过SDA和SCL是数据和时钟线,数据是由高低电平的在时间上的规律性排布表征的,那么问题来了,到底多高算是高电平?3.3V还是5V,我们自己心里有数,但也要让MPU6050知道。SDA和SCL在一般电路上通过一个上拉电阻连接到3.3V,所以我们要给它接一个3.3V作为高点平的参考。

6和7分别是AUX_DA和AUX_CL,它们的作用是外接磁力计,由于我们用不到磁力计,所以之间将其悬空。

1号是外部时钟输入,一般用不到,直接接地就可以。

根据上面的分析,一般设计的电路图都是这样的:
在这里插入图片描述
前面有一处没说,就是这里的R7和R8,它们是上拉电阻。比如,说如果SCL(红字)输入一个GND,则SCL就是GND;如果SCL是悬空的,则输入一个3.3V。

上面电路图已经是一个比较基本的模板了,大家可以按照每个接口的功能,自己对照分析一下;也可以不分析直接使用。

如果单片机上面的代码写的比较好,那效果是非常显著的。

在这里插入图片描述

下面讲一下气压计的硬件配置,基本上也大同小异。
在这里插入图片描述
这里的FBM320、BMP280、SPL06的硬件电路都是通用的,电路板设计完之后,可以选择任意一种贴上去。一般推荐歌尔声学的SPL06,物美价廉,质量要比BMP280好一些,不考虑成本的话,也可以用我们知道气压这个物理量是随着海拔有一个比较敏感的变化的。因而用在飞行器上,可以计算飞行器的高度。

GND、Vdd、SDA、SCL就不用说了,这里的VddIO是IC中I/O的电源接口,是一个参考电压,和Vdd给一样的3.3V即可。SDO其实就是AD0,也就是地址选择引脚,可以直接接地(0X6C)。CSB是片选信号,如果是高电平,表示这个芯片被选中开始正常工作,直接接高电平即可。

最后关于IIC通信协议,推荐一篇之前有人写过的文章:

快速通道: https://blog.csdn.net/lingdongtianxia/article/details/81135456.

(未完待续)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DIY小四轴之电路设计(二) 的相关文章

  • Matlab使用过程中内存不足问题的总结

    做图像处理的 xff0c 对matlab这工具软件一定不会陌生 xff0c 他的高集成度为图像处理提供了很大的方便 xff0c 但我们在使用时难免会出现内存不足的问题 xff0c 2 3G的内存还不够处理一次简单图像 xff0c 这确实很恐
  • VIO系统介绍

    VIO xff08 visual inertial odometry xff09 即视觉惯性里程计 xff0c 有时也叫视觉惯性系统 xff08 VINS xff0c visual inertial system xff09 xff0c 是
  • VINS-MONO概述

    VINS Mono是HKUST的Shen Shaojie团队开源的一套Visual Inertial融合定位算法 xff0c https github com HKUST Aerial Robotics VINS Mono xff0c 是用
  • 主流VIO框架分析及VINS部分解析

    本文为搜集的资料整理 xff1a C0包含位姿和运动信息 xff1b 对于T0来说 xff0c 不仅受rv10 rv11的视觉影响 xff0c 也受rb01的IMU的影响 上述方式繁琐 xff0c 故引入因子图 xff0c 便于思路梳理和理
  • evo评测VINS-MONO---TUM数据集

    为了想测试室外场景下VINS MONO定位情况 xff0c 室外环境的KITTY数据集因无时间戳 xff0c EVO测评较困难 故选择TUM数据集 xff0c outdoors1 8 户外 xff1a 在校园内的室外场景拍摄 xff0c 但
  • ROS编译错误:Could not find a package configuration file provided by “XXX“

    解决 xff1a 系统提示缺少什么包 xff0c 就安装什么包即可 xff1a sudo apt get install ros noetic xff0c 依据自己的系统和出错提示更改相关内容 示例 xff1a 1 xff09 CMake
  • ZED2运行VINS-MONO初试

    上篇博客 xff0c 已经完成ZED2的标定 xff0c 获取相关标定参数 xff0c 将在此基础上进行VINS的相关修改 xff0c 实现使用ZED2运行VINS MONO 一 VINS MONO环境搭建 因为系统环境从ubuntu18
  • ZED2双目相机运行VINS-FUSION初试

    基于ZED2运行VINS MONO的经验 xff0c 在运行VINS FUSION前有几点tips想跟大家分享 xff0c 应该能在运行的过程中避免一些踩坑吧 TIPs 1 xff09 关于zed2标定 开始使用Kalibr进行相机单目 双
  • VINS Fusion GPS融合部分

    概述 VINS Fusion在VINS Mono的基础上 xff0c 添加了GPS等可以获取全局观测信息的传感器 xff0c 使得VINS可以利用全局信息消除累计误差 xff0c 进而减小闭环依赖 局部传感器 如相机 xff0c IMU x
  • STM32烧录一次后无法再次烧录

    STM32烧录一次后无法再次烧录 本人是使用cubemx配置stm32 xff0c 在配置sys时没有配置Debug xff0c 所以会导致程序只可以烧录一次的情况 xff0c 再次烧录会发生无法找到芯片的情况 解决方法是将单片机reset
  • Vins-fusion gps融合 KITTY数据集测试

    下载kitti数据集 下载kitti数据集和真值poses的00 txt以及sequences文件00序列的times txt xff0c xff08 全网找了好久 xff0c 最后不得已翻墙从官网down下来的 xff09 代码修改 xf
  • Vins-fusion GPS融合部分测试(自己的数据ZED+RTK)

    经过前一段时间的积累 xff0c 目前暂时成功实现了用自己的数据测试实现Vins fusion 43 GPS融合 xff0c 其实放在数据采集处理上的时间比较多 xff0c 踩了很多坑 xff0c 效果在一些部分还不是很好 xff0c 后期
  • Ceres Solver实例分析

    ceres简介 Ceres solver 是谷歌开发的一款用于非线性优化的库 xff0c 在谷歌的开源激光雷达slam项目cartographer中被大量使用 本篇博客结合相关实例介绍一下 Ceres库 的基本使用方法 xff1a 使用Ce
  • MSCKF算法简介

    感谢 xff1a 紫薯萝卜 https zhuanlan zhihu com p 76341809 论文 xff1a https arxiv org abs 1712 00036 代码 xff1a https github com Kuma
  • API函数详解:CreateSemaphore函数

    Windows API函数 Visual Basic 语法格式声明Declare Function CreateSemaphore Lib 34 kernel32 34 Alias 34 CreateSemaphoreA 34 lpSema
  • java 专业英语词汇

    abstract 关键字 抽象 39 bstr kt access vt 访问 存取 39 kses n 入口 使用权 algorithm n 算法 39 lg riem annotation java 代码注释 n u 39 tei n
  • 自动控制原理(1)-典型环节的传递函数

    构成线性定常控制系统的七个环节 xff1a 比例环节 xff0c 微分环节 xff0c 一阶微分环节 xff0c 二阶微分环节 xff0c 积分环节 xff0c 惯性环节 xff0c 振荡环节 1 比例环节 K为比例系数比例环节又称无惯性环
  • ESP8266从入门到入门系列(一) 你好,ESP8266

    0 前言 转载自我的古月居频道 距离我签约古月居已经过去了一个月了 xff0c 博主因为在这一个月的时间里琐碎的事情非常的多 xff0c 所以也推迟了我发博客的时间 古月居这个平台是以ROS起家的 xff0c 但是我们不能局限于软件 xff
  • BearPi-HM_Nano 鸿蒙os学习笔记(一)-在Windows下搭建开发环境

    BearPi HM Nano 鸿蒙os学习笔记 一 在Windows下搭建开发环境 0 前言 最近HarmonyOS2 0发布了 xff0c 就想着跟上时代的脚步 xff0c 后来在度娘上搜索相关信息 xff0c 发现了一款比较便宜的鸿蒙开
  • 普通数组如何转换成json数据格式

    我们都知道json有很多种格式 xff0c 而开发过程中经常遇到格式转换的问题 xff0c 特别是接口调用的时候 xff0c 如何将普通数组转成我们需要的json格式呢 xff0c 下面我提供了一种方法 xff0c 也是一种思路 xff0c

随机推荐

  • github常用命令(收藏版)

    目录 创建仓库 x1f30f 初始化仓库 x1f30f 查看仓库状态 x1f30f 设置用户信息 x1f30f 创建钥匙 x1f30f 验证钥匙 x1f30f 与远程仓库建立连接 x1f30f 重新设置仓库url地址 x1f30f 初次拉取
  • Android中Parcelable接口用法

    1 Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel Classes implementing t
  • STM32开发笔记(四)——FreeRTOS

    STM32开发笔记 xff08 四 xff09 FreeRTOS 小狼 64 http blog csdn net xiaolangyangyang 一 FreeRTOS调度原理 FreeRTOS调度分为时间片调度和抢占调度两种 时间片调度
  • 硬件学习之为什么三相电机不需要电容?

    1 单项电机 一个单相电机里一共有两个线圈 xff0c 主线圈和副线圈 当单相正弦电流通过主线圈时 xff0c 主线圈就会产生一个交变脉动磁场 xff0c 这个磁场的强弱随时间作正弦电流变化而变化 xff0c 但在它的方向一直是1 3这个方
  • Orb-slam2+win7+VS2015+USB双目摄像头

    Orb slam2 43 win7 43 VS2015 43 USB双目摄像头 本文将介绍如何在win7上使用USB双目摄像头实现Orb slam2 主要硬件 我们以USB双目摄像头 43 VS2015 43 win7来实现功能 xff1a
  • win7+opencv-2.4.13安装教程

    win7 43 opencv 2 4 13安装教程 本文将介绍如何在win7上安装opencv 2 4 13 一 安装过程 1 下载OpenCV 安装包 xff0c 以opencv 2 4 13 为例 2 双击 opencv 2 4 13
  • WIN7+Visual Studio 2013安装配置教程

    WIN7 43 Visual Studio 2013安装配置 本文将介绍如何在win7上安装Visual Studio 2013 一 xff1a 安装过程 1 下载Visual Studio 2013 安装包 下载之后的文件是 iso 格式
  • Ubuntu18.04 + Orb-Slam3 + USB双目摄像头

    Ubuntu18 04 43 Orb slam3 43 USB双目摄像头 本文将介绍如何在Ubuntu18 04上使用USB双目摄像头实现Orb slam3 主要硬件 我们以USB双目摄像头在Ubuntu18 04上来实现功能 xff1a
  • 树莓派结合Pixhawk飞控实现四轴双目视觉避障

    无人机双目视觉避障的实现 本文将介绍如何使用树莓派结合PIX飞控实现无人机双目视觉避障的功能 主要硬件 我们以双目摄像头 43 树莓派 43 Pixhawk飞控来实现功能 xff1a 双目摄像头与树莓派通过USB接口来连接 xff0c 树莓
  • TypeScript 终极初学者指南

    大家好 xff0c 我是 ConardLi xff0c 在过去的几年里 TypeScript 变得越来越流行 xff0c 现在许多工作都要求开发人员了解 TypeScript xff0c 各大厂的大型项目基本都要求使用 TypeScript
  • STM32——STM32库结构详解

    STM32库是由ST公司针对STM32提供的函数接口 xff0c 即API xff08 application program interface xff09 xff0c 开发者可以调用这些函数接口来配置STM32的寄存器 xff0c 脱离
  • 监控树莓派Raspberry Pi的CPU/GPU的温度

    监控树莓派Raspberry Pi的CPU GPU的温度 树莓派Raspberry Pi的CPU GPU的温度对于Pi的温度 高效运行非常重要 xff0c 所以我们要实时监控树莓派Raspberry Pi的CPU GPU的温度 1 运行环境
  • 【嵌入式系统】二、初识 Tiva TM4C123G系列开发板

    大二电赛小白 思考 主要偏向于嵌入式的应用 xff0c 请大家多多指教 xff01 TM4C123x系列是TI公司推出的一款32位基于ARM Cortex M4的处理器 1 TM4C123GH6PM的M4内核 超低功耗 耗电量370 A M
  • fdisk用法

    NAME fdisk Partition table manipulator for Linux SYNOPSIS fdisk u b sectorsize C cyls H heads S sects device fdisk l u d
  • 用策略模式优化代码的实例

    实例一 xff1a 利用利用策略模式实际开发中 if else 条件判断过多的问题 xff0c 条件少还好 xff0c 一旦 else if 过多这里的逻辑将会比较混乱 xff0c 并很容易出错 比如 xff1a 刚开始条件较少 xff0c
  • 灰度处理与二值化的关系

    当开始接触图像处理的童鞋可能跟我一样对这两个概念迷惑过 xff0c 在图像处理中 xff0c 用RGB三个分量 xff08 R xff1a Red xff0c G xff1a Green xff0c B xff1a Blue xff09 x
  • ucos2历程——信号量集

    信号量集 信号量集由两部分组成 xff1a 标识组和等待任务列表 xff1b 标识组由三部分组成 xff1a 1 OSFlagType 识别是否为信号量集的标志 2 OSFlagWaitList 指向等待任务列表的指针 3 OSFlagFl
  • 人体姿态估计资源大列表(Human Pose Estimation)

    基础 xff1a Human Pose Estimation人体姿态估计综述调研人体姿态估计数据集整理 xff08 Pose Estimation Keypoint xff09 姿态估计的两个数据集COCO和MPII的认识 Human Po
  • DIY小四轴之电路设计(一)

    DIY小四轴之电路设计 xff08 一 xff09 写在前面 前一阵时间一直在做四轴飞行器 xff0c 略有一点收获吧 xff0c 在这里分享出来 xff0c 一方面算是对自己的总结 xff0c 另一方面希望能给想做小四轴的读者一些思路 本
  • DIY小四轴之电路设计(二)

    DIY小四轴之电路设计 xff08 二 xff09 上次我分析了四轴电源的电路 xff0c 这次我们来看电机驱动与传感器电路 三 空心杯电机驱动电路 一般的小型四轴都选用空心杯电机来驱动旋翼 xff0c 空心杯电机不仅节能而且灵敏 xff0