ren-jiong

写在前面的话

由于本人需要不定期跑步来锻炼体能,但是手中拿着水瓶跑步又嫌重,放在路边跑完一圈回来喝又怕水瓶会不翼而飞……种种原因让正在研究小车底盘的我不禁有了一个制作跑步助手小车的想法。类似的效果是在跑步过程中这辆小车会驼着一瓶水跟在我后面,最好还能放一些杂物,这样我的双手就能彻底解放了。(同时跑步的时候一个机器人跟在自己后边也是一件很拉风的事情不是吗?

1.0 硬件部分

1.1 电源-基础姿态控制板需求

原本这仅仅包含最底层的电机驱动电路,但为了减少使用的电路板个数,所以我需要将尽可能多的功能集成到尽可能小的板子上,当我完成电源方面的原理图设计的时候,发现板子上还有剩下许多空间,所以我就将小车的基础姿态控制的电路也加入了进来。二者相结合,就变成了机器人的第一块电路板——电源-基础姿态控制板。由于考虑到今后可能还会用这一块板子做很多其他的事情,所以我尽可能地使用了全部的接口同时将尽可能多的元器件放置在板子上。

1.1.1 电机及其驱动

对于一个小车来说,最先考虑的零件当然是电机了。可以选择的电机大致就只有直流无刷电机直流有刷减速电机两种。直流无刷电机使用FOC电路驱动,直流有刷减速电机使用一般的减速电机驱动模块即可。考虑到FOC控制算法的复杂程度以及带光电/霍尔传感器的无刷电机的价格昂贵,在这里我选择使用直流有刷减速电机作为小车的电机。

大多数的有刷电机的驱动芯片模块都比较大,如果自己设计打板的话价格又十分尴尬,所以我使用小巧但又不会特别昂贵的TB6612FNG模块来驱动电机。需要注意的是,这个模块在市面上存在很多假货,耐压为10V以内,而使用正品芯片的TB6612FNG模块的耐压值为15V以内,如果稍不注意买到了假货,接入电源的时候很可能会直接目睹电容烟花……

image

1.1.2 电源

既然需要使用12V的电机,那么小车的电池至少也应该是3S往上了。这里我就选择3S航模电池作为电路的电源。

电源应当有电压检测的功能。

由于我比较懒,不想在小车没电的时候更换电池,所以我打算直接板载3S电源的充电电路。对于这类航模电池来说,平衡充电模式是必不可少的,使用平衡充电模式对电池充电可以大大提升电池的耐用程度,所以板载的充电电路必须拥有平衡充的功能。

在电路调试的过程中,更换电源以及等待电池充满电的时候永远都是最煎熬的,尤其是在我只使用一块电池的情况下。所以我希望还可以使用外接电源供电,比如使用一个Type-C接口进行供电。

如果电池还没彻底用完、或者电池电压已经不足,再或者我就单纯不想把没电的电池拆下来,我就想接入外接电源,这时我就需要一个能够自动换路的电源了。使用MOS管以及三极管搭建一个开关电源,使得当外接电源接入的时候电路使用外接5V供电,当外接电源被移除的时候电路使用3S电源供电。

考虑到以后机器人可能需要自己对自己进行充电,使用USB接口进行充电就显得很不方便了。所以我将一个无线充电模块与外接5V电源并联,这样电路就具备了无线充电的能力。单片机还能使能或者失能DCDC芯片,结合自动换路电路的特性,使得电路强行从无线充电状态中退出。

由于充电的时候DCDC芯片很可能会发热过度,所以板载一个风扇接口也是有必要的。

1.1.3 主控芯片

现在使用STM32作为主控明显不是一个很好的选择。幸运的是,有许多使用起来几乎完全一摸一样的国产芯片可以替代STM32,例如在这里我使用航顺的HK32F103CBT6来代替STM32F103CBT6.航顺的芯片在使用上跟32没有明显的区别。

同时为了提高芯片的利用率,我将芯片制作成了一个拥有M.2接口的最小系统板,在电源-基础姿态控制板上预留一个M.2接口插槽即可随时拔插芯片。这样同一个芯片就能够在多块板子上使用啦。由于这里的设计比较简单,所以直接贴出成品:

image

1.1.4 外围传感器

由于这一块电路板不仅仅需要完成电源的转换工作,还需要实现基础的姿态控制,所以需要添加一个MPU6050作为陀螺仪使用,这里没有什么特别的设置。

1.1.5 显示

单纯使用串口来输出debug数据其实还是挺不方便的。所以我添加了一个RGB的TFT 0.96寸液晶屏来显示一下电路的实时工作状态。同时上边的电池电压检测也需要在这里显示。

1.1.6 接口

其实在完成上边的所有设置之后,已经没有几个IO可以使用了,准确来说,只剩下一个串口IO可以使用。但是接口这一块还是太重要了。

首先肯定需要将串口转成USB输出,方便使用PC端的串口调试助手进行debug;与此同时使用PC机进行串口传送数据的时候,小车如果在此时需要测试运动的话,连着一条USB线到处跑实在是太憨憨了。所以我还需要添加一个蓝牙模块来进行串口的无线传输。所以我给蓝牙模块添加了一个独立的电源开关,通过这个开关可以开启或者关闭蓝牙模块,需要无线传输的时候,我只需要拔掉USB线断开有线串口,打开开关便能使用无线串口传输了。

1.1.7 小结

现在我们的需求大致罗列如下:

  1. 使用直流有刷减速电机,同时使用TB6612FNG模块作为电机驱动;
  2. 使用3S航模电池供电,可以检测电池电压并板载平衡充电路;
  3. 可以使用5V外接电源/无线充电模块供电;
  4. 内外部电源拔插自动换路供电;
  5. 使用M.2接口的HK32F103CBT6最小系统板;
  6. 板载MPU6050传感器;
  7. 板载RGB-TFT 0.96寸液晶显示屏;
  8. 板载Type-C接口的串口,同时串口可以选择接入蓝牙模块进行无线传输。

为了节省成本,上述的功能需要在10cmx10cm的板子内实现,当然,越小越好。由于我使用的平衡车底板空间有限,我的板子大小约为9cmx6cm,使用4层板实现。下面设计具体的参数以及电路。

1.2 电源-基础姿态控制板实现

1.2.1 电机及其驱动(8W)

选择12V版本的10减速比电机(最高转速比较快,同时小车也不需要背负很多重物,1KG左右就可以了),稳定工作电流大概在0.4A,堵转电流3.2A,额定功率约为4W,作为平衡小车的行进速度约为2m/s.轮胎选择普通的65mm橡胶胎即可。

平衡车使用的是2个电机,额定功率约为8W,工作电流约为0.8A,同时启动电机的瞬时电流往往会超过1A,所以两个电机的供电最大值约为2A。由于电机由TB6612FNG模块进行供电,所以模块的供电引脚需要至少能承受2A的电流,这里留出40%的余量,也就是模块最高需要能承受2.8A的电流。

这里放一张PCB载流能力的参考表(线宽单位为英寸):

image

我们选择10度的温升,1oz铜厚,2.6A电流,查表可得需要0.05inch的线宽,也就是50mil。(1inch=1000mil)所以我们在对TB6612FNG布线的时候,VM脚的线宽需要至少为50mil。

由于使用的是编码器的电机,所以还会需要额外的编码器(这里使用的是霍尔传感器)的供电。传感器的供电一般没有多大,这里直接使用10mil以上的线宽即可。其他的直连单片机IO的信号线的电流就更小了,一般只是几十mA,所以使用4mil以上的线宽即可。

这里贴出电路的原理图:

image

1.2.2 主控芯片(15W)

这里使用的是HK32F103CBT6芯片。单片机的功耗一般很低,在开启所有外设、使用最高时钟频率的情况下,F103芯片的最高电流约为19mA,供电电压为3.3V.所以整体功耗不超过1W……我就不考虑这里的功耗了。

使用M.2接口还需要考虑的地方就是金手指的厚度问题。一般而言金手指插槽的厚度为0.9左右,而我们一般默认打板使用的厚度是1.6mm,这样是塞不进去的。(除非做金手指的斜边,但是有些小的板子不支持做这个)

image

芯片的电源一般使用10mil线宽,信号线一般使用4mil以上线宽即可。

在这里不单单考虑这块板子上的主控芯片,同时也需要考虑之后第二层以及树莓派芯片的功率。第二层的传感器板的主控芯片仍然采用STM32系列芯片,故功耗也暂时忽略不计。而树莓派则是一个电老虎。树莓派的供电为5V3A,也就是最高功率可达15W。所以芯片部分(把树莓派当作一个芯片计算)的总功率记作15W。

1.2.3 显示部分(0W)

显示部分我使用的是SPI接口的0.96寸 RGB-TFT 屏幕,这里最耗电的是屏幕的背光。整个机器人应该会使用2个小的低功耗监视屏。我没有找到显示屏具体的功耗信息,但是从一般的屏幕模块布线来看的话,屏幕的功耗也不会超过1W。所以这里也将其忽略。

布线的话还是电源线10mil,信号线4mil。

1.2.4 外围传感器/其他外设(12.5W)

首先来看一下在这块电路板上的传感器。不计电机上的霍尔传感器的话就只有MPU6050一个。而MPU6050属于极低功耗的芯片,我这里也不计算其功耗。然后是接口芯片,蓝牙模块的功耗也很低,故在这里也忽略不计。布线时电源线10mil,信号线4mil。

1.2.4.1 传感器融合板上的外设(5W)

1.2.4.2 树莓派4B上的外设(7.5W)

我使用了一代英特尔神经计算棒,其功耗在1W左右;

同时还需要接入一个T265实感追踪摄像头,功耗在1.5W;

最后接入的激光雷达功耗就高一些,为5W左右。这里加起来一共为7.5W。

1.2.5 电源

经过上面的计算,加上冗余量,总共是40W的功率需求。整个电路使用3S航模电池进行供电,航模电池可以提供足够的功率。

1.2.5.1 电压检测

电压检测部分使用单片机的一个ADC引脚检测,电路如图所示:

image

1.2.5.2 平衡充

航模电池一般都是使用多块电池并联而成,当使用一段时间之后其由于内部的电阻等因素会使得每一块电池耗尽电量之后的电压不等。如果依旧继续使用,可能会使得某一块电芯过放,而过放的电芯基本上不能再次使用了。而平衡充的工作原理就是使用另外的一个插头检测每一个电芯的电压,哪一个电芯的电压高,就打开放电回路使得电压降低,电芯的电压低就一直关闭放电回路使得其能持续充电,最后得到同样电压(一般为4.2V)的满电电芯,而不使用平衡充的电池不论是满电状态还是耗尽电量的状态,电压都是参差不齐的。

image

当然,对于3S电池来说,使用3个锂电池充电模块(例如TP系列的充电IC)也是可以达到平衡充的效果的,只是那样来说成本就比单纯使用平衡充电路要贵上很多,所以一般还是使用平衡充电路。

在这里我选择了平衡充HY2213-BB3A与3S充电芯片PW4053相结合的方案,下面我简单说明一下其中的充电流程。

首先,PW4053是一款支持5V输入,最大1.2A输出的3S电池管理IC,其中使用DCDC升压,效率较高,同时自带有充电指示灯电路。但是其没有平衡充功能。而平衡充IC HY2213-BB3A可以检测每一块电芯的电压,超过4.2V之后就会开启一个放电回路进行放电降压。使用3个该IC就能实现3S电池的平衡充功能。下面是充电电路的原理图。

image

其中所有的布线都使用20mil线宽,其中PW4053作为DCDC芯片的同时体积也小,发热量应该会很大,所以要做好铺铜、打过孔等一系列散热操作,必要时需要添加主动散热。

1.2.5.3 外部电源供电

这一块内容一度让我很是头疼。因为市面上Type-C接口的电压输入都不太一样,普通电源适配器的USB接口连接Type-C线材输出的一般最大是5V3A;如果使用PC的USB接口,那么最多输出5V1A;但如果使用笔记本的充电电源或者手机的快充电源,那么充电电压就有5V、9V、12V、20V等等。输出功率最大可以有65W。

目前来说短时间内我还不具备设计65W大功率电源的能力,所以在这里我放弃直接使用外接电源驱动完整电路的想法,况且一般情况下也不会需要用到如此高功率的电源。所以当外接电源的时候,机器人只运行电源-基础控制板以及传感融合板,树莓派及其上的ROS器件将关闭或者使用独立电源运行。

1.2.5.4 自动换路电路

同样地,自动换路电路作为调度外部供电与内部供电的部分,最后的输出的也是机器人中据大部分的电流(不包括电机的驱动电流),需要承载的功率为30W。如此看来这一部分的电路也起着举足轻重的作用。

下面这是一个可以实现自动换路的电路模板:

image

这里解释一下该电路是如何实现自动换路的功能的。

1、当电路没有外接电源的时候(12V_BAT接入电压,12V_IN悬空),首先可以看到Q1因为没有基极电流所以Q1截止;Q2左侧的12V_BAT电源通过电阻产生对Q2的基极电流,Q2导通;从而使Q3的栅极被拉到地,PMOS的导通条件是栅极电压小于源极电压,Q3的源极电压为电池电压,故Q3导通;电流通过Q4的寄生二极管到达输出端,此时Q4的栅极也接地,故也满足导通条件,Q4导通,寄生二极管截止,电池电压直接通过Q3、Q4到达输出端。Q5、Q6截止。

2、当电路有外接电源的时候(12V_BAT、12V_IN接入电压),首先可以看到Q1导通,连接在Q1上的电池通过电阻接地,造成没有电流通过Q2的基极,所以Q2截止;Q3的栅极没有接地,Q3的栅极与源极的压差为在该回路中的那个电阻上的电压值,设置合理时可以使得压差不足从而使得Q3截止;再看向Q5,外部电源接入基极,所以Q5导通,使得Q6的栅极直接接地,Q6导通,外部电源直接通过Q6的源极漏极输出电路。Q4的源极为输出电压(几乎无电压损失),栅极为输入电压,二者压差很小,所以Q4截止,电源电压被中断,可防止对电池的非正规充电。

MOS管的导通损耗很低,故上述电路的主要功耗在于三极管的管耗以及电阻的发热。通过设置相应的电阻阻值,使得三极管处于完全导通状态的同时导通电流相对较小,功耗也不会太高。

但是上图中所用的电阻、三极管和MOS管只是一个符号,我们还需要根据实际的电路来选择合适的元器件。

先看三极管,根据上面的分析我们可以得知三极管在这里的主要功能是给MOS管拉低电平或者开断其他低电流的电路,所以实际上流经三极管集电极的电流最大也就只有10mA左右,所以三级管的选择还是十分宽裕的;但是MOS管就很不一样了,这里的电源需要直接流通MOS管,MOS管需要能承受后面所有电路的功耗之和,也就是前面所计算的27.5W,留够50%的余量,也就是需要达到41.25W的最高功率耗散;额定电流2.29A,留够20%的余量,也就是需要承受最大3.435A的电流,这两个数据还是比较恐怖的,如果使用上面的MOS管,在接通电源的一瞬间MOS就会直接烧毁。MOS管还有其他的一些参数需要考虑,分析过程在这里略过。

这里我选用英飞凌生产的一款大功率MOS IRFR9220TRPBF-BE3作为电路中的MOS使用,该MOS管的功率耗散为42W,连续漏极电流为3.6A,完美符合上述电路的要求。

电阻的选择同样比较宽泛,基本上电阻都是给三极管限流用的,同时设置合适阻值的电阻还能在一定程度上减少电池的静态功耗,这里设置的电阻阻值基本符合要求,故先不作改动。

由于第一次设计最大功率可能达到40W的电路,故在这里我另行设计了一款测试使用的PCB,用作先行的测试使用,下面是有关于测试的部分,如果对此没有兴趣可以直接跳过。

测试的过程大致分为两个过程,一是测试电路能不能承受设计的负载,二是测试电路的开断时间间隔是否足够小,以防止换路后导致后续电路掉电重启。

1.2.5.4.1 自动换路电源测试-负载测试

一、测试方法

这里使用阻值可调的功率电阻与电路的输出端相连接进行测试。

二、测试步骤

首先将电阻调节至合适的电阻值,使得电流到达观察值,然后测量输出电压,测量晶体管的压降,监测发热情况。

三、实际测试

1.2.5.4.1 自动换路电源测试-开断测试

1.3 数据融合板需求

1.4 数据融合板设计

2.0 软件部分

分类:

技术点:

相关文章:

  • 2022-01-06
  • 2021-11-23
  • 2021-06-28
  • 2021-05-06
  • 2021-04-02
  • 2021-12-27
  • 2021-09-24
猜你喜欢
  • 2021-05-29
  • 2021-09-27
  • 2021-05-25
  • 2021-05-14
  • 2021-06-20
  • 2021-09-20
  • 2022-01-18
相关资源
相似解决方案