電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用此雙風(fēng)扇控制器靜音運(yùn)行

使用此雙風(fēng)扇控制器靜音運(yùn)行

2023-02-02 | zip | 0.03 MB | 次下載 | 免費(fèi)

資料介紹

描述

簡(jiǎn)介

我更喜歡安靜和平靜的環(huán)境。這就是為什么我更喜歡從 BBC Radio 4 或 Classic FM 收聽(tīng)更柔和的廣播。這就是為什么我喜歡 Elecraft 和 Ten-Tec 的 PIN 二極管裝置上的完全磨合 CW。這就是為什么我為 macOS 運(yùn)行 Mac Mini 和為 Windows 運(yùn)行無(wú)風(fēng)扇工業(yè) PC 的原因。

通常情況下,設(shè)備冷卻和設(shè)備噪音齊頭并進(jìn)。需要的冷卻越多,需要的氣流就越多,產(chǎn)生的風(fēng)扇噪音就越大。但是,風(fēng)扇選擇和安裝選項(xiàng)將有助于減輕這種噪音。智能風(fēng)扇冷卻系統(tǒng)也將控制風(fēng)扇速度。

該項(xiàng)目是一個(gè)單元的分支,該單元的目的是在炎熱氣候下冷卻通信套件。需要監(jiān)控和冷卻設(shè)備,同時(shí)將噪音水平保持在低水平。它適用于冷卻假負(fù)載、電源、計(jì)算機(jī)、照明……

計(jì)劃

尋找解決方案后發(fā)現(xiàn),廉價(jià)的中國(guó)單板控制器僅提供了一種簡(jiǎn)單的風(fēng)扇曲線解決方案。這些控制器只是根據(jù)風(fēng)扇速度跟蹤溫差??梢孕薷牡?a target='_blank' class='arckwlink_none'>參數(shù)不多。在天平的另一端,有復(fù)雜的冷卻控制器系統(tǒng)可用于游戲電腦,使用 PC 軟件。這些是完全可配置的系統(tǒng),能夠平衡所需的冷卻性能與產(chǎn)生的聲級(jí)。

很難找到中間解決方案。介于簡(jiǎn)單的獨(dú)立板和 PC 使用的復(fù)雜系統(tǒng)之間的一種。因此,設(shè)計(jì)了一個(gè)嵌入式系統(tǒng)來(lái)滿足我的要求。從簡(jiǎn)單開(kāi)始,然后根據(jù)特定需求構(gòu)建設(shè)計(jì)。該項(xiàng)目很快就包含了一些易于定制的功能,這些功能可以根據(jù)個(gè)人溫度和風(fēng)扇速度要求進(jìn)行設(shè)置。

特點(diǎn)

兩個(gè)風(fēng)扇控制器。

從 0% 到 100% PWM 的全風(fēng)扇速度控制。

溫度感應(yīng)范圍為 0 至 +120degC(32degF 至 248degF)。

風(fēng)扇轉(zhuǎn)速計(jì)讀數(shù)為每分鐘 9999 轉(zhuǎn)。

顯示風(fēng)扇和溫度信息的 OLED 顯示屏。

風(fēng)扇 PWM 命令條形圖(10% 間隔)。

旋轉(zhuǎn)編碼器操縱配置菜單。

定義溫度范圍,從最小值到最大值。

定義風(fēng)扇速度范圍,最小到最大。

三個(gè)輔助 Fan-B 工作選項(xiàng):

a) 主風(fēng)扇 A 與輔助風(fēng)扇 B 串聯(lián)運(yùn)行(對(duì)稱)。

b) 主風(fēng)扇 A,次級(jí)風(fēng)扇 B 在對(duì)面運(yùn)行(不對(duì)稱)。

c) 主風(fēng)扇 A 和輔助風(fēng)扇 B 配置為熱備用。

聲音風(fēng)扇 A 故障或停止警報(bào)。

夜光風(fēng)扇-A 停機(jī)報(bào)警。

發(fā)光的 DS18B20S 傳感器總線指示燈 LED。

發(fā)光的 +12V 和 +5V 電源 LED。

配置設(shè)置保存在 EEPROM 中,用于斷電恢復(fù)。

用于設(shè)置溫度單位(攝氏度或華氏度)的配置標(biāo)頭

用于設(shè)置對(duì)稱、非對(duì)稱或熱備用模式的配置標(biāo)頭。

隔離的外部 P 輸入,用于啟用/禁用輔助設(shè)備的操作。

主風(fēng)扇 A 故障檢測(cè),用于在熱備模式下切換到風(fēng)扇 B。

用于調(diào)試和固件上傳的串口。

用于直接刻錄到內(nèi)存的電路串行編程端口。

KF2510 3+1P,風(fēng)扇連接器插座。

易于訪問(wèn)的板載復(fù)位開(kāi)關(guān)。

兩個(gè)版本

設(shè)計(jì)了兩個(gè)版本。兩者功能相同。但是,每個(gè)版本的創(chuàng)建都是為了滿足個(gè)人需求和構(gòu)建技能。

屏蔽版本:這是最容易構(gòu)建的,因?yàn)?Arduino 板已經(jīng)處理了一半的功能。防護(hù)罩就像任何標(biāo)準(zhǔn)防護(hù)罩一樣連接到 Uno R3 板上。它以驚人的緊湊封裝提供了運(yùn)行所需的其余電路。構(gòu)建屏蔽版本更簡(jiǎn)單,但您仍然應(yīng)該能夠處理它使用的 15 個(gè) 0805 SMD。代碼上傳更易于管理,并且像往常一樣通過(guò) USB 串行端口使用 Arduino IDE 執(zhí)行。

嵌入式版本:這是圍繞 Atmega 328P-AU 微控制器構(gòu)建的,具有獨(dú)立獨(dú)立單元所需的所有電路。構(gòu)建復(fù)雜性更大。您應(yīng)該具備并精通SMD項(xiàng)目建設(shè)。請(qǐng)注意,您還需要熟悉 ICSP 端口。將代碼上傳到微控制器內(nèi)存,至少在開(kāi)始時(shí),如果你愿意,直到你刻錄引導(dǎo)加載程序。

手術(shù)

此代碼是根據(jù)需要即時(shí)構(gòu)建的。它從一個(gè)簡(jiǎn)單的溫度跟蹤風(fēng)扇速度實(shí)用程序迅速發(fā)展為這個(gè)可定制的版本。毫無(wú)疑問(wèn),還有其他編程方法可以實(shí)現(xiàn)所需的功能。就是這樣。無(wú)論如何,我的代碼可以很容易地糾正、修改和改進(jìn),以使每個(gè)人都滿意。

啟動(dòng)順序

在通電或重置時(shí),該裝置會(huì)等待幾秒鐘,讓仍在旋轉(zhuǎn)的風(fēng)扇停下來(lái)。所需的延遲可能取決于風(fēng)扇旋轉(zhuǎn)的難易程度及其動(dòng)量??梢酝ㄟ^(guò)修改變量 spinDownDelay 在代碼中定義延遲。

然后代碼運(yùn)行一個(gè)啟動(dòng)序列,該序列將首先測(cè)試風(fēng)扇以找到其最小速度值。這個(gè)會(huì)用在運(yùn)行過(guò)程中的停機(jī)檢測(cè)fanJamCheck()函數(shù)中。此序列向風(fēng)扇發(fā)送遞增的 PWM 值,比例高達(dá) 20:100 (20%)。到那時(shí)大多數(shù)粉絲都會(huì)開(kāi)始。在最終啟動(dòng)主代碼和其中一種工作模式之前,它的進(jìn)度會(huì)顯示在 OLED 上。下面列出并解釋了這些可選擇的工作模式中的每一個(gè)。

兩種基本的風(fēng)扇模式是可能的:

首先,被動(dòng)上下掃描模式僅遵循由 Fan Minimum 和 Fan Maximum 定義的定義曲線斜率??梢耘渲么藪呙璧乃俾?,但不使用溫度傳感器數(shù)據(jù)來(lái)控制風(fēng)扇速度。

其次,主動(dòng)觸發(fā)模式可激活風(fēng)扇并根據(jù)溫度最小值、溫度最大值、風(fēng)扇最小值和風(fēng)扇最大值定義的曲線斜率控制其速度。有兩種類型的主動(dòng)觸發(fā)模式。第一個(gè)子模式僅采用傳感器溫度輸入來(lái)控制冷卻風(fēng)扇。第二種子模式采用傳感器溫度輸入,但也需要輸入電壓 (P-IN) 來(lái)啟用冷卻風(fēng)扇。這可以與輔助設(shè)備一起使用,僅在輔助設(shè)備認(rèn)為有必要時(shí)才觸發(fā)風(fēng)扇控制器。

滾動(dòng)瀏覽下面的圖形,例如配置的斜率:

sweeping_sEXToD32iM.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 5 ?三次掃描。每個(gè)被動(dòng)地增加/減少風(fēng)扇速度。不使用溫度讀數(shù)。

總之:

一種被動(dòng)清掃模式:

此處,風(fēng)扇速度將在之前由 Fan Minimum 和 Fan Maximum 定義的風(fēng)扇速度斜率上上下掃動(dòng)。不使用溫度讀數(shù),但可以更改掃描速率。

兩種主動(dòng)觸發(fā)模式:

此處風(fēng)扇將在達(dá)到最低溫度時(shí)觸發(fā),并且僅當(dāng)啟用 P-IN 輸入時(shí)。

在最低溫度下觸發(fā):

a) 從零風(fēng)扇速度開(kāi)始(風(fēng)扇關(guān)閉直到被觸發(fā))。

b) 從風(fēng)扇最小速度開(kāi)始(風(fēng)扇以風(fēng)扇最小速度旋轉(zhuǎn)直到被觸發(fā))。

在最低溫度時(shí)觸發(fā),但僅當(dāng) P-IN 輸入也啟用時(shí)才觸發(fā)。

a) 從零風(fēng)扇速度開(kāi)始。(風(fēng)扇關(guān)閉直到觸發(fā))。

b) 從風(fēng)扇最小速度開(kāi)始(風(fēng)扇以風(fēng)扇最小速度旋轉(zhuǎn)直到被觸發(fā))。

通過(guò)滾動(dòng)顯示的示例溫度/風(fēng)扇速度圖表,可以最輕松地看到這些風(fēng)扇模式以及它們與速度和溫度的關(guān)系。

配置

定義裝置的工作方式以及所需的冷卻斜率是在配置模式下完成的。本質(zhì)上是通過(guò)在圖表上定義點(diǎn)來(lái)獲得我們想要的斜率。我們可以通過(guò)按下旋轉(zhuǎn)編碼器按鈕進(jìn)入此模式。然后滾動(dòng)瀏覽配置菜單,連續(xù)按下同一個(gè)按鈕。在每個(gè)參數(shù)處轉(zhuǎn)動(dòng)旋轉(zhuǎn)編碼器以修改其值,從而定義新的操作模式或溫度斜率。

配置菜單:

FAN MIN
設(shè)置最小風(fēng)扇速度值(5% 步幅)。

FAN MAX
設(shè)置最大風(fēng)扇速度值(5% 步幅)。

TEMP MIN
設(shè)置最低溫度值,這將觸發(fā)風(fēng)扇至 Fan Min。

TEMP MAX
設(shè)置最高溫度值,此時(shí)風(fēng)扇將以 Fan Max 旋轉(zhuǎn)。

MODE
掃描或觸發(fā)

要設(shè)置一個(gè)被動(dòng)的上下掃風(fēng)扇速度。或者主動(dòng)跟蹤來(lái)自 DS18B20 傳感器的溫度數(shù)據(jù)的觸發(fā)風(fēng)扇速度。

SWEEP RATE
(如果之前選擇了 Sweeping 則可用)1/Slow 到 10/Fast。選擇風(fēng)扇速度從風(fēng)扇最小值掃到最大值的速度。

TRIGGER
(如果之前選擇了 Triggered 則可用)

1 溫度/零。溫度從零開(kāi)始。將在 Temp Min 觸發(fā)并開(kāi)始以 Fan Min 速度旋轉(zhuǎn)。未觸發(fā)時(shí),風(fēng)扇速度將等待為零。

2 溫度/F最小值。風(fēng)扇最低溫度觸發(fā)。將在 Temp Min 觸發(fā)并開(kāi)始以 Fan Min 速度旋轉(zhuǎn)。未觸發(fā)時(shí),風(fēng)扇速度將在風(fēng)扇敏處等待。

3 針/零。溫度從零觸發(fā),但需要外部 P 輸入啟用。將在 Temp Min 觸發(fā)并開(kāi)始以 Fan Min 速度旋轉(zhuǎn),但僅當(dāng)由 P 輸入啟用時(shí)。未觸發(fā)時(shí),風(fēng)扇速度將等待為零。

4 針/F 最小值。最低風(fēng)扇觸發(fā)溫度,但需要外部 P 輸入使能。將在 Temp Min 觸發(fā)并開(kāi)始以 Fan Min 速度旋轉(zhuǎn),但僅當(dāng)由 P 輸入啟用時(shí)。未觸發(fā)時(shí),風(fēng)扇速度將在風(fēng)扇敏處等待。

TEMP OFFSET
-9 至 +9 度。要校正 DS18B20 傳感器的任何溫度誤差,可以添加此補(bǔ)償值。默認(rèn)為 0 度,表示不進(jìn)行校正。

SAVE & EXIT
Yes/No.Yes,將退出配置模式并伴有相應(yīng)的莫爾斯“R”音和簡(jiǎn)短的“配置已保存”消息。您的設(shè)置將保存到 EEPROM。否,將再次循環(huán)配置選項(xiàng)。

由于 FAN MIN 和 FAN MAX 的值是相互依賴的。不可能將 FAN MAX 值設(shè)置為低于 FAN MIN 值或?qū)?FAN MIN 值設(shè)置為高于 FAN MAX 值。同樣,TEMP MIN 和 TEMP MAX 的值是相互依賴的。無(wú)法將 TMP MAX 值設(shè)置為低于 TEMP MIN 值或?qū)?TEMP MIN 值設(shè)置為高于 TEMP MAX 值。

該代碼限制了您可以設(shè)置的允許范圍。例如,如果您不能選擇較低的 FAN MAX 值,可能是因?yàn)槟噲D將其設(shè)置為低于 FAN MIN 值。

初始設(shè)置

安裝單元后,以下選項(xiàng)應(yīng)該很少需要更改。它們通過(guò)使用兩個(gè)插頭引腳跳線進(jìn)行配置,其設(shè)置在打開(kāi)或重置時(shí)讀取。

1. 使用跳線 J1/U2 的輔助 FAN-B 設(shè)置:

ASYMetric:輔助風(fēng)扇 B 將以主風(fēng)扇 A 的相反速度旋轉(zhuǎn)。因此,當(dāng)風(fēng)扇 A 處于最大速度時(shí),風(fēng)扇 B 將處于最小速度。這些風(fēng)扇速度將動(dòng)態(tài)地遵循 Fan Min 和 Fan Max 定義的溫度斜率。

SYMMetric:輔助風(fēng)扇 B 將與主風(fēng)扇 A 同步旋轉(zhuǎn)。因此,當(dāng)風(fēng)扇 A 處于最大速度時(shí),風(fēng)扇 B 也將處于最大速度。這些風(fēng)扇速度將動(dòng)態(tài)地遵循 Fan Min 和 Fan Max 定義的溫度斜率。

STandBY:輔助風(fēng)扇 B 作為主風(fēng)扇 A 的備用風(fēng)扇,處于熱備用狀態(tài)。因此,風(fēng)扇 B 通常會(huì)保持關(guān)閉狀態(tài),直到風(fēng)扇 A 卡住或發(fā)生故障。在 Fan-A 故障時(shí),F(xiàn)an-B 將接管。

2. 使用跳線 J2/U1 設(shè)置溫度單位:

degF:華氏溫度。在美國(guó)、利比里亞和開(kāi)曼群島使用。

degC:攝氏溫度。與世界其他地方使用的一樣。

積木

單片機(jī)

我們不需要 ESP8266ESP32 中的處理能力或附加功能。Arduino 平臺(tái)及其 ATmega 328P 芯片具有足夠的速度、內(nèi)存空間和 GPIO 引腳。

當(dāng)然,和原來(lái)的Arduino UNO R3一樣,嵌入式電路中使用了一個(gè)ATmega328P微控制器。該微控制器提供32K的閃存、2K的SRAM和1K的EEPROM存儲(chǔ)。它的 16Mhz 時(shí)鐘速度足以運(yùn)行我們的中等任務(wù),并且它有足夠的輸入/輸出引腳來(lái)滿足我們的需要。

選擇了AU芯片封裝。與大型 PU DIP 版本相比,它更小、更便宜且更容易采購(gòu)。它是小型嵌入式板應(yīng)用的理想選擇。然而,在構(gòu)建或測(cè)試時(shí)也不會(huì)太小而無(wú)法處理。在原型制作過(guò)程中,使用 QFP/TQFP32 芯片適配器將此 Atmega 328P 安裝在面包板上。無(wú)腿 MU 版本雖然更小,但更難處理。

溫度感應(yīng)器:

Dallas Semiconductor DS18B20 可能不是最精確的溫度測(cè)量?jī)x器,但足以滿足我們的使用需求。它測(cè)量的溫度范圍為 -55degC 至 +125degC(-67degF 至 +257degF),-10°C 至 +85°C 的精度為 +/-0.5degC。

出于我們的目的,代碼將溫度范圍限制在 0degC 到 120degC(32degF 到 248degF)。超出此范圍,它將在溫度值旁邊顯示一個(gè)超出范圍 (OOR)“感嘆號(hào)”圖標(biāo)。該值將在 0degC 和 120degC(32degF 和 248degF)處觸底。

明智地使用熱風(fēng)槍可用于測(cè)試較高的溫度,一些電子元件冷凍噴霧可用于測(cè)試較低的溫度。雖然我用的是迪卡儂運(yùn)動(dòng)員肌肉噴霧,這是我手頭上的東西。它同樣有效,而且聞起來(lái)更香。

ds18b20_R43JCA5Bkd.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 2 ? DS18B20 引出線。

DS18B20 的三引腳 TO-92 版本可能是最容易使用的封裝類型。帶有 LED 的上拉電阻通過(guò)傳感器的數(shù)據(jù)線連接到 Vdd 可改善數(shù)據(jù)傳輸并提供傳感器與微控制器通信的一些視覺(jué)反饋。在這里,一個(gè) 2K 的電阻器可以很好地使 LED 閃爍。一些套件模塊在這里使用 4.7K 值。這取決于特定 LED 上的電壓降和所需的亮度。

有機(jī)發(fā)光顯示:

使用小型 0.91" OLED。它具有 128 x 64 像素的可用分辨率,當(dāng)與 Bill Greiman 的 SSD1306 庫(kù)和“fixed_bold10x15”字體一起使用時(shí),提供兩行,每行約 12 個(gè)文本字符。這些 OLED 顯示器有一個(gè)I2C 總線,完美適配我們的微控制器。所需的+5V 供電電壓與板的其余部分相同,很方便。一些 OLED 板指定+3.3V 供電電壓要求,這可以通過(guò)查看是否有來(lái)檢查或者還不是+3.3V穩(wěn)壓器。我的板上有一個(gè)微型662K低壓差+3.3V穩(wěn)壓器,確認(rèn)它接受+5V,然后它自己轉(zhuǎn)換為+3.3V。至于I2C邏輯電平輸入,他們可以承受 +5V,我不需要電平轉(zhuǎn)換器

SSD1306Ascii 是 Bill Greiman 編寫(xiě)的用于小型單色 OLED 顯示器的無(wú)緩沖字符庫(kù)。我經(jīng)常在使用帶有 fixed_bold10x15 字體的 OLED 的項(xiàng)目中使用它。它為我在這些小顯示器上疲憊的眼睛提供了可讀的字符大小。對(duì)于這個(gè)特定項(xiàng)目,F(xiàn)AN_fixed_bold10x15 文件是字體的修改版本,我在其中添加了一些用于風(fēng)扇控制器的額外圖標(biāo)。這個(gè)字體文件可以包含在同一個(gè)草圖目錄中,并添加到 Arduino IDE 中以便于編輯。

ide_1_KUUIUX76vi.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 2 ? IDE 中的 FAN_fixed_bold10x15

FAN_fixed_bold10x15 是 fixed_bold10x15.h 字體,已通過(guò)添加風(fēng)扇控制器的 OLED 顯示屏使用的額外字符進(jìn)行了修改。對(duì)這種字體進(jìn)行逆向工程以創(chuàng)建自定義字符和圖標(biāo)將在后面詳細(xì)介紹。

光耦

PC817C 是一種通用光耦合器,在許多電路中大量使用,以提供與輔助設(shè)備的電氣隔離。此組件存在幾個(gè)版本。這里使用了“C”后綴版本。不同的版本有不同的收獲。光耦合器的增益表示為電流傳輸比 (CTR),即輸出的集電極電流 (IC) 除以輸入的正向電流 (IF),然后乘以 100%。您可以通過(guò)計(jì)算和更改電阻器 R3 的值以適應(yīng)不同的增益來(lái)使用其他版本和測(cè)試功能。

在此版本中,計(jì)算出的 1K 電阻值運(yùn)行良好。一些測(cè)量測(cè)試證實(shí)了理論:5V、9V、12V 和 13.8V 的 P-IN 電壓分別產(chǎn)生 3.8mA、7.8mA、10.8mA 和 12.6mA 的電流。這些被認(rèn)為是最有可能使用的輔助輸入電壓。由于該光耦合器的內(nèi)部 LED 電壓下降約 1.2V,因此它們各自產(chǎn)生相應(yīng)的功率值,約為 4.5mW、9.4mW、13mW 和 15mW。查看數(shù)據(jù)表,我們?cè)试S的最大輸入值為 If=50mA、Vr=6V 和 Pin=70mW。放置在輸入 LED 兩端的 1N4148 用于防止 Vr 高于 6V。允許的最大輸出值為 Vce=35V、Vec=6V、Ic=50mA 和 Pc=150mW。MCU 的內(nèi)部上拉似乎是 50k 左右,因?yàn)檫@里測(cè)量了 0.1mA。對(duì)于此光耦合器,Ptot=200mW 最大值(輸入和輸出功率的總和不得超過(guò) 200mW)。

可以按照類似的數(shù)據(jù)表建議使用其他光隔離器?;蛘撸梢酝ㄟ^(guò)取消光耦合器隔離并僅將使能 P-IN 拉低來(lái)簡(jiǎn)化電路。MCU 的端口 B0 在代碼中激活了其內(nèi)部上拉電阻。

串行端口:

UNO R3 板上已經(jīng)安裝了串行端口。這用于以經(jīng)典的 Arduino 方式上傳和調(diào)試。

我還在獨(dú)立版本中包含了一個(gè)串行端口。這 6 個(gè)接頭引腳與大多數(shù) FTDI FT232RL USB 轉(zhuǎn)串口適配器模塊完美對(duì)齊。如果有可用的引導(dǎo)加載程序,它還允許使用 Arduino IDE 進(jìn)行調(diào)試,甚至可以上傳草圖。不要忘記將 FTDI USB 串行板切換為使用 +5V(而不是 +3.3V)。對(duì)于 USB 到串行編程和調(diào)試,風(fēng)扇控制器當(dāng)然應(yīng)該打開(kāi)。引導(dǎo)加載程序包含在 ATmega 數(shù)據(jù)表的第 26.6 節(jié)中。

serialsmall_HwRkTz5CAK.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

安裝了 FTDI FT232RL USB 轉(zhuǎn)串口適配器。

ICSP 端口:

UNO R3 板上已經(jīng)安裝了一個(gè) ICSP 端口。這是直接將代碼直接燒錄到其微控制器內(nèi)存所必需的,我們很少使用。這可能是制造商將 Arduino 引導(dǎo)加載程序燒錄到 UNO 的方式。

我還在嵌入式版本中包含了一個(gè) ICSP 端口。這是最初將引導(dǎo)加載程序刻錄到獨(dú)立版本的唯一方法。這些 3x2 接頭引腳與大多數(shù)常見(jiàn)的 ICSP 編程器(如 USBasp)完美對(duì)齊。它允許直接加載 ATmega 328P。對(duì)于 ICSP USBasp 編程,風(fēng)扇控制器應(yīng)該斷電,因?yàn)橄?USBasp 這樣的大多數(shù)編程器會(huì)為其目標(biāo)本身供電。

usbaspsmall_H2YtUe3Za8.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

安裝了 ICSP USBasp 編程器。

請(qǐng)注意,一些較舊的 ICSP 編程器需要來(lái)自其目標(biāo)的電源才能運(yùn)行,在這種情況下,風(fēng)扇控制器單元應(yīng)該通電。有些可能只需要查看 ICSP 引腳 2 上的電壓即可運(yùn)行。你的旅費(fèi)可能會(huì)改變。始終最好檢查您的特定程序員。

不要忘記將此板切換為使用 +5V(而不是 +3.3V)。ATmega 數(shù)據(jù)表的第 27.8 節(jié)介紹了芯片的在線串行編程。

轉(zhuǎn)速計(jì)噪聲濾波器

來(lái)自風(fēng)扇的 RPM 引腳 3 的轉(zhuǎn)速計(jì)線路上的任何噪音都可能是一個(gè)問(wèn)題并給出錯(cuò)誤的讀數(shù)。這種噪聲可能是像脈沖一樣的額外開(kāi)關(guān)彈跳。盡管通常使用采用霍爾傳感器或光耦合器的轉(zhuǎn)速計(jì)電路而不是機(jī)械開(kāi)關(guān)。

以低 RPM 運(yùn)行且存在這些噪聲脈沖的風(fēng)扇在評(píng)估實(shí)際 RPM 值時(shí)會(huì)產(chǎn)生更大的差異。

例如,在低速時(shí),風(fēng)扇可能會(huì)在 1 秒內(nèi)發(fā)出大約 8 個(gè)脈沖。這 8 個(gè)脈沖等于 4 轉(zhuǎn)/秒,因?yàn)轱L(fēng)扇每轉(zhuǎn)發(fā)送兩個(gè)脈沖。因此,4 轉(zhuǎn)/秒是每分鐘 240 轉(zhuǎn)(4 轉(zhuǎn) x 60 秒)。由于反彈而產(chǎn)生的噪聲脈沖可能會(huì)產(chǎn)生額外的第 9 個(gè)脈沖,錯(cuò)誤地等同于 270rpm(4.5revs x 60secs)。誤差約為總實(shí)際值的 12%。

在較高的轉(zhuǎn)速下,波形中的這些額外噪聲脈沖對(duì)計(jì)算正確的 RPM 值的影響較小。例如,在更高的速度下,我們可能會(huì)得到 266 個(gè)脈沖,這實(shí)際上意味著 133 轉(zhuǎn)/秒或每分鐘 7980 轉(zhuǎn)(133 轉(zhuǎn) x 60 秒)。這里的額外噪聲脈沖總共提供 267 個(gè)脈沖,相當(dāng)于 133.5 轉(zhuǎn)/秒或每分鐘 8010 轉(zhuǎn)(133.5 轉(zhuǎn)/秒 x 60 秒),這與總值的差異較小。誤差低于總實(shí)際值的 4%。這只是一個(gè)例子,因?yàn)榇蠖鄶?shù)風(fēng)扇以最高速度運(yùn)行在該值以下。

為了減輕任何噪聲對(duì)風(fēng)扇 RPM 輸出的影響,使用由 R2 和 C1(屏蔽電路)或 R7 和 C14(嵌入式版本)形成的積分器濾波器。通過(guò)一些計(jì)算和實(shí)驗(yàn),找到了合適的時(shí)間常數(shù)。1K 和 1nF 的值提供了一個(gè)合適的時(shí)間常數(shù),以濾除風(fēng)扇轉(zhuǎn)速計(jì)信號(hào)中出現(xiàn)的任何更高頻率的噪聲脈沖。

AMS1117 LDO穩(wěn)壓器:

這已經(jīng)構(gòu)成了 Arduino 電源子系統(tǒng)的一部分。它提供穩(wěn)定的 +5V,也用于為風(fēng)扇控制器屏蔽供電。就其尺寸而言,它是久經(jīng)考驗(yàn)的堅(jiān)固調(diào)節(jié)器。由不同的公司制造,很容易獲得。不同的制造商發(fā)布不同的數(shù)據(jù)表,最大輸入電壓和功耗標(biāo)準(zhǔn)略有不同。我也在獨(dú)立的嵌入式板上使用過(guò)它。

粉絲

我們需要四針、完全可控的 PWM 風(fēng)扇。其他三個(gè)引腳承載電源、接地和 RPM 轉(zhuǎn)速計(jì)脈沖波形。我已經(jīng)決定在包含此風(fēng)扇控制器的項(xiàng)目中使用 Noctua 風(fēng)扇。他們以沉默寡言著稱,但這并不是對(duì)他們有利的唯一特征。因?yàn)椴⒎撬蟹劢z都是平等的。

當(dāng)您將風(fēng)扇命令為 0% PWM 時(shí),它應(yīng)該停止旋轉(zhuǎn)。并非所有粉絲都這樣做。即使在 0% PWM 下,很多也會(huì)繼續(xù)旋轉(zhuǎn)。為了完全阻止它們旋轉(zhuǎn),需要額外的電路方法。

同樣,在 1% PWM 下,風(fēng)扇應(yīng)該剛好開(kāi)始旋轉(zhuǎn)。事實(shí)上它不需要,因?yàn)榇蠖鄶?shù)需要最小 PWM 才能開(kāi)始旋轉(zhuǎn)。根據(jù)風(fēng)扇型號(hào),所測(cè)試的 Noctua 風(fēng)扇開(kāi)始以 6% 或 10% PWM 旋轉(zhuǎn)。下面的任何東西,它們都會(huì)完全停止。這是一個(gè)初始死區(qū),其中風(fēng)扇沒(méi)有響應(yīng)并保持靜止。

不同制造商的不同風(fēng)扇型號(hào)表現(xiàn)不同。沒(méi)有遵守的標(biāo)準(zhǔn)化。Noctua、Arctic、Xilence 和 Cooler Master 的粉絲表現(xiàn)各不相同。生活艱難。

在風(fēng)扇 A 開(kāi)始響應(yīng)之前,風(fēng)扇控制器將首先嘗試測(cè)量所需的最小 PMW。該代碼使用函數(shù) findFanStopLimit() 中的變量 fanStopLimit 來(lái)在開(kāi)機(jī)或重啟時(shí)查找此值。稍后它會(huì)在檢測(cè)主風(fēng)扇 A 因堵塞或故障而異常停止時(shí)使用此信息。

當(dāng)然,只要考慮到一些注意事項(xiàng),也可以使用其他風(fēng)扇品牌和型號(hào)。一些風(fēng)扇永遠(yuǎn)不會(huì)停止旋轉(zhuǎn),即使在使用 0% PWM 信號(hào)發(fā)出命令時(shí)也是如此。有些會(huì)以 100RPM 或更高的速度旋轉(zhuǎn),但永遠(yuǎn)不會(huì)停止。因此,它們?cè)趩?dòng)時(shí)檢測(cè)到的 fanStopLimit 值將始終為 0%。

我喜歡風(fēng)扇在 PWM 接近 0% 時(shí)停止,所以堅(jiān)持使用 Noctua。這些在我所在的地區(qū)很容易找到和訂購(gòu)??赡艽嬖谄渌放坪托吞?hào),只要它們是完整的四針和 +12V 品種,它們就可以工作。

風(fēng)扇有多種尺寸可供選擇。常用直徑有40mm、80mm、120mm、140mm。選擇適合您任務(wù)的風(fēng)機(jī)。如果只需要一個(gè)風(fēng)扇,只需將其作為主風(fēng)扇 A 插入即可。

代碼

隨著時(shí)間的推移和我覺(jué)得有需要,這段代碼被構(gòu)建并添加了特性和功能。我不是程序員,毫無(wú)疑問(wèn),程序流程中存在一些不必要的復(fù)雜性,類似于沙特爾的迷宮。整個(gè)代碼中散落的全局變量也必然會(huì)增加效率。就是這樣。它符合我的目的,并且不會(huì)明顯減慢操作速度。

#define DEBUG 1或0用于開(kāi)啟或關(guān)閉串口輸出調(diào)試信息。您的選擇將在編譯時(shí)設(shè)置。啟用后,首先顯示的是串行端口調(diào)試 OK 消息。然后是帶有編譯日期和時(shí)間的草圖文件名。

#include "FAN_fixed_bold10x15.h"以允許使用我改編的 fixed_bold10x15.h 字體。它具有風(fēng)扇控制器用來(lái)顯示模式和狀態(tài)的特殊圖標(biāo)字符。它應(yīng)該與風(fēng)扇控制器草圖位于同一文件夾中。

需要使用 IDE 的庫(kù)管理器安裝的一些特定庫(kù)是:

OneWire.h和DallasTemperature.h用于與 Dallas Semiconductor DS18B20 溫度傳感器通信。

EEPROM.h有助于訪問(wèn)微控制器的非易失性 EEPROM 存儲(chǔ)空間。

SSD1306Ascii.h和SSD1306AsciiWire.h使用 OLED 顯示器并訪問(wèn)其 I2C 總線。

需要TimedAction.h才能在代碼中對(duì)不同的任務(wù)進(jìn)行原型線程化。三個(gè)線程將偽同步運(yùn)行。這些用于讀取旋轉(zhuǎn)編碼器、讀取 Fan-A 的 RPM 速度以及從傳感器讀取溫度信息。

職能:

writeConfig()和readConfig()將配置數(shù)據(jù)讀寫(xiě)到芯片的 EEPROM 存儲(chǔ)器中。EEPROM 地址可以無(wú)限次讀取,但平均只能寫(xiě)入約 100000 次。如果您每天更改配置 10 次,則相當(dāng)于大約 27 年的寫(xiě)入周期壽命。函數(shù)firstRunCheck()查找 key1 和 key2 的值 73 和 42。兩個(gè)任意數(shù)字。向各地的無(wú)線電愛(ài)好者和銀河系漫游指南致敬。如果未找到,則該芯片以前從未配置過(guò),函數(shù)firstLoadOfEeprom()將使用有效的 EEPROM 值填充新的微控制器芯片。

開(kāi)機(jī)或重啟時(shí),函數(shù)findFanStopLimit()運(yùn)行。這會(huì)找到主風(fēng)扇 A 開(kāi)始旋轉(zhuǎn)時(shí)的 PWM 值。它將此值作為 minLimit 返回給變量 fanStopLimit。此 PWM 百分比值稍后用于檢測(cè)主風(fēng)扇 A 的停止或故障。

函數(shù)oneDit()和oneDah() 與oneRoger()一起使用以發(fā)出 Roger 確認(rèn)“R”。它們還會(huì)產(chǎn)生 Fan-A 故障警報(bào)聲。這兩個(gè)函數(shù)從蜂鳴器中產(chǎn)生莫爾斯點(diǎn)和破折號(hào)的聲音。這是我直接通過(guò)位操作端口 C 寄存器完成的,無(wú)源蜂鳴器連接到 PC0 和 PC1。驅(qū)動(dòng)每個(gè)輸出異相我們?cè)黾右袅考?jí)別,因?yàn)槲覀儗?shí)際上在無(wú)源蜂鳴器的壓電板上有 10V 的電位差。

這類似于出色的 ToneAC 庫(kù)的工作方式。但是,對(duì)于這個(gè)簡(jiǎn)單的應(yīng)用程序,通過(guò)直接編寫(xiě)此函數(shù)的代碼,我避免了使用該庫(kù)。我們不需要它的音量和頻率控制選項(xiàng),也不需要它的定時(shí)器要求。

函數(shù)encoderRead()是一個(gè)原線程,每 50 毫秒觸發(fā)一次以讀取旋轉(zhuǎn)編碼器。

使用功能menuClicked()我們檢測(cè)旋轉(zhuǎn)編碼器瞬時(shí)開(kāi)關(guān)按鈕的按下。

函數(shù)valueChanged()和delimitValue()用于選擇每個(gè)配置參數(shù)的單獨(dú)值。

函數(shù)oledDisplay()用于使用自定義字體打印到 SSD1306 OLED 的兩行顯示屏。

當(dāng)達(dá)到并觸發(fā) TEMP MIN 的溫度時(shí),函數(shù)showTempTrigIcon()會(huì)顯示一個(gè)溫度計(jì)類型的圖標(biāo)。

函數(shù)tachCounter()是一個(gè)原線程,每 1 秒觸發(fā)一次以讀取來(lái)自主風(fēng)扇 A 的 RPM 轉(zhuǎn)速計(jì)波形。

函數(shù)getTemperature()是一個(gè)原線程,每 3 秒觸發(fā)一次以查詢和讀取來(lái)自 DS18B20 傳感器的溫度數(shù)據(jù)。

函數(shù)triggerCheck()檢查溫度觸發(fā)器,并考慮我們是否使用 P 輸入模式以及 P-IN 接頭處是否有啟用信號(hào)。

函數(shù)fanBsetup()讀取相關(guān)跳線位置以設(shè)置次級(jí) Fan-B 在 switch ON 時(shí)的非對(duì)稱、對(duì)稱或待機(jī)工作模式。

函數(shù)fanBconversion()計(jì)算風(fēng)扇 B 相對(duì)于風(fēng)扇 A 的運(yùn)行速度,同時(shí)考慮非對(duì)稱、對(duì)稱或待機(jī)的當(dāng)前運(yùn)行模式。

函數(shù)percentToPWM()將百分比速度值轉(zhuǎn)換為適合直接饋送到定時(shí)器寄存器以進(jìn)行 PWM 控制的值。這用于命令 Fan-A 的速度。

函數(shù)percentToBars()將向 Fan-A 命令的 PWM 顯示為 OLED 顯示屏上一行的移動(dòng)條形圖。

函數(shù)fanJamCheck()檢查 Fan-A 的停止并在四次違規(guī)后發(fā)出信號(hào)。然后它會(huì)發(fā)出警報(bào)并閃爍紅色警告 LED。

函數(shù)stepedIncrement()和stepedDecrement()在被動(dòng)清掃模式下增加和減少風(fēng)扇的速度。

函數(shù)pwm25kHzSet()將 PWM 頻率設(shè)置為 25khz。需要進(jìn)行此更改,因?yàn)轱L(fēng)扇需要以 25KHz 運(yùn)行的 PWM 信號(hào),而可用的默認(rèn) Arduino PWM 頻率僅為 490Hz 或 980Hz,具體取決于所使用的引腳。

ATmega328P 有三個(gè)定時(shí)器,我們可以隨意使用。定時(shí)器是一個(gè)寄存器,它為每個(gè)時(shí)鐘脈沖遞增(或遞減)。328P 有三個(gè),它們的使用在 delay()、millis()、micros()、Servo()、Tone() 和其他庫(kù)等函數(shù)之間兼顧。時(shí)鐘頻率取自 16MHz 晶振時(shí)鐘。該時(shí)鐘頻率可以在饋送到定時(shí)器之前由預(yù)分頻器分頻。當(dāng)定時(shí)器遞增到其最大寄存器大小時(shí),定時(shí)器將溢出。對(duì)于 8 位定時(shí)器的 timer0 和 timer2,這是 255(16 位定時(shí)器 1 為 65535)。也可以設(shè)置發(fā)生此溢出的值。我們不需要等到定時(shí)器寄存器達(dá)到 255(或 65535)時(shí)標(biāo)記溢出??刂萍拇嫫鲗⒍〞r(shí)器 1 配置為模式 10,無(wú)預(yù)分頻,計(jì)數(shù)為 320。我們的 16Mhz 晶體時(shí)鐘的值為 320 將為我們提供 25KHz PWM 信號(hào)。該代碼使用函數(shù) percentToPWM() 從用戶友好的百分比風(fēng)扇 PWM 值轉(zhuǎn)換它。

中斷服務(wù)程序encoderISR()用于讀取旋轉(zhuǎn)編碼器。

中斷服務(wù)程序tachISR()用于計(jì)算主風(fēng)扇 A 發(fā)送的轉(zhuǎn)速計(jì) RPM 波形發(fā)出的脈沖。

EEPROM存儲(chǔ)器

顯示首次開(kāi)機(jī)時(shí)加載的默認(rèn)值的詳細(xì)信息。

地址 0 key1 73d Dahdahdiddley...Diddleydahdah。

地址 1 key2 42d 生命、宇宙和一切。

地址 2 fanMin 10d 最小風(fēng)扇速度 = 10%。

地址 3 fanMax 90d 最大風(fēng)扇速度 = 90%。

地址 4 tempMin(°C) 40d 溫度最低 40degC。

地址 5 tempMax(°C) 70d 最高溫度 70degC。

地址 6 tempMin(°F) 100d 最低溫度 100degF。

地址 7 tempMax(°F) 160d 最高溫度 160degF。

地址 8 模式 1d 掃描。

地址 9 掃描速率 5d 5(中速)。

地址 10 從 0% 風(fēng)扇速度開(kāi)始按溫度觸發(fā) 1d。

地址11 tempOffset 0d 0度溫度校正。

地址 12 保存并退出 0d 0。

代碼的讀寫(xiě)功能將跳過(guò)地址 4 和 5 或 6 和 7,具體取決于使用硬件跳線(屏蔽上的 U1 或獨(dú)立 PCB 上的 J2)選擇的溫度單位。

自定義角色

SSD1306Ascii 庫(kù)中包含的 fixed_bold10x15 字體是我的首選字體。它清晰易讀。然而,它只給我們兩行,每行大約 11 或 12 個(gè)字符來(lái)顯示任何信息。我使用自定義圖標(biāo)字符在 0.91" OLED 小顯示屏上獲取更多信息。我修改了 SSD1306Ascii 庫(kù)中包含的原始 fixed_bold10x15 字體。此修改后的字體是 FAN_fixed_bold10x15。它由代碼調(diào)用,應(yīng)該位于相同的位置草圖文件夾。

額外的字符會(huì)將風(fēng)扇控制器代碼使用的特定圖標(biāo)打印到 OLED 上。它們包括生成風(fēng)扇速度條形圖、OOR 警告、攝氏度和華氏度符號(hào)、RPM 風(fēng)扇旋轉(zhuǎn)符號(hào)、RPM 風(fēng)扇堵塞警告、使用中的觸發(fā)模式、使用中的掃描速度和 P 輸入啟用圖標(biāo)的字符。

滾動(dòng)瀏覽一些顯示信息示例:

s5small_2vFPeAXw4G.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 6 ? S5:以速度 5、28degC、210RPM、20%PWM 掃頻。

條形圖顯示我們命令主風(fēng)扇 A 的速度,精確到 10%。這個(gè) PWM 條形圖左邊的兩個(gè)字母顯示了我們的工作模式。底線以 RPM 為單位顯示溫度和風(fēng)扇 A 轉(zhuǎn)速。超出范圍的 OOR 溫度會(huì)以“感嘆號(hào)”圖標(biāo)表示。Fan-A 的任何長(zhǎng)時(shí)間風(fēng)扇停止也會(huì)在 RPM 圖標(biāo)內(nèi)以“感嘆號(hào)”表示。當(dāng)風(fēng)扇在達(dá)到最低溫度值時(shí)被觸發(fā)時(shí),會(huì)顯示“溫度計(jì)”圖標(biāo)。在 P 輸入模式下,“箭頭”圖標(biāo)指示何時(shí)存在啟用信號(hào)。

failsmall_deesSmavUA.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 3 ?風(fēng)扇 A 停止:紅色警告 LED 閃爍。帶有警告圖標(biāo)的零轉(zhuǎn)速。

這些都是用筆和紙?jiān)O(shè)計(jì)的,然后對(duì)原始字體文件進(jìn)行逆向工程和修改。每個(gè)新字符的十六進(jìn)制值都是通過(guò)編輯添加到原始文件中的。

font2small_PhNrUP2kBN.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 2

雙板版本盡管運(yùn)行相同的代碼并且本質(zhì)上相同,但下面描述的兩個(gè)板版本是完全不同的。

pcb1small_rf0zl3inpk.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

屏蔽上面的PCB。下面的嵌入式PCB。

屏蔽板版本

背負(fù)式防護(hù)罩版本:這款 Arduino 兼容防護(hù)罩搭載在 UNO R3 上,構(gòu)成了一個(gè)非常緊湊的單元。它比嵌入式版本更容易構(gòu)建和編程。如果您想輕松修改我的代碼并針對(duì)您的特定需求進(jìn)行測(cè)試,這也是完美的選擇。它只有 15 個(gè)表面貼裝元件,如果您非常小心,只需用熱風(fēng)槍或熱床和一些低溫焊料即可焊接。

shieldversionsmall_0ZTfrQRTty.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

Arduino 屏蔽板。

主要成分:

Arduino UNO R3(已有 ATmega 328P 微控制器、時(shí)鐘振蕩器、電源輸入和電壓管理、復(fù)位系統(tǒng)、USB 串行連接、ICSP 連接等元素)。

DS18B20溫度傳感器。

光耦PC817C。

OLED SSD1306 0、91" 顯示屏。

LED指示燈和無(wú)源蜂鳴器報(bào)警

用于菜單輸入的旋轉(zhuǎn)編碼器。

板載復(fù)位按鈕。

初始設(shè)置跳線頭。

屏蔽版電路原理

該防護(hù)罩可整齊地連接到 Uno R3 板的頂部。它提供了一種將風(fēng)扇控制器的特定電路連接到 Uno 板上已有的微控制器和子系統(tǒng)的簡(jiǎn)單方法。參考屏蔽版原理圖。

Fan-A 和 Fan-B 具有獨(dú)立控制的 PWM 輸出信號(hào),這些信號(hào)取自引腳 D9 和 D10。RPM 測(cè)速波形取自 Fan-A,通過(guò) RC 噪聲濾波器并饋送到引腳 D2。用于計(jì)算和顯示主風(fēng)扇-A 的旋轉(zhuǎn)速度。

引腳 D11 上的高電平將通過(guò)其 1K 限流電阻 R4 點(diǎn)亮紅色 LED4。當(dāng)代碼確定主風(fēng)扇 A 已卡住時(shí),代碼會(huì)執(zhí)行此操作,以發(fā)出異常信號(hào)。同樣,它將通過(guò)跨接在 A0 和 A1 上的無(wú)源蜂鳴器 SG3 發(fā)出警報(bào)。每個(gè)輸出彼此異相,從而增加了表觀音量水平。盡管如此,我還是有一個(gè) 220 歐姆的小電阻 R1 來(lái)將此處的電流降低到可接受的水平。此壓電蜂鳴器也會(huì)在開(kāi)機(jī)時(shí)發(fā)出聲音,以確認(rèn)配置設(shè)置已保存。

SSD1306 OLED 使用 I2C 總線。它的數(shù)據(jù)和時(shí)鐘線連接到 Uno 的引腳 A4/SDA 和 A5/SCL??赡苄枰部赡懿恍枰獌蓚€(gè)值為 5.1K 的上拉電阻 R5 和 R6。一些 OLED 板將在沒(méi)有這些的情況下運(yùn)行,因?yàn)樗鼈円呀?jīng)內(nèi)置了這些。

旋轉(zhuǎn)編碼器 SW1 提供了一種滾動(dòng)和設(shè)置我們所需配置的方法。DT 和 CLK 線由引腳輸入 D3 和 D4 讀取。按下時(shí),瞬時(shí)開(kāi)關(guān)接地。微控制器在引腳 D6 讀取該低電平以循環(huán)瀏覽菜單項(xiàng)。

PC817C 光耦合器 U3 在其引腳 4 上的輸出被輸入 D8。它用于將啟用信號(hào)與我們可能選擇連接到接頭 P-IN 的任何輔助設(shè)備進(jìn)行光學(xué)隔離。如果光耦合器輸出側(cè)由其輸入端的內(nèi)部 LED 照亮,則該值會(huì)很低。電阻器 R3 將通過(guò)輸入電平的電流限制在規(guī)格范圍內(nèi)。1K 的值適用于我們期望在火腿小屋中擁有的最常見(jiàn)電壓。一個(gè) 1N4148 二極管可保護(hù)同一輸入二極管免受意外反極性連接的影響。如果沒(méi)有這個(gè)保護(hù)二極管,光耦合器的 LED 將無(wú)法承受超過(guò) 6V 的反向電壓。

請(qǐng)注意:P-IN 接頭連接與嵌入式版本不同。外部設(shè)備的使能電壓應(yīng)連接到插頭的引腳 2。它的負(fù)極線,通常是輔助設(shè)備的地,連接到 P-IN 插頭的引腳 1。這在絲印上標(biāo)有“1 G”。

P5 是我們連接 DS18B20 溫度傳感器的地方,確保我們尊重它的引出線。其數(shù)據(jù)線 DQ 接至引腳 D7,用作與傳感器通信的單線總線。當(dāng)我們?cè)儐?wèn)和接收來(lái)自傳感器的溫度數(shù)據(jù)時(shí),白色 LED2 將閃爍。我發(fā)現(xiàn)需要一個(gè)上拉電阻來(lái)確保良好的總線對(duì)話。

2K 的值給了我穩(wěn)定的數(shù)據(jù)流以及我使用的 0805 表面貼裝 LED 的充足照明??梢允褂酶叩闹担?4.7K,但這最終取決于您選擇使用的 LED 上的壓降。這可能因制造商、型號(hào)和顏色而異。你的旅費(fèi)可能會(huì)改變。

標(biāo)頭 U1 在引腳 D5 的開(kāi)關(guān)打開(kāi)期間被讀取。如果此接頭的引腳 1 和 2 通過(guò)跳線橋接,則 D5 為低電平,代碼將使用華氏度。如果引腳 2 和 3 橋接,電路中實(shí)際上沒(méi)有任何東西。D5 的內(nèi)部上拉電阻將保持高電平并使用攝氏度單位。

使用接頭 U2,我們可以選擇兩個(gè)風(fēng)扇之間的工作模式。外部引腳連接到 Uno 引腳 A2 和 A3。讀取這些輸入的狀態(tài)將定義次級(jí) Fan-B 如何與 Fan-A 一起工作。對(duì)稱(串聯(lián))或不對(duì)稱(相反)。跳線會(huì)將一個(gè)或另一個(gè)引腳連接到中央接地引腳。如果未安裝跳線,則兩側(cè)均為高電平,輸入引腳 A2 和 A3 上均顯示為邏輯 1。然后Fan-B將在熱備模式下等待,以防Fan-A出現(xiàn)故障。

我在防護(hù)罩上包含了一個(gè)小型觸覺(jué)開(kāi)關(guān) SW2。這連接到 Uno 的 RESET 引腳。實(shí)際上,它與 Uno 自己的復(fù)位開(kāi)關(guān)并聯(lián),但現(xiàn)在被防護(hù)罩覆蓋,幾乎無(wú)法觸及。像這樣,仍然可以輕松執(zhí)行重置。

為了給風(fēng)扇供電,我們需要 +12V。在通過(guò) AMS1117 將電壓調(diào)節(jié)到 +5V 為其他 UNO 電路供電之前,該電壓在桶形連接器處輸入。對(duì)于風(fēng)扇,我們必須始終在這個(gè)桶形連接器上為 UNO 供電大約 +12V。風(fēng)扇的直流輸入取自Vin,Vin是輸入電壓通過(guò)Arduino上標(biāo)有M7的反向電壓保護(hù)二極管后恢復(fù)的引腳連接。這是一個(gè)標(biāo)準(zhǔn)的 1N4007 整流二極管,可將 12V 電壓降低約 0.7V。UNO 的 AMS7111 +5v LDO 穩(wěn)壓器額定值為樂(lè)觀的 800mA。理想情況下,我們需要低于此值,因?yàn)槲覀円呀?jīng)處于他推薦的輸入電壓的頂端(盡管最大輸入更高)。因此,小型線性穩(wěn)壓器需要從用于為風(fēng)扇供電的 12V 主電源中轉(zhuǎn)儲(chǔ)約 6V。例如,兩個(gè)風(fēng)扇均以 100% 轉(zhuǎn)速運(yùn)轉(zhuǎn)時(shí)的總電流測(cè)得約為 270mA。每個(gè)風(fēng)扇大約100mA(與風(fēng)扇制造商指定的指定電流消耗一致)和Arduino板70mA。我們可以看到我們與引用的 800mA 相去甚遠(yuǎn),而且非常符合 AMS1117 功耗規(guī)格。

雖然我經(jīng)??吹揭玫淖畲?+20V,但 Arduino 建議不要超過(guò) +12V 輸入為其 UNO 板供電。這完全取決于板載 LDO 穩(wěn)壓器必須處理的電流量和功率。在桶形連接器輸入端使用 +12V,在二極管壓降后,我們?nèi)匀挥写蠹s 11.3V,這對(duì)于驅(qū)動(dòng)風(fēng)扇來(lái)說(shuō)是可以接受的。這可以在風(fēng)扇數(shù)據(jù)表上進(jìn)行檢查。通常 12V 風(fēng)扇可承受 10V 至 13.2V(有些甚至 7v 至 13.8V)。使用任何棚屋電源中常見(jiàn)的 13.8V,我們得到 13.1V。仍在風(fēng)扇規(guī)格范圍內(nèi)。這種輕微的增加不會(huì)給 AMS1117 +5V 穩(wěn)壓器帶來(lái)更多的耗散負(fù)擔(dān),因?yàn)槲覀儧](méi)有讓大電流流過(guò)它。

綠色 LED 1 和 3 讓我們放心,我們的電路板上有 +5V 和 +12V。LED1用1K限流電阻R7表示+5V,LED3用2K限流電阻R8表示+12V。電阻值差異是由于指示的電壓不同所致。像這樣,亮度水平將非常相似。

盾版建筑:

該板混合使用通孔和表面貼裝元件。緊要關(guān)頭,只要眼力好、神態(tài)冷靜、手穩(wěn),什么都可以用手焊。然而,理想情況下,回流焊爐、電爐或熱風(fēng)站是最好的。我更喜歡使用 0805 封裝尺寸,因?yàn)樗鼈兒苄〉匀幌鄬?duì)容易看到和使用。十五個(gè) SMD R1 到 R9、LED1 到 LED4、C1 和 D1 可以先回流。然后可以手工焊接通孔元件。無(wú)需配置微控制器保險(xiǎn)絲或上傳引導(dǎo)加載程序,因?yàn)?UNO 已經(jīng)解決了這些問(wèn)題。這兩個(gè) PCB 的成品堆疊提供了一個(gè)非常緊湊的單元,具有經(jīng)典 Arduino 已經(jīng)提供的所有便利設(shè)施。

提個(gè)醒:并非所有 Arduino UNO R3 都是平等的。一些使用 USB B 型連接器與 USB 進(jìn)行串行通信。USB B 型插座高度可能會(huì)接觸并短路某些屏蔽連接。小心。一點(diǎn)絕緣膠帶在這里可能會(huì)有用。有時(shí) ATmega 16U2 也用作 USB 轉(zhuǎn)串口轉(zhuǎn)換器。這實(shí)際上是一個(gè)單獨(dú)的微控制器,它被編程為 FTDI 角色。它通常在 Arduino UNO 板的左上角有自己的 ICSP 編程引腳。這些也可能會(huì)物理接觸某些屏蔽元件引腳的底部并造成破壞。我只能假設(shè)一些中國(guó)制造商只有在芯片已經(jīng)在電路板上使用這些編程引腳后才使用 FTDI 固件燒錄 ATmega 16U2。其他供應(yīng)商避免在焊接芯片之前通過(guò)預(yù)燒來(lái)安裝這些引腳,或者稍后在制造中使用 pogo pin 連接器。就個(gè)人而言,在使用屏蔽時(shí),為了避免這些問(wèn)題,我傾向于只使用 UNO 板,它們具有低調(diào)得多的微型 USB 連接器和專用 USB-UART 芯片,如 CH340。

嵌入式板版

獨(dú)立嵌入式版本:這是在使用嵌入式 ATmega328P-AU 的單板上,包括所有其他子系統(tǒng)。串行和 ICSP 端口連接接頭仍可用于調(diào)試和必要的芯片燒錄。自然這里有更多的表面貼裝元件需要焊接。這當(dāng)然包括 328P-AU。其0.8mm間距的TQFP封裝將更具挑戰(zhàn)性。在初始草圖和/或引導(dǎo)加載程序中進(jìn)行配置和加載也是如此。

load1small_9qNwKfWkTp.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

嵌入式獨(dú)立板。

主要成分:

ATmega 328P-澳大利亞

晶體時(shí)鐘振蕩器。

DS18B20溫度傳感器。

光耦PC817C。

OLED SSD1306 0、91" 顯示屏。

AS1117 5V穩(wěn)壓器。

LED指示燈和無(wú)源蜂鳴器報(bào)警

用于菜單輸入的旋轉(zhuǎn)編碼器。

板載電源開(kāi)關(guān)。

板載復(fù)位按鈕。

USB 串行功能可通過(guò)外部 FTDI(Future Technology Devices International)板,通過(guò)“串行”端口接頭插針使用。

ICSP 功能可通過(guò)“ICSP”端口接頭引腳與外部 USBasp 板一起使用。

初始設(shè)置跳線頭。

嵌入式版本電路原理:

此版本為風(fēng)扇控制器代碼提供單板平臺(tái)。它是風(fēng)扇控制器的獨(dú)立變體,圍繞 ATmega 328P-AU 芯片構(gòu)建。與許多 Arduino UNO R3 板使用的相同。參考嵌入式板原理圖。

該電路使用ATmega 328P。不是 328PB 版本,它有一些引出線差異。后綴AU指的是小型QFP32封裝類型,我在測(cè)試和構(gòu)建過(guò)程中發(fā)現(xiàn)它仍然相對(duì)容易處理。

由于我們已經(jīng)失去了內(nèi)置 Arduino 引導(dǎo)加載程序的便利,我們將不得不使用 ICSP 上傳到微控制器的內(nèi)存。還需要添加電源管理、時(shí)鐘、復(fù)位和串行調(diào)試端口、ICSP 端口等其他功能。

屏蔽和嵌入式電路都使用相同的代碼。這是因?yàn)樗须娐饭δ芎瓦B接都設(shè)計(jì)為相互兼容。下面我已經(jīng)說(shuō)明了每個(gè)輸入或輸出的等效 Arduino Uno 連接是什么,因?yàn)檫@是草圖中引用的內(nèi)容。

Fan-A 和 Fan-B 具有獨(dú)立控制的 PWM 輸出信號(hào),這些信號(hào)取自微控制器的引腳 13 和 14。這些是端口引腳 PB1 和 PB2,相當(dāng)于 Arduino 板上的 I/O 引腳 D9 和 D10。RPM 轉(zhuǎn)速計(jì)波形取自 Fan-A,通過(guò) RC 噪聲濾波器并饋送到引腳 32,即端口引腳 PD2 (Arduino D2)。這用于計(jì)算和顯示主風(fēng)扇 A 的速度。

當(dāng)代碼檢測(cè)到風(fēng)扇 A 停止時(shí),引腳 15、端口引腳 PB3 (Arduino D11) 上的高電平將通過(guò)其 1K 限流電阻 R4 點(diǎn)亮紅色 LED4。同樣,它會(huì)通過(guò)無(wú)源蜂鳴器 SG3 發(fā)出警報(bào),該蜂鳴器跨越引腳 23 和 24,端口引腳 PC0 和 PC1(Arduino A0 和 A1)。每個(gè)輸出彼此異相,從而增加了表觀音量水平。盡管如此,還是有一個(gè) 220 歐姆的小電阻 R1 可以將此處的電流降低到可接受的水平。此壓電蜂鳴器也會(huì)在開(kāi)機(jī)時(shí)發(fā)出聲音,以確認(rèn)配置設(shè)置已保存。

SSD1306 OLED 使用 I2C 總線。它的數(shù)據(jù)和時(shí)鐘線連接到引腳 27 和 28。它們分別是端口引腳 PC4/SDA 和 PC5/SCL(位于 Uno 的 A4/SDA 和 A5/SCL 上)。為了完整起見(jiàn),包含兩個(gè)值為 5.1K 的上拉電阻器 R5 和 R6,盡管某些 OLED 板沒(méi)有這些電阻器也能正常工作,因?yàn)樗鼈円呀?jīng)具有上拉電阻器。我的 OLED 已經(jīng)有一個(gè) +3.3V 穩(wěn)壓器并且是 +5V 邏輯容限,所以不需要電平轉(zhuǎn)換器。

旋轉(zhuǎn)編碼器 SW1 線 DT 和 CLK 在微控制器的引腳 1 和 2 處讀取。這些是端口引腳 PD3 和 PD4(與 Uno 的 D3 和 D4 相同)。按下時(shí),瞬時(shí)開(kāi)關(guān)接地。這個(gè)低電平在引腳 10 讀取,它是微控制器上的端口引腳 PD6(Uno 的 D6),以循環(huán)瀏覽菜單項(xiàng)。

PC817C 光耦合器 U3 在其引腳 4 上的輸出被帶到微控制器引腳 12,即端口引腳 PB0(Arduino 上的 D8)。它用于將啟用信號(hào)與我們可能選擇連接到接頭 P-IN 的任何輔助設(shè)備進(jìn)行光學(xué)隔離。如果光耦合器輸出側(cè)由其輸入端的內(nèi)部 LED 照亮,則該值會(huì)很低。電阻器 R3 將通過(guò)輸入電平的電流限制在規(guī)格范圍內(nèi),1K 的值適用于我們預(yù)計(jì)火腿小屋中最常見(jiàn)的電壓。一個(gè) 1N4148 二極管可保護(hù)同一輸入二極管免受意外反極性連接的影響。如果沒(méi)有這個(gè)保護(hù)二極管,光耦合器的 LED 將無(wú)法承受超過(guò) 6V 的反向電壓。

請(qǐng)注意:此 P-IN 接頭連接器與屏蔽版本不同。連接外部觸發(fā)器時(shí)必須小心。外線的負(fù)極,通常是接地,應(yīng)該連接到 P-IN 接頭的引腳 2。外部線路的正極應(yīng)連接到引腳 1。這在接頭的絲印上標(biāo)記為“+VE 1”。

P5 是我們連接 DS18B20 溫度傳感器的地方,確保我們遵循它的引出線。其數(shù)據(jù)線 DQ 接至引腳 11,或端口引腳 PD7(Uno 上的 D7)。這是與傳感器通信的單線總線。當(dāng)我們?cè)儐?wèn)和接收來(lái)自傳感器的溫度數(shù)據(jù)時(shí),白色 LED2 將閃爍。需要一個(gè)上拉電阻來(lái)確保良好的總線通信。

我發(fā)現(xiàn) 2K 的值可提供穩(wěn)定的數(shù)據(jù)流以及我使用的 0805 表面貼裝 LED 的充足照明??梢允褂酶叩闹?,如 4.7K,但這最終取決于所用 LED 上的壓降。這可能因制造商、型號(hào)和顏色而異。你的旅費(fèi)可能會(huì)改變。

通過(guò)接頭 J1,我們可以選擇兩個(gè)風(fēng)扇之間的工作模式。這發(fā)生在開(kāi)關(guān)打開(kāi)時(shí)。引腳 1 和 3 分別連接到 ATmega 的引腳 26 和 25。這些是微控制器端口引腳 PC3 和 PC2(相當(dāng)于 Uno 引腳 A3 和 A2)。讀取這些輸入的狀態(tài)將定義次級(jí) Fan-B 如何與 Fan-A 一起工作。與主 Fan-A 對(duì)稱(串聯(lián))或不對(duì)稱(相反)。跳線放置將使一個(gè)或另一個(gè)引腳在引腳 2 上接地。如果跳線跨接在引腳 3 和 4 之間,則實(shí)際上斷路了。由于已配置內(nèi)部上拉電阻,輸入引腳 A2 和 A3 將出現(xiàn)邏輯 1。使用左側(cè)的跳線,設(shè)置非對(duì)稱操作。使用中間的跳線,設(shè)置對(duì)稱操作。使用右側(cè)的跳線,設(shè)置熱備。

雖然我們實(shí)際上不需要它在這里橋接引腳 3 和 4,但它只是一種方便的方式來(lái)存放小跳線并防止我們丟失它。

接頭 J2 在開(kāi)關(guān)打開(kāi)期間也被讀取并路由到引腳 9。這是端口引腳 PD5 (Uno D5)。如果此接頭的引腳 1 和引腳 2 通過(guò)跳線橋接,則引腳 9 變?yōu)榈碗娖剑a隨后將以華氏度為單位計(jì)算溫度。如果引腳 2 和 3 橋接,電路中實(shí)際上沒(méi)有任何東西。同樣,我們只是將跳線存放在引腳 2 和引腳 3 上,以免丟失。此處,引腳 9 的內(nèi)部上拉將使它保持高電平,代碼將以攝氏溫度單位工作。

開(kāi)關(guān) SW18 連接到設(shè)備的復(fù)位電路,在 ATmega 328P 的引腳 29 上。采取低它迫使微控制器復(fù)位。在正常操作中,上拉電阻 R2 將其保持在高電平。二極管 D2 保護(hù)微控制器免受任何電壓尖峰的影響,這些電壓尖峰是由于串口 DTR 線上的電容器 C7 引起的。如果此 DTR 變高,我們的復(fù)位線上的電壓會(huì)短暫加倍。1N4148 安全地分流這個(gè) 10V。串口DTR線上需要電容C7,起微分作用。當(dāng)連接到串口時(shí),大多數(shù)USB轉(zhuǎn)串口芯片會(huì)將DTR設(shè)置為低電平并保持低電平。我們?cè)谶@里只需要一個(gè)短脈沖來(lái)初始重啟微控制器。ATmega 的復(fù)位引腳也被任何 ICSP 編程器使用,因此也連接到 ICSP 接頭引腳 5。

綠色 LED 5 和 6 指示我們有 +12V 和 +5V 到達(dá)我們的電路板。LED5用2K限流電阻R10表示+12V,LED6用1K限流電阻R11表示+5V。電阻值的差異是由于指示的電壓不同所致。像這樣,它們的亮度水平將是相等的。

在直流桶形連接器和電源開(kāi)關(guān) SW2 之后,AMS1117 +5V 穩(wěn)壓器 U36 為電路板提供 +5V。該穩(wěn)壓器的版本被引用為具有從 15v 到 20V 的任何地方的最大輸入電壓。雖然推薦值較低。功耗和發(fā)熱將取決于它通過(guò)的電流量。它保持在功耗規(guī)格范圍內(nèi),因?yàn)橥ㄟ^(guò)它的總電流相對(duì)較低。盡管如此,因?yàn)槲矣凶銐虻碾娐钒蹇臻g,所以我已經(jīng)包含了一個(gè)臨時(shí)的 PCB 散熱器。穩(wěn)壓器的 +5V 接頭連接到此,它也有通向底部 PCB 層的散熱孔。

跨接 AS1117 的 1N4007 二極管 U1 用于在使用 ICSP 端口時(shí)提供保護(hù)。通常,ICSP 程序員會(huì)將 +5V 置于 ICSP 端口的引腳 2 上。當(dāng)我們?nèi)紵?ATmega 芯片時(shí),這可以保護(hù) AMS1117 LDO 穩(wěn)壓器免受反饋電壓的影響。

為了給風(fēng)扇供電,我們需要 +12V。在通過(guò) AMS1117 將電壓調(diào)節(jié)至 +5V 之前,該電壓在桶形連接器處輸入。在輸入電壓通過(guò)標(biāo)有 M7 的反向電壓保護(hù)二極管后獲取風(fēng)扇電壓。這是一個(gè)標(biāo)準(zhǔn)的 1N4007 整流二極管,它也會(huì)將 12V 電壓降低約 0.7V。

AMS7111 +5v LDO 穩(wěn)壓器的額定電流高達(dá) 800mA。理想情況下,我們需要低于此值,因?yàn)槲覀円呀?jīng)處于他推薦的輸入電壓的頂端(盡管最大輸入要高得多)。小型線性穩(wěn)壓器需要從用于為風(fēng)扇供電的 12V 主電源中傾倒大約 6V。然而,總電流消耗遠(yuǎn)低于這個(gè) 800mA 的最大值。因此,即使需要丟棄 6V,通過(guò)它的電流如此之低,我們也很好地低于 AMS1117 功耗規(guī)格。

正如剛才提到的,為風(fēng)扇供電所需的 +12V 取自 U37 的陰極。這是 1N4007 二極管,它為我們提供一些簡(jiǎn)單的反向電源保護(hù),但會(huì)下降約 0.7V。即使有這種下降,仍然有足夠的電壓驅(qū)動(dòng)大多數(shù)風(fēng)扇在其指定的電壓容差范圍內(nèi)。這可以在風(fēng)扇的數(shù)據(jù)表上進(jìn)行檢查。通常 12V 風(fēng)扇可承受 10V 至 13.2V(有些甚至 7v 至 13.8V)。

在桶形連接器輸入端使用 +12V,在二極管電壓下降后我們?nèi)匀挥写蠹s 11.3V,這是可以接受的。使用 13.8V,這是任何棚屋電源的正常輸出,我們有 13.1V。仍在大多數(shù)風(fēng)扇規(guī)格范圍內(nèi),但您可能會(huì)注意到 RPM 有所增加。這種小的輸入電壓增加不會(huì)給 AMS1117 +5V 穩(wěn)壓器帶來(lái)更多負(fù)擔(dān)。

使用 16MHz 外部晶振 Q6。這個(gè)選項(xiàng)必須在 ATmega 的保險(xiǎn)絲設(shè)置中配置。晶體 Q6 兩端的 1M 電阻器 R13 改善了各種晶體規(guī)格的振蕩的啟動(dòng)和維持。一些微控制器內(nèi)置了這個(gè)。它包括在內(nèi)是為了完整性。

許多 Arduino 板使用陶瓷諧振器而不是晶體。雖然不如水晶那么精確,但它體積更小,而且似乎對(duì)于日常應(yīng)用來(lái)說(shuō)已經(jīng)足夠精確了。我選擇晶體是因?yàn)?16MHz 晶體在我所在的地區(qū)更容易找到,而且比微型陶瓷諧振器更容易處理。我不確定內(nèi)部 ATmega 的振蕩器是否足夠精確以滿足我們的需求,尤其是對(duì)于串行通信功能。

串口頭H7可用于調(diào)試。它也可以用于上傳新的草圖,前提是之前已經(jīng)將引導(dǎo)加載程序燒錄到微控制器上。需要一個(gè) FT232RL FTDI USB 轉(zhuǎn) TTL 串行適配器模塊,設(shè)置為工作在 +5V。插頭引腳將與大多數(shù)可用的適配器模塊對(duì)齊。接地端在串口絲印上標(biāo)記的引腳 1 上。Tx 和 Rx 線上的兩個(gè) 1K 電阻 R8 和 R12 限制電流。因此,如果適配器端變高,然后微控制器代碼將相應(yīng)的輸出引腳發(fā)送到低電平,這將避免直接接地短路。串行接頭的 Vcc 引腳 3 未連接。風(fēng)扇控制器由其自身的穩(wěn)壓器供電,適配器板通過(guò)計(jì)算機(jī)的 USB 連接供電。兩者都有共同點(diǎn)。100nF 電容 C7 已經(jīng)討論過(guò)了。它構(gòu)成了復(fù)位電路的一部分,并確保僅來(lái)自串行端口 DTR 引腳的短暫低脈沖就會(huì)觸發(fā)復(fù)位。

要使用 ICSP 端口 J5,需要一個(gè)在線串行編程器來(lái)直接燒錄到微控制器的內(nèi)存中。使用新的 ATmega 328P-AU,這將是將第一個(gè)代碼上傳到微控制器的唯一方法。如果您刻錄引導(dǎo)加載程序,您將能夠僅使用串行端口和 Arduino IDE 以經(jīng)典方式上傳草圖。ICSP 接頭引出線遵循標(biāo)準(zhǔn)布局,就像在 Arduino Uno R3 板上一樣。對(duì)于 ICSP 編程,我使用便宜且易于使用的 USBasp 編程器。當(dāng)然可以使用其他編程器,前提是引出線匹配。

編程時(shí),風(fēng)扇控制器板應(yīng)斷電,因?yàn)樗鼘?ICSP 編程器獲取電源。然而,一些較舊的 ICSP 編程器需要在 ICSP 引腳 2 上有來(lái)自其目標(biāo)的電壓才能運(yùn)行。在這種情況下,設(shè)備應(yīng)該通電。

ICSP 的 MISO 和 MOSI 線位于接頭的引腳 1 和 4,并連接到微控制器的 MISO 和 MOSI 引腳 16 和 15。接頭引腳 3 的時(shí)鐘線 SCK 連接到芯片的 17 引腳和復(fù)位線 RST插頭引腳 5 連接到芯片 29 處的復(fù)位引腳的復(fù)位電路。前面討論的紅色 LED4 用于在正常運(yùn)行期間發(fā)出主風(fēng)扇 A 停止的信號(hào),現(xiàn)在將用于向我們顯示任何 ICSP 活動(dòng)。端口引腳 PB3 也是 MOSI 引腳,因此當(dāng)我們連接到芯片時(shí) LED4 會(huì)閃爍。

嵌入式版本構(gòu)建:

同樣,該電路板混合使用了通孔和表面貼裝組件。首選 0805 SMD 封裝,因?yàn)檫@種小尺寸仍然相對(duì)容易處理。如果您是第一次,在更簡(jiǎn)單的項(xiàng)目甚至練習(xí)板上練習(xí) SMD 焊接技術(shù)可能是明智的。嵌入式版本不是一個(gè)好的第一個(gè) SMD 項(xiàng)目。在獲得可運(yùn)行的嵌入式版本的過(guò)程中,已經(jīng)有足夠多的陷阱需要提防。這可能會(huì)給新手帶來(lái)很大的挫敗感。表面貼裝或嵌入式微控制器新手最好從屏蔽版本開(kāi)始。如果您有信心,我現(xiàn)在將介紹一個(gè)合乎邏輯的工作流程,這可能會(huì)避免家庭釀造的不滿。

- 對(duì)于 SMD,我使用小型回流焊爐和一些低溫含鉛焊膏。通過(guò)使用與所用焊料相匹配的特定溫度曲線,可以輕松控制熱量。當(dāng)然,您也可以使用熱板和熱風(fēng)返修臺(tái),但要注意不要因過(guò)熱而熔化任何塑料外殼組件。例如,請(qǐng)注意電解電容器,其電介質(zhì)可能會(huì)損壞。對(duì)于焊料,無(wú)鉛類型現(xiàn)在都是炒作,但請(qǐng)相信我,它并不那么寬容。

無(wú)鉛焊料容易成珠,不易流動(dòng)或粘住。一家大型PCB工廠使用環(huán)保焊料是有道理的。對(duì)于我們的小型家庭愛(ài)好來(lái)說(shuō),它確實(shí)是海洋中的環(huán)境一滴。就健康而言,焊芯中助焊劑產(chǎn)生的煙霧實(shí)際上更有害,含鉛和無(wú)鉛焊料中都存在這種情況。在任何情況下,只要您的工作臺(tái)通風(fēng)良好,一年焊接幾十塊電路板都不會(huì)把您推入早期棺材。

- 我建議先回流所有 SMD 組件,然后立即測(cè)試和 ICSP 燃燒 Atmega 328P-AU。也就是說(shuō),在安裝較大的通孔組件之前。這樣可以更容易地立即診斷任何編程問(wèn)題。如果您需要拆焊和重新焊接組件,則無(wú)需整塊電路板的混亂。我的第一個(gè)完成的電路板有幾個(gè)問(wèn)題,需要我拆卸和更換組件才能找到問(wèn)題所在。雖然我解決了這些問(wèn)題并且董事會(huì)工作了,但它看起來(lái)確實(shí)有點(diǎn)像最后的狗晚餐,而不是我們努力為每個(gè)完成的項(xiàng)目提供的米其林星級(jí)大餐。

首先,回流所有 SMD:U1、U36、U37、U25、Q6、SW18、D1、D2、LED2、LED4、LED5、LED6、C1、C2、C3、C4、C5、C6、C7、C8、C9 , C12, C13, C14, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13。完成后,目視檢查焊點(diǎn)是否良好且無(wú)焊橋。使用放大鏡或數(shù)碼顯微鏡??偸怯幸恍?ATmega 328P-AU 引腳之間經(jīng)常有橋接,應(yīng)該使用一些拆焊編織帶將其吸起來(lái)。一旦我們滿意了,我們就可以通過(guò) ICSP 接頭進(jìn)入下一階段的微控制器編程。

avrdudesssmall_rSOtN6kQgI.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

女主播

檢查是否連接到您的 ATmega 328P。如果一切順利,至少你的 MISO、MOSI、RST、SCK 和你的 ICSP 到微控制器的電源引腳是好的。

檢查保險(xiǎn)絲和鎖定位的當(dāng)前狀態(tài)。這些保險(xiǎn)絲的出廠默認(rèn)值通常不是我們想要的。在這里,需要將它們?cè)O(shè)置為該項(xiàng)目的要求。小心地重新編程它們,因?yàn)殄e(cuò)誤的設(shè)置可能會(huì)使微控制器變磚,并使其難以再次輕松正常化。

將 ATmega 配置為使用 16MHz 的外部晶體振蕩器,預(yù)留引導(dǎo)加載程序空間、掉電檢測(cè)、啟動(dòng)延遲、引導(dǎo)復(fù)位引腳等。參考參考書(shū)目部分,了解 ATmega 的數(shù)據(jù)表和配置四組熔絲的其他資源。

低熔絲:對(duì)于 CCKDIV8、CKOUT、SUT 和四個(gè) CKSEL 位。

高熔斷器:用于帶 BOOTRST 的 RSTDISBL、DWEN、SPIEN、WDTON、EESAVE 和 BOOTSZ。

擴(kuò)展保險(xiǎn)絲:用于 BOD 級(jí)別。

鎖定位:限制對(duì)程序存儲(chǔ)器的訪問(wèn)。

我使用類似于以下值的值為此項(xiàng)目設(shè)置保險(xiǎn)絲:

大號(hào)F7h

溴化氫

EFH

磅FFh

因?yàn)樾滦酒某鰪S默認(rèn)值通常是:

長(zhǎng) 62 小時(shí)

H D9h

EFFh

磅FFh

(除其他事項(xiàng)外,微控制器保險(xiǎn)絲設(shè)置為使用其內(nèi)部 RC 振蕩器、將時(shí)鐘除以 8、禁用掉電檢測(cè)等。)

警告:RSTDISBL、SPIEN、DWEN 保險(xiǎn)絲和鎖定位有可能使 ATmega 芯片變磚,或者至少使芯片很難再次使用。因此,在單擊“寫(xiě)入”按鈕之前,請(qǐng)務(wù)必仔細(xì)檢查您的保險(xiǎn)絲設(shè)置值。

- 一旦建立了與微控制器及其保險(xiǎn)絲組的通信,我們就可以加載草圖了。同樣,有多種方法可以做到這一點(diǎn),盡管我發(fā)現(xiàn)在這里使用 Arduino IDE 與相同的 USBasp ICSP 編程器和出色的 MiniCore Arduino 內(nèi)核是實(shí)用的。一旦在 IDE 的板管理器中配置,它就允許對(duì)許多 ATmega 微控制器進(jìn)行編程(包括現(xiàn)在有時(shí)在 Arduino 板上使用的 ATmega 328PB 版本)。該內(nèi)核使用自定義版本的 Optiboot,這是一種節(jié)省空間且比常規(guī)引導(dǎo)加載程序更高效的替代方案。

在 IDE 的板管理器中設(shè)置 MiniCore 后,我們可以在“工具”中選擇我們的 ATmega 328P 并檢查其選項(xiàng)。程序員當(dāng)然應(yīng)該設(shè)置為USBasp(MiniCore)。我可以選擇將引導(dǎo)加載程序上傳到內(nèi)存,并激活 USB 端口,以便以后通過(guò)串行 USB-FTDI 端口更新草圖。這會(huì)在打開(kāi)時(shí)產(chǎn)生 2 秒的延遲。在此期間,引導(dǎo)加載程序被調(diào)用并等待任何草圖上傳。該串口也用于在 115200 波特率下進(jìn)行調(diào)試。我們也可以選擇不上傳引導(dǎo)加載程序并取消串行上傳草圖。不會(huì)有 2 秒的延遲,因?yàn)榇a會(huì)立即開(kāi)始運(yùn)行。任何草圖上傳都只能使用 ICSP 完成。

最初嘗試上傳 Blink 草圖。在 Arduino IDE 首選項(xiàng)部分啟用詳細(xì)模式是一個(gè)很好的策略。像這樣,可以看到編譯和上傳代碼期間發(fā)生的事情的詳細(xì)信息。Blink sketch 小巧、簡(jiǎn)單并且可以快速上傳。微控制器端口 B3 上的 LED 可用于查看 Blink 草圖是否與電路板一起工作。這應(yīng)該在您的 Blink 代碼中定義為數(shù)據(jù)引腳 11。它是位于 328P 微控制器引腳 15 上的紅色 Fan-A 警告 LED。順便說(shuō)一下,這個(gè) LED 也連接到 ICSP 端口的 MOSI 線上,因此可以向我們顯示在線串行編程活動(dòng)何時(shí)發(fā)生。

現(xiàn)在項(xiàng)目的微控制器端已經(jīng)配置和測(cè)試,PCB 可以通過(guò)手工焊接剩余的通孔組件來(lái)完成。

最后,可以將風(fēng)扇控制器草圖上傳到板上并測(cè)試其所有功能。

示例使用

我在以下示例中使用了風(fēng)扇控制器。我為每個(gè)應(yīng)用程序調(diào)整了風(fēng)扇速度溫度斜率。它確保足夠的冷卻和可接受的噪音水平。

天線假負(fù)載

隨著便宜的 50 歐姆陶瓷電阻器的出現(xiàn),我找到了一些時(shí)間來(lái)構(gòu)建一個(gè)高功率虛擬負(fù)載。它非常適合測(cè)試 HF 收發(fā)器。它使用 250N50F 氮化鋁 (AlN) 陶瓷電阻器。替代品包括氧化鈹 (BeO) 電阻器。這些都是以前使用過(guò)的組件。被中國(guó)一些有進(jìn)取心的貿(mào)易商從報(bào)廢設(shè)備中救出。

警告:數(shù)據(jù)表規(guī)格有所不同,但它們可以通過(guò)正確的散熱和冷卻來(lái)消耗大量功率。有些據(jù)說(shuō)高達(dá) 250W 或 100degC,以先到者為準(zhǔn)。這些評(píng)級(jí)似乎過(guò)于慷慨。

load5small_w45qNOLNGj.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 7

您應(yīng)該管理應(yīng)用于負(fù)載的“功率時(shí)間:休息時(shí)間”比率。更多的功率在更多的時(shí)間意味著更高的溫度,因此需要更多的冷卻時(shí)間。

大型散熱器與雙風(fēng)扇形式的智能冷卻解決方案相結(jié)合是理想的選擇。風(fēng)扇控制器板安裝在該封裝的一端。陶瓷電阻器用螺栓固定在散熱器上,散熱器本身夾在兩個(gè)冷卻風(fēng)扇之間。DS18B20 溫度傳感器被夾在與散熱器直接接觸的位置。您可以使用一些氧化鋅導(dǎo)熱膏作為很好的措施。我用的尿布霜基本上和我手邊的一樣。

dummy_hf_M8fsF9CbQn.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

整個(gè)高頻的 SWR

工業(yè)電腦

我討厭噪音。我使用裝有 macOS 的 Mac Mini 和裝有 Windows 的工業(yè) PC。既不發(fā)出任何聲音,也完全保持沉默。然而,很快就會(huì)發(fā)現(xiàn),運(yùn)行 Windows 的無(wú)風(fēng)扇工業(yè) PC 可能會(huì)發(fā)熱很多。盡管被有效地安置在一個(gè)大的散熱器盒中,但缺乏氣流意味著它的溫度在執(zhí)行某些任務(wù)時(shí)確實(shí)會(huì)大幅升高。這從來(lái)都不好。

我使用風(fēng)扇控制器和兩個(gè)風(fēng)扇來(lái)促進(jìn) PC 上方的氣流。配置溫度/風(fēng)扇速度曲線,充分降低其溫度,但仍不會(huì)產(chǎn)生令人分心的風(fēng)扇噪音。溫度傳感器安裝在與 PC 外殼直接接觸的位置。

pc10small_GXXNiIOq50.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 7

線性電源單元

我的 Microset PT-135 35A 電源體積大、堅(jiān)固且無(wú)風(fēng)扇。它使用線性調(diào)節(jié)并且過(guò)度設(shè)計(jì)。它在 RF 和棚屋中都提供了美妙的靜音效果。它的后部有一個(gè)大散熱片用于散熱。我決定添加一些主動(dòng)冷卻。并不是說(shuō)它需要它。只需一點(diǎn)幫助即可幫助氣流。

psu5small_79rQzSMbfI.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 4

這里使用了屏蔽版本。配置低風(fēng)扇速度曲線可將任何風(fēng)扇噪音保持在無(wú)法檢測(cè)到的水平。它緊貼在散熱器鰭片的背面。另一種解決方案是使用小磁鐵固定在外殼上。溫度傳感器安裝在電路板上方的空氣中,僅檢測(cè)環(huán)境溫度。它只會(huì)在炎熱的天氣激活風(fēng)扇。

注意事項(xiàng)

不合規(guī)。不是商業(yè)的。對(duì)于工業(yè)應(yīng)用,Arduino 硬件和代碼通常缺少保護(hù)控制器和相關(guān)設(shè)備所需的保護(hù)電路。商業(yè)和工業(yè)系統(tǒng)將考慮許多潛在的安全和環(huán)境因素。它們將具有許多安全功能。Arduino 實(shí)際上只是一個(gè)原型設(shè)計(jì)平臺(tái),不應(yīng)被視為兼容或商業(yè)化。盡管如此,許多初始項(xiàng)目在經(jīng)過(guò)多次測(cè)試和重新設(shè)計(jì)后已獲得工業(yè)認(rèn)可。

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)