找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

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

二、方案概體介紹:
     該項(xiàng)目主要運(yùn)用GD32F350作為主控MCU,通過一線式通訊接口,外接一個DS18B20進(jìn)行溫度采集。由于個人只是做項(xiàng)目的demo,沒有購買多個DS18B20,一般倉庫面積比較大,在實(shí)際監(jiān)控中,建議外掛多個DS18B20模塊在總線上,由于是單線式傳輸,因此對時序要求比較嚴(yán)苛,但它可以掛接許多個DS18B20模塊,軟硬件實(shí)現(xiàn)起來比較方便。本項(xiàng)目實(shí)現(xiàn)的功能比較簡單,大概的執(zhí)行流程就是通過DS18B20實(shí)時采集室內(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)境:
     本項(xiàng)目是在Keil uVision5上編譯、鏈接、下載。在收到開發(fā)板后,首先當(dāng)然是搭建好開發(fā)環(huán)境,在Keil uVision5上下載好針對GD32F350的動態(tài)庫,這樣方便后續(xù)的程序編譯下載。由于此次項(xiàng)目沒有采用OLED顯示模組,而八段數(shù)碼管的點(diǎn)亮驅(qū)動要求GPIO的資源較多,因此沒有去點(diǎn)亮數(shù)碼管顯示實(shí)時溫度值了,用到的是串口實(shí)時打印。

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

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

六、視頻演示:


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

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

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

評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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