设计基于nRF91的太阳能肋板
扫描二维码
随时随地手机看文章
注:这是我提交的Ribbit Power Hop挑战赛的第2部分,其中包含了我的设计的布局笔记和提示。阅读之前的项目以了解更多关于设计过程的信息。
对初次提交文件的修订
在收到评审小组的深刻反馈后,我对我最初的Hackster项目中的初始设计进行了一些修改。
以下是更新后的系统图:
这是最终示意图的顶层图:
添加/删除[+/ -]和修改[~]:
[+] nRF52833配套SoC +蓝牙天线,通过USB作为nRF91的串行接口,并通过蓝牙提供设备配置功能
[-] FTDI接口——依靠nRF52提供串行接口
[~]电池座的尺寸从14430改为18650,以增加电池容量
[+] JST PH电池连接器允许替代18650电池连接
电池保护电路,提供过流,过压和欠压保护
[+]电源轨上的测试点和跳线,用于监测各分系统的电压和电流
PCB布局
在这里下载布局。这些主要的设计考虑决定了子系统在PCB上的位置:
•尽量减少对敏感走线(RF + USB)的干扰。这导致两个无线子系统(nRF52蓝牙+ nRF91蜂窝)被放置在顶层,相对于底层的噪声开关电源电路。USB差分对走线在内层布线,由接地面屏蔽顶层和底层。注意确保即使是低速数字信号(I2C和SPI)也被路由到远离和/或正交的RF走线。在底层,电源电路被放置在离蓝牙跟踪天线尽可能远的地方。
•连接器输入(太阳能+ USB-C)并置,以简化外壳设计。
•其他人为操作的接口(电池座、调试连接器、跳线和测试点)被放置在同一侧,以便简化启动和调试过程。
•在顶层和底层有大的接地面,在电路板周边有拼接过孔和过孔,以尽量减少电路板发出的电磁干扰。
•平衡最小的外形因素,同时保持信号暴露,以防需要硬件修改。
考虑到所有这些因素,我们创建了以下布局:
其他注意事项:
•选择电路板堆叠是为了确保高速走线的特性阻抗(RF走线为50欧姆,USB走线为90欧姆),并试图使设计尽可能地与参考布局相对应。
•根据nRF9151设计指南的建议,功率走线阻抗尽可能最小化,以减少大电流蜂窝工作时的电压下降。
•因为这块板上没有太多的空间来放置测试点,所以许多过孔至少在一侧没有帐篷,作为伪测试点。
层叠:
请注意,在组装过程中,PCBWay的团队通知我,2引脚的SMD头有一个不正确的足迹。这意味着他们不能焊接我指定的零件,我需要购买正确的零件,并在他们到达后自己焊接。
板尺寸
最终的电路板尺寸为84mm x 50mm,大约是一张信用卡的大小。
板子启动
启动是测试新组装的PCB的过程。新项目的板子开发总是令人兴奋的,因为板子之前没有经过测试,所以“这里有龙”。
第一步是目视检查pcb的装配缺陷,如组件放置方向错误或引脚之间的短路。没有问题,PCBWay在组装这些电路板方面做得很好!
下一步是测试所有电源轨,首先检查接地短路,然后用限流电源为输入供电。
USB电源和太阳能板输入都没有问题。不幸的是,有一个神秘的短在电池的输入,似乎是一个二极管,由于其非线性的电流消耗行为,因为电流限制是斜坡。
问题原来是Q5,这是一个反向极性保护。该部分的足迹是不正确创建的,导致身体二极管被放置在电池输入和地。哦。这是一个容易的任务,以消除和短路这(不需要)的组件与一块电线焊接在正确的垫代替。
在此之后,所有的电源轨道看起来很好,我准备继续编程的SoC。对nRF52和nRF91进行编程的最佳方法是使用基于Zephyr RTOS的Nordic nRF Connect SDK。如果您习惯于使用简单的HAL进行裸机编程,那么这肯定会增加复杂性。但是,在克服了学习曲线之后,有许多预先编写的示例和资源使测试过程更加方便。
每个SoC的一个重要步骤是创建一个Device Tree“board”定义,它定义了Zephyr代码可以访问的硬件以及如何访问它。我花了很长时间才弄明白的一件事是,这块电路板上的nRF52缺少一个外部晶体。BLE的功能依赖于它,所以一开始蓝牙的东西都不起作用。下面的KConfig将nRF52配置为使用内部RC时钟源:
一旦定义了电路板,我就可以加载一个简单的“Blinky”示例来切换GPIO(连接到nRF91上的LED和nRF52上的一个容易访问的引脚)来证明编程是成功的!然后是蓝牙和蜂窝样本来测试每个天线的功能。
nRF52的蓝牙示例相当简单。我展示了一个测试信标示例,并使用我的手机作为蓝牙监听设备。我注意到的一件事是,当我在家里走动时,我的蓝牙数据包的RSSI与其他一些设备相比似乎有点低,这表明天线匹配可能需要做一些工作。然而,这是一个全新的设计,它在近距离工作得很好。
对于nRF91,我发现nRF Connect SDK - Modem shell示例对于测试蜂窝调制解调器非常有用。有了这个外壳,我可以向调制解调器编写低级AT命令,以确保它被正确配置,我还可以控制内部GNSS模块,而不必自己编写任何固件。当我还在学习调制解调器接口库,只想证明子系统按预期工作时很有用。
测试GNSS是在室外进行的,有清晰的天空视野,以便快速定位许多卫星。这次GPS测试是在冷启动的情况下进行的,这意味着目前没有关于当前GPS卫星位置的可用信息,这意味着通常需要更长的时间才能获得定位。在这次测试中,我没有使用Nordic提供的辅助GPS功能。连接时间大约是51秒,对我来说还可以。
请注意,由于设计原因,nRF91没有直接的USB <->串行设备。nRF91必须将UART消息传递给nRF52,然后nRF52将它们转发到USB接口。USB CDC ACM (virtual COM)端口在nRF52中处理。
最后的测试是测试连接外设的I2C接口。不幸的是,BQ25798和SCD30在Zephyr中没有内置驱动程序,这意味着需要更多的工作来与它们交互。我能够使用通用的I2C设备驱动程序根据设备数据表简单地写入和读出所需的字节序列。如果有内置驱动程序,我可以跳过这一步。
两个I2C总线都是功能性的,并且通过读取存储在芯片上的一些静态芯片ID或版本信息来测试每个设备的连接性。事后看来,我认为我可以使用Zephyr中包含的I2C外壳来更快地测试这些设备。
跟进总结
视觉检查:OK电源轨道:除了VBAT,不正确的反极性FET足迹造成短到地,OK后旁路nrf91和nRF51 bringing: OKBLE: OK cellular: OKGNSS: OK充电器:OK传感器总线:OK
更详细的测试和结果记录可在此电子表格中的调出摘要中获得。
功率测试
太阳能装置的一个重要组成部分是有效地利用入射能量。为了测量效率,我用98 mA @ 6.6V的电源为设备供电。这导致130 mA @ 3.6V的电池供电。输出功率除以输入功率得到的效率为72%。我选择这些电流和电压值作为输入,因为它们大致对应于为本设计选择的6V, 1.2W太阳能电池板的规格。输出功率@ 3.6V对应手头充满电的LiFePO4电压:)。
但是,BQ25798可以选择使用更低的开关频率和更大的电感。尽管在初始设计期间遗漏了这一点,但我能够订购替换部件(相同的足迹)并将R15替换为4.7kOhms(即在BQ25798 ‘PROG’引脚设置电压的电阻,配置开关频率)。这给出了:98 mA @ 6.6V = 647 mW输入,138mA @ 3.66V = 505 mW输出。或者效率是78%!
我想我本来希望效率高一点,但是在数据表中没有指定我在(< 500 mA)下操作该部件的确切操作条件下的效率,因此需要测试。
完全集成测试
为了演示一个完全工作的系统,我基于nRF Cloud Multi Service示例创建了一个新的示例应用程序。这个示例应用程序处理设备配置和与nRF Cloud的连接。我只需要修改应用程序的主线程来对PMIC进行编程,使负载切换到传感器,并开始对SCD30进行采样(在前一步中已经完成了大部分代码)。
我使用了“温度”传感器数据类型,因为只有几个固定的类型内置,我不确定如何设置一个新的。一旦设备配备了nRF Utils通过
该设备连接到nRF云,并下载了一组通过蜂窝网络传输的凭证。很酷。这是我注册的设备:
在这个演示中,我修改了HTML,将“Temperature”改为“CO2”,以避免混淆。
我让完整构建的Ribbit设备运行了一天,并收集了一些传感器数据,这些数据报告给了nRF云后端。然后可以在他们的网络应用程序中查询。以下是收集到的二氧化碳数据:
BQ25798的板载ADC允许测量充电电流:
考试那天是阴天。你可以看到太阳能从早上开始缓慢上升,在下午1点左右达到峰值(对我来说是太阳正午),然后慢慢下降,直到下午5点左右,太阳被一栋建筑挡住了。当云层挡住太阳时,面板上的电流就会下降。这是一个快速的测试,所以我确信面板的位置可以优化,我只是在30度左右的角度。
我很遗憾没有记录太阳能电池板电压(可通过BQ25798的ADC),这将允许测量在测试当天收集的总能量。面板电压约为~6V,在10小时内大致平均功率为0.5W。还不错!
总的来说,这是一个有趣的测试,以证明太阳能电池板的设计收费,按预期操作,并与传感器正确接口。
集成测试功耗
北欧PPKII被用来分析系统在完全集成测试期间的功耗:
上面的功率跟踪显示了设备在第一~25秒内启动蜂窝连接,然后是传感器读数。脉冲可归因于CO2传感器,它以2秒的间隔(传感器的默认值)执行连续测量。
上图数据迹线的平均电流为54.9mA,对应于181mW @ 3.3V的平均功率,理论上可以由太阳能电池板提供的功耗,至少在上面的测试中说明了这一点(尽管如果有很多阴天,就不会有太多的误差余地)。好消息是nRF9151子系统的功耗可以得到优化,而且可能非常显著。目前,在没有进行优化的情况下,nRF9151子系统的功耗为~ 36ma,通过测试可以确定传感器的功耗为~19mA,而上述测量值为~55mA。根据北欧在线功率分析器,在这个项目的初始设计阶段咨询,nRF9151应该能够消耗低至平均41 uA蜂窝操作期间,利用省电模式。很大的差异可能是由于在完全集成测试中运行在nRF9151上的许多活动,其软件基于北欧的nRF云多服务样本。该软件样本始终与蜂窝网络通信以进行定位,并且不会将自己置于睡眠模式。
已知的问题
正如在启动部分所提到的,在接收和测试设计后发现的最关键问题是:
•SMD 2引脚头(J4-J9, J14)占用不正确(不能焊接)
•反极性保护MOSFET Q5有不正确的足迹(导致板上短路)
设计中的这两个关键问题都是简单的足迹修复,不需要对电路板进行重大重新设计。
未来设计建议
在设计这个电路板的时候,TI发布了一个应用程序说明,实现了一个电路,帮助BQ25798在太阳能条件差和电池电量低的情况下更可靠地启动。我认为这可以大大提高系统的可靠性,只需要几个额外的晶体管:
本文编译自hackster.io