標題: 基于GD32的倉庫溫度報警系統(tǒng) [打印本頁]
作者: cjjkl 時間: 2018-10-12 11:47
標題: 基于GD32的倉庫溫度報警系統(tǒng)
一、方案名稱:基于GD32F350的智能倉庫溫度報警器
二、方案概體介紹:
該項目主要運用GD32F350作為主控MCU,通過一線式通訊接口,外接一個DS18B20進行溫度采集。由于個人只是做項目的demo,沒有購買多個DS18B20,一般倉庫面積比較大,在實際監(jiān)控中,建議外掛多個DS18B20模塊在總線上,由于是單線式傳輸,因此對時序要求比較嚴苛,但它可以掛接許多個DS18B20模塊,軟硬件實現(xiàn)起來比較方便。本項目實現(xiàn)的功能比較簡單,大概的執(zhí)行流程就是通過DS18B20實時采集室內(nèi)溫度,并通過內(nèi)部寄存器將模擬信號轉(zhuǎn)換成數(shù)字信號,編寫一線式通訊協(xié)議,使用GPIOB_12將完成數(shù)據(jù)的收發(fā)。當(dāng)采集的溫度值在10℃~33℃時為正常范圍,顯示內(nèi)部LED燈為0.3秒亮滅間隔,外部7盞燈會依次以0.05秒的時間間隔亮滅。如果大于33℃或者小于10℃時,則內(nèi)部LED燈以0.05秒的時間間隔依次兩滅,同時外部LED的第8盞燈也會以0.3秒亮滅頻率閃爍,并且外部蜂鳴器器會持續(xù)響起,用到的是GPIOC_6管腳。當(dāng)然這溫度的范圍根據(jù)用戶要求可以適時設(shè)定。
三、開發(fā)環(huán)境:
本項目是在Keil uVision5上編譯、鏈接、下載。在收到開發(fā)板后,首先當(dāng)然是搭建好開發(fā)環(huán)境,在Keil uVision5上下載好針對GD32F350的動態(tài)庫,這樣方便后續(xù)的程序編譯下載。由于此次項目沒有采用OLED顯示模組,而八段數(shù)碼管的點亮驅(qū)動要求GPIO的資源較多,因此沒有去點亮數(shù)碼管顯示實時溫度值了,用到的是串口實時打印。
四、總體結(jié)構(gòu)框圖及主模塊圖:
五、項目心得體會:
由于該項目是采用DS18B20的外部溫度采集模塊,其通訊方式是單線式,因此要求的時序比較精準。下面是在demo包下改成的配置。庫函數(shù)system_gd32f3x0.c原始系統(tǒng)配置的是__SYSTEM_CLOCK_108M_PLL_HXTAL外部晶振,但是拿到的板子外部晶振沒有給我們用戶焊接,因此系統(tǒng)會切換為__SYSTEM_CLOCK_8M_IRC8M內(nèi)部RC 8Mhz的系統(tǒng)時鐘頻率。GD32F350是支持內(nèi)部RC 8Mhz晶振倍頻到108Mhz的,需要修改如下宏定義。如果這個沒有設(shè)置好,那拿到DS18B20的datasheet后,看時序圖就知道這是至關(guān)重要的。之前沒有發(fā)現(xiàn)這點漏洞,老是發(fā)現(xiàn)DS18B20初始化失敗,采集數(shù)據(jù)都是為0℃。
#if defined (GD32F350)
//#define __SYSTEM_CLOCK_8M_HXTAL (__HXTAL)
//#define __SYSTEM_CLOCK_8M_IRC8M (__IRC8M)
//#define __SYSTEM_CLOCK_72M_PLL_HXTAL (uint32_t)(72000000)
//#define __SYSTEM_CLOCK_72M_PLL_IRC8M_DIV2 (uint32_t)(72000000)
//#define __SYSTEM_CLOCK_84M_PLL_HXTAL (uint32_t)(84000000)
//#define __SYSTEM_CLOCK_84M_PLL_IRC8M_DIV2 (uint32_t)(84000000)
//#define __SYSTEM_CLOCK_96M_PLL_HXTAL (uint32_t)(96000000)
//#define __SYSTEM_CLOCK_96M_PLL_IRC8M_DIV2 (uint32_t)(96000000)
//#define __SYSTEM_CLOCK_96M_PLL_IRC48M_DIV2 (uint32_t)(96000000)
//#define __SYSTEM_CLOCK_108M_PLL_HXTAL (uint32_t)(108000000)
#define __SYSTEM_CLOCK_108M_PLL_IRC8M_DIV2 (uint32_t)(108000000)
#endif /* GD32F350 */
項目功能很簡單,內(nèi)容也比較少,但是走了很多彎路,導(dǎo)致浪費了很多時間。由于項目是用之前做51單片機的系統(tǒng)開發(fā)板,該板是由本人手動畫PCB,然后用FeCl3蝕刻,鉆孔,手動焊接,此次派上用場了。但這次項目也是只用到LED發(fā)光二極管和蜂鳴器部分電路,由于LED8與蜂鳴器是串聯(lián)在一起的,調(diào)試的時候一上電,如果在初始化配置GPIOC_6口為輸出時,外部電路老是有1.5V左右的電平輸出,因此蜂鳴器總是響起。后面量測才知道是硬件電路所致,因為串聯(lián)了LED8,將電壓拉低,三極管被驅(qū)動。因此這能在初始化GPIOC_6口時將配置改成輸入,當(dāng)要讓蜂鳴器啟動時再將改口改成輸出。
本來計劃采用外部按鍵來中斷蜂鳴器報警,然后可以通過外部按鍵調(diào)節(jié)設(shè)定溫度范圍告警值,但由于沒有顯示部分,操作起來也沒有那么方便,因此該部分待后續(xù)慢慢完善吧。總的來說此項目的功能是達到了,DS18B20采集的溫度值也比較精準。此次項目讓我收獲許多,同時在微信群里認識了眾多有識之士,通過網(wǎng)友的發(fā)帖,也認識到自己的差距。時不待我,只有不斷的進行實際項目的開發(fā),才能讓自己獨當(dāng)一面。
六、視頻演示:
-
結(jié)構(gòu)概況框圖.png
(20.84 KB, 下載次數(shù): 45)
下載附件
2018-10-12 11:46 上傳
結(jié)構(gòu)概況框圖
作者: jlzxg1980 時間: 2024-6-22 11:20
國產(chǎn)芯片的應(yīng)用,鼓勵支持一下
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |