zoukankan      html  css  js  c++  java
  • 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 ");
        if (dat > 21)   //温度判断,根据实际情况设定
        {
            Log(L"Start DC Motor ");
            analogWrite(MOTOR_PIN, 100);
            delay(3000);
        }
        else
        {
            Log(L"Stop DC Motor ");
            analogWrite(MOTOR_PIN, 0);
            delay(3000);
        }

    }

    6. 调试结果

    启动Galileo,利用TelNet建立连接,然后点击调试。程序就会通过网口下载到Galileo上。在温度没有达到设定的阈值之前,风扇不转,温度超标以后,风扇工作。调试图片如下。

    IMG_0575

  • 相关阅读:
    YAML 语法小结
    小程序之脚本语言
    小程序WXML 使用小结
    微信小程序 js逻辑
    小程序开发1
    联想Y7000安装Ubuntu16.04/Win10双系统,wifi问题,显卡驱动和CUDA10安装
    VS2015中配置Eigen
    联想Y700安装显卡驱动和CUDA8.0
    php微信生成微信公众号二维码扫描进入公众号带参数
    Y7000 (1)安装ubuntu1604遇到的问题
  • 原文地址:https://www.cnblogs.com/dearsj001/p/WindowsOnDevice_4.html
Copyright © 2011-2022 走看看