新生暑假学习建议

电控组主要完成机器人中涉及嵌入式的部分,可以简单分为嵌入式软件和硬件两个方向,暑假期间都应有大致了解,入队后会再选择细分方向进行专攻。

嵌入式软件方向

本标题底下的内容更多是涉及嵌入式软件理论性知识的简单介绍以及读物推荐,可以先略读然后进行一定的实践比如完成了文末的基本任务之后再回头仔细理解这些知识,可能会更容易理解。

1

IDE

keil安装简单使用,寄存器操作、标准库、hal库区别

各种库的区别:

http://www.stmcu.org/module/forum/thread-612445-1-1.html

实验室嵌软使用的集成IDE是Keil μVision5(本人使用的是5.20)。关于库队伍一直使用的是标准外设库(Standard Peripheral Libraries),之后也会尝试使用HAL之类的,各位也应当了解各种库的区别。学会新建一个属于自己的STM32工程就可以熟悉入门KEIL了。

2

代码语言

c,c++,数据结构,代码托管

在keil上我们最常用的代码语言是C、C++,也要稍微了解汇编这种底层语言。大家在课内也是学习过相应的课程,但是可能数据结构没有专门的课程学习,也是推荐一本入门科普读物《大话数据结构》,希望对大家有所启发。必须学会使用强大的版本管理工具——Git,网上Git的教程有很多,这里随便给一个(5分钟速成!):

http://rogerdudler.github.io/git-guide/index.zh.html

(中文)

暑假期间,你可以尝试把代码上传到Gitee或Github等公开的云端仓库上。

☆ Gitee官网:https://gitee.com/(中文)

☆ Github官网:https://github.com/(英文)

3

处理器基本概念

嵌入式工程师要很经常跟处理器打交道,在队伍里面我们最常用的就是STM32-F1/F4系列微处理器,了解基本的处理器概念是非常必要的。推荐科普读物:《大话处理器》,茶余饭后略读略读。

4

操作系统

基本的操作系统概念,RTOS概念

关于操作系统可能大家对于windows或者是macos耳熟能详,然后如果大家掌握一定的基本的操作系统概念就会有所觉悟,原来操作系统是那么的具有层次结构美。同样通过对于RTOS实时操作系统的学习也会了解到在一片STM32F1上运行的一个系统是多么的简单纯粹。因为机器人具有的功能的多样性,我们也选择在嵌入式中使用RTOS,大家对于RTOS的移植一定要掌握。推荐读物《操作系统概念》,这本书值得大家仔细阅读。大家可以先重点看前五章节理解基本概念,相信已经很有收获。

5

通信

通信方式:can、iic、spi、usart等,通信驱动,通信协议

Can总线通信以及串口通信方式是队伍里机器人最为通用的通信方式,需要对于can消息仲裁方式以及报文格式有一个清晰的了解,掌握can总线的使用。串口通常作为点对点的通信方式进行稳定的数据传输,掌握串口使用以及学会使用dma数据传输。其实最为重要还有一点便是通信协议的理解,你有着稳定的硬件数据链路传输但是你的数据协议如果非常随意凌乱,也是会对数据传输稳定性造成很大的影响的。在这里推荐大家阅读有关于通信协的书籍,计算机网络(第6或7版)第3章数据链路层的章节内容,希望大家能够对通信协议有一个好的理解。其他通信方式大家也需要学会使用以及基本的底层驱动编写。

6

自动控制元件

陀螺仪、测距激光等传感器,电机等设备

机器人上使用的传感器各式各样,五花八门的电机,这里统称为控制元件。其中最为基本也是在控制中最为常用重要的一个传感器—陀螺仪,机器人的姿态解算离不开陀螺仪的数据反馈,学会使用MPU6050获取姿态数据以及对数据进行预处理是最基本的。再者一定要掌握动力输出—电机的一些基本特性以及分类,学会驱动直流电机以及无刷电机以及理解二者原理上的区别。

7

基本控制原理

普通PID、模糊PID

在机器人研发过程中控制理论的地位举足轻重,从最简单的线性控制到高大上各种控制算法,没有控制算法机器人也就相当没有运动能力。在这里也是需要大家学习掌握最基本的PID算法,这种组合线性控制的适应性很强,在很多非线性场合的作用也有令人满意的控制效果,入门必备居家旅游好法宝。需要掌握基本的PID理论知识以及简单PID算法编写。进阶要求还希望大家对于模糊控制有基本的认识,能够编写出基本的模糊算法。对于普通PID算法的理论或者算法代码大家找网上资源自行理解,对于模糊控制这里推荐几页书,大家有余力可以仔细阅读。《先进PID控制MATLAB仿真》中的第3章 专家PID控制和模糊PID控制,大家自行下载学习。

以上是对于嵌入式需要掌握的入门知识的一些简单介绍,详细的还是要大家通过不断地学习来发现自己没有掌握并且想要去拓展的部分。

相应的读物链接:

☆《大话数据结构》

https://pan.baidu.com/s/1skFZjUd

☆《大话处理器》

http://vdisk.weibo.com/s/A7dvLhMzLoJuh

☆《操作系统概念》

http://www.wishdown.com/soft/110312.html

☆《计算机网络》

http://www.java1234.com/a/javabook/javabase/2017/0509/8086.html

☆《先进PID控制MATLAB仿真》

https://pan.baidu.com/s/1rIxk0#opennewwindow

对于嵌入式学习,相信大家对于一个名字应该不会陌生,正点原子(

接下来给出一个具体的任务让大家能够通过实践去深入学习以及理解。

基本任务

在开始以下任务之前请大家先掌握STM32工程的新建、STM32F1基本的IO操作、基本外设的驱动(流水灯、串口通信等实验,也就是原子资料的前面的基本实验)再去开始完成以下任务点。以下系统的移植实验也是在原子的资料里面有完整的步骤过程,以及网上有非常多的教程可以参考。

PID算法编写(进阶可以完成模糊PID的编程),要求能够实现直流电机的闭环控制。电机在淘宝购置具有编码器功能的直流电机即可。编码器读取参考链接

https://blog.csdn.net/Zach_z/article/details/75095061

通信编程,PC上位机跟单片机的串口通信,使用dma,自定义的通信协议完整。

两块单片机CAN通信编程。

完成MPU6050的数据获取以及数据预处理。

自选一款实时操作系统进行移植,做到对移植步骤的理解,不要只是按步完成操作。

以上所有的功能最后以不同任务线程实现在一个微处理器上,这个需要大家对于系统中不同任务的内存分配、执行优先级、执行频率等都要合适选择。

嵌入式硬件方向

硬件组是一个负责实验室嵌入式硬件设计和维护、测试程序编写。在这里,通过设计和测试你自己的电路板,你可以学习到很多硬件相关的知识(如器件选型,PCB设计,焊接技巧等等)积累硬件工作相关的经验。

1

硬件设计软件

“工欲善其事必先利其器”,硬件设计也需要好的设计软件。我们实验室设计电路板是用的Altium Designer(当然如果你很厉害的话也可以把Cadence Allegro也学了),安装AD的话,不是越新越好,越新越有可能不稳定,最好安装一些网上流传的比较稳定的版本,网上很多帖子都会有比较,然后下面是一些AD的教程和基本操作,可以选择性下载:

☆ 链接:

http://pan.baidu.com/s/1c292O9M

密码:8hby

☆ Altium中国:https://www.altium.com.cn/(可以找到一些元件库和封装库)

☆ 嘉立创元器件商城(在这里可以下载到一些元件的封装库,提高设计的效率)

https://www.szlcsc.com/

2

硬件设计知识

(1)了解元器件

元器件的选型和正确使用是硬件设计中的基本功,常用的元器件有电阻电容类,晶体管类,MOS管类,晶振类等等,我们实验室一直是有使用一些特殊类型的晶体管和电阻电容器,正确地运用他们可以提高电路的可靠性,反之要是使用不当也可能会对电路的性能产生影响,所以了解不同元器件的特点以及型号对做好硬件的工作会有很大帮助,以下是一些详细的特殊元器件的讲解:

☆http://www.elecfans.com/yuanqijian/jingzhen/20180125623155.html

☆ http://www.elecfans.com/yuanqijian/baoxiansi/20091128117767.html

☆ http://www.elecfans.com/yuanqijian/erjiguang/20180420665140.html

☆ http://www.elecfans.com/yuanqijian/erjiguang/20180521680572_2.html

☆ http://www.elecfans.com/dianzichangshi/200710315828.html

☆ http://www.elecfans.com/d/645955.html

(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模型都可以在元器件的官网上找到喔。

https://forum.mianbaoban.cn/topic/44462_1_1.html

☆ PCB入门视频:

☆ 在线pcb设计:

https://lceda.cn/editor

一些获取资料的渠道以及书籍推荐:

☆ 正点原子、安富莱电子、电子发烧友论坛、51黑、电子工程世界、CSDN博客、公众号:硬件十万个为什么(里面有很多文章,视频)

必读教材:

教材的话其实有些东西已经很旧了,需要选择性吸收,下面括号里的内容是我觉得一些比较重要的。

☆《模拟电子技术》

(了解第二章的三极管,MOS管,第三章的单端电路和差分电路的概念以及阻抗匹配的概念)

☆《数字电子技术》

(了解数字电路中三极管和MOS管的工作区以及晶体振荡电路)

☆《电路》

实用电子电路设计丛书:

慕课学习:https://www.icourse163.org/

基本任务

硬件的学习其实是非常吃经验的,经验很重要,因此动手能力非常重要,所以在这里留了一个小任务:

请用Altium Designer设计以下电路图的PCB(要求元件型号自选,提示:这是一个自锁的短路保护电路,短路时Q2Q3负责自锁断开输出,自锁后不会有输出到负载,C2和C3负责自锁后重启电路)

非常感谢阅读完全文,以上提供的是我们当前研究的主要方向。本文内容较多,我们知道在暑假内全部完成也不现实,只是希望你能尽可能充实自己。

我们所做的东西其实并不高深,也没有改变世界的突破性研究,但我们是一群能把小事做好的年轻人。

今秋9月,我们在北校区33号楼机器人创新基地等待,同样热爱的你。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180807G1VXCP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券