需要給房間通風(fēng)嗎?本文將向您展示我是如何制作一個(gè)繼電器操作的 GPS 定時(shí)風(fēng)扇來排出我船艙內(nèi)的潮濕空氣。它由 PIC16F628A 控制并具有 LCD。
讓空氣流動(dòng)
在幾乎沒有通風(fēng)的小房間里,空氣往往會(huì)停滯不前。如果空氣有點(diǎn)潮濕,你肯定會(huì)在某些地方有霉菌和真菌。
霉菌和真菌存在于自然界中,它們是分解樹葉、木材和其他植物碎片所必需的。因?yàn)槲业拇镉泻芏嗄绢^,我肯定會(huì)有霉菌和真菌。我無法阻止它們進(jìn)來,但我可以采取一些措施來盡量保持我船內(nèi)的環(huán)境對(duì)霉菌和真菌不利。
至少有兩種方法可以解決這個(gè)問題。一種方法是按時(shí)進(jìn)行清洗和清潔。現(xiàn)在,這有多有趣?作為一個(gè)極客,我把一些東西變成了書呆子:一個(gè)風(fēng)扇,它在固定的、定時(shí)的基礎(chǔ)上循環(huán)和排出潮濕的空氣。
設(shè)計(jì)系統(tǒng)
我希望系統(tǒng)執(zhí)行以下操作:
循環(huán)空氣
以穩(wěn)定的間隔自動(dòng)打開/關(guān)閉
從汽車電池運(yùn)行
包含一個(gè)電池充電器為電池充電
包含顯示時(shí)間和其他信息的顯示器
要制作這樣一個(gè)系統(tǒng),我需要以下部分:
12v風(fēng)扇
一個(gè)微控制器
一個(gè) 12v 電池和一個(gè) 12v 電池充電器
2個(gè)繼電器,跟蹤時(shí)間和螺絲端子的東西。
其他零件,根據(jù)下面的零件清單
我希望風(fēng)扇每小時(shí)運(yùn)行五分鐘。這將在軟件中進(jìn)行硬編碼。
該設(shè)置將使用汽車電池運(yùn)行。我的風(fēng)扇額定電壓為 12v 4.5A。為確保電池始終處于頂部充電狀態(tài),我將其連接到電池充電器。為確保風(fēng)扇運(yùn)行時(shí)電池充電器不會(huì)過載,我將在風(fēng)扇運(yùn)行時(shí)讓系統(tǒng)“斷開”充電器。一個(gè)繼電器將操作風(fēng)扇,另一個(gè)繼電器將操作電池充電器。風(fēng)扇運(yùn)轉(zhuǎn)時(shí),電池不充電,風(fēng)扇不運(yùn)轉(zhuǎn)時(shí),電池充電。
為了跟蹤時(shí)間,我使用了 GPS 模塊。在這個(gè)項(xiàng)目中,我將使用 Skylab SKM53 系列模塊 (PDF)。該單元每秒通過 UART 發(fā)送幾個(gè) NMEA 語(yǔ)句。數(shù)據(jù)表建議在 RXD 和 TXD 上都使用 10K 上拉電阻。這將增加串行數(shù)據(jù)的穩(wěn)定性。我沒有這樣做,我沒有注意到任何不穩(wěn)定。我可能很幸運(yùn)。在數(shù)據(jù)表的同一頁(yè)上,它說應(yīng)該添加合適的去耦電容器。10uF 電解和 0.1uF 陶瓷。當(dāng)我為電路制作面包板時(shí),我只使用了 0.1uF 陶瓷。
Skylab 數(shù)據(jù)表 (PDF)的屏幕截圖。
我正在使用“RMC”句子來獲取時(shí)間。RMC 語(yǔ)句的示例如下:
$GPRMC,075747.000,A,2233.89990,N,11405.3368,E,3.9,357.8,260210,,,A*6A
$GPRMC 之后的第一個(gè)數(shù)字是時(shí)間。在此示例中,時(shí)間為 07:57:47。我們將需要這些信息。
接下來我們需要的是告訴我們 GPS 模塊是否具有有效定位的前綴。在上面的示例中,它是三個(gè)零之后的大寫字母 A。
“A”表示有效修復(fù),“V”表示無效修復(fù)。在我的軟件中,我檢查了一個(gè)有效的修復(fù)程序。這些字母區(qū)分大小寫。
為了構(gòu)建項(xiàng)目,我喜歡制作框圖。通過這種方式,我“想象”了我想做的事情。
在上面的框圖中,我將所有內(nèi)容拆分為各自的塊。如果我需要對(duì)原理圖或電路進(jìn)行故障排除,這也很有幫助。
硬件
原理圖是基于框圖。我已經(jīng)復(fù)制了框圖中的所有塊,以反映電路中的組件及其連接。
在 LM7805 穩(wěn)壓器的數(shù)據(jù)表中,聲明對(duì)于標(biāo)準(zhǔn)應(yīng)用,您只需要輸入引腳上的 0.33uF 和輸出引腳上的 0.1uF。那么為什么我要使用不同的值上限和一些額外的值呢?我正在使用它們來平滑輸入和輸出。這可能有點(diǎn)太多了,但我對(duì)這種調(diào)節(jié)器配置有很好的體驗(yàn)。如果您不使用任何電容器,穩(wěn)壓器可能會(huì)開始振蕩。LM7805 穩(wěn)壓器是一種老式的線性穩(wěn)壓器。為什么不使用現(xiàn)代開關(guān)穩(wěn)壓器?開關(guān)穩(wěn)壓器比線性穩(wěn)壓器效率高得多。這就是我周圍的東西。
只需使用一個(gè)繼電器,我就可以節(jié)省零件和空間。我想要兩個(gè)繼電器。使用兩個(gè)繼電器的原因之一是我希望在充電器被切斷和風(fēng)扇啟動(dòng)之間有一點(diǎn)時(shí)間框架。
我已將 BOM.ULP 中的部件列表導(dǎo)入 OpenOffice Calc 并刪除了一些不必要的列:
原理圖中沒有顯示的是我的保險(xiǎn)絲。我在風(fēng)扇正極線上有一個(gè) 12v 8A 額定保險(xiǎn)絲,我在電池充電器正極線上也有同樣的保險(xiǎn)絲。
軟件
您可以從本文末尾的下載鏈接下載 C 源代碼。代碼注釋很好,但我會(huì)在這里做一些額外的亮點(diǎn)。
當(dāng)我制作一個(gè)程序時(shí),我遵循一定的結(jié)構(gòu)。該圖顯示了結(jié)構(gòu):
代碼首先包含必要的庫(kù),然后是配置位。在源代碼中包含配置位被認(rèn)為是一種良好的編程習(xí)慣。然后,查看您所做的工作并幫助其他人進(jìn)行故障排除會(huì)容易得多。此外,如果您在幾個(gè)月后接手一個(gè)項(xiàng)目,那么您會(huì)立即看到其中的內(nèi)容。
當(dāng)配置位沒問題時(shí),我繼續(xù)進(jìn)行定義。在這里,我定義了連接到電路的晶體速度。微控制器的端口也被定義。
接下來是變量:所有變量都在這里聲明。
現(xiàn)在是時(shí)候?qū)瘮?shù)進(jìn)行原型設(shè)計(jì)了。在這里,我列出了程序使用的所有功能。一些程序員認(rèn)為這是浪費(fèi)時(shí)間,但我喜歡它并保留它。如果您在主程序循環(huán)之后使用函數(shù)來構(gòu)建程序,這實(shí)際上是必要的。
接下來是功能。現(xiàn)在開始評(píng)論真的很重要。我通常在每個(gè)函數(shù)上都有幾行來說明該函數(shù)的一般作用。我還在函數(shù)內(nèi)注釋代碼行。
一個(gè)例子是這個(gè)項(xiàng)目中初始化 UART 端口的函數(shù):
// FUNCTION TO INIT THE UART PORT
void uart_init(void)
{
TXSTAbits.BRGH = 0; // high baud selection bit, 1=high, 0=low
TXSTAbits.SYNC = 0; // USART mode selection bit, 1=sync mode, 0=async mode
TXSTAbits.TX9 = 0; // 9-bit selection bit, 1=9-bit transmission, 0=8-bit transmission
RCSTAbits.CREN = 1; // Continous receive enable bit, 1=enable continous receive
/*
Calculate the SPBRG with 16MHz crystal
16MHz
16000000 /9600 = 1666.6666
1666.6666 / 64 = 26.0416
26.0416 - 1= 25.0416
25.041 = 25
*/
SPBRG = 25; // 9600-n-8-1
PIE1bits.RCIE = 1; // USART receive interrupt enable bit, 1=enable
RCSTAbits.SPEN = 1; // Serial port enable bit, 1=serial port enable
TXSTAbits.TXEN = 1; // transmit enable bit, 1=transmit eanble
return;
}
您將看到第一行解釋該函數(shù)的作用的注釋行。然后所有的代碼行都被注釋了,所以我知道發(fā)生了什么。
當(dāng)所有功能都到位后,就該主程序了。主程序從幾個(gè)語(yǔ)句開始,然后進(jìn)入一個(gè)永遠(yuǎn)運(yùn)行的循環(huán)。
結(jié)論
在這篇文章中,我嘗試使用一個(gè)可以吹動(dòng)和循環(huán)空氣的風(fēng)扇,讓我的船上的環(huán)境對(duì)霉菌和真菌有害。風(fēng)扇連接到從機(jī)艙伸出的管道。我使用 GPS 模塊來跟蹤時(shí)間,并使用兩個(gè)繼電器來打開/關(guān)閉風(fēng)扇。為了確保電池保持充電狀態(tài),我使用了另一個(gè)繼電器來打開和關(guān)閉電池充電器。
我把它留給讀者,讓這個(gè)電路更上一層樓并顯示日期。
為什么要使用 GPS 模塊?我本可以將微控制器用作簡(jiǎn)單的計(jì)時(shí)器。然后我必須制作某種界面來設(shè)置時(shí)間。或者我會(huì)很高興它運(yùn)行而不考慮實(shí)時(shí)。它將每小時(shí)運(yùn)行 5 分鐘。使用 GPS,我可以通過編程方式將其設(shè)置為每小時(shí)運(yùn)行五分鐘。
圖片
-
lcd
+關(guān)注
關(guān)注
34文章
4431瀏覽量
167809 -
gps
+關(guān)注
關(guān)注
22文章
2898瀏覽量
166338 -
PIC16F628A
+關(guān)注
關(guān)注
1文章
8瀏覽量
10065
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論