注:這是我提交的Ribbit Power Hop挑戰(zhàn)賽的第2部分,其中包含了我的設(shè)計的布局筆記和提示。閱讀之前的項目以了解更多關(guān)于設(shè)計過程的信息。
對初次提交文件的修訂
在收到評審小組的深刻反饋后,我對我最初的Hackster項目中的初始設(shè)計進(jìn)行了一些修改。
以下是更新后的系統(tǒng)圖:
這是最終示意圖的頂層圖:
添加/刪除[+/ -]和修改[~]:
[+] nRF52833配套SoC +藍(lán)牙天線,通過USB作為nRF91的串行接口,并通過藍(lán)牙提供設(shè)備配置功能
[-] FTDI接口——依靠nRF52提供串行接口
[~]電池座的尺寸從14430改為18650,以增加電池容量
[+] JST PH電池連接器允許替代18650電池連接
電池保護(hù)電路,提供過流,過壓和欠壓保護(hù)
[+]電源軌上的測試點和跳線,用于監(jiān)測各分系統(tǒng)的電壓和電流
PCB布局
在這里下載布局。這些主要的設(shè)計考慮決定了子系統(tǒng)在PCB上的位置:
?盡量減少對敏感走線(RF + USB)的干擾。這導(dǎo)致兩個無線子系統(tǒng)(nRF52藍(lán)牙+ nRF91蜂窩)被放置在頂層,相對于底層的噪聲開關(guān)電源電路。USB差分對走線在內(nèi)層布線,由接地面屏蔽頂層和底層。注意確保即使是低速數(shù)字信號(I2C和SPI)也被路由到遠(yuǎn)離和/或正交的RF走線。在底層,電源電路被放置在離藍(lán)牙跟蹤天線盡可能遠(yuǎn)的地方。
?連接器輸入(太陽能+ USB-C)并置,以簡化外殼設(shè)計。
?其他人為操作的接口(電池座、調(diào)試連接器、跳線和測試點)被放置在同一側(cè),以便簡化啟動和調(diào)試過程。
?在頂層和底層有大的接地面,在電路板周邊有拼接過孔和過孔,以盡量減少電路板發(fā)出的電磁干擾。
?平衡最小的外形因素,同時保持信號暴露,以防需要硬件修改。
考慮到所有這些因素,我們創(chuàng)建了以下布局:
其他注意事項:
?選擇電路板堆疊是為了確保高速走線的特性阻抗(RF走線為50歐姆,USB走線為90歐姆),并試圖使設(shè)計盡可能地與參考布局相對應(yīng)。
?根據(jù)nRF9151設(shè)計指南的建議,功率走線阻抗盡可能最小化,以減少大電流蜂窩工作時的電壓下降。
?因為這塊板上沒有太多的空間來放置測試點,所以許多過孔至少在一側(cè)沒有帳篷,作為偽測試點。
層疊:
請注意,在組裝過程中,PCBWay的團(tuán)隊通知我,2引腳的SMD頭有一個不正確的足跡。這意味著他們不能焊接我指定的零件,我需要購買正確的零件,并在他們到達(dá)后自己焊接。
板尺寸
最終的電路板尺寸為84mm x 50mm,大約是一張信用卡的大小。
板子啟動
啟動是測試新組裝的PCB的過程。新項目的板子開發(fā)總是令人興奮的,因為板子之前沒有經(jīng)過測試,所以“這里有龍”。
第一步是目視檢查pcb的裝配缺陷,如組件放置方向錯誤或引腳之間的短路。沒有問題,PCBWay在組裝這些電路板方面做得很好!
下一步是測試所有電源軌,首先檢查接地短路,然后用限流電源為輸入供電。
USB電源和太陽能板輸入都沒有問題。不幸的是,有一個神秘的短在電池的輸入,似乎是一個二極管,由于其非線性的電流消耗行為,因為電流限制是斜坡。
問題原來是Q5,這是一個反向極性保護(hù)。該部分的足跡是不正確創(chuàng)建的,導(dǎo)致身體二極管被放置在電池輸入和地。哦。這是一個容易的任務(wù),以消除和短路這(不需要)的組件與一塊電線焊接在正確的墊代替。
在此之后,所有的電源軌道看起來很好,我準(zhǔn)備繼續(xù)編程的SoC。對nRF52和nRF91進(jìn)行編程的最佳方法是使用基于Zephyr RTOS的Nordic nRF Connect SDK。如果您習(xí)慣于使用簡單的HAL進(jìn)行裸機編程,那么這肯定會增加復(fù)雜性。但是,在克服了學(xué)習(xí)曲線之后,有許多預(yù)先編寫的示例和資源使測試過程更加方便。
每個SoC的一個重要步驟是創(chuàng)建一個Device Tree“board”定義,它定義了Zephyr代碼可以訪問的硬件以及如何訪問它。我花了很長時間才弄明白的一件事是,這塊電路板上的nRF52缺少一個外部晶體。BLE的功能依賴于它,所以一開始藍(lán)牙的東西都不起作用。下面的KConfig將nRF52配置為使用內(nèi)部RC時鐘源:
一旦定義了電路板,我就可以加載一個簡單的“Blinky”示例來切換GPIO(連接到nRF91上的LED和nRF52上的一個容易訪問的引腳)來證明編程是成功的!然后是藍(lán)牙和蜂窩樣本來測試每個天線的功能。
nRF52的藍(lán)牙示例相當(dāng)簡單。我展示了一個測試信標(biāo)示例,并使用我的手機作為藍(lán)牙監(jiān)聽設(shè)備。我注意到的一件事是,當(dāng)我在家里走動時,我的藍(lán)牙數(shù)據(jù)包的RSSI與其他一些設(shè)備相比似乎有點低,這表明天線匹配可能需要做一些工作。然而,這是一個全新的設(shè)計,它在近距離工作得很好。
對于nRF91,我發(fā)現(xiàn)nRF Connect SDK - Modem shell示例對于測試蜂窩調(diào)制解調(diào)器非常有用。有了這個外殼,我可以向調(diào)制解調(diào)器編寫低級AT命令,以確保它被正確配置,我還可以控制內(nèi)部GNSS模塊,而不必自己編寫任何固件。當(dāng)我還在學(xué)習(xí)調(diào)制解調(diào)器接口庫,只想證明子系統(tǒng)按預(yù)期工作時很有用。
測試GNSS是在室外進(jìn)行的,有清晰的天空視野,以便快速定位許多衛(wèi)星。這次GPS測試是在冷啟動的情況下進(jìn)行的,這意味著目前沒有關(guān)于當(dāng)前GPS衛(wèi)星位置的可用信息,這意味著通常需要更長的時間才能獲得定位。在這次測試中,我沒有使用Nordic提供的輔助GPS功能。連接時間大約是51秒,對我來說還可以。
請注意,由于設(shè)計原因,nRF91沒有直接的USB <->串行設(shè)備。nRF91必須將UART消息傳遞給nRF52,然后nRF52將它們轉(zhuǎn)發(fā)到USB接口。USB CDC ACM (virtual COM)端口在nRF52中處理。
最后的測試是測試連接外設(shè)的I2C接口。不幸的是,BQ25798和SCD30在Zephyr中沒有內(nèi)置驅(qū)動程序,這意味著需要更多的工作來與它們交互。我能夠使用通用的I2C設(shè)備驅(qū)動程序根據(jù)設(shè)備數(shù)據(jù)表簡單地寫入和讀出所需的字節(jié)序列。如果有內(nèi)置驅(qū)動程序,我可以跳過這一步。
兩個I2C總線都是功能性的,并且通過讀取存儲在芯片上的一些靜態(tài)芯片ID或版本信息來測試每個設(shè)備的連接性。事后看來,我認(rèn)為我可以使用Zephyr中包含的I2C外殼來更快地測試這些設(shè)備。
跟進(jìn)總結(jié)
視覺檢查:OK電源軌道:除了VBAT,不正確的反極性FET足跡造成短到地,OK后旁路nrf91和nRF51 bringing: OKBLE: OK cellular: OKGNSS: OK充電器:OK傳感器總線:OK
更詳細(xì)的測試和結(jié)果記錄可在此電子表格中的調(diào)出摘要中獲得。
功率測試
太陽能裝置的一個重要組成部分是有效地利用入射能量。為了測量效率,我用98 mA @ 6.6V的電源為設(shè)備供電。這導(dǎo)致130 mA @ 3.6V的電池供電。輸出功率除以輸入功率得到的效率為72%。我選擇這些電流和電壓值作為輸入,因為它們大致對應(yīng)于為本設(shè)計選擇的6V, 1.2W太陽能電池板的規(guī)格。輸出功率@ 3.6V對應(yīng)手頭充滿電的LiFePO4電壓:)。
但是,BQ25798可以選擇使用更低的開關(guān)頻率和更大的電感。盡管在初始設(shè)計期間遺漏了這一點,但我能夠訂購替換部件(相同的足跡)并將R15替換為4.7kOhms(即在BQ25798 ‘PROG’引腳設(shè)置電壓的電阻,配置開關(guān)頻率)。這給出了:98 mA @ 6.6V = 647 mW輸入,138mA @ 3.66V = 505 mW輸出?;蛘咝适?8%!
我想我本來希望效率高一點,但是在數(shù)據(jù)表中沒有指定我在(< 500 mA)下操作該部件的確切操作條件下的效率,因此需要測試。
完全集成測試
為了演示一個完全工作的系統(tǒng),我基于nRF Cloud Multi Service示例創(chuàng)建了一個新的示例應(yīng)用程序。這個示例應(yīng)用程序處理設(shè)備配置和與nRF Cloud的連接。我只需要修改應(yīng)用程序的主線程來對PMIC進(jìn)行編程,使負(fù)載切換到傳感器,并開始對SCD30進(jìn)行采樣(在前一步中已經(jīng)完成了大部分代碼)。
我使用了“溫度”傳感器數(shù)據(jù)類型,因為只有幾個固定的類型內(nèi)置,我不確定如何設(shè)置一個新的。一旦設(shè)備配備了nRF Utils通過
該設(shè)備連接到nRF云,并下載了一組通過蜂窩網(wǎng)絡(luò)傳輸?shù)膽{證。很酷。這是我注冊的設(shè)備:
在這個演示中,我修改了HTML,將“Temperature”改為“CO2”,以避免混淆。
我讓完整構(gòu)建的Ribbit設(shè)備運行了一天,并收集了一些傳感器數(shù)據(jù),這些數(shù)據(jù)報告給了nRF云后端。然后可以在他們的網(wǎng)絡(luò)應(yīng)用程序中查詢。以下是收集到的二氧化碳數(shù)據(jù):
BQ25798的板載ADC允許測量充電電流:
考試那天是陰天。你可以看到太陽能從早上開始緩慢上升,在下午1點左右達(dá)到峰值(對我來說是太陽正午),然后慢慢下降,直到下午5點左右,太陽被一棟建筑擋住了。當(dāng)云層擋住太陽時,面板上的電流就會下降。這是一個快速的測試,所以我確信面板的位置可以優(yōu)化,我只是在30度左右的角度。
我很遺憾沒有記錄太陽能電池板電壓(可通過BQ25798的ADC),這將允許測量在測試當(dāng)天收集的總能量。面板電壓約為~6V,在10小時內(nèi)大致平均功率為0.5W。還不錯!
總的來說,這是一個有趣的測試,以證明太陽能電池板的設(shè)計收費,按預(yù)期操作,并與傳感器正確接口。
集成測試功耗
北歐PPKII被用來分析系統(tǒng)在完全集成測試期間的功耗:
上面的功率跟蹤顯示了設(shè)備在第一~25秒內(nèi)啟動蜂窩連接,然后是傳感器讀數(shù)。脈沖可歸因于CO2傳感器,它以2秒的間隔(傳感器的默認(rèn)值)執(zhí)行連續(xù)測量。
上圖數(shù)據(jù)跡線的平均電流為54.9mA,對應(yīng)于181mW @ 3.3V的平均功率,理論上可以由太陽能電池板提供的功耗,至少在上面的測試中說明了這一點(盡管如果有很多陰天,就不會有太多的誤差余地)。好消息是nRF9151子系統(tǒng)的功耗可以得到優(yōu)化,而且可能非常顯著。目前,在沒有進(jìn)行優(yōu)化的情況下,nRF9151子系統(tǒng)的功耗為~ 36ma,通過測試可以確定傳感器的功耗為~19mA,而上述測量值為~55mA。根據(jù)北歐在線功率分析器,在這個項目的初始設(shè)計階段咨詢,nRF9151應(yīng)該能夠消耗低至平均41 uA蜂窩操作期間,利用省電模式。很大的差異可能是由于在完全集成測試中運行在nRF9151上的許多活動,其軟件基于北歐的nRF云多服務(wù)樣本。該軟件樣本始終與蜂窩網(wǎng)絡(luò)通信以進(jìn)行定位,并且不會將自己置于睡眠模式。
已知的問題
正如在啟動部分所提到的,在接收和測試設(shè)計后發(fā)現(xiàn)的最關(guān)鍵問題是:
?SMD 2引腳頭(J4-J9, J14)占用不正確(不能焊接)
?反極性保護(hù)MOSFET Q5有不正確的足跡(導(dǎo)致板上短路)
設(shè)計中的這兩個關(guān)鍵問題都是簡單的足跡修復(fù),不需要對電路板進(jìn)行重大重新設(shè)計。
未來設(shè)計建議
在設(shè)計這個電路板的時候,TI發(fā)布了一個應(yīng)用程序說明,實現(xiàn)了一個電路,幫助BQ25798在太陽能條件差和電池電量低的情況下更可靠地啟動。我認(rèn)為這可以大大提高系統(tǒng)的可靠性,只需要幾個額外的晶體管:
本文編譯自hackster.io