在本篇文章中,我们主要将向您介绍如何使用LDR和伺服电机制作基于Arduino开发板的太阳能跟踪器。太阳能电池板跟踪器设计为跟随太阳的运动,以使最大的光照强度照射在太阳能电池板上,从而提高了功率效率。
我们设计了单轴太阳能跟踪系统。在此系统中,整个太阳能电池板在一天之内从东向西移动,指向太阳的方向。在能源生产领域中使用太阳能跟踪器电路将提高其效率。该系统还可以成功地在其他基于太阳能的项目中实施,例如热水器和蒸汽轮机。
太阳能跟踪器所需的组件 以下是设计太阳能跟踪器所需的组件列表: ● Arduino Uno开发板 ● SG90伺服电机 ● 轻触开关 ● 电阻10K ● 面包板 ● 连接线 ● 5至12伏电源。
连接电路 下面给出了使用LDR和伺服电机的基于Arduino的太阳能跟踪器的电路图。如下图所示组装电路。
项目设计与实施 1. 将纸板固定在伺服电机顶部,该纸板将面向阳光并旋转:
2. 将两个LDR保持至少5 cm的距离来放置一个障碍物。
太阳能跟踪器的工作过程: 两个LDR(光敏电阻)LDR1和LDR2连接到Arduino的模拟引脚。太阳能板与伺服电机的轴平行安装,两个传感器都固定在太阳能板上,如上图所示。
设计和布置以如下方式完成:太阳的运动是从LDR1到LDR2,如下图所示。
有以下三种情况: 情况1:太阳在左侧 LDR1上的光较高,因为屏障的阴影落在LDR2上,因此太阳能板顺时针移动。 情况2:太阳在右边 LDR2上的光较高,因为屏障的阴影落在LDR1上,因此太阳能板会逆时针旋转。 案例3:太阳在中心 两个LDR上的光都相等,因此,太阳能板不会向任何方向旋转。
Arduino源代码 为了使用LDR和伺服电机设计基于Arduino的太阳能跟踪器,您需要对Atmega 328 Arduino微控制器进行编程。以下是将伺服电机和LDR与Arduino进行太阳能跟踪的程序。复制此代码并将其上传到您的Arduino开发板。 - #include <EEPROM.h>
- #include <Servo.h>
- Servo myservo;
- int sensor1=A1;
- int sensor2=A0 ;
- int calswitch=2;
- int val1;
- int val2;
- int pos=0;
- int error;
- int state;
- void setup() {
- pinMode(sensor1,INPUT);
- pinMode(sensor2,INPUT);
- pinMode(calswitch,INPUT);
- myservo.attach(10);
- }
- void loop() {
- if(digitalRead(calswitch)==0) {
- myservo.detach();
- val1=analogRead(sensor1);
- val2=analogRead(sensor2);
- if (val1>val2) {error=val1-val2; state=0; }
- else {error=val2-val1; state=1; }
- EEPROM.write(0,error);
- EEPROM.write(1,state);
- delay(1000);
- }
- else{
- myservo.attach(10);
- val1=analogRead(sensor1);
- val2=analogRead(sensor2);
- state=EEPROM.read(1);
- error=EEPROM.read(0);
- if(state==0) { val1=val1-error;}
- else { val2=val2-error;}
- if (val1-val2>4) {myservo.write(pos); pos=pos-1; delay(10);}
- else if (val2-val1>4) {myservo.write(pos); pos=pos+1; delay(10);}
- else {myservo.write(pos);}
- if (pos>90) {pos=90;}
- else if (pos<0) {pos=0;}
- }
- }
复制代码
|