原文地址:https://circuitdigest.com/microcontroller-projects/arduino-solar-panel-tracker
参考:

  1. 太阳能板追光装置
  2. 智能采光实时追日的电能管理系统,此文章在设计上有科学的依据。
  3. DIY创意家庭:实现LED台灯的智能化,提供软硬件解决方案的设计细节

使用Arduino的太阳追踪太阳能电池板

ARDUINO的

经过**穆罕默德·阿奇布(Muhammad Aqib)** 2017年1月12日25

使用LDR和伺服电机的基于Arduino的Sun Tracking Solar Panel项目

在本文中,我们将使用Arduino制作一个太阳追踪太阳能电池板,其中我们将使用两个LDR(取决于光的电阻器)感应光,并使用一个伺服电机自动将太阳能电池板朝着太阳光的方向旋转。该项目的优势在于,太阳能电池板将始终跟随太阳光,始终始终面对太阳以保持充电状态,并可以为电源提供最大的功率。该原型非常易于构建。在下面,您将找到有关其工作原理和原型制造方式的完整说明。

Arduino Solar Tracker的必需组件:

以下是使用Arduino构建太阳能跟踪系统所需的组件,大多数组件应在您当地的商店中可用。

  • 伺服马达(SG90)
  • 太阳能板
  • Arduino Uno
  • LDR的X 2(光敏电阻)
  • 10K电阻器X 2
  • 电池(6至12V)

单轴太阳能跟踪器如何工作?

在此项目中,LDR用作光检测器。在详细介绍之前,我们将必须了解LDR的工作方式。**LDR(光敏电阻)**也称为光敏电阻,是一种光敏设备。当光落在其上时,其电阻会降低,这就是为什么它经常在黑暗或光探测器电路中使用的原因。在此处检查基于LDR的各种电路。

两个LDR放置在太阳能电池板的两侧,而伺服电机用于旋转太阳能电池板。伺服器会将太阳能电池板移向电阻较低的LDR,即朝着光线下降的LDR移动,这样它将一直跟随光线。如果两个LDR上都照射有少量光,则伺服器将不会旋转。伺服器将尝试将太阳能电池板移动到两个LDR都具有相同电阻的位置,这意味着两个电阻上的光量会相同,如果其中一个LDR的电阻发生变化,则它将朝较低电阻旋转LDR。查看本文末尾的演示视频

光敏电阻的检测

A、用一黑纸片将光敏电阻的透光窗口遮住,此时万用表的指针基本保持不动,阻值接近无穷大。此值越大说明光敏电阻性能越好。若此值很小或接近为零,说明光敏电阻已烧穿损坏,不能再继续使用。

B、将一光源对准光敏电阻的透光窗口,此时万用表的指针应有较大幅度的摆动,阻值明显减些此值越小说明光敏电阻性能越好。若此值很大甚至无穷大,表明光敏电阻内部开路损坏,也不能再继续使用。

C、将光敏电阻透光窗口对准入射光线,用小黑纸片在光敏电阻的遮光窗上部晃动,使其间断受光,此时万用表指针应随黑纸片的晃动而左右摆动。如果万用表指针始终停在某一位置不随纸片晃动而摆动,说明光敏电阻的光敏材料已经损坏。

如何使用Arduino构建旋转的太阳能电池板:

要制作原型,您将必须执行以下步骤:

步骤1:

首先,取一小块硬纸板,并在其一端打一个孔。稍后,我们将螺丝插入其中以使用伺服器将其固定。

第2步:

现在,借助胶水或热风枪将两小块纸板彼此固定为V形,然后将太阳能电池板放置在其上。

第三步:

然后将V形的底面连接到小纸板的另一端,在第一步中在小纸板上打了一个孔。

第四步:

现在,将螺丝插入您在卡板上制作的孔中,并将其穿过该孔插入伺服器中。购买时,伺服电机随附螺钉。

步骤5:

现在,将伺服器放在另一块纸板上。硬纸板的尺寸应足够大,以便您可以在其上放置Arduino Uno,面包板和电池。

步骤6:

借助胶水将LDR固定在太阳能电池板的两侧。确保您已将电线与LDR的支脚焊接在一起。稍后,您将必须将它们与电阻器连接。

步骤7:

现在,将Arduino,电池和面包板放在纸板上,并按照下面的“电路图”和“说明”部分所述进行连接。最终的原型如下所示。

电路图和说明:

下面显示了太阳能跟踪arduino项目的完整电路图。如您所见,该电路非常简单,并且可以借助小型面包板轻松构建。

在此Arduino Solar Panel Tracker中,Arduino由9V电池供电,而所有其他部件均由Arduino供电。Arduino建议的输入电压为7到12伏,但是您可以在6到20伏的范围内为它供电(这是极限)。尝试在建议的输入电压范围内为其供电。因此,将电池的正极线连接到Arduino的Vin,将电池的负极线连接到Arduino的地。

接下来, 将舵机连接到Arduino。将伺服的正极线连接到Arduino的5V,并将接地线连接到Arduino的地线,然后将Servo的信号线连接到Arduino的数字引脚9。伺服器将帮助移动太阳能电池板。

现在将LDR连接到Arduino。将LDR的一端连接到10k电阻器的一端,然后将该端连接到Arduino的A0,然后将该电阻器的另一端接地,并将LDR的另一端连接到5V。同样,将第二个LDR的一端连接到另一个10k电阻器的一端,并将该端连接到Arduino的A1并将该电阻器的另一端接地,并将LDR的另一端连接到5V Arduino的。

使用Arduino代码的单轴太阳能跟踪器:

基于Arduino的Solar Panel Tracker的代码很简单,并通过注释进行了很好的解释。首先,我们将包括伺服电机库。然后,我们将初始化伺服电机初始位置的变量。之后,我们将初始化变量以从LDR传感器和伺服读取。

#include <Servo.h>      //including the library of servo motor
Servo sg90;                   //initializing a variable for servo named sg90
int initial_position = 90;    //Declaring the initial position at 90
int LDR1 = A0;                //Pin at which LDR is connected
int LDR2 = A1;                //Pin at which LDR is connected
int error = 5;                //initializing variable for error
int servopin=9;

*sg90.atach(servopin)*命令将从Arduino的引脚9读取Servo。接下来,我们将LDR引脚设置为输入引脚,以便我们可以从传感器读取值并据此移动太阳能电池板。然后,将伺服电机设置为90度,这是伺服的初始位置。

void setup()
{ sg90.attach(servopin);  // attaches the servo on pin 9pinMode(LDR1, INPUT);   //Making the LDR pin as inputpinMode(LDR2, INPUT);sg90.write(initial_position);   //Move servo at 90 degreedelay(2000);                   // giving a delay of 2 seconds
}

然后,我们将从LDR中读取值,并将其保存在R1和R2中。然后,我们将使两个LDR之间存在差异,以相应地移动伺服器。如果它们之间的差为零,则意味着两个LDR上的光量相同,因此太阳能电池板将不会移动。我们使用了一个名为error的变量,其值为5,该变量的用途是,如果两个LDR之间的差异小于5,则伺服机构将不会移动。如果我们不这样做,那么伺服将继续旋转。如果差值大于误差值(5),则伺服器将使太阳能电池板朝LDR方向移动,在LDR方向上光线会朝着该方向移动。查看下面的完整代码和演示视频。

  int R1 = analogRead(LDR1); // reading value from LDR 1int R2 = analogRead(LDR2); // reading value from LDR 2int diff1= abs(R1 - R2);   // Calculating the difference between the LDR'sint diff2= abs(R2 - R1);if((diff1 <= error) || (diff2 <= error)) {//if the difference is under the error then do nothing} else {    if(R1 > R2){initial_position = --initial_position;  //Move the servo towards 0 degree}if(R1 < R2) {initial_position = ++initial_position; //Move the servo towards 180 degree}}

这样便可以构建一个简单的Solar Panel Tracker,它将自动朝着像向日葵一样的光线移动。在这里,我们使用了低功率太阳能电池板来减轻重量,如果您打算使用高功率或重型太阳能电池板,则需要相应地选择伺服电机。

代码

/*Arduino solar tracker codewww.circuitdigest.com*/#include <Servo.h>      //including the library of servo motor
Servo sg90;             //initializing a variable for servo named sg90
int initial_position = 90;   //Declaring the initial position at 90
int LDR1 = A0;          //Pin at which LDR is connected
int LDR2 = A1;          //Pin at which LDR is connected
int error = 5;          //initializing variable for error
int servopin=9;
void setup()
{ sg90.attach(servopin);  // attaches the servo on pin 9pinMode(LDR1, INPUT);   //Making the LDR pin as inputpinMode(LDR2, INPUT);sg90.write(initial_position);   //Move servo at 90 degreedelay(2000);            // giving a delay of 2 seconds
}  void loop()
{ int R1 = analogRead(LDR1); // reading value from LDR 1int R2 = analogRead(LDR2); // reading value from LDR 2int diff1= abs(R1 - R2);   // Calculating the difference between the LDR'sint diff2= abs(R2 - R1);if((diff1 <= error) || (diff2 <= error)) {//if the difference is under the error then do nothing} else {    if(R1 > R2){initial_position = --initial_position;  //Move the servo towards 0 degree}if(R1 < R2) {initial_position = ++initial_position; //Move the servo towards 180 degree}}sg90.write(initial_position); // write the position to servodelay(100);
}

基于Arduino的太阳能板追光装置设计(二)

原文链接:https://blog.csdn.net/weixin_43999167/article/details/103191387

本装置使用光敏电阻,暗电阻几乎达到1MΩ,强光条件下只有几百Ω,因此我们串联1K可调电阻进行限流分压,否则光敏电阻电阻过低近似导通会烧坏东西吧
为了适应环境的变化,我采用了可调电阻。而且光敏电阻可能因为你放的不够平,会使接收到的数据不一样,你感觉没对着太阳,你就可以调分压电阻调节。
AD采集数据把Arduino把5V对应0-1023的整数值,约等于每个单位0.049V。通过测试,在正常阳光条件下,可调电阻为500Ω,采集数据在800-900之间,根据各个光敏电阻的电压不同,可以判断四周分布光源强弱。
本来我想着直接使用光敏电阻判断即可,用手电筒测试还好,但是在阳光下由于阳光大小相同,并不能正常工作,于是我加了挡光板,只有光线垂直才会同时接收到光线,当光线不垂直时会产生阴影,造成部分光敏电阻接收不到光线。下面是纸板模型。

当光线不垂直时,产生阴影。

用的板子是Arduino nano和配套的扩展板,因为要用到舵机,用扩展板方便。

这些是全部程序:

#include <Servo.h>
Servo lr_servo;//定义左右旋转舵机名称
Servo ud_servo;//定义上下旋转舵机名称int lr_angle = 90;//设置初始角度为90度
int ud_angle = 0;//设置初始角度为0度,让太阳能板水平朝上,检测太阳光最强点
int l_state = A0;//定义光敏电阻模拟电压输入
int r_state = A1;
int u_state = A2;
int d_state = A3;int lr_servopin = 3;//定义舵机控制信号引脚
int ud_servopin = 5;void setup() {Serial.begin(9600); //定义串口波特率lr_servo.attach(lr_servopin);  // 设置舵机控制针脚ud_servo.attach(ud_servopin);  // 设置舵机控制针脚pinMode(l_state, INPUT); //设置引脚类型pinMode(r_state, INPUT);pinMode(u_state, INPUT);pinMode(d_state, INPUT);lr_servo.write(lr_angle);//恢复初始角度delay(1000);ud_servo.write(ud_angle);delay(1000);}void loop() {int L = analogRead(l_state);//读取传感器模拟电压值,0-1200int R = analogRead(r_state);int U = analogRead(u_state);int D = analogRead(d_state);int error = 9;//定义误差范围,防止抖动int m_speed = 20;//设置舵机速度/**********************左右调节程序**********************/// abs()是求绝对值函数if (abs(L - R) > error && L > R) { //判断误差是否在允许范围内,否者调整舵机lr_angle--;//调小角度if (lr_angle < 0) { //限制舵机转动角度lr_angle = 0;}lr_servo.write(lr_angle);  //输出舵机角度delay(m_speed);}else if (abs(L - R) > error && L < R) { //判断误差是否在允许范围内,否者调整舵机lr_angle++;//调大角度if (lr_angle > 180) { //限制舵机转动角度lr_angle = 180;}lr_servo.write(lr_angle);  //输出舵机角度delay(m_speed);}else if (abs(L - R) <= error) { //判断误差是否在允许范围内,在范围内,舵机静止,角度不做调整lr_servo.write(lr_angle); //输出舵机角度}/**********************上下调节程序**********************/if (abs(U - D) > error && U >= D) { //判断误差是否在允许范围内,否者调整舵机ud_angle--;//调小角度if (ud_angle < 0) { //限制舵机转动角度ud_angle = 0;}ud_servo.write(ud_angle);  //输出舵机角度delay(m_speed);}else if (abs(U - D) > error && U < D) { //判断误差是否在允许范围内,否者调整舵机ud_angle++;//调大角度if (ud_angle > 95) { //限制舵机转动角度ud_angle = 95;}ud_servo.write(ud_angle);  //输出舵机角度delay(m_speed);}else if (abs(U - D) <= error) { //判断误差是否在允许范围内,在范围内,舵机静止,角度不做调整lr_servo.write(lr_angle);  //输出舵机角度}//串口显示光敏电阻阻值和舵机角度Serial.print(" L ");Serial.print(L);Serial.print(" R ");Serial.print(R);Serial.print(" U ");Serial.print(U);Serial.print(" D ");Serial.print(D);Serial.print(" ud_angle ");Serial.print(ud_angle);Serial.print(" lr_angle ");Serial.println(lr_angle);delay(1000);//在测试时,串口数据接收过快,可以适当加延时调整
}

舵机使用SG90,用3D打印的openmv云台支架

后面我加了锂电池充电模块,电池储能,和5V升压板给板子供电。
成品图

测试视频,当时对着的是南边的窗户,有太阳光照。

制作 基于Arduino的太阳能板追光太阳跟随装置设计

使用Arduino的太阳追踪太阳能电池板相关推荐

  1. 太阳电池板特性实验_太阳能电池板室外特性实验提纲

    研究性实验 太阳能电池板室外特性 实验方式: 根据下列提纲,在室外通过实际测试,以定量和定性的形式,了解太阳能电池板室外特性. 课前查阅: 太阳能电池板的种类及简要工作原理: 光电器件的基本属性: 超 ...

  2. 使用Arduino和太阳能电池板制作Li-Fi音频播放器

    通过使用Li-Fi或光保真通信,了解如何通过Arduino微控制器播放音频. 在本文中,我们制作一个简单的Li-Fi系统,可以将音频从Arduino发送到AUX扬声器.您可以使用此设置使用光无线传输音 ...

  3. 太阳能板清洗机器人科沃斯_太阳能电池板清洁机器人

    太阳能电池板清洁机器人锐宝RAYBOT,可以实现自动升降式地免水清扫,使常年暴露在太阳下的电池板能彻底摆脱灰尘和污垢.当放置在太阳能电池板上时,锐宝能够自主行走.跨越最大3cm间隙并自动规划路线.底部 ...

  4. 太阳能电池板自动清洗机器人的制作分享

    本文素材来源于宁夏大学 作者:李伟荣.李学辉.金茹芳.沙小平 指导老师:康彩.张冬 一.执行总结 1.1项目概述        在"十三五"发展的大形势下,由于现在国家大力发展清洁 ...

  5. 一种基于最大吸收功率的卫星太阳能电池板安装方案

    一种基于最大吸收功率的卫星太阳能电池板安装方案 问题的引入 分析思路 太阳光照强度参数的计算 太阳在各坐标系中坐标的转换 太阳在卫星处照度的计算 卫星各面太阳能电池板实际最大输出功率的计算 Matla ...

  6. 太阳能电池板原理及工作原理

    本文转载于: http://www.go-gddq.com/html/NYLiYHeHuiShou/2013-04/1117691.htm 太阳能电池板原理及工作原理 随着全球能源日趋紧张,太阳能成为 ...

  7. 锐宝机器人_科沃斯太阳能电池板无水清洁机器人锐宝面世

    原标题:科沃斯太阳能电池板无水清洁机器人锐宝面世 >>8款热门千元手机体验式大PK<< 世界上大多数的太阳能电池板都安装在光线良好的的沙漠地区,肆虐的风沙会将许多尘土堆积在太阳 ...

  8. 基于STM32单片机太阳能电池板追日光跟踪系统设计

    硬件方案 本设计采用光电跟踪的方法,利用步进电机驱动,由光电传感器根据入射光线的强弱变化产生反馈信号到微机处理器.微机处理器运行程序,通过对跟踪机构进行控制,调整太阳能电池板的角度实现对太阳的跟踪.整 ...

  9. 太阳能电池板日发电量简易计算方法

    原文地址:太阳能电池板日发电量简易计算方法作者:越夜越精彩 太阳能电池板日发电量 简易计算方法 太阳能交流发电系统是由太阳电池板.充电控制器.逆变器和蓄电池共同组成:太阳能直流发电系统则不包括逆变器. ...

最新文章

  1. 看一遍那些网络上晦涩的名词都弄明白了!
  2. 用imageNamed加载图片产生的问题
  3. mst算法matlab_基于并查集+Kruskal算法的matlab程序及最小生成树绘图
  4. C语言volatile关键字的作用
  5. 作者:夏虎, 男, 电子科技大学副研究员、 教育大数据研究所所长。
  6. UTC/GMT 时间转换
  7. Android Studio中 no module 问题,解决方法
  8. 揭秘 AWS 基础架构底层运维和构建之道!
  9. mysql服务启动成功后卸载_安装,启动与卸载Mysql系统服务(MYSQL常见问题)
  10. Windows 8 Directx 开发学习笔记(十二)利用混合实现浮在水面的木箱
  11. 数论之勾股数组(毕达哥拉斯三元组)
  12. 关于模型转向自然化思考
  13. HD 2177(威佐夫博弈 入门)
  14. .NET应用程序调试—原理、工具、方法
  15. Ubuntu20.04安装ROS教程(虚拟机/双系统,含报错解决)
  16. 超效率dea matlab,求高人帮忙关于超效率DEA模型编程
  17. Scratch(三十五):FlyBird
  18. 黑色背景视频和白色背景图片变透明的方法
  19. 如何管理计算机回收站,回收站功能多多 教你如何玩转回收站
  20. 运动无线耳机推荐,六款运动爱好者必备的耳机

热门文章

  1. Problem G: 圆周率
  2. 视频直播的发展,一对一视频直播APP的优势和系统软件功能介绍
  3. 如何安装联想计算机系统,联想台式电脑怎么重装系统的步骤(手把手教你简单安装系统)...
  4. ZSS-25自动扫描射水高空水炮市场厂家分析参数数据
  5. 计算机领域审稿快的sci期刊,计算机sci审稿快的期刊_sci审稿流程_外审结束没动静...
  6. Flutter闪光灯
  7. MPF企业版-简介【01】 【QQ群:206378966】
  8. LRP选址配送—物流选址问题杂谈-遗传算法求解
  9. ubuntu下pdf中文乱码解决
  10. advanced-ip-scanner:windows下网络扫描神器