成长篇
硬件
什么是硬件?
半导体?单片机?
RoboMaster硬件组又是干嘛的呢?
作为和电路分析、数电模电等学科紧密相联的硬件,它给你带来的不仅仅是知识的储备,更多的还有能力的学习。一起来看!
|
|
|
| 硬件,一个听起来很高大上的名词。作为让机械动起来的核心部分,它包含了理工男们的智慧与思考。如果你对硬件方面有着浓厚的兴趣,如果你爱摆弄电子元器件并对神奇的电路执着不已,那就看看学长们对于硬件的学习心得吧。
|
|
|
壹
Q&A
来自老队员的分享
小编
请问你为什么要加入RM战队的硬件组?
我加入的时候它还叫电控组,后来因为战队发展原因,对定制化电子设计的需求更明显了,不满足于官方提供的硬件产品,因而把这部分力量从电控当中拆分出来,专门做硬件研发设计工作。
至于我为什么还做这个,因为喜欢和有相关经验吧。
老队员
小编
你最初进入这个组的时候是如何学习的?
主要是靠自学,尤其是独立做各种东西以后,基本上不会有人再能够全程帮你解决问题。自学找资料的话,就找几家半导体器件供应商的官方网站。
还包括别人分享出来的一些开源项目啊,对问题的理解啊,某些经典方案啊什么的,合理使用搜索引擎也很重要。
老队员
小编
你所负责的这个方向主要需要哪些专业知识?遇到问题的时候怎么解决?
需要有电学基本知识,合理地选用器件和选择解决方法,其实跟电路分析、 模拟电子、术数字电子技术都有一定关系。
为了设计更符合安装习惯,更便于制造和使用,更稳定可靠的系统(或者项目或者组件)还需要掌握一些……机械方面或者其他交叉学科的东西吧。比如说对于散热,连接,抵抗干扰等等都需要一定的考虑。
老队员
小编
在学习的过程中你最大的收获是什么?
每一次做不一样的东西你都会有收获。因为不同的项目用到的技术可能都是不一样的,选择的器件也是不一样的,解决问题的方法也是不一样的,而且你还会发现不同方案之间的优势和劣势。
比如说我们在电源变换方案上的调整,从最初的开关芯片到特殊的微处理器,每种方案都有利弊,要去寻找最合适的办法。
老队员
小编
你所学到的知识可以应用到哪些方面?
所学的知识,说正经一些以后做项目啊竞赛甚至研究和工作都是可以用上的,技多不压身。
你有相关的爱好,它也可以作为辅助,甚至是维修家电这种家务事,都可以帮上一把。或者是为了实现一个小灵感,一个小实验,一场表白,一次恶作剧都可以派上用场。
电子技术现在这么普及,生活当中都没几个东西离得开电路和半导体器件。
老队员
技术要求
对技术的要求高不高,具体有那些?(面向对象)
需要多长时间上手?(投入成本)
你可能需要做些什么?(具体工作)
如果你还怀着这样的疑问。不妨看看下面的干货吧!
贰
干货来袭
机械入门
在机器人身上,能看到各种各样的电路板,它们控制机器人奔跑、旋转或者射击。
电路板上起伏不定的元件,就是嵌入式中的硬件。不同的电路,会有不一样的硬件设计。
下图是一块国际开发板,一般用在比赛机器人上,可以控制电机、外围传感器等。
国际开发板
还有比较复杂的,应用于人工智能算法的开发板。
开发板
如何在超迷你的板子上,设计出密集又不失整洁的电路,让机器人运行顺畅?这就是今天讲的——硬件方法论。
本期作者
RoboMaster硬件工程师 小白鑫鑫
在硬件的道路上摸爬滚打、自力更生
硬件是什么?
嵌入式系统简单构成框图
嵌入式系统就像一个小电脑,相当于把主机、键盘鼠标等等缩小,集合成一块板子。
和电脑不同的是,它集成度高,有各种复杂接口(IIC、SPI、蓝牙、红外、USB等),所以有更多发挥空间。
板子上有各种接口
嵌入式系统就包括硬件和软件。简单说,看得见摸得着的就是硬件,像主板、硬盘、CPU、显示器等;寄存在硬件里的虚物就是软件,像程序、系统等。
拿人做比喻,人体就是硬件,思维就是软件。大脑发出一个指令,人体才能做相应的动作。
硬件电路板基本由芯片、电阻、电容、电感、三极管、二极管等组成。
各种元件
如何从零学起硬件相关知识?首先得看书。(认真脸)
理论知识
1先看书
理论知识基本在大学课本都可以找到,下面的书都得读读。
初级理论
这些都是基础课程,希望你拿着90+的试卷来见我。
初级劝退指南
中级理论
如果初级理论学得不错,就可以进阶中级书籍。可能会有点难,但你一定能坚持下去。
中级劝退指南
高级理论
慢慢地你会发现,书名长度与头发脱落数竟奇妙地成正比,你变秃了,也变强了。
高级劝退指南
不过我猜,大部分人看书过程是这样的:
所以,推荐大家多逛论坛,上面有伟大无私的网友分享的教程,帮你理解教科书里难懂的理论,还有实践中的血泪史,避免你再踩坑。
我一般用下面几个论坛,还有某些厂商官网论坛,如TI、MPS…
修炼完理论知识,恭喜你开始进入实战阶段!
2再实战
鲁迅没说过,实践是检验真理的唯一标准。而且,学理论就是为了秀技能啊!
所以,我们要不断地动手,提升技能。有朝一日,妹子一定会惊呼「你的板子好厉害,可以教我做一个吗?」
实战的简单流程是:电路设计→把设计图送去工厂打样并贴片→测试和调试
初级技能 · 焊接
刚入门的小白,第一步要学的是——焊接技术。
电烙铁
首先学习使用烙铁,试着在面包板上焊接插针器件,像电阻、电容、插针芯片(类似51单片机)等,练练手。
面包板
然后在报废的贴片板子上练习飞线。如果家里有矿,也可以在全新的板子上操作。
飞线
再试着焊接贴片电阻、贴片电容(0402封装,0603封装等)、更换贴片元器件,和焊接一些简单的SOP封装的芯片。
DIP封装、0402/0603...封装、SOP封装
学会这些技能,以后板子坏了,你就能一眼看出问题,并反手就把它修好。
焊了板子还没完,你得知道这块板子能不能用。
所以,还要学习调试仪器,包括万用表、示波器、频谱仪、稳压电源、信号发生器、逻辑分析仪等。
是不是感到头冷?不要方,可以先试试入门仪器:万用表、示波器、稳压电源。万一,学到一半就放弃了呢?
示波器、万用表、稳压电源
中级技能 · 设计电路板
天了噜,你竟然看到了这里,我敬你是条汉子!我们要进入设计环节了。
设计电路板原理图和PCB版图,我们需要一个画图软件:
不好意思放错了,是这个软件,Altium Designer:
推荐用Altium Designer,因为上手比较简单,网上的教程也多。
不过,企业公司一般用Candence和PADS,因为更专业。不过没啥轻松的入门教程。
Altium Designer画出来的图,大概长这样:
虽然我们分不出口红色号,但依然逻辑缜密,在设计复杂的板子时,有很多方式和技巧。
刚入门的小白可以掌握这些:
1. 计算和验证基本电路:包括数字电路、运放的计算、开关电源性能、效率等。
2. 常用单片机例程:51单片机和STM32,因为教程和资源多,好学。
3. 深入理解通信协议:IIC、SPI、CAN、RS485等。
4. 理解常用器件的参数:比如运算放大器的datasheet,包含了很多应用中要考虑的性能参数和MOS管的参数。这些对设计的器件选型很重要。
电路板
把这些学会,就不怕炸板子啦。千万别偷懒,不经思考画出来的板子多半有问题。
举个炒鸡简单的例子:下面两个原理图,第二个没有计算匹配电阻,就无法满足5V的输出。
对的
错的
为了避免炸电路板,人类还发明了仿真软件,用来模拟电路的性能,比如Proteus、Multisim等。
对了,结构设计的工具也可以了解下,比如autoCAD、SolidWorks等。
这样和机械沟通的时候,能听懂他们在说什么,以及在他们甩锅时,能及时指出「不!是你这里的设计有问题!」
高级技能 · 调试
恭喜你打到了最后一关,聪明的人才能看到这一段!
想对硬件电路深入了解,必须在平时定位过程中积累经验。
这里提2个知识点:
1. SI,信号完整性:主要在数字电路中,测试信号的波形质量,和测量通信协议的时序参数。
如下图的波形,为什么过冲,为什么振荡,对单板会不会有影响,如何消除?
上升沿过冲
下图SPI通信时,信号建立时间是否满足芯片要求?假如不满足,需要做什么调整等等。
SPI通信的CLK与SDO时序
如果没有解决,就有性能隐患,说不定哪天比赛就「翻车」了。
2. PI,电源完整性:电源完整性可以通过波形观察,用于确认电源末端的电压及电流、纹波等是否符合需求。
主要看DCDC开关电源的电压降与电源纹波,只有满足一定性能指标的电源才能保证单板长期运行稳定。
除了SI与PI之外,还有很多系统的知识,比如EMC、安规设计等。随着项目累积,这些知识也会接触到。
硬件设计
理论知识刚刚结束,我们进入实战部分。这里有「一套硬件开发流程」,请接好。
1背景调查
设计硬件前,要先调查项目背景。
项目可能来自市场需求或者比赛需求。
比如比赛需求,很多人用了「超级电容」加速方案。我们可以参考,看是否有「翻车」隐患,或者有更好的加速方案。
「超级电容」的电路板
否则,可能项目开发到一半,发现行动和目的背道而驰。
2需求分析
接着,是分析需求,我们要展开疯狂5连问: What!Why!Where!Who!When!
这样可以避免提无用需求,不仅浪费生命,还影响进度。
下面以电调板项目举例。
电机中的电调板
What,做什么?
分析项目的设计目标,思考需要实现哪些功能、功能的要求是什么、要做到什么程度才满足要求。
设计电调板,得知道它是用来驱动有刷还是无刷电机,需要什么功能。还得清楚基本指标,尺寸多大、输入电压多少、电流限额等等。
Why,为什么要做?
为什么要自己做电调板,是官方的不好用,还是性能不满足,还是太贵?(说又贵又难用的给我出去!)
如果一拍脑袋就开干,很可能做到最后发现,还不如到X宝上买一个几十块钱的电调板。
Where,在哪做?
比如测试板子的高温性能,需要在温箱中测试。
Who,谁来做?
机器上有很多个硬件模块,每个模块都要有责任人。责任人得确保自己的模块没有问题,没有闲杂人等来阻挠调试。
When,什么时候开始?什么时候做完?
每个项目都有设计时间轴,上面有各个阶段的时间节点和deadline。
我们要做不拖延不坑人的好队友,别让软件同学提刀来敲门。
3总体方案设计
在设计之前,要有总体方案设计,它就像树的主干。而详细设计是在树干上增加枝叶。
总体方案设计分三点:方案参考来源、总体框架形成和重要芯片的选型。
方案参考来源
在大脑一片空白时,可以先参考别人的方案,而最原始的方法就是——「百度」和「淘宝」。
方法看似很拙劣,但可以找到基本的产品方案,和现有的相关产品。
如果想显得有格调一点,那就去图书馆找资源吧,或者在「知网」和「万方数据库」等平台,查询学术期刊和论文。
更刁钻的思路是,找芯片厂商,问他们要方案和demo板。(如果个人魅力足够的话
)
假设你是学生,还可以加入高校技术交流群、电子协会等组织,和大家交流经验。
看完大量资料后,如何在茫茫方案中,找到对的那个呢?可以参考这几点建议:
1.性能:一个产品性能是最关键的,因此优先考虑性能是否满足需求。
2.成本:在满足性能要求的情况下,优先使用低成本的器件,这也是从开发的角度出发。
3.兼容性:兼容性是指该方案兼容多种场景,或者可以跟多种模块搭配而不影响性能。
4.设计及调试难易程度:前期尽量要考虑方案设计的简易程度,越简单越好,调试起来越方便越好。
比如,能使用运算放大器就不要自己去使用分立元件搭建放大电路。
5.方案成熟度:尽量选择较成熟的方案,这样资源多,教程多,遇到问题比较容易找到解决方案。
总体框架
定好方案,可以开工设计了吗?不不不,我们要画出总体框架图,避免遗漏或者设计不合理。
再次打开画图软件:
对不起,又开错了。再次打开画图软件,Visio——
总体框架图可以用visio工具绘制。
一般一块普通的单板包括电源、CPU/MCU、驱动器、传感器、外围设备、对外接口等。
这些都要画出来,然后互相连接,必要的总线也要标出来。
较简单的用于突出外围器件
完成一个硬件框图,相当于完成了一大半的工作量!真的。
重要芯片选型
画完图,我们到了总体设计的最后一步——芯片选型。
部分重要的芯片,要在这个阶段给出选型方案,一般是CPU,或者模块功能的主芯片。
选型遵循以下原则:
1. 开源性原则:带编程的芯片都尽量找开源的芯片。
2. 普遍性原则:元器件要被广泛使用和验证过,尽量少用冷偏芯片,减少风险。
3. 高性价比原则:在功能、性能、使用率都相近的情况下,尽量选价格友好的,减少成本。(如果家里有矿,就当我没说。)
4. 采购方便原则:尽量选容易买到、供货周期短的元器件。
5. 持续发展原则:尽量选在可预见的时间内,不会停产的元器件。(用到一半想换新,结果不卖了,找谁说理去?)
6. 可替代原则:尽量选pin to pin兼容种类比较多的元器件。
7. 向上兼容原则:尽量选老产品用过的元器件,避免踩坑。
8. 资源节约原则:尽量用上元器件的全部功能和管脚,不要浪费资源嘛。
9. 归一化原则:单板上的器件种类尽量少,方便加工。
4详细设计
做完总体设计,就可以详细设计方案了。
很多人觉得,详细设计就是原理图+PCB设计。
你说对了。
不过,设计的注意事项还是挺多的。
比如用芯片(电源芯片或传感器芯片)时,需要阅读datasheet上硬件相关的部分,操作寄存器的芯片时,也要让软件的队友一起把关。
一般芯片手册可通过百度、Google或者到芯片的官网搜索,这里推荐一个网站:
www.alldatasheet.com
基本的芯片手册都能在上面查到。
如果某些功能不确定,可以先用面包板焊接验证,或者找到相应的demo板做功能验证。
比如先用RoboMaster A型开发板验证所需的功能,再开始设计自己的主控板。
原理图和PCB的设计规范,在网上一搜一大把,就不展开说了。如果还是没把握,可以让前辈帮审核,避免出现低级错误。
5调试定位
画完设计图,就可以送去工厂打样啦。此处省略一个星期的打样过程,直接到达调试环节。
调试定位主要是验证单板的功能和性能,一般验证电源、最小系统、对外接口、通信能力等。
调试过程
以电调板为例子,简单讲下调试过程。
基本功能
回板后,第一件事不是上电,而是检查单板上是否有漏贴或者贴歪等的问题。然后用万用表检查电路是否对地短路,没问题才能上电。
上电后,用万用表检查各路电源是否达标,没达标就要查明原因,避免因损坏其他元件和设备。
然后调试MCU,保证最小系统可以工作,可以下载程序。
到此,基本功能已经检测完毕,需要再调试其他对接模块,包括电调驱动,PWM波、功率电路、板上的各通信接口等。
性能测试
接着,需要对「信号和电源」做SI和PI测试,确保各信号通畅。
曾经遇到过一个大坑:模块看似没问题,但其实信号波形很差。怎么解决呢?前方高能,扶稳观看——
当时,SPI的通信没问题,但实测波形时,发现高电平仅只有2.6V(理论应该是3.3V)。
虽然,TTL电平要求大于2.0V时,默认为逻辑“1”(也就是,即使输入2.6V的电平,也会被认为是逻辑“1”。)
但是,这会让噪声容限减少,在运行环境恶劣的时候,可能会通信失败。
后来,定位分析发现,是软件在三线的SPI读写切换时,没将MISO/MOSI切换为开漏模式。
改善后就能得到约3.3V的高电平信号。
所以,一定要找到问题根本,才不至于烧坏板子都不知道为什么。
下面还有一些调试过程中可以做的测试:
1. 各类已知的bug:找到已知的bug,或者容易复现的现象,然后修复。虽然使用时不一定有影响,但可能有一天就会爆发。
这种问题点往往是提升自身能力的机会。
2. 潜在的风险点:调试中未遇到、但可能出现的问题。比如某些器件在夏天的深圳能运行,但去了冬天的哈尔滨就报废了。
3. 极限条件下的性能:考虑最坏运行条件。比如电机在大负载时,是否会烧坏电调板,在过载时,电调板会不会有一定的保护能力等等。
6总结
总结是一定要有的,虽然过程很痛苦,但想要进步就得会写总结。
项目总结应该至少包括这几点:
1. 测试方法及报告:单板测试报告及优化点。
2. 问题定位报告:梳理过程中遇到的问题点,及怎么解决和规避。
3. 个人总结与改进:你学到了什么,还需要学什么,以后的计划是什么。
4. 项目组总结回顾:分析结果与预期的差异,比如时间上是否如期执行、产品结果与预期的匹配度。
━━━━━
硬件小白从新手到掌握,再到精通,需要经过很多项目和知识的积累。
可能有时,调试不出问题会很头疼,但最后解决了问题,会非常有成就感。
因此,熬过所谓的“枯燥”,才能达到更高的境界。加油啊朋友们!
|