找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3257|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

基于GD32的倉庫溫度報(bào)警系統(tǒng)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:406390 發(fā)表于 2018-10-12 11:47 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
一、方案名稱:基于GD32F350的智能倉庫溫度報(bào)警器

二、方案概體介紹:
     該項(xiàng)目主要運(yùn)用GD32F350作為主控MCU,通過一線式通訊接口,外接一個(gè)DS18B20進(jìn)行溫度采集。由于個(gè)人只是做項(xiàng)目的demo,沒有購買多個(gè)DS18B20,一般倉庫面積比較大,在實(shí)際監(jiān)控中,建議外掛多個(gè)DS18B20模塊在總線上,由于是單線式傳輸,因此對(duì)時(shí)序要求比較嚴(yán)苛,但它可以掛接許多個(gè)DS18B20模塊,軟硬件實(shí)現(xiàn)起來比較方便。本項(xiàng)目實(shí)現(xiàn)的功能比較簡(jiǎn)單,大概的執(zhí)行流程就是通過DS18B20實(shí)時(shí)采集室內(nèi)溫度,并通過內(nèi)部寄存器將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),編寫一線式通訊協(xié)議,使用GPIOB_12將完成數(shù)據(jù)的收發(fā)。當(dāng)采集的溫度值在10~33℃時(shí)為正常范圍,顯示內(nèi)部LED燈為0.3秒亮滅間隔,外部7盞燈會(huì)依次以0.05秒的時(shí)間間隔亮滅。如果大于33℃或者小于10℃時(shí),則內(nèi)部LED燈以0.05秒的時(shí)間間隔依次兩滅,同時(shí)外部LED的第8盞燈也會(huì)以0.3秒亮滅頻率閃爍,并且外部蜂鳴器器會(huì)持續(xù)響起,用到的是GPIOC_6管腳。當(dāng)然這溫度的范圍根據(jù)用戶要求可以適時(shí)設(shè)定。

三、開發(fā)環(huán)境:
     本項(xiàng)目是在Keil uVision5上編譯、鏈接、下載。在收到開發(fā)板后,首先當(dāng)然是搭建好開發(fā)環(huán)境,在Keil uVision5上下載好針對(duì)GD32F350的動(dòng)態(tài)庫,這樣方便后續(xù)的程序編譯下載。由于此次項(xiàng)目沒有采用OLED顯示模組,而八段數(shù)碼管的點(diǎn)亮驅(qū)動(dòng)要求GPIO的資源較多,因此沒有去點(diǎn)亮數(shù)碼管顯示實(shí)時(shí)溫度值了,用到的是串口實(shí)時(shí)打印。

四、總體結(jié)構(gòu)框圖及主模塊圖:

五、項(xiàng)目心得體會(huì):
    由于該項(xiàng)目是采用DS18B20的外部溫度采集模塊,其通訊方式是單線式,因此要求的時(shí)序比較精準(zhǔn)。下面是在demo包下改成的配置。庫函數(shù)system_gd32f3x0.c原始系統(tǒng)配置的是__SYSTEM_CLOCK_108M_PLL_HXTAL外部晶振,但是拿到的板子外部晶振沒有給我們用戶焊接,因此系統(tǒng)會(huì)切換為__SYSTEM_CLOCK_8M_IRC8M內(nèi)部RC 8Mhz的系統(tǒng)時(shí)鐘頻率。GD32F350是支持內(nèi)部RC 8Mhz晶振倍頻到108Mhz的,需要修改如下宏定義。如果這個(gè)沒有設(shè)置好,那拿到DS18B20datasheet后,看時(shí)序圖就知道這是至關(guān)重要的。之前沒有發(fā)現(xiàn)這點(diǎ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 */

    項(xiàng)目功能很簡(jiǎn)單,內(nèi)容也比較少,但是走了很多彎路,導(dǎo)致浪費(fèi)了很多時(shí)間。由于項(xiàng)目是用之前做51單片機(jī)的系統(tǒng)開發(fā)板,該板是由本人手動(dòng)畫PCB,然后用FeCl3蝕刻,鉆孔,手動(dòng)焊接,此次派上用場(chǎng)了。但這次項(xiàng)目也是只用到LED發(fā)光二極管和蜂鳴器部分電路,由于LED8與蜂鳴器是串聯(lián)在一起的,調(diào)試的時(shí)候一上電,如果在初始化配置GPIOC_6口為輸出時(shí),外部電路老是有1.5V左右的電平輸出,因此蜂鳴器總是響起。后面量測(cè)才知道是硬件電路所致,因?yàn)榇?lián)了LED8,將電壓拉低,三極管被驅(qū)動(dòng)。因此這能在初始化GPIOC_6口時(shí)將配置改成輸入,當(dāng)要讓蜂鳴器啟動(dòng)時(shí)再將改口改成輸出。
本來計(jì)劃采用外部按鍵來中斷蜂鳴器報(bào)警,然后可以通過外部按鍵調(diào)節(jié)設(shè)定溫度范圍告警值,但由于沒有顯示部分,操作起來也沒有那么方便,因此該部分待后續(xù)慢慢完善吧?偟膩碚f此項(xiàng)目的功能是達(dá)到了,DS18B20采集的溫度值也比較精準(zhǔn)。此次項(xiàng)目讓我收獲許多,同時(shí)在微信群里認(rèn)識(shí)了眾多有識(shí)之士,通過網(wǎng)友的發(fā)帖,也認(rèn)識(shí)到自己的差距。時(shí)不待我,只有不斷的進(jìn)行實(shí)際項(xiàng)目的開發(fā),才能讓自己獨(dú)當(dāng)一面。

六、視頻演示:


結(jié)構(gòu)概況框圖.png (20.84 KB, 下載次數(shù): 45)

結(jié)構(gòu)概況框圖

結(jié)構(gòu)概況框圖

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:316883 發(fā)表于 2024-6-22 11:20 | 只看該作者
國產(chǎn)芯片的應(yīng)用,鼓勵(lì)支持一下
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表