tft每日頭條

 > 生活

 > 如何自己做溫度計簡單

如何自己做溫度計簡單

生活 更新时间:2024-09-18 04:06:33

老媽需要個食品内部溫度計

市面上竟要200塊一個

巧手的工程師兒子一用力

竟給老媽親手做了一台

這樣的兒子~~~

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)1

哎喲喂,來一打如何

~~~

别光羨慕啦

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)2

先來看看這位DIY高手的作品吧

以下内容摘自21ic論壇,作者為21ic網友xcvista。

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)3

這是我今年年初做的一個項目。之前老媽說想要買一個食品内部溫度計烤牛排用。去了趟宜家,他們家的食品内部溫度計居然要将近兩百塊一個。記得說某闆廠樣闆五片 30 包郵?食品用 304 不鏽鋼铠裝 K 型熱電偶淘寶價 12 一支?看來自己 DIY 一個恐怕比買一個要便宜得多,趕緊動手。

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)4

一:選型

鉑金熱電偶雖然說性能穩定,但太貴了。K 型熱電偶價格便宜,又能滿足我的需求,下單。熱電偶需要一個放大器,不過找了一圈參考設計好像對電路匹配要求都比較高,而且冷端補償和校準我不會做。轉向去找集成式熱電偶 ADC,找到 MAX31855。這個芯片 20 元左右,有點小貴,但是内部集成了高精度儀表放大器、冷端溫度補償和 ADC,用起來很省事。

這個項目顯示輸出用 1602 似乎大材小用,LED 的話我有點擔心電池續航。正好手裡有兩片上海正金 YE004 STN 公模四位半段碼液晶屏樣品,當年 5 元一片買的,可以拿來嘗試一下。這個液晶屏是 1/3 占空比的,略奇葩……本來想用 HT16C21 來驅動液晶面闆夢碎。那個時候我還不熟悉國内廠家的 LCD 單片機,頂着 25 一片的價格選了 STM32L433CBT6。這顆 STM32 有内置段碼液晶控制器、内置液晶對比度控制,也支持 1/3 占空比,可以直接驅動 YE004。

下一步就是供電。液晶屏和低功耗單片機的選用保證了電池消耗不會很高。這裡的的選項是内置小體積锂離子充電電池 vs 七号電池。我沒有單節七号電池電池盒,但是我有一些項目剩餘的小锂離子聚合物電池,體積比 CR2032 都要小。電池管理我用了一顆 TP4057 锂離子充電芯片和 TPS63000 升降壓芯片。這片升降壓芯片可以在電池電壓範圍在 2.4V(保護電路自動切斷)~4.2V(充滿電)的任何時刻輸出穩定的 3.3V。這個設計比锂電池接 LP2980 LDO 可以更充分的給電池放電,電池續航幾乎翻倍。STM32 單片機對于電源其實沒那麼大所謂,但是熱電偶 ADC 對電源電壓要求就很高了。既然用了充電電池需要充電口,STM32L433 單片機又有 USB 支持,充電口索性就把數據線也接上,幾乎免費增加了一個 USB 通信功能。

整個 BOM 下來,這個設備成本都沒有破百。相比于宜家的食品溫度計,我自己做一個省了一半的錢,還多了一個 USB 支持。

二:電路設計

這個電路的設計基本可以說是中規中矩。充電芯片、升降壓芯片、熱電偶 ADC 直接照着數據手冊裡面的參考電路畫。STM32L4 的 USB 有自帶上拉電阻,不用外接。液晶面闆的管腳對應到單片機執行的是就近原則,具體管腳和段碼之間的對應關系,到驅動層去解決。另外,對于支持四線 JTAG 的 ARM 單片機,我一般盡量不用 SWD。SWD 雖然節約管腳,但不支持多芯片共用調試接口。這一點在這塊闆上雖然體現不出來,但在我曾設計過的另幾款闆上是實現了 ARM、FPGA、外設芯片等共用一個調試接口,相比于每一塊芯片一個調試接口來說節省了不少空間。

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)5

電路中對電源開關的處理值得一提。按照 USB 充電的規範,受電設備需要完成 USB 枚舉才能全負荷充電,也是為了偷懶,我在這裡設計了強制開機充電。這個設計靠的是升降壓芯片的 EN 管腳來實現的:如果開關打開,或者如果 USB 連接,EN 管腳的電壓會高于 2V,電路會自動開機。

三:電路闆設計

這個電路闆的設計其實是有缺陷的:電源部分非常擁擠。

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)6

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)7

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)8

四:軟件設計

我也算是延續一貫風格,不用 Keil,不用 STM32CubeMX 或固件庫,用開源的原裝 Eclipse IDE 和 GCC 編譯環境來開發。不用固件庫,一方面來說所有外設都需要自己編碼操作寄存器,開發比較累;另一方面,又因為沒有了庫的負荷,程序的體積和執行時間可以大幅縮短。

MAX31855 有采樣頻率限制,因此我不能高頻率訪問之。同時這個芯片是隻讀 SPI,我隻要給它時鐘他就會自己傳送數據,我就想到了一種辦法:設置一個定時器,定時器中斷頻率決定訪問 31855 的頻率。同時設置一個 DMA,減少讀取數據時 CPU 的幹預程度。

static void spitemp_begin_capture(void)

{

GPIOA->BRR = 1UL << 4;

RCC->APB2RSTR &= ~RCC_APB2RSTR_SPI1RST;

RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;

SPI1->CR1 =

SPI_CR1_CPHA |

SPI_CR1_MSTR |

(5 << SPI_CR1_BR_Pos) |

SPI_CR1_RXONLY;

SPI1->CR2 =

SPI_CR2_SSOE |

(7 << SPI_CR2_DS_Pos) |

SPI_CR2_FRXTH;

SPI1->CR2 |= SPI_CR2_RXDMAEN;

DMA1_Channel2->CMAR = (uint32_t)(&temp_buffer);

DMA1_Channel2->CNDTR = sizeof(temp_buffer);

DMA1_Channel2->CCR |= DMA_CCR_EN;

SPI1->CR1 |= SPI_CR1_SPE;

}

static void spitemp_end_capture(void)

{

DMA1_Channel2->CCR &= ~DMA_CCR_EN;

SPI1->CR1 &= ~SPI_CR1_SPE;

SPI1->CR2 &= ~SPI_CR2_RXDMAEN;

while (SPI1->SR & SPI_SR_FRLVL_Msk)

discard = SPI1->DR;

GPIOA->BSRR = 1UL << 4;

temp_reading =

(temp_buffer[0] << 24) |

(temp_buffer[1] << 16) |

(temp_buffer[2] << 8) |

(temp_buffer[3] << 0);

RCC->APB2RSTR |= RCC_APB2RSTR_SPI1RST;

}

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)9

spitemp_begin_capture 函數在時鐘中斷中執行。這個函數配置好 SPI 硬件和 DMA,啟動一筆 4 字節的 DMA 讀訪問。31855 芯片的報文長 4 字節,因此這一筆 DMA 可以将 31855 的報文完全讀回來。spitemp_end_capture 函數則是在 DMA 中斷中執行,将讀入的數據整理,并清理 SPI 和 DMA 硬件。我這裡偷懶了,直接複位 SPI 控制器了事。理想情況下,應該是不用涉及到 RCC->APB2RSTR 的。

更多内容請移步21ic論壇查看。

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)3

看了上面這位網友的DIY作品,你是不是也躍躍欲試了!

快來參加二姨家的DIY活動吧!還有大獎等你拿!

秀出你的DIY,show me the freestyle

大家可以盡情發揮自己的腦洞,本次DIY分享活動不限主題,隻要你想得到,隻要你做得到,期待你的freestyle~~

活動時間:

即日起至3月31日

在論壇DIY讨論區以【21ic DIY秀】 标題的形式發帖。

具體要求請點擊文末“了解更多”查看。

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)11

重點在這裡呀!

活動獎勵:

一等獎 2名 GP9家用投影儀

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)12

二等獎 5名 小米智能音箱

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)13

三等獎 10名 蘇泊爾榨汁機

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)14

參與獎 5名 公牛插排

如何自己做溫度計簡單(巧手DIY熱電偶溫度計)15

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved