宜昌老张

Arduino控制下的温控LEGO风扇

0
阅读(5724)

   

   现在网络上流传的Arduino创意作品大都是纯电子器件作品,其实Arduino应用在机器人上是一个重要方向,如何给Arduino电子积木创意工具找到一个百搭性的机械平台,使Arduino的机器人应用可行性更好是一个需要思考的问题。

    淘宝上某些公司和机械加工高手做了一些机械结构件配合Arduino应用,也可以做出很好的机器人作品,特别是多自由度机器人,但是这些机械结构件,每一个套件也只能完成一两个作品的创建,百搭性不够。而乐高套件是乐高(LEGO)是一家丹麦玩具公司,她有多个系列的产品,与机器人相关的是Mindstorms系列和Technic系列,这两个系列套件中的机械结构件都充分考虑到了机器人原型作品的搭建特点,而且她的结构件种类颇多,不需要任何借助任何工具,就可以通过双手创意出您希望的作品来。所以能不能把丰富的Arduino电子积木与百搭的LEGO机械积木结合,扩展Arduino的应用,使Arduino系统可玩性更高,是我近期研讨的重点。

    这次的温控风扇实验就是Arduino与LEGO结合的尝试,电控完全靠Arduino,机械完全靠LEGO,两者靠360度连续旋转舵机来接口。实验任务是:用手指温度捂热 LM35线性温度传感器,当Arduino控制器采集到的温度值超过20度时,给舵机发出驱动命令,舵机带动风扇旋转,如果手指移开传感器,传感器表面温度下降,则风扇停转。

     实验用到的Arduino设备来源于DFRobot官方淘宝店:http://item.taobao.com/item.htm?spm=1101*r1F.3-1mJ7Y.h-5h6gmz&id=3025295301&

       风扇在舵机带动下,旋转速度挺高的,但视频上传优酷后,由于被上传的视频好像进行了压缩,丢失了一些视频帧,所以高速旋转的风扇旋转起来显得不连贯,凑合着看吧!

Arduino程序:

 

#include <Servo.h> //声明伺服马达函数库
Servo myservo;  // 定义伺服马达对象

void setup()
{
 //Serial.begin(9600);   
  myservo.attach(9);  //初始化9号数字量引脚来控制马达
   //连续旋转的舵机, 执行myservo.write(90),舵机的速度可能不为0,
   //我手头的舵机,执行myservo.write(93),舵机的速度才为0。
   myservo.write(93);//舵机停转
}

void loop()
    int val;
    int dat;
    val=analogRead(0);//采集连接在0号模拟量引脚上温度传感器的数据;
    dat=0.488*val;//把从传感器采集的数据正比转换为温度值
    //Serial.println(dat);
    if(dat>20)//如果温度值大于20度
    {
      myservo.write(180);//舵机全速旋转
    }
    else//否则
    {
      myservo.write(93);//舵机停转
    }
    delay(500);//延时500ms
}
 
    由于普通舵机的安装孔位并不符合乐高机械结构件的特点,所以舵机输出轴与乐高结构件之间的传动链直接用齿轮机构,会出现因支撑齿轮轴的乐高结构件孔距不匹配,而导致无法安装齿轮机构的情况。使齿轮机构安装上了,也可能出现由于刚度不足,出现齿轮打齿或脱齿现象,所以我采用了下图所示的链轮机构,或者皮带轮机构,这样不仅可以解决传动链安装问题,而且由于两个传动轮之间被链条包起来了,所以传动刚度也得到了加强。
      如果想舵机输出轴直接用上齿轮机构,就需要专门的舵机乐高连接器,如mindsensors公司的舵机乐高连接器,网址:http://www.mindsensors.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=98