电控组学习大纲:嵌入式软件与硬件两个方向
来源与授权
本文由 原作者(文内未署名,见原文) 的原始材料《电控组 (1)》(Word 大纲,含书单与任务)移植而来: 文字按段搬运、未改写结论;图与版式未复刻。 原文件:下载。 版权归原作者;如作者要求撤下,见 免责声明与许可。
按「嵌入式软件 / 硬件」两个方向列了读什么、用什么工具、按什么顺序练,末尾给了几道基本任务。它对标的是「一个新人从零到能上手」的完整路径。
共 123 段 · 原文件 在此 · 移植方式:抽文字、按句切段, 联系群号 / 房间号等已隐去。
电控组主要完成机器人中涉及嵌入式的部分,可以简单分为嵌入式软件和硬件两个方向,都应有大致了解,之后会再选择细分方向进行专攻。
嵌入式软件方向
本标题底下的内容更多是涉及嵌入式软件理论性知识的简单介绍以及读物推荐,可以先略读然后进行一定的实践比如完成了文末的基本任务之后再回头仔细理解这些知识,可能会更容易理解。
IDE
keil安装简单使用,寄存器操作、标准库、hal库区别
各种库的区别:
(链接见原文)
目前我们需要使用的集成IDE是Keil μVision5。
使用的是标准外设库(Standard Peripheral Libraries),之后也会尝试使用HAL之类的,各位也应当了解各种库的区别。
学会新建一个属于自己的STM32工程就可以熟悉入门KEIL了。
入门推荐网课
入门学习 STM32,推荐以下两门网课,可根据对库的需求选择:
标准库:
【STM32入门教程-2023版 细致讲解 中文字幕】 (链接见原文)
HAL库:
【【STM32教程】入门教程(基于HAL库+CubeMX+MDK-ARM)】 (链接见原文)
学习前期,建议跟着视频逐步学习基本操作,包括软件的使用以及烧录器等硬件的相关知识。
在学完所有基本外设后,可尝试动手做一些自己感兴趣的项目,比如平衡小车、云台系统等,通过实践熟悉各种模块的驱动方式和使用方法,进一步巩固所学知识。
代码语言
c,c++,数据结构,代码托管
在keil上我们最常用的代码语言是C、C++,也要稍微了解汇编这种底层语言。
大家在课内也是学习过相应的课程,数据结构的话也需要学习。
此外,必须学会使用强大的版本管理工具——Git,网上Git的教程有很多,这里随便给一个(5分钟速成!
):
(链接见原文)
(中文)
对于编程规范,之后会有详细的要求。
你可以尝试把代码上传到Gitee或Github等公开的云端仓库上。
☆ Gitee官网:(链接见原文)
☆ Github官网:(链接见原文)
处理器基本概念
嵌入式工程师要很经常跟处理器打交道,我们目前需要用的就是STM32-F1/F4系列微处理器,了解基本的处理器概念是非常必要的。
推荐科普读物:《大话处理器》,茶余饭后略读略读。
操作系统
基本的操作系统概念,RTOS概念
关于操作系统可能大家对于windows或者是macos耳熟能详,然后如果大家掌握一定的基本的操作系统概念就会有所觉悟,原来操作系统是那么的具有层次结构美。
同样通过对于RTOS实时操作系统的学习也会了解到在一片STM32F1上运行的一个系统是多么的简单纯粹。
因为机器人具有的功能的多样性,我们也选择在嵌入式中使用RTOS,大家对于RTOS的移植一定要掌握。
推荐读物《操作系统概念》,这本书值得大家仔细阅读。
大家可以先重点看前五章节理解基本概念,相信已经很有收获。
通信
通信方式:can、iic、spi、usart等,通信驱动,通信协议
Can总线通信以及串口通信方式是队伍里机器人最为通用的通信方式,需要对于can消息仲裁方式以及报文格式有一个清晰的了解,掌握can总线的使用。
串口通常作为点对点的通信方式进行稳定的数据传输,掌握串口使用以及学会使用dma数据传输。
其实最为重要还有一点便是通信协议的理解,你有着稳定的硬件数据链路传输但是你的数据协议如果非常随意凌乱,也是会对数据传输稳定性造成很大的影响的。
在这里推荐大家阅读有关于通信协的书籍,计算机网络(第6或7版)第3章数据链路层的章节内容,希望大家能够对通信协议有一个好的理解。
其他通信方式大家也需要学会使用以及基本的底层驱动编写。
自动控制元件
陀螺仪、测距激光等传感器,电机等设备
机器人上使用的传感器各式各样,五花八门的电机,这里统称为控制元件。
其中最为基本也是在控制中最为常用重要的一个传感器—陀螺仪,机器人的姿态解算离不开陀螺仪的数据反馈,学会使用MPU6050获取姿态数据以及对数据进行预处理是最基本的。
再者一定要掌握动力输出—电机的一些基本特性以及分类,学会驱动直流电机以及无刷电机以及理解二者原理上的区别。
基本控制原理
普通PID、模糊PID
在机器人研发过程中控制理论的地位举足轻重,从最简单的线性控制到高大上各种控制算法,没有控制算法机器人也就相当没有运动能力。
在这里也是需要大家学习掌握最基本的PID算法,这种组合线性控制的适应性很强,在很多非线性场合的作用也有令人满意的控制效果。
需要掌握基本的PID理论知识以及简单PID算法编写。
进阶要求还希望大家对于模糊控制有基本的认识,能够编写出基本的模糊算法。
对于普通PID算法的理论或者算法代码大家找网上资源自行理解,对于模糊控制这里推荐几页书,大家有余力可以仔细阅读。
《先进PID控制MATLAB仿真》中的第3章 专家PID控制和模糊PID控制,大家自行下载学习。
以上是对于嵌入式需要掌握的入门知识的一些简单介绍,详细的还是要大家通过不断地学习来发现自己没有掌握并且想要去拓展的部分。
相应的读物链接:
☆《大话数据结构》
(链接见原文)
☆《大话处理器》
(链接见原文)
☆《操作系统概念》
(链接见原文)
☆《计算机网络》
(链接见原文)
☆《先进PID控制MATLAB仿真》
(链接见原文)
对于嵌入式学习,相信大家对于一个名字应该不会陌生,正点原子(
(链接见原文) + Jlink或ST-link下载器 + 调试串口 + Xcom足以助力大家进入嵌入式的世界。
接下来给出一个具体的任务让大家能够通过实践去深入学习以及理解。
基本任务
在开始以下任务之前请大家先掌握STM32工程的新建、STM32F1基本的IO操作、基本外设的驱动(流水灯、串口通信等实验,也就是原子资料的前面的基本实验)再去开始完成以下任务点。
以下系统的移植实验也是在原子的资料里面有完整的步骤过程,以及网上有非常多的教程可以参考。
PID算法编写(进阶可以完成模糊PID的编程),要求能够实现直流电机的闭环控制。
电机在淘宝购置具有编码器功能的直流电机即可。
编码器读取参考链接
(链接见原文)
通信编程,PC上位机跟单片机的串口通信,使用dma,自定义的通信协议完整。
两块单片机CAN通信编程。
完成MPU6050的数据获取以及数据预处理。
自选一款实时操作系统进行移植,做到对移植步骤的理解,不要只是按步完成操作。
以上所有的功能最后以不同任务线程实现在一个微处理器上,这个需要大家对于系统中不同任务的内存分配、执行优先级、执行频率等都要合适选择。
嵌入式硬件方向
硬件组是一个负责实验室嵌入式硬件设计和维护、测试程序编写。
在这里,通过设计和测试你自己的电路板,你可以学习到很多硬件相关的知识(如器件选型,PCB设计,焊接技巧等等)积累硬件工作相关的经验。
硬件设计软件
“工欲善其事必先利其器”,硬件设计也需要好的设计软件。
目前实验室设计电路板是用的是嘉立创eda。
总共有三个软件:
嘉立创标准版/专业版:
嘉立创 EDA 标准版与专业版均为功能完备的电路设计工具,核心能力覆盖原理图绘制与 PCB 设计两大核心环节,两者依托嘉立创生态优势,整合了海量标准化元件库与封装资源,能高效支撑从电路原理设计到 PCB 布局布线的全流程工作,满足不同复杂度的硬件设计需求(标准版侧重轻量易用,专业版更适配复杂项目)。
立创下单助手:
聚焦于设计完成后的生产落地环节,是 PCB 打板及相关制造服务的专用工具。
通过它,用户可便捷提交 PCB 文件,快速完成打样参数设置(如板材、层数、数量等)并下单,
下载官网:
软件下载 - 嘉立创EDA
硬件设计知识
(1)了解元器件
元器件的选型和正确使用是硬件设计中的基本功,常用的元器件有电阻电容类,晶体管类,MOS管类,晶振类等等,我们实验室一直是有使用一些特殊类型的晶体管和电阻电容器,正确地运用他们可以提高电路的可靠性,反之要是使用不当也可能会对电路的性能产生影响,所以了解不同元器件的特点以及型号对做好硬件的工作会有很大帮助,以下是一些详细的特殊元器件的讲解:
☆(链接见原文)
☆ (链接见原文)
☆ (链接见原文)
☆ (链接见原文)
☆ (链接见原文)
☆ (链接见原文)
(2)了解PCB设计的方法
网上其实有很多PCB设计经验,以下列出两个相关的帖子,PCB设计的话我们现在很多都是低速领域的设计,大部分时候也不用太过拘泥于高速设计中的一些原则(比如什么线间距要是线宽的三倍啦等等),但是元器件的布局是无论如何也很重要的,同样的原理图也许会因为PCB设计的不同而产生不同的效果。
同样,数字电路部分的设计也值得注意,因为数字电路工作时往往会产生大量的谐波,所以其外围电路的设计需要十分谨慎。
下面列出一些值得注意的PCB设计的要点:
1> PCB走线,过孔的特性
PCB的走线不是一个理想的连线,走线上附带有阻抗,过孔也是一样,如果这两者处理得不好,会对PCB的信号完整性产生影响,需要了解走线宽度长度的影响以及过孔的常用的尺寸以及其大小会带来的影响。
2> 滤波电容,电感器的摆放
最常见的就是有一些芯片手册的PCB GUIDELINE里面会要求芯片管脚,滤波电容与地最短回路来降低回路阻抗,减小干扰。
设计时很多时候需要考虑PCB板中的电流回路,关于这方面的内容大家可以更多去了解。
3> 地平面系统的铺设
如果粗暴地铺设地平面系统,地线中存在公共阻抗可能会使部件之间互相干扰。
了解数字地和模拟地分开然后一点接地的处理方法,了解PCB中“地”的概念(由于PCB走线中存在阻抗,要认真理解什么叫“不同的地”),以及铺“地”的具体操作方法。
4> 时钟电路的PCB设计
时钟电路看似简单,但PCB设计时时钟电路的注意点却很多。
因为时钟信号算是一个高速信号,它的PCB设计需要单独去了解并牢记这些注意点。
关于PCB设计的注意点还有很多,需要在实际设计中慢慢去积累经验。
在实际设计中还需要仔细参考IC的手册,很多IC的手册最后会有针对这款IC的PCB布板指南。
学有余力的话还可以学习了解一下多层板和如何利用芯片的IBIS模型来进行PCB信号完整性的仿真,大部分芯片的IBIS模型都可以在元器件的官网上找到喔。
(链接见原文)
(链接见原文)
☆ PCB入门视频:
(链接见原文)
☆ 在线pcb设计:
(链接见原文)
一些获取资料的渠道以及书籍推荐:
☆ 正点原子、安富莱电子、电子发烧友论坛、51黑、电子工程世界、CSDN博客、公众号:硬件十万个为什么(里面有很多文章,视频)
必读教材:
教材的话其实有些东西已经很旧了,需要选择性吸收,下面括号里的内容是我觉得一些比较重要的。
☆《模拟电子技术》
(了解第二章的三极管,MOS管,第三章的单端电路和差分电路的概念以及阻抗匹配的概念)
☆《数字电子技术》
(了解数字电路中三极管和MOS管的工作区以及晶体振荡电路)
☆《电路》
☆ 实用电子电路设计丛书:
(链接见原文)
☆ 慕课学习:(链接见原文)