本文導(dǎo)讀
AWorks作為一個物聯(lián)網(wǎng)生態(tài)系統(tǒng),底層需要大量的信號(溫度、電壓、電流……)采集模塊,以實現(xiàn)對外部世界的感知。為此,ZLG致遠(yuǎn)電子自主研發(fā)了一系列硬件模塊,本文介紹了其中的TPS0xR/T系列溫度檢測模塊和EMM400x系列能效檢測模塊。本文為《面向AWorks框架和接口的編程(上)》第三部分軟件篇——第14章——第1~2小節(jié):溫度檢測模塊——TPS0xR/T和能效檢測模塊EMM400x。
本章導(dǎo)讀
AWorks平臺作為IoT物聯(lián)網(wǎng)生態(tài)系統(tǒng),底層需要大量的基礎(chǔ)硬件模塊,以實現(xiàn)對外部世界的感知,如溫度的采集、電壓和電流的采集等等。為此,經(jīng)過長期的調(diào)研、分析和開發(fā),ZLG推出了一系列完全自主研發(fā)的通用模塊,主要有:溫度檢測模塊、能效檢測模塊、信號調(diào)理模塊等。在實際應(yīng)用中,這些信號采集模塊都需要通過某種接口(例如: I2C、SPI、UART等)與控制器相連,當(dāng)應(yīng)用使用的模塊過多時,MCU控制器本身提供的接口可能不夠,基于此,ZLG還推出了一系列接口擴(kuò)展模塊,可以實現(xiàn)對MCU接口的擴(kuò)展。
為了便于使用,使用戶可以快速將模塊應(yīng)用到實際項目中。ZLG推出的一系列模塊都提供了對應(yīng)的AWorks驅(qū)動,使用戶可以跳過從寄存器開始開發(fā)的步驟,直接基于接口使用這些模塊。各類模塊的使用方法類似,因而僅從每一類模塊中選擇一個典型模塊進(jìn)行介紹,它們的型號分別為:TPS02R(溫度檢測模塊)、EMM400(能效檢測模塊)、TPS08U(信號調(diào)理模塊)和
RTM11AT(接口擴(kuò)展模塊)。
14.1 溫度檢測模塊——TPS0xR/T
TPS0xR/T系列溫度檢測模塊是ZLG致遠(yuǎn)電子精心設(shè)計的隔離溫度測量模塊。TPS0xR/T包含了一系列型號,型號主要根據(jù)通道數(shù)目、通信接口(I2C或SPI)以及支持的傳感器類型(PT100熱電阻或熱電偶)進(jìn)行劃分,選型表詳見表14.1。
表14.1 TPS0xR/T系列熱電阻、熱電偶溫度檢測模塊
表14.2 TPS0xT測溫范圍和精度與熱電偶類型的關(guān)系
在AWorks中,TPS0xR/T系列模塊的使用方法都是類似的,本節(jié)將以TPS02R模塊為例,講解該系列溫度檢測模塊在AWorks中的使用方法。
14.1.1 TPS02R簡介
TPS02R模塊是一款隔離熱電阻溫度測量模塊。只需接入 PT100 熱電阻,即可完成溫度的采集,采用標(biāo)準(zhǔn)I2C接口直接輸出以℃為單位的溫度數(shù)據(jù)。模塊內(nèi)置電氣隔離,保障測量結(jié)果不受干擾。采用超小的體積設(shè)計,更易于集成到各種測溫設(shè)備中。
1. 產(chǎn)品特性
TPS02R主要有以下特性:
兩通道 PT100 熱電阻測量,I2C通信接口;
-200℃ ~ 850℃測溫范圍;
0.01℃測溫分辨率,±(0.02%+0.1℃)測溫誤差;
隔離耐壓 2500VRMS;
工作環(huán)境 -40℃ ~ +85℃;
3.3V 供電電壓;
溫度報警輸出;
隔離耐壓 2500VRMS。
2. 引腳分布
TPS02R具有12個外部引腳,其引腳定義見圖14.1,引腳功能描述見表14.3。
圖14.1 TPS02R引腳圖
表14.3 TPS02R引腳功能表
TPS02R的通信接口為標(biāo)準(zhǔn)的I2C接口,主控芯片可以通過I2C總線讀取兩路通道的溫度值。需要特別注意的是,A0(#5)引腳決定了該模塊的7位I2C從機地址。若該引腳接地,則從機地址為0x48;若該引腳連接到VCC或者直接懸空,則從機的地址為0x49。
TPS02R的ALERT引腳為報警信號輸出引腳,ALERT引腳可以與一路溫度值關(guān)聯(lián),當(dāng)該路溫度狀態(tài)異常時(超過上限或低于下限溫度值時)報警,以及時通知主控進(jìn)行處理。
3. 應(yīng)用電路
TPS02R為兩通道的熱電阻測量模塊,其中RA1、RB1和RC1為通道1的接口,RA2、RB2和RC2為通道2的接口。若用戶只用一個通道,比如通道1,則僅需將通道1的相關(guān)引腳(RA1、RB1和RC1)與一路三線制熱電阻 PT100 相連。對于未使用到的通道2,為了避免影響到通道1的采集,應(yīng)將RA2、RB2和RC2這三個引腳短接起來,詳見圖14.2(a)。也可以使用通道2,而不使用通道1,詳見圖14.2(b)。
圖14.2 單路測溫電路
若用戶使用兩路通道,則相應(yīng)的應(yīng)用電路詳見圖14.3。該電路為典型的雙路測溫電路,其中,將RA1、RB1和RC1與一路三線制熱電阻 PT100 相連; 同時將RA2、RB2和RC2與另一路三線制熱電阻 PT100 相連。
注意,在各個典型應(yīng)用電路中,A0引腳均直接接地,因此,模塊的7位I2C從機地址地址為0x48。
圖14.3 雙路測溫電路
14.1.2 添加TPS02R硬件設(shè)備
通過對AWbus-lite的介紹可知,在AWorks中,所有硬件設(shè)備均由AWbus-lite統(tǒng)一管理,在使用某一硬件設(shè)備前,必須在硬件設(shè)備列表(詳見程序清單12.1)中添加該硬件設(shè)備。一個硬件設(shè)備由struct awbl_devhcf類型的結(jié)構(gòu)體常量進(jìn)行描述。回顧該類型的定義,詳見程序清單14.1。
程序清單14.1 struct awbl_devhcf類型定義(awbus_lite.h)
1. 設(shè)備名
設(shè)備名往往與驅(qū)動名一致,TPS02R的驅(qū)動名在對應(yīng)的驅(qū)動頭文件(awbl_tps02r.h)中定義,詳見程序清單14.2。
程序清單14.2 TPS02R驅(qū)動名定義(awbl_tps02r.h)
基于此,設(shè)備名應(yīng)為:AWBL_TPS02R_NAME。
2.設(shè)備單元號
設(shè)備單元號用于區(qū)分系統(tǒng)中幾個相同的硬件設(shè)備,它們的設(shè)備名一樣,復(fù)用同一份驅(qū)動。若當(dāng)前系統(tǒng)僅使用了一個TPS02R模塊,則設(shè)置為0即可。
3. 設(shè)備父總線的類型
TPS02R的通信接口為I2C,是一種I2C從機器件,其對應(yīng)的父總線類型為:AWBL_BUSID_I2C。
4. 設(shè)備父總線的編號
設(shè)備父總線的編號取決于實際硬件中TPS02R的I2C接口與哪條I2C總線相連,每條I2C總線對應(yīng)的編號在aw_prj_params.h文件中定義,例如,在i.MX28x硬件平臺中,默認(rèn)有3條I2C總線:硬件I2C0、I2C1和GPIO模擬I2C,它們對應(yīng)的總線編號分別為0、1、2。詳見程序清單14.3。
程序清單 14.3 I2C總線編號定義
若TPS02R連接在GPIO模擬I2C0上,則該設(shè)備的父總線編號為:GPIO_I2C0_BUSID。
5. 設(shè)備實例
在awbl_tps02r.h文件中,定義了TPS02R的設(shè)備類型為:struct awbl_tps02r_dev?;谠擃愋停梢远x一個設(shè)備實例,詳見程序清單14.4。
程序清單14.4 定義TPS02R設(shè)備實例
其中,__g_tps02r_dev_0的地址即可作為p_dev的值。
6. 設(shè)備信息
在awbl_tps02r.h文件中,定義了TPS02R的設(shè)備信息類型為:struct awbl_tps02r_devinfo,其定義詳見程序清單14.5。
程序清單14.5 struct awbl_tps02r_devinfo定義
其中,start_id表示為TPS02R設(shè)備分配的傳感器通道起始id。為了區(qū)分各個傳感器通道,需要為每個通道分配一個id。對于特定的傳感器,其可以為系統(tǒng)提供的傳感器通道數(shù)是固定不變的,例如,TPS02R可以為系統(tǒng)提供2路溫度傳感器通道:PT100通道1和PT100通道2。為了簡單起見,用戶僅需提供一個通道起始id,其它通道按順序依次進(jìn)行編號,TPS02R的2路溫度通道ID即為start_id和(start_id+1),若start_id為1,則TPS02R兩個通道占用的ID即為1和2。通道ID用于區(qū)分系統(tǒng)中所有的傳感器通道,不同傳感器設(shè)備占用的傳感器通道必須不同。為了便于傳感器通道id的管理,避免重復(fù)分配,統(tǒng)一將設(shè)備提供的一系列傳感器通道的起始id定義在
aw_pri_params.h文件中,例如,TPS02R提供的2路傳感器通道的起始id可以定義為:
基于此,start_id的值可以設(shè)置為
SENSOR_TPS02R_0_START_ID,后續(xù)若需修改起始id,僅需修改對應(yīng)的宏值即可。
alert_pin表示與TPS02R的ALERT引腳相連接的主控引腳號。TPS02R具有溫度報警輸出功能, ALERT引腳可以與某一路溫度關(guān)聯(lián),當(dāng)該路溫度超過上限溫度值或低于下限溫度值時,TPS02R將通過ALERT引腳通知主控,以便使主控可以及時處理報警事件。若使用i.MX28x的PIO2_14與TPS02R的ALERT引腳相連,則alert_pin的值應(yīng)設(shè)置為PIO2_14。特別地,若用戶不需要使用報警功能,則只需將alert_pin設(shè)置為-1即可。
i2c_addr表示TPS02R的7位I2C從機地址。該值跟具體的應(yīng)用電路有關(guān),在典型應(yīng)用電路中, TPS02R的A0引腳與GND想連接,因此,若直接使用典型應(yīng)用電路,則從機地址為0x48,此時,將i2c_addr設(shè)置為0x48即可。
基于以上信息,可以定義完整的設(shè)備信息,范例詳見程序清單14.6。
程序清單14.6 TPS02R設(shè)備信息定義范例
綜合上述設(shè)備名、設(shè)備單元號、父總線類型、父總線編號、設(shè)備實例和設(shè)備信息,可以完成一個TPS02R硬件設(shè)備的描述,其定義詳見程序清單14.7。
程序清單14.7 TPS02R硬件設(shè)備宏的詳細(xì)定義(awbl_hwconf_tps02r_0.h)
其中,定義了硬件設(shè)備宏:
AWBL_HWCONF_TPS02R_0,為便于裁剪,使用了一個使能宏AW_DEV_EXTEND_TPS02R_0對其具體內(nèi)容進(jìn)行了控制,僅當(dāng)使能宏被有效定義時,AWBL_HWCONF_TPS02R_0才表示一個有效的硬件設(shè)備。在硬件設(shè)備列表中,加入該宏即可完成設(shè)備的添加,詳見程序清單14.8。
程序清單14.8 在硬件設(shè)備列表中添加設(shè)備
實際上,在模板工程的硬件設(shè)備列表中,
AWBL_HWCONF_TPS02R_0宏默認(rèn)已添加,同時,定義該宏的文件
(awbl_hwconf_tps02r_0.h)也以配置模板的形式提供在模板工程中,無需用戶從零開始自行開發(fā)。
14.1.3 使用TPS02R模塊
TPS02R可以采集兩路溫度,因而可以為系統(tǒng)提供兩路溫度傳感器通道。在添加TPS02R設(shè)備時,將TPS02R提供的傳感器通道的起始id定義為:SENSOR_TPS02R_0_START_ID,該值默認(rèn)為1,由此可見,TPS02R為系統(tǒng)提供的傳感器通道資源詳見表14.4。
表14.4 TPS02R為系統(tǒng)提供的傳感器通道資源
基于此,應(yīng)用程序即可使用“通用傳感器接口”(詳見表6.6)操作id為1和 2的傳感器通道,從這些通道中獲取溫度值。例如,每隔一秒讀取TPS02R通道1(id為1)或通道2(id為2) 的溫度數(shù)據(jù),并將溫度值通過串口打印出來。范例程序詳見程序清單14.9。
程序清單14.9 使用TPS02R的范例程序
由于TPS02R 精度可達(dá)到0.000122℃,因此,在打印溫度時,顯示了6位小數(shù),為便于打印顯示,打印前將溫度單位轉(zhuǎn)換為了
AW_SENSOR_UNIT_MICRO(即:-6)。
14.2 能效檢測模塊——EMM400x
EMM400x是ZLG致遠(yuǎn)電子精心設(shè)計的系列能效檢測模塊。EMM400x包含了一系列型號,型號主要根據(jù)通道數(shù)目進(jìn)行劃分,選型表詳見表14.5。
表14.5 EMM400x系列能效檢測模塊選型表
在AWorks中,EMM400x系列模塊的使用方法都是類似的,本節(jié)將以EMM400A模塊為例,講解該系列能效檢測模塊在AWorks中的使用方法。
14.2.1 EMM400A簡介
EMM400A是ZLG致遠(yuǎn)電子針對板級電路推出的能效管理模塊,集電量測量單元、DC-DC隔離電源、通訊信號隔離電路于一體,可獨立完成市電電壓、電流、有功功率和電能的測量,使主設(shè)備對用電設(shè)備做出有效管控。精度高達(dá)2%,內(nèi)置2500V電器隔離電路,可有效隔離市電與板內(nèi)弱電。該模塊采用超小體積設(shè)計,在保證PCB緊湊型的同時,為用戶提供最便捷的能效管理方案。該產(chǎn)品無需外圍元器件,使用方便,接法簡單。通訊方式使用的單串口通信,用戶只需要接收數(shù)據(jù),不需要發(fā)送數(shù)據(jù)以操作模塊寄存器,大大節(jié)省了程序使用資源。
1. 產(chǎn)品特性
免校準(zhǔn)單相電能計量;
數(shù)據(jù)傳輸方式:串口,波特率4800bps;
有效輸入電壓:80~260Vrms,精度2%;
有效輸入電流:0.010~1.5Arms,精度2%;
輸入有功功率:0.8~390W,精度 2%,絕對誤差0.06W;
隔離耐壓 2500VDC;
工作溫度:-40℃~+85℃。
圖14.4 EMM400A引腳定義
2. 引腳分布
EMM400為DIP-6封裝,其引腳定義見圖14.4,引腳功能描述見表14.6。
表14.6 EMM400A引腳功能描述
3. 應(yīng)用電路
EMM400A外部接線詳見圖14.5。無需外圍元器件,只需按照推薦電路進(jìn)行接線:1腳接電網(wǎng)的零線,2腳接負(fù)載的低端,4腳接電網(wǎng)的火線;6腳接單片機的數(shù)字地,7腳接MCU的RX接收引腳,8腳接3.3V電源輸入。
圖14.5 EMM400A外圍電路接法
在該推薦電路的使用中,外部電路的搭接應(yīng)注意高壓側(cè)的布線安全,在高壓線的高端和低端最好應(yīng)滿足EN60950上推薦電氣間隙,即至少距離3mm;同時,PCB線路應(yīng)設(shè)計得盡量寬、盡量短,使得線路阻抗盡量小,減小線損。
4. 通訊方式說明
EMM400作為單相多功能計量模塊,其自身提供高頻脈沖用于電能計量。EMM400使用串口進(jìn)行通訊,用戶可以通過串口直接讀取電壓、電流、有功功率的相關(guān)計算參數(shù)如校準(zhǔn)系數(shù)、信號周期等。
串口相關(guān)參數(shù)固定為: 4800bps,8位數(shù)據(jù)位,1位偶校驗,1位停止位。EMM400上電后,每隔50ms自動將包含電壓系數(shù)、電壓周期、電流系數(shù)、電流周期、功率系數(shù)、功率周期、校準(zhǔn)次數(shù)、CF脈沖個數(shù)的數(shù)據(jù)包通過串口發(fā)送出去。一個數(shù)據(jù)包固定為24字節(jié),數(shù)據(jù)包格式詳見表14.7。
表14.7 EMM400數(shù)據(jù)包格式
獲取到各個數(shù)據(jù)后,即可通過公式計算出電流、電壓、視在功率、有功功率、無功功率、電量等數(shù)據(jù)。各計算公式及說明詳見表14.8。
表14.8 EMM400相關(guān)數(shù)據(jù)計算公式
上述通訊協(xié)議和計算公式僅供了解,在實際應(yīng)用中,AWorks已經(jīng)提供了EMM400的驅(qū)動,無需用戶通過串口獲取各個計算參數(shù)再代入公式中運算,用戶可以直接使用通用傳感器接口獲取電流、電壓、視在功率、有功功率、無功功率、電量等數(shù)據(jù)。
14.2.2 添加EMM400硬件設(shè)備
在AWorks中,硬件設(shè)備由AWBus-lite統(tǒng)一管理,向AWBus-lite中添加一個硬件設(shè)備需要確認(rèn)6點信息:設(shè)備名、設(shè)備單元號、父總線類型、父總線編號、設(shè)備實例和設(shè)備信息。
1. 設(shè)備名
設(shè)備名往往與驅(qū)動名一致,EMM400驅(qū)動名在EMM400的驅(qū)動頭文件(awbl_emm400.h)中定義,詳見程序清單14.10。
程序清單14.10 EMM400驅(qū)動名定義(awbl_emm400.h)
基于此,設(shè)備名應(yīng)為:
AWBL_EMM400_NAME。
2. 設(shè)備單元號
設(shè)備單元號用于區(qū)分系統(tǒng)中幾個相同的硬件設(shè)備,它們的設(shè)備名一樣,復(fù)用同一份驅(qū)動。若系統(tǒng)僅使用了一個EMM400,則設(shè)置為0即可。
3. 設(shè)備父總線的類型
EMM400模塊需要通過串口通信,在當(dāng)前系統(tǒng)中,串口僅作為簡單的數(shù)據(jù)傳輸模塊,并沒有視為一個獨立的總線類型,因而EMM400視為由CPU直接控制,掛在PLB總線上。基于此,bus_type的值為AWBL_BUSID_PLB。
4. 設(shè)備父總線的編號
EMM400設(shè)備掛在PLB總線上,系統(tǒng)僅有一條PLB總線, bus_index的值只能為0。
5. 設(shè)備實例
在awbl_emm400.h文件中,定義了EMM400的設(shè)備類型為:struct awbl_emm400_dev?;谠擃愋停梢远x一個設(shè)備實例,詳見程序清單14.11。
程序清單14.11 定義EMM400設(shè)備實例
其中,__g_emm400_dev0的地址即可作為p_dev的值。
6. 設(shè)備信息
設(shè)備信息的具體類型是由設(shè)備驅(qū)動定義的。在awbl_emm400.h文件中,定義了EMM400的設(shè)備信息類型為:awbl_emm400_devinfo_t,其定義詳見程序清單14.12。
程序清單14.12 設(shè)備信息類型(awbl_emm400.h)
其中,start_id表示為EMM400A設(shè)備分配的傳感器通道起始id。EMM400可以為系統(tǒng)提供6路的傳感器通道, 它們按順序分別用于獲取電壓有效值、電流有效值、視在功率、有功功率、無功功率和用電量。起始id標(biāo)識了6個通道的起始id,EMM400占用的id范圍即為:start_id ~ (start_id + 6 - 1)。例如,start_id為3,則占用的id范圍為:3 ~ 8。為了便于傳感器通道id的管理,統(tǒng)一將設(shè)備提供的一系列傳感器通道的起始id在aw_pri_params.h中定義,例如,EMM400提供的6路傳感器通道的起始id可以定義為:
基于此,start_id的值可以設(shè)置為
SENSOR_EMM400_0_START_ID,后續(xù)若需修改起始id,僅需修改對應(yīng)的宏值即可。
com_id為與EMM400模塊通信的的串口號,可用串口號與具體使用的硬件平臺相關(guān),在aw_prj_params.h文件中定義。例如,在i.MX28x硬件平臺中,支持6個串口,包括一個調(diào)試串口和5個應(yīng)用串口,它們的串口號定義詳見程序清單14.13。
程序清單14.13 串口號定義
若使用AUART0與EMM400通信,則com_id的值為IMX28_AUART0_COMID。
至此,可以定義完整的設(shè)備信息,范例詳見程序清單14.14。
程序清單14.14 EMM400設(shè)備信息定義范例
綜合上述設(shè)備名、設(shè)備單元號、父總線類型、父總線編號、設(shè)備實例和設(shè)備信息,可以可以完成一個EMM400硬件設(shè)備的描述,其定義詳見程序清單14.15。
程序清單14.15 EMM400硬件設(shè)備宏的詳細(xì)定義(awbl_hwconf_emm400_0.h)
其中,定義了硬件設(shè)備宏:
AWBL_HWCONF_EMM400_0,為便于裁剪,使用了一個使能宏AW_DEV_EXTEND_EMM400_0對其具體內(nèi)容進(jìn)行了控制,僅當(dāng)使能宏被有效定義時,AWBL_HWCONF_EMM400_0才表示一個有效的硬件設(shè)備。在硬件設(shè)備列表中,加入該宏即可完成設(shè)備的添加,詳見程序清單14.16。
程序清單14.16 在硬件設(shè)備列表中添加設(shè)備
實際上,在模板工程的硬件設(shè)備列表中,
AWBL_HWCONF_EMM400_0宏默認(rèn)已添加,同時,定義該宏的文件
(awbl_hwconf_emm400_0.h)也以配置模板的形式提供在模板工程中,無需用戶從零開始自行開發(fā)。
14.2.3 使用EMM400模塊
EMM400可以采集6路傳感器信號:電壓有效值、電流有效值、視在功率、有功功率、無功功率和用電量。在添加EMM400設(shè)備時,將EMM400提供的傳感器通道的起始id定義為:SENSOR_EMM400_0_START_ID,該值默認(rèn)為3,由此可見,EMM400為系統(tǒng)提供的傳感器通道資源詳見表14.9。
表14.9 EMM400為系統(tǒng)提供的傳感器通道資源
基于此,應(yīng)用程序即可使用“通用傳感器接口”(詳見表6.6)操作id為3 ~ 8的傳感器通道,從這些通道中獲取相應(yīng)的傳感器值。例如,每隔一秒打印一次所有通道的值,范例程序詳見程序清單14.17。
程序清單14.17 使用EMM400的范例程序
-
溫度檢測
+關(guān)注
關(guān)注
5文章
109瀏覽量
23463 -
接口編程
+關(guān)注
關(guān)注
0文章
9瀏覽量
8733 -
AWorks
+關(guān)注
關(guān)注
1文章
16瀏覽量
5703
原文標(biāo)題:AWorks軟件篇 — 溫度和能效檢測模塊
文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論