会移动的向日葵基于Arduino的小型太阳能收集装置.docx

上传人:b****5 文档编号:8769147 上传时间:2023-02-01 格式:DOCX 页数:19 大小:1.78MB
下载 相关 举报
会移动的向日葵基于Arduino的小型太阳能收集装置.docx_第1页
第1页 / 共19页
会移动的向日葵基于Arduino的小型太阳能收集装置.docx_第2页
第2页 / 共19页
会移动的向日葵基于Arduino的小型太阳能收集装置.docx_第3页
第3页 / 共19页
会移动的向日葵基于Arduino的小型太阳能收集装置.docx_第4页
第4页 / 共19页
会移动的向日葵基于Arduino的小型太阳能收集装置.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

会移动的向日葵基于Arduino的小型太阳能收集装置.docx

《会移动的向日葵基于Arduino的小型太阳能收集装置.docx》由会员分享,可在线阅读,更多相关《会移动的向日葵基于Arduino的小型太阳能收集装置.docx(19页珍藏版)》请在冰豆网上搜索。

会移动的向日葵基于Arduino的小型太阳能收集装置.docx

会移动的向日葵基于Arduino的小型太阳能收集装置

会移动的“向日葵”——基于Arduino的小型太阳能收集装置

导读:

 前言:

现代社会越来越讲究资源的节约,随着煤、石油、天然气这些不可再生能源越来越稀缺,在不久的将来,绿色能源势必会成为主流能源。

所谓绿色能源,也就是可再生能源,包括风能、太阳能、水能、生物能等。

其中太阳能更是越来越得到人们的青睐,在人们的生活工作..

 

前言:

    现代社会越来越讲究资源的节约,随着煤、石油、天然气这些不可再生能源越来越稀缺,在不久的将来,绿色能源势必会成为主流能源。

所谓绿色能源,也就是可再生能源,包括风能、太阳能、水能、生物能等。

其中太阳能更是越来越得到人们的青睐,在人们的生活工作中起着广泛的作用,太阳能发电就是其中最普遍的一种应用。

一般的太阳能收集装置都是固定在一个方向的,不能充分采集太阳能。

笔者制作了一款名为“向日葵”的太阳能收集装置,它的最大特点就是装有转动装置,4个在太阳能板周围的光传感器随时检测周围环境光的亮度,经过代码处理,加上底下舵机的旋转,就能让太阳电池能板始终对着光最强的方向。

放到太阳光下的效果,就是它始终会对着太阳的方向,这样就能保证最大限度地收集太阳能。

    笔者的太阳能收集装置基于Arduino制作,所用的元件都与Arduino兼容。

Arduino是一个开放源代码的硬件项目,最大的优势就是具有良好的开放性和扩展性。

用户在它的官网上可以随时免费下载电路图、源码和软件开发环境等,依据官方提供的PCB和SCH电路图,简化Arduino模组,来完成独立运作的微处理控制;也可以很方便地与传感器、各式各样的电子元件(红外线、超音波、热敏电阻、光敏电阻、伺服电机等)连接。

Arduino所用的编程语言类似C语言,但是结构更简单,更简洁易懂,对于机器人爱好者和电子知识尚欠缺的人群而言更容易上手。

    笔者使用DFRobot的Romeo控制器对小车平台做直接的电机控制。

首先准备好制作“向日葵”的材料,这里用到了4个光线传感器、2个舵机及固定支架、1块扩展板、1块控制板、1块多功能固定板、1部Rover5小车(将向日葵固定在小车上,方便全方位监测)、1块太阳能板,最后别忘了电源(7~12V)。

详细信息如表1所示。

  

     ①                                      ②

       

      

      ③                                         ④

            

        

      ⑤                                           ⑥

            

       

     ⑦                                            ⑧

               

        

 

         

 

      表1 所需器件参考信息

     

元件名称

功能

所需数目(个)

参考价格(元)

DFR0026环保模拟环境光线传感器

基于环保型光敏二极管的光线传感器,可以用来对环境光线的强度进行检测

4

10×4

2自由度DF15MG舵机云台

含两个舵机和1个支架,用于多自由度机械臂、监控云台、双足机器人、多足机器人等

1

259

多孔原型钣金板

多功能固定板,用于传感器、电机等固定

1

59

Xbee传感器扩展板V5

一个传感器扩展板,能使大部分传感器轻松地和Arduino控制板连接

1

75

DFRduinoRomeo328控制器

基于Arduino的实用控制器,该控制器集成了电机驱动、键盘、IO扩展板、无线数串等接口,可方便地控制2个直流电机

1

300

太阳能电池板

用于收集太阳能

1

50

路虎5履带小车

用于安装舵机,以进行全方位检测

1

188

1.2V充电电池

小车和Romeo控制器的电源

6

 

   

路虎(Rover)5履带小车

   路虎5履带小车与一般履带小车相比不同的地方是,可以根据路面情况的需要,调节前后轮的高度。

为了提高履带小车的越野性能及美观度,笔者将前后轮支架调节到了与地面形成15°左右夹角的位置。

   由于Romeo的工作电压在7~12v,并且履带小车的工作电压与Romeo控制器相近,所以使用了6节1.2V的充电电池作为电机和Romeo控制器的电源,当然,选用7.4V的锂电池也会是一种比较合适的选择。

 

制作过程

   准备好了上述材料就可以将这些元器件拼起来了,制作步骤如下。

1.将4个环境光线传感器呈“十”字形固定在多功能固定板的4个边上,这样做的目的是方便检测四周光线,尤其是在制作追光机器人时更体现了它的优势。

       

 

2.将2个舵机固定在一起。

这2个舵机分别控制横向和纵向的旋转,这里所用的舵机的旋转角度是从0°到180°的。

考虑到横向舵机在做太阳能收集器时不需要180°旋转,所以只要设定一定的偏角即可。

而纵向舵机因为要寻找光源,所以需要360°旋转,为此我将它安装在小车上,通过控制小车的运动来使舵机能全方位搜索光源。

         

 

 

3.将多功能板与舵机固定在一起。

            

         

 

 

4.将舵机与小车固定在一起。

          

 

5.将Xbee传感器扩展板插在DFRduinoRomeo328控制板上。

          

 

6.将DFRduinoRomeo328控制板固定到车上,然后将传感器和舵机的接口导线插到控制板的IO口上。

   注:

光传感器读取的是模拟信号,所以要将它们连接到扩展板的Analog口,0~5口可任意选择。

而舵机是数字输出,要连接到PWM输出端,板子上有注明。

写代码的时候要注意。

         

                                     

7.最后只要将一块太阳能电池板固定在多功能板上就可以了,这样一个小型的向日葵式的太阳能收集装置就做好了。

             

 

设计原理及效果

    4个光传感器的作用是寻找测试环境的最亮点,也就是太阳所在的位置。

经过测试,笔者所用的光传感器在光源变亮时,其值会相应减小。

所以只要找到这4个传感器所采集到的信号值的最小均值,那么也就找到光源最亮点的所在位置了。

再通过舵机的旋转加上电机控制,就可以扫描到周围光线的最亮点了。

    将它拿到室外,每隔10分钟,“向日葵”会做一次检测,找到太阳所在位置进行定位并开始采集太阳能。

如果加装将太阳能电池板采集到的电能输出到其他设备的功能,就会让“向日葵”变成很有实用价值的会移动的自动充电器。

 

示意图如下:

       

        

       

 

      

      

       

 

太阳能收集装置参考代码

#include   //一些库函数

#include

#include

ServoDF15MG1;

ServoDF15MG2;

intvala,valb,valc,vald,sum,mindata;

intaverage[25],pos2=0,i=1,no;

voidready()

{

 DF15MG2.write(0);

}

voidsetup()

{

  DF15MG1.attach(3);

  DF15MG2.attach(11);

  DF15MG1.write(70);

  DF15MG2.write(0);

  delay(1000);

  for(inti=0;i<180;i++) 

  StartUpcode();   

  calmaxlight();

}

voidloop()

{     

}

voidStartUpcode()

  DF15MG1.write(70); 

  vala=analogRead(0); //传感器数值读入

  valb=analogRead

(1);

  valc=analogRead

(2);

  vald=analogRead(3);

  pos2=pos2+1;

  DF15MG2.write(pos2);

  pos2=constrain(pos2,0,180);

  if(pos2%10==0)

  {

   sum=vala+valb+valc+vald; //4个传感器求和

   average[i]=sum/4;        //求均值

   mindata=average[1]; 

   i++; 

  }

  delay(10);

}

voidcalmaxlight()

{

    mindata=average[1];

  for(inti=2;i<19;i++)

  {

  if(mindata>average[i])

  {

    mindata=average[i];   //找到最小值及其最小值的编号

    no=i;

  }

  }   

    DF15MG2.write(no*10); //舵机转到光源所在方向

}

 

“向日葵”的另一应用——追光机器人

    在正常的室内环境光下,用手电筒打一束光,产生光源并移动,这时“向日葵”就会跟着你的手电筒转。

   其原理类似上述的太阳能收集器,最大的区别在于此处不再做4个传感器的均值,而是将横竖方向的光传感器两两求差。

当一端的感应数值小于另一端时,就会向这一端偏转。

我们不必放上太阳能电池板,可以随个人喜好在板上固定任何东西,比如插朵花、放个娃娃上去等,这样就能使机器人看起来更加生动了。

 

           

      

                                          

追光机器人参考代码   

#include  //一些函数库

#include

#include

ServoDF15MG1;

ServoDF15MG2;

MetroreceMetro=Metro(20);

MetroproceMetro=Metro(30);

MetrotransMetro=Metro(40);

intsumab,sumcd,pos1=90,pos2=90; //定义变量

intvala,valb,valc,vald;

voidready()

{

 DF15MG1.write(90);  //设定舵机的初始位置为90°

 DF15MG2.write(90);

}

voidsetup()

{

 DF15MG1.attach(3); 

 DF15MG2.attach(11);

}

voidloop()

{

    if(receMetro.check()==1)  //控制数据采集、处理、输出时间

    {

      receMetro.interval(10);

      receivedata(); 

    } 

   if(proceMetro.check()==1)

     {

       proceMetro.interval(15);

       processdata(); 

     }

    if(transMetro.check()==1)

     {

       transMetro.interval(20);

       transmitdata(); 

     }    

}

voidreceivedata()

{

  vala=analogRead(0); //设定光传感器模拟数据读取端口

  valb=analogRead

(1);

  valc=analogRead

(2);

  vald=analogRead(3);

}

voidprocessdata()        

{

  sumab=vala-valb;   //横竖光传感器读入数值求差

  sumcd=valc-vald;

  if(sumab<-10)      //a、b传感器求差,要根据环境光的不同设定相应的值

 {

   pos1=pos1+1;

   pos1=constrain(pos1,60,140); //舵机1的角度设定在60°到140°

 }

   elseif(sumab>10)

  {

    pos1=pos1-1;

    pos1=constrain(pos1,60,140);

  }

   if(sumcd<-20)          //c、d传感器求差,要根据环境光的不同设定相应的值

 {

   pos2=pos2+1;

   pos2=constrain(pos2,0,180);  //舵机1的角度设定在0°到180°

 }

   elseif(sumcd>20)

  {

    pos2=pos2-1;

    pos2=constrain(pos2,0,180);

  }  

}

voidtransmitdata()

{

 DF15MG1.write(pos1);     //舵机旋转角度输出

 DF15MG2.write(pos2);

}  

    

关键词:

移动 向日葵 基于 Arduino 小型 太阳能 收集 装置

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1