Windows on Device 項目實踐 4 - 智能風扇制作


在前面的文章中,我們已經學習並且利用Intel Galileo開發板和Windows on Device制作了火焰報警器、感光燈和PWM調光燈。在這個項目中,我們來利用溫度傳感器和直流電機,完成一個簡單的智能風扇的制作。

1. 溫度傳感器

LM35 是很常用且易用的溫度傳感器元件,在傳統的Arduino項目中,只需要一個LM35元件和一個模擬接口就可以實現,難點在於算法上的將讀取的模擬值轉換為實際的溫度。但是針對Galileo就不行,因為Galileo對噪聲和波動更加敏感,需要額外添加電阻和濾波電容。詳細請參考下面的硬件連接一節。

2. 直流電機

這里使用普通的5V供電的直流電機就可以,關鍵在於,Galileo的驅動能力有限,需要使用一個三極管來驅動直流電機。詳細可以參考下面的硬件連接一節。

3. 元器件和硬件連接

這次實踐項目需要使用的元器件有:

•溫度傳感器:LM35 一個

•5V直流電機:一個

•電阻:220歐姆、330歐姆各一個

•二極管:一個

•三極管:9013 一個

•連接線:若干

•面包板:一塊

1)溫度傳感器的連接

LM35有三個引腳,分別是GND、Vout和Vs,連接地、Galileo的A0和5V引腳。這里需要在Vout輸入和地之間加入一個220歐姆的電阻,同時需要在LM35電源輸入的引腳附近加一個0.1uF的瓷片電容,用於濾除電源的干擾。

2)直流電機的連接

三極管9013的集電極上接直流電機,用Galileo的數字引腳11來控制三極管的基極,射級直接接地。需要注意的是,在直流電機兩端放一個二極管,用於在斷電后,剩余能量的釋放。

最終,其硬件連接如下圖所示。

image

image

 

 

 

4. 實驗原理

Galileo的A0口不斷采集溫度,對返回值進行判斷,如果超過一定范圍,就開啟直流電機。如果溫度沒有超過設定值,就關閉直流電機。其流程如下。

image

 

5. 源代碼解析

#include "stdafx.h"
#include "arduino.h"

int _tmain(int argc, _TCHAR* argv[])
{
    return RunArduinoSketch();
}

int MOTOR_PIN = 11; //定義數字接口11 控制直流電機
int TEMP_PIN = A0; //定義模擬接口0 連接LM35 溫度傳感器

void init_motor()
{
    pinMode(MOTOR_PIN, OUTPUT);
    analogWrite(MOTOR_PIN, 0);
}

void setup()
{
    // TODO: Add your code here
    init_motor(); // 初始化直流電機控制引腳
}

// the loop routine runs over and over again forever:
void loop()
{
    // TODO: Add your code here
    int val;//定義變量
    int dat;//定義變量
    val = analogRead(TEMP_PIN);// 讀取傳感器的模擬值並賦值給val
    dat = (125 * val) >> 8;//溫度計算公式   
    Log(L"Tep:");
    Log(L"%d", dat);//顯示dat 變量數值
    Log(L"C\r\n");
    if (dat > 21)   //溫度判斷,根據實際情況設定
    {
        Log(L"Start DC Motor\r\n");
        analogWrite(MOTOR_PIN, 100);
        delay(3000);
    }
    else
    {
        Log(L"Stop DC Motor\r\n");
        analogWrite(MOTOR_PIN, 0);
        delay(3000);
    }

}

 

6. 調試結果

啟動Galileo,利用TelNet建立連接,然后點擊調試。程序就會通過網口下載到Galileo上。在溫度沒有達到設定的閾值之前,風扇不轉,溫度超標以后,風扇工作。調試圖片如下。

IMG_0575


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM