加载中…
正文 字体大小:

玩转Arduino控制器——入门篇

(2013-01-17 11:22:51)
标签:

arduino

倾角

干簧管

智能

机器人基地

分类: 机器人入门教程
玩转Arduino控制器——入门篇
    上期为大家介绍了基于Arduino的互动电子入门套件,很多朋友一定对它产生了浓厚的兴趣,Arduino非常易于上手,其稳定通用的硬件模块、简洁实用的IDE(集成开发环境)、通俗易懂的程序代码、免费开源的网络素材......都成为吸引广大电子爱好者的亮点。
    那么,请大家跟随我的步伐一起完成两个Arduino入门学习的小制作:干簧管控制电机旋转、智能温控电风扇。相信通过我的介绍大家一定会对Arduino的入门学习豁然开朗。
制作一:干簧管控制电机旋转
    干簧管是什么呢?干簧管(图1)是一种磁敏的特殊开关,也称干簧继电器。它通常由两个或三个软磁性材料做成的簧片触点,被封装在充有惰性气体(如氮、氦等)或真空的玻璃管里,玻璃管内平行封装的簧片端部重叠,并留有一定间隙或相互接触以构成开关的常开或常闭触点。当永久磁铁靠近干簧管或者有绕在干簧管上的线圈通电形成的磁场使簧片磁化;那么,簧片部分就会被磁力吸引。当吸引力大于弹簧的弹力时,触点就会吸合;当磁力减小到一定程度时,触点被弹簧的弹力打开。随着时代发展,现在又新生出一种塑封干簧管,避免了传统玻璃干簧管易碎的缺点。干簧管比一般机械开关结构简单、体积小、速度高、工作寿命长;而与电子开关相比,它又有抗负载冲击能力强等特点,工作可靠性很高。当我们想启动采用干簧管的电路时,只需拿一小块磁钢(图2)靠近干簧管就可以了。
玩转Arduino控制器——入门篇
图1
玩转Arduino控制器——入门篇

图2
    干簧管又是怎么控制电机旋转的呢?其实原理很简单,使用Arduino控制器对干簧管触点的开合状态进行判断,如果干簧管闭合则控制电机旋转,干簧管断开则控制电机停转。当然,为了便于观测电机的旋转动作,我们再给电机配一顶帽子——扇叶。
    原理弄懂啦,听上去还不错吧!是不是想试着做一个这样的装置呀,接下来让我动手开始做吧…
准备好以下必备材料(图3):
    1N4007二极管一个、10K电阻一个、干簧管一个、IRF520场效应管一个、LM35温度传感器一个、磁钢一块、塑料风扇一个、电机一个、Arduino控制器一个、USB连接线一条、面包板一块、面包板线若干。若无实验器材的朋友可以在电子制作淘宝店http://elediy.taobao.com购买。
玩转Arduino控制器——入门篇
 图3

电路连接图(图4):
玩转Arduino控制器——入门篇

图4
接下来我们按照图4的连接图开始装配:
第一步:将风扇与电机组装好(图5),电机两端要接上引线。
玩转Arduino控制器——入门篇
图5
第二步:在面包板上按连接图所示的位置插好各个元器件。这里要说明一下:驱动电机旋转需要几十毫安至上百毫安的电流,而Arduino控制器的接口最大仅仅能够提供20mA左右的电流,这样小的电流是无法驱动电机旋转的。所以我们要用间接驱动的方式,通过一片IRF520场效应管来扩大驱动电流,这样才能让电机正常工作。
此外,电机两端反接了一个1N4007二极管,其目的是为了保护IRF520,因为电机停转的过程中会产生比较高的反向电动势,为了避免这个电动势击穿IRF520,故在电机两端反接一个二极管作为保护。
第三步:按照上图所示的连接图插接面包板,用红色的面包板线连接所有的5V电路,用黑色的面包板线连接所有的GND电路。信号线则可用橙色或黄色的线连接(图6)。这样的好处是检查电路非常方便,一目了然不易出错,希望大家能够培养这样的电路连接习惯,对于提高以后的电子制作效率和成功率有非常大的帮助。
玩转Arduino控制器——入门篇
图6 干簧管电路实物连接图(注:橙色为信号线)
大功告成,硬件安装完毕,是不是很简单呀?不过要想让它工作起来,我们还需要给硬件加上灵魂——程序。
搭建集成开发环境:
    我们要在计算机上安装一个软件,名字叫做Arduino IDE。Arduino IDE可以在Arduino官网http://arduino.cc/en/ 下载,该软件集编写、下载、串口监视器于一体的集成开发环境,完全开源免费,它还是个绿色软件,解压后可以直接运行,没有任何复杂的安装步骤,大家甚至可以把它拷进U盘,随时随地玩转Arduino!
    麻雀虽小,五脏俱全,从简易的流水灯到复杂的机器人,都有Arduino IDE的身影,全平台兼容是它的另一优点,无论你是用微软操作系统还是苹果操作系统,都没问题! 
    大家刚刚下载到的Arduino IDE可能是英文界面的,Arduino IDE支持多种语言,因此我们可以切换到中文界面(图7),方法是:打开Arduino IDE→“File”菜单→“Perferences”→“Editor language”下拉菜单中选择“简体中文Chinese Simplified”→重启Arduino IDE。
玩转Arduino控制器——入门篇
图7

驱动安装与配置软件:
    软件装好后,我们用USB线连接Arduino控制器到计算机。第一次连接Arduino控制器操作系统会提示找不到硬件,打开计算机的“设备管理器”,能够看到带叹号的未知设备玩转Arduino控制器——入门篇,单击右键选择“更新驱动程序软件(P)”,选择“浏览计算机以查找驱动程序软件(R)”(图8),点击“浏览(R)”选择“计算机”→“D:”盘→“arduino-1.0.1”文件夹→选中“drivers”文件夹(图9),按“确定”键,点击“下一步”,如果弹出windows安全警告,则点击“始终安装此驱动程序软件”(图10),稍等片刻,安装成功。在“设备管理器”中打开“端口(COM和LPT)”项目,此时应能够看到“Arduino UNO R3(COM3)”(图11),注意,这里不一定是COM3,也有可能是COM2、COM4、COM5等等,先把它记下来。
    打开Arduino IDE,选择“工具”菜单→“串口”子菜单,选中刚才记下来的“COM3”(图12)。最后还须配置目标电路板型号,“工具”菜单→“板卡”子菜单→选中“Arduino Uno”(图13)。
玩转Arduino控制器——入门篇图8玩转Arduino控制器——入门篇图9玩转Arduino控制器——入门篇图10
玩转Arduino控制器——入门篇图11玩转Arduino控制器——入门篇图12玩转Arduino控制器——入门篇图13
软件编译:
    我们把下面的程序代码复制到Arduino IDE中,我们先校验一下,点击软件界面上的校验按钮玩转Arduino控制器——入门篇,稍后如果显示编译完毕玩转Arduino控制器——入门篇则表示程序没有问题。现在点击下载按钮玩转Arduino控制器——入门篇,稍等片刻,IDE视窗下面的窗口显示下载完毕玩转Arduino控制器——入门篇,说明程序已经下载到控制器中。
程序部分:
#define FAN_pin 9   //电机接口
#define Magnetic_pin 5  //干簧管接口
void setup() {  //此函数上电只运行一次
  pinMode(Magnetic_pin,INPUT);  //设定干簧管接口为输入状态
}
void loop() {  //此函数循环运行
  if(digitalRead(Magnetic_pin)  == LOW) {  //当有磁铁靠近干簧管
    digitalWrite(FAN_pin,HIGH);  //电机旋转
  }
  else {  //否则
    digitalWrite(FAN_pin,LOW);  //电机停转
  }
}
    这段程序代码很简单,前两行代码使用宏定义(#define)定义了硬件连接的接口,setup()函数在板子上电的时候只执行一次,我们在这里将干簧管接入的引脚定义为输入状态pinMode(Magnetic_pin,INPUT)。而loop()函数在setup()函数执行完后便一直循环运行,在这里我们只让Arduino做一件事:如果(if)干簧管所连接的接口digitalRead(Magnetic_pin)读回来的电平是低电平(== LOW),则控制连接风扇的接口digitalWrite (FAN_pin,HIGH)电平为高,电机旋转;否则(Else),控制连接电机的接口digitalWrite(FAN_pin,LOW)电平为低,电机你就老老实实的歇着吧!
    制作到这里,我们的干簧管控制电机旋转就全部完工啦
看看我们最终的实验效果吧:
    哎?电机怎么不转呢(图14)!拿块小磁钢试试,哈哈!电机转啦(图15),还伴随着丝丝凉风呢!
玩转Arduino控制器——入门篇
图14
玩转Arduino控制器——入门篇
图15
大家觉得太easy了?那我们再趁热打铁、开大马力加加油吧!
制作二:智能温控风扇
    我们来设想制作一个这样的风扇:当温度高时电机旋转,温度低时电机停转的智能温控风扇。看到这里大家是不是若有所思呢?这个小制作和刚完成的干簧管控制电机有着一曲同工之妙呀,都是要控制电机,但似乎缺少些什么?要实现对温度的感知这个功能,首先要找一个能够测量温度的元器件。LM35温度传感器就很不错,它具有很高的工作精度和较宽的线性工作范围,该器件输出电压与摄氏温度成线性比例,每升高1℃,输出电压增加10mV。LM35 无需外部校准或微调,便可提供±1/4℃的常用室温精度,用在这个智能温控风扇上足矣。所以只要在原来的电路基础上添枝加叶我们就可以轻松地得到这个智能的温控风扇啦!
开始动手吧!
电路连接图(图16):
玩转Arduino控制器——入门篇
图16
    利用刚才连接好的干簧管控制电机旋转电路,对照图16的连接图我们只需要再在面包板上插一个LM35和一条黄色信号线就搞定了(图17)!黄色面包板线一端连接LM35中间脚,一端连接Arduino控制器的ANALOG IN模拟端口A5(图18)。
玩转Arduino控制器——入门篇
图17
玩转Arduino控制器——入门篇
图18
程序部分
把下面的程序代码复制到Arduino IDE中,重复实验一的步骤完成编译下载。
#define FAN_pin 9 //风扇接口9
#define Magnetic_pin 5  //干簧管接口5
#define LM35_pin 1 //LM35温度传感器接口 1
#define LED_pin 13 //LED指示灯,温度高于阈值时点亮
#define High_level 28 //设定高温阈值
int LM35_buffer = 0; //温度值缓存
void setup() {
  pinMode(Magnetic_pin,INPUT); //设定干簧管接口为输入状态
  pinMode(LED_pin, OUTPUT); //设定LED指示灯接口为输出状态
}
void loop() {
  LM35_buffer = ( 5.0 * analogRead(LM35_pin) * 100.0) / 1024.0; //读取LM35温度
  if(LM35_buffer > High_level) {   //如果温度高于阈值
    digitalWrite(LED_pin, HIGH);   //点亮LED灯
  }
  else {
    digitalWrite(LED_pin,LOW);  //熄灭LED灯
  }
  if((digitalRead(Magnetic_pin) == LOW) && (LM35_buffer > High_level)){
//如果有磁铁靠近干簧管且温度高于高温阈值
    digitalWrite(FAN_pin,HIGH);  //电机旋转
  }
  else {    //否则
    digitalWrite(FAN_pin,LOW);  //电机停转
  }
}
    我们在刚才写好的程序基础上添加LM35接口和LED指示灯接口的宏定义语句,还对高温阈值做了宏定义(#define High_level 28)。跟之前的程序流程类似,在setup()函数中添加一句初始化LED指示灯的语句,令连接LED指示灯的引脚为输出状态。在loop()函数中首先用analogRead(LM35_pin)函数读取LM35中间引脚的电压值,读出的数据缓存在LM35_buffer变量中。如果温度高于阈值,则点亮LED指示灯,否则熄灭LED指示灯。接下来如果有磁铁靠近干簧管并且温度高于阈值,则驱动电机旋转,否则控制电机停转。
完成效果图:
    Arduino控制器上板载的LED指示灯用来指示温度状态,LED灯亮起表示当前室温大于高温阈值。
玩转Arduino控制器——入门篇
图19
玩转Arduino控制器——入门篇
图20
当磁钢靠近干簧管,且温度达到高温阈值时LED亮,风扇转动(图19);温度低于高温阈值时LED不亮,风扇不转(图20)。
玩转Arduino控制器——入门篇
图21
玩转Arduino控制器——入门篇
图22
    当磁钢远离干簧管,无论温度是否超过限定值,风扇都不转(图21和图22)。
这两个制作的实际应用是什么呢?
    比如可以用在类似的恒温箱控制系统中,把干簧管装在门上,当拉开门时停止风扇的动作来保障人身安全。在这里只是抛砖引玉的一种说法,更多的创意灵感还要看各位读者朋友发掘了。
结束语:
    通过这次实验,大家是不是更加熟悉Arduino了呢?是不是还想再做点什么?别急,慢慢来,我将在下一期玩转Arduino控制器-中级篇中带领大家制作更多酷炫好玩的作品!——转自《电子制作》2013年第1期

0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有