四/六旋翼迷你无人机设计制造(一)硬件设计制作

2023-05-16

四旋翼,小飞机
飞到东,飞到西
上日天,下怼地
我的飞机真神奇
——鲁迅

很早就有弄个小飞机自己玩的想法了,因为疫情拖到现在。不过感谢时间,过滤掉了很多不成熟的想法,也有足够的机会去尝试新的东西。唯一的缺点就是主控芯片的价格涨了10倍还多,真难受。

机械结构部分还是设计异形板的老办法,在solidworks里面画好模型之后转成step文件,然后导入ad,选择3D元件体作为板外形。
如果板子上有大面积挖空,记得在生成外形线条的时候把挖空的槽包含进去,要不然导出gb之后就没有挖空的效果了,将会得到一块实心板子。。。
设计的时候还搞了个电机支架。然后发现很难装上去。双上去之后也很难固定。本来是在支架上拼接处留了俩焊盘,可以用焊锡直接固定。然后我忽视了电机是有磁性的,烙铁在靠近的时候老是自己往电机上怼。下次注意要改进一下这个设计。
还有就是,电机线到板子接口,我是直接预留焊盘焊上去的。想想还是应该用插针,尤其是像这样四六轴可切换的设计。看来还是需要再弄一版这个六轴了。
(卧槽这个结构,一开电吓死我了,电机直接脱离机体自己飞了,机械上没有对电机做垂直方向上运动的约束。下次必须换个设计了)
硬件的设计很常规,用成品模块的都是屑,全部自己搭建。

电源部分:

包括第一次使用锂电池充电芯片tps4056,升压芯片tp61222,降压芯片xc6221,这几块芯片构成了电源部分。

  • 似乎好多类似的小飞机都没有3.7升5v这个环节,都是直接电池4.2v出来接LDO给到控制系统。个人感觉还是可以搞一个的,防止电池电压突然降低带来的问题。尤其是当电机负载过大,电池放电电流接近放电倍率的极限的时候,电池电压很容易突降,造成单片机死机。不知道在电源输入端加个大电容会不会有所改善。不过考虑体积跟重量,可能还不如用boost。当然造成这种情况的根本原因是电池放电倍率不足,考虑换个电池。
    4056充电电路

升降压电路

整个板子电源模块大概就这几种电压等级:

  • 电池3.7~4.2V
  • 充电口5V(直接连锂电池充电管理芯片tp4056)
  • 升压5V出来的5V(升压模块从电池取电,3.7v升5v)
  • LDO输出的3.3V(LDO从5V取电)

也就是说,系统及可以通过电池单独供电,也可以通过USB 5V供电。USB将同时给电池充电。充电的5V和升压输出的5V中间一定要加二极管,防止电流倒灌。我用的BAT54C,SOT-3封装的2路肖特基。2个5V输入,1个输出给LDO。要不然电池会通过升压模块得到的5V反过来给自己充电,唯一的结果就是烧坏升压,因为61222显然驱动不了4056。第一版做的时候就忘了考虑这个问题了。图发出去之后才意识到。郁闷死。电源部分就这样,看着复杂,好几个芯片,实际上也就那样。布局啥的参考手册就行,没啥坑。

充电路径管理

充电电路的拓扑结构还是有点点讲究的。这是一种很烂的充电路径,因为充电芯片Charger是根据充电电流来判断充电完成的。如果后级LDO和System的功耗大于设定的充电截止电流,那么即使电池已经充满了,充电也不会停止。此外,由于电池电压直接等于系统电压,当电池处于过放状态,插上电之后系统也没办法立即开机,就像很多年前老手机一样要先插着冲一会才能开机。充电路径 1改进方法是让USB直接对系统供电,同时增加开关。像图 路径2一样。但这个样子就必须在电池对系统的输出和USB对系统的输出之间增加二极管,防止电流倒灌。这个开关可以拿个mos管,也可以就用普通的手动机械开关。用mos的话就像蓝牙耳机一样,插上电,电池对自动停止对外放电。但由于USB可以独立供电,系统此时也可以正常工作。这样就很好地解决了没有设计电源路径的问题。但我还在电池输出和LDO之间加了个升5V的Boost,使得输出到系统的电压会更稳定,总体拓扑没什么变化。
在这里插入图片描述
但是这个开关这一版就没做那么复杂,直接用的手动的。这功能以后再说。

充电接口和USB:

充电接口用的mini usb。封装很小,引脚很短。焊的时候特别容易虚焊。我就是焊上去之后发现一直没法用,然后一查果然是虚焊了。狠狠补了一坨锡才弄好。后来画的时候自己把封装改了一下,焊盘弄长了一点。说到这里,QFN封装,如果用烙铁焊的话焊盘也可以加长一点,要不然太容易弄坏了感觉。

mini usb的线序:从母座屁股后面的方向看过去,从左至右:GND、NC、D+(绿色)、D-(白色)、VCC。一般原理图1脚为VCC
顺便贴一下几种常用USB线序:(均是从母座屁股方向看,从左至右)
USB-A(2.0):GND、D+、D-、VCC

mini usb一方面可以给电池充电,另一方面作为usb接口直接连单片机。stm32f103的usb口是PA11(DM)和PA12(DP),和CAN共用一组引脚。f1只能做从机,连线的时候在DP脚要一个上拉,标明是全速设备。但作为虚拟串口和上位机通信还是不错的,不需要其他任何额外的硬件。f4就可以做主机了。

USB的数据线是差分线。在AD里面使用差分线有几种办法:

  • 原理图里面添加,在更新PCB的时候会自动更新过去。顶部快捷菜单里有,直接放置就行。
  • PCB里面直接按照网络的名字添加

USB是差分线。要求差分阻抗90 ohm。一般双层板不太容易控制阻抗的,只能用走线周围大面积铺铜(GND)来代替参考层。这样子的话线宽10-12mil,线距6-7mil,然后周围铺地距离大概5-10mil,差不多是能用的,因为f1只支持全速而不支持高速。反正至少虚拟串口这个,貌似对阻抗的要求也不高,随便扯扯就能用了。
如果是四层板,可以用si9000算一下。试过线距6mil,线宽10-12mil,周围包地,临参考地层,可以通信。

传感器:

信号部分,板子上用到了mpu6050和bmp280的iic总线,nrf24l01的spi通信,还有包括控制电机的pwm信号等。这些信号都是几十或者几百kHz的,不足为虑。
6050和bmp280按手册连线就行。没啥难度。iic对si要求没那么高。iic两根线都要上拉。可以按一般的链状总线走,也可以使用6050的外挂总线功能。

无线通信:

无线通信的话用的是Nordic的nrf24l01。算是比较古老的芯片了,下次可以考虑换52832或者esp32这种的。这个用的是标准单口spi通信。外围电路比较复杂。按芯片手册布局,基本能用。有自己的时钟晶振,用的是16MHz的。布局布线的时候就要注意干扰。一个很奇怪的就是,芯片在工作的时候万用表完全测不到晶振引脚上的电压。不知道为什么。说不定下次用示波器看看。还有一点,晶振的负载电容,在手册原理图里画的是22pf,然后手册电特性参数表里面又说最大12pf。很奇怪。反正12pf上去能用。
其实更关键的一点是天线设计。不搞通信,也看不懂各种天线形状有什么优缺点。直接用天线封装库解决。或者陶瓷天线这样的。天线周围还有邻近的参考层要挖空处理。其他部分铺地,并且多打过孔连接地层。过孔不能太过稀疏,否则会干扰。天线信号线要按单端50Ω走线。可以用Π电路匹配阻抗。
这一版在做的时候还不懂这么多。随便按照手册瞎画的。然后不知道是不是阻抗没有匹配的问题,搞出来通信距离贼短,不到10cm。我人都傻了,还在奇怪怎么搞都收不到信息。发现这一点的时候直接特喵的裂开。
真的吐了,等下一版吧。在这之前要好好研究一下射频相关了QwQ。
后来又试了一下拿掉贴片天线,直接焊了一根十几cm长的飞线上去,居然能用。惊了。估计问题出在从末端电容出来到天线的这一小段上,可能这一段阻抗线画细了。参考层离得又远,阻抗太大了。

电机驱动:

电机控制直接用的AO3400 MOS管,电压电流都足够空心杯要求。在有的选的情况下肯定是选N-MOS,内阻低一点。采用典型的低端驱动,电机接在电源侧,MOS管门级通过一个1kΩ电阻直接接到单片机定时器输出。这个电阻其实还是有必要的,主要是防止过冲,但这个电阻也不能太大,否则由于栅极等效电容的存在,上电太慢,会让管子进入线性区,直接就炸了。栅源之间跨接10k的泄放电阻,这个没啥说的。
MOS的pwm信号肯定算不上高速,因此也不需要考虑阻抗匹配之类的问题。那么栅极的电阻就可以放在接收端,靠近MOS管。

关于要不要给mos外部再反并联一个二极管,个人感觉没必要。空心杯电机一个电流不大,再一个无人机电机基本上只需要单向旋转,所以在电机两端反并联一个就行了。有的文档说电机正负极之间可以并联电容,效果比反并联二极管好。个人认为没什么道理。至少二极管加上去完全没有任何问题。
考虑到一块板子上要带多个电机,画图的时候可以采用多通道设计。省时省力。

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

四/六旋翼迷你无人机设计制造(一)硬件设计制作 的相关文章

随机推荐

  • 谈一谈自己对线程,进程的理解。

    进程 一段程序的执行的实例化 xff0c 是一个实体 xff0c 每一个进程都有自己的地址空间 三个状态 xff0c 就绪 xff0c 运行和阻塞 就绪就是等待处理器分配资源后可以立即执行 xff0c 阻塞就是条件不够的时候 xff0c 需
  • mavlink c 编码解码demo

    include 34 common mavlink h 34 include 34 common mavlink msg local position ned h 34 include 34 common mavlink msg sys s
  • 什么是解耦

    耦合度 是软件工程领域的概念 xff0c 指模块之间的依赖程度 模块可以小到一个功能 xff0c 也可以大到一个系统 解耦 解除或降低模块之间的耦合关系 模块之间有依赖关系就必然存在耦合 xff0c 0耦合是基本无可能的理想状态 解耦的好处
  • 类域和访问类的成员

    1 类的数据成员 xff08 类中声明的变量 xff09 和成员函数 xff08 类定义中声明的函数 xff09 属于该类的类域 非成员函数在全局命名域内定义 2 在类域内 xff0c 类的成员可以被该类的所有成员函数直接访问 xff0c
  • FreeRTOS学习记录(一):数据、变量、函数特点

    2022 04 22 依据 xff1a 野火 FreeRTOS内核实现与应用开发实战指南 目录 数据类型 变量名 函数名 宏 数据类型 FreeRTOS对C里的数据类型做了重定义 xff0c 在portmacro h 文件中 portmac
  • FreeRTOS学习记录(三)(扩展)嵌套结构体展开

    分析代码的辅助文章 xff0c 不重要 目录 链表节点数据结构 链表根节点数据结构 内部嵌套 链表精简节点 链表节点初始化 链表根节点初始化 将节点插入到链表尾部 将节点按照升序排列插入到链表 将节点从列表删除 任务控制块 链表节点数据结构
  • FreeRTOS学习记录(四):任务、任务切换(难点)

    2022 04 23 依据 xff1a 野火 FreeRTOS内核实现与应用开发实战指南 目录 一 任务 二 创建任务 1 定义任务栈 2 定义任务函数 3 定义任务控制块 4 实现任务创建函数 xTaskCreateStatic 函数 p
  • FreeRTOS学习记录(六):空闲任务与阻塞延时的实现

    2022 04 24 依据 xff1a 野火 FreeRTOS内核实现与应用开发实战指南 目录 一 实现空闲任务 1 实现空闲任务 定义空闲任务的任务控制块 创建空闲任务 二 阻塞延时 1 vTaskDelay 函数 2 修改 vTaskS
  • 万拓双控存储VS3000

    万拓双控存储 VS3000是万拓推出的新一代基于intel高性能服务器平台推出的双控24盘位存储产品 xff0c 凭借面向云架构的存储操作系统 强大的新一代硬件平台和丰富的智能管理软件该产品 xff0c 该产品采用WEB GUI管理界面 x
  • ubuntu中用anaconda下载库很慢的解决方法2020.3.5

    1 安装anaconda xff0c 去清华源下载 安装添加链接描述 2 由于第三方库在国外 xff0c 在没有梯子的情况下无法用conda install numpy来安装numpy xff0c 所以第二步就是切换清华源添加链接描述 3
  • ubuntu中Docker中开发ROS——使用gui访问docker中的ros

    ubuntu中Docker中开发ROS 使用gui访问docker中的ros 前言1 拉取带有vnc图形界面的ros镜像2 运行该镜像3 浏览器进入通过端口访问docker中的ros的界面4 也可以像常规一样用终端进入docker ros容
  • Ubuntu中安装vmware

    linux中安装虚拟机vmware ubuntu18中安装vmware15pro ubuntu18中安装vmware15pro vmware这个下载页面我找了好久 vmware真正的下载页面
  • px4混控器流程理解 motor test qgc调试

    sys autostart 索引是5000 启动是加载5000 generic ground vehicle文件 xff0c 此脚本指定混控脚本文件55行是rover generic 华丽分界线 四悬翼 sys autostart 索引是4
  • 自动驾驶决策规划算法第一章笔记 忠厚老实的老王

    第一章 自动驾驶决策规划算法数学基础 第一节 xff1a 决策规划算法的地位和作用 该笔记来自b站up主 xff08 偶像 xff09 xff1a 憨厚老实的老王视频链接主页 第二节 xff1a 为什么规划中经常见到五次多项式
  • 老王自动驾驶规划算法数学基础笔记-第四节cartesian到frenet坐标系的转化

    该笔记来自b站up主 xff08 偶像 xff09 xff1a 憨厚老实的老王B站视频链接
  • windows下如果批量修改文件的后缀名

    背景 电脑上有几十个mp4格式的视频学习资料 xff0c 这些资料都学完了 xff0c 打算把它安全的封存起来 xff0c 最有效的封存方法是把名字修改了 xff0c 而且后缀名mp4删掉或者改成一个不常见的后缀名 刚开始我是一个一个的重命
  • 在C++中使用map来取代很多个if else和switch

    在C 43 43 中使用map来取代很多个if else和switch 利用map中的key和value键值对来取代if else效率会好不少 span class token macro property span class token
  • C++类:类中的静态属性和函数、常量函数与常对象、类在内存中的存储

    静态属性 静态成员包括静态成员属性 静态成员函数 一个属性一旦设置为静态 xff0c 那么整个程序中就独其一份 如上所示 xff0c 之前p m A的值是100 使用p2 m A更改了该值为200后 xff0c 即使再用p m A去调用 x
  • ADRC学习心得(持续更新)

    两年前第一次接触到PID觉得很高深 xff0c 很神奇 xff1b 后来逐渐觉得单纯的PID小儿科了 xff0c 又了解到专家PID xff0c 模糊PID xff0c 神经网络PID这些改进算法 xff0c 再后来又知道了ADRC xff
  • 四/六旋翼迷你无人机设计制造(一)硬件设计制作

    四旋翼 xff0c 小飞机 飞到东 xff0c 飞到西 上日天 xff0c 下怼地 我的飞机真神奇 鲁迅 很早就有弄个小飞机自己玩的想法了 xff0c 因为疫情拖到现在 不过感谢时间 xff0c 过滤掉了很多不成熟的想法 xff0c 也有足