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

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.

(未完待续)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章