浅谈机器人主控的设计
时间:2023-11-01 00:37:01
在很多人眼里,主控板有密密麻麻的芯片引脚和PCB布线,看起来很困难。事实上,相反,主控板的设计有其独特的设计规则。事实上,它就像一个积木。在满足单片机最小系统的条件下,只需添加相应的电路模块,也可称为模块化设计理念。
本文将从三个层次介绍机器人主控板的设计理念。分别是:
主控板最基本部分的基础设计和原理;
分支、主控板功能模块的扩展和设计理念;
计算主控板中功能模块的具体电路参数。
我大树的层次结构为模型,带领大家走进电路设计的乐趣。
根基
这里的基础是单片机的最小系统,是单片机能够正常执行程序的最简单的工作环境。没有这些,单片机就无法操作程序。
最小系统的组成包括电源电路、时钟电路和复位电路。大多数芯片的最小系统需要上述三种电路,而有些芯片不能使用外部时钟,芯片可以通过RC振荡器为程序运行提供时钟基准。
根基之电源电路。以STM以32系列单片机为例,其工作电压为2.0V~3.6V,通常会使用3.3V电源供电。
假设我们用5V电源为电路板提供电源,需要5V转换成3.3V为单片机供电。考虑到单片机需要在低纹波电源环境中工作,选择了线性降压电源(LDO)。设计目的明确,方案选择如下。
需要做的事:使用那款LDO芯片将5V电压降低到3.3V电压,满足功率需求。有很多解决方案可以实现这些需求。下面我简单列个常用芯片。
芯片 |
最大输出电流(ma) |
成本(元) |
AMS1117-3.3 |
800 |
0.5 |
SPX3819M5-L-3-3 |
700 |
0.7 |
RT9193-33GB |
300 |
0.4 |
SSP6206-33NR |
300 |
0.16 |
…… |
…… |
…… |
仔细分析上表中的参数,发现不同的芯片有不同的最大输出电流。此时,最大工作电流(可在单片机手册中找到)可根据单片机内部资源的使用情况进行计算。在确定了单片机的最大工作电流后,需要将电源芯片扩大3倍。
到目前为止,已经确定了电源芯片方案,但是如何连接电路呢?如何设计可以减少干扰?对于如何连接电路,典型的应用电路通常会在芯片手册的前几页提供。我在这里AMS1117-3.以3为例介绍。
下图显示了芯片手册中的典型应用电路模块。通常,根据数据手册中的电路连接,可以正常使用。为了提高系统的稳定性,我们也可以稍微修改电路。例如,在电源输入口添加磁珠,以抑制电源线上的高频干扰信号。在输入输出端增加滤波器去耦电容器,以确保输出电源的纯度和瞬态响应能力。
基本的复位电路。我相信很多人和我一样,从接触51台单片机开始怀疑复位电路的工作原理,因为对模拟电路的理解不够彻底,不能给出正确的答案,当别人问时,不能说为什么。对于复位电路,这里有两种不同的解释,欢迎批评和纠正。
对于低电平复位所示:
复位电路解释1:首先,明确电容器具有交通和隔离的能力。交流电的定义是非直流电是交流电,直流电的定义是大小方向不随时间变化。
可以理解,在电路上电的瞬间,电压从零变化到VCC此时,电容器两端的电压应属于交流电,这需要时间。在此期间,电容器处于导通状态,RST引脚电压接近于GND(低电平)。满足单片机复位要求。具体参数可通过RC计算电路。通常使用0.1uf和10K单片机复位电阻。
复位电路解释2:理解电容充电曲线
当电容器充电时,两端的电压曲线如下图所示。IO口电压低于0.8V单片机会认为IO如果口电平为低电平,图中复位电路的使用参数可提供288us低电平时间足以满足单片机的复位。
基础时钟电路。对于单片机来说,时钟就像心跳。在时钟信号的基准下,有规则的执行代码。时钟电路相似。以无源晶体振动为例。
如上图所示,是时钟电路,其中两个是22pf电容为起振电容,1M电阻是环路反馈电阻。MHZ晶振,经STM32内部PLL锁相环的倍频可达72MHZ,通过分频电路进行分频,为外设提供时钟。
单片机最小系统主要由这三部分组成,必须作为控制器的基础。无论功能多么复杂,都需要在此基础上进行扩展。以下是如何扩展主控板的功能。
枝干
这里的枝干指的是以最小系统为根基引申出来的各个功能模块。和大树一样,枝干在满足自身生长的条件下可多可少。这里简要介绍两个扩展功能,以展示控制器中“枝干”的设计过程。
新枝干-温度检测功能:
这里想用单片机实现一个简单的温度计功能,可用于机器人中的电机温度检测,也可称为需求。我们需要做的是选择哪种方法来实现温度检测。如果你学过51单片机,你可能会想到DS18B单总线温度传感器20,这里可以作为替代方案。还有别的吗???我喜欢列表,画图在纸上展示我脑海中的想法,这里列表看看我脑海中能列出多少种方案。
I/O个数 |
温度范围 |
信号种类 |
|
DS18B20 |
1 |
-55~125 |
数字信号 |
LM75A |
2 |
-55~125 |
数字信号 |
AM2302 |
1 |
-40~80 |
数字信号 |
热电偶 |
1 |
由选型决定 |
模拟信号 |
热敏电阻 |
1 |
由选型决定 |
模拟信号 |
...... |
...... |
...... |
...... |
看吧,随便一列就能够列出5个备选方案,实际中远远不止这些。为了使文章更加丰满,介绍更多的基础电路设计,这里以负温度系数热敏电阻作为实现本次任务的传感器。
负温度系数热敏电阻的阻值会随着环境温度的升高而降低。对于型号为MF52 10K ±1%的热敏电阻,其阻值随温度变化的曲线如下图所示。在-40~70之间其阻值的线性度非常好,完全可以使用一次函数式(y=ax+b)来拟合这段曲线,然后根据电阻值去反推环境温度。
问题推进到现在,测量温度的需求,已经演变成了如何测量热敏电阻阻值的需求。说道电阻,应该能够想起最基本的欧姆定律吧!
通过上式,我们就可以通过检测热敏电阻两端电压来确定热敏电阻阻值。
电压法测量热敏电阻阻值:这种办法比较简单,在产品中应用的也较多。使用电阻R1与热敏电阻串联,然后使用单片机ADC功能读取VF1点电压,后反推出热敏电阻阻值,进而计算出当前所测试温度。
其计算公式为:
电路中的R1需要选取一个合适的数值。选取过大,NTC两端电压变化范围就会变得很窄,为后期的数据出来带来不便。
如下图所示,为R1分别选取了10K,55K,100K三个阻值时,VF1随温度变化曲线。从图中可以看出当R1=10K时,VF1的范围很宽,并且温度在0度到45度范围内变化时,VF1具有很好的线性度。
相比而言当R1选取55K和100K时,VF1的表现就没有那么好了。
这样我们就在单片机最小系统上添加了测量温度的功能。在整个设计过程中,我们只仅仅使用到了单片机的一个ADC口,其余都应属于模拟电路知识。按照这个思维,我们可以实现很多功能,比如你想要给控制器添加WIFI功能,通过分析也许你连原理图都不用改,只需要购买个具有UART的WIFI模块就能够实现,就是这么简单。
新增枝干---电路电流检测功能:
在控制器设计中难免会涉及到检测电流,用于电路过流保护,或电机相电流检测。这里想用单片机检测电机某相电流,来实现电机的FOC控制,也可以称为需求。
电流检测方案有多种可供选择,比如采样电阻,霍尔电流传感器,罗氏线圈。这里我选择了电阻对电机相电流采样。
一般检流电阻的值都比较小,比如0.005欧姆。当流过10A电流时,电阻两端压差仅为50mv,这样就不会对电路造成影响,但是会带来一个问题,直接使用单片机ADC读取时,无法准确读取到数据。通常的做法是将电压放大后,再使用单片机读取。
电路设计到这里,从刚开始的电流检测需求,已经推进到采样电压信号的放大需求。这时想到的必然是使用运放对采样电压放大。
如下图所示,选取了运放构成的减法电路(差分放大电路),来放大电压信号。具体的电路计算后文详细介绍。
这样又在单片机最小系统上添加了电流检测功能。在整个设计过程中,只仅仅使用到了单片机的一个ADC口。
枝干部分就先列举两例,在这种思维的指引下,你可以尝试着实现其他功能,比如实现一个数据显示功能,实现CAN通信,实现4-20ma信号处理。好好想想,看看有多少种可用的解决方案。
树叶
树叶指的是以最小系统为根基引申出来的各个功能模块中的具体电路参数。这里的设计需要根据选定的最终方案来详细计算电路中阻容等每个元件的值和具体器件选型。
现在以上文中电流检测电路为例,来介绍如何计算电路参数。
上图中的电路原型为减法电路(也称差分放大电路),如下图所示
根据模电基础知识,其输出电压表达式为:,其中为差分放大器的放大倍数。
假设系统中需要将信号放大5倍,这时应该等于5。这里的取值可就多了,比如100欧姆和500欧姆,1K欧姆和5K欧姆,10K欧姆和50K欧姆。这么多种组合,到底哪个组合比较好呢?在我看来在保证功耗允许的情况下,阻值越小越好。100欧姆就比1K欧姆好,1K欧姆就比10K欧姆好。
电机的三相电流波形是相位相差120度的正弦波,如下图所示。在电流检测过程中信号有半个周期为负值。对单电源供电的运放,位于负半轴的电流值是无效的,无法进行放大。此时就需要对电流波形进行偏移,使得整个周期的电流波形都位于正半轴以上。
为了解决这个问题,只需要在下图RB处添加直流偏移电压Vref,输出电流形就会向Y轴正方向偏移Vref。
此时,输出电压表达式为(可根据叠加原理推导):
下图所示,将一个30mv正弦信号放大5倍并偏移1.65V后的电流波形。
至此,我们已经计算出了电路中的电阻参数,当Ra=1K时,Rb=5K这个组合是比较好的。因为STM32单片机ADC引脚最大输出电压为3.3V,通常对电流波形偏移Vref=1.65V即可满足要求。
主控板的设计就这样简单,明确需求,方案选取,计算参数,简单三步即可实现你想要的功能。