亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino 太阳能追踪器

组件和用品

Arduino UNO
× 1
SG90 微伺服电机
× 2
LDR,5 Mohm
× 4
电阻 330 ohm
× 4
旋转电位器(通用)
× 1
按钮开关,按钮
× 2
迷你太阳能电池板
× 1

必要的工具和机器

Arduino IDE
Parallax PLX-DAQ

关于这个项目

该项目为太阳能跟踪器提供了一个开放的硬件/软件测试台。提议的原型基于由 Arduino Uno 控制的双轴太阳能跟踪器,Arduino Uno 是一个基于易于使用的硬件和软件的开源原型平台。太阳能跟踪器可以在光依赖电阻 (LDR) 传感器的帮助下自动控制,也可以使用电位计手动控制。此外,该测试台提供基于 Excel 的虚拟仪器,可在其中记录和显示其太阳能跟踪器数据。所使用的硬件被选择为便宜、紧凑和通用的。建议的测试台旨在帮助学生发展他们对控制理论及其应用的理解。

建议的测试台如图 1 所示。它基于一个太阳能跟踪器,该跟踪器可以在四个 LDR 传感器和两个伺服电机(SM1 和 SM2)的帮助下自动旋转以跟踪太阳,或者使用电位计手动跟踪。要在两种模式(自动和手动)之间切换,使用按钮。另一个按钮用于将 SM1(上下伺服电机)或 SM2(左右伺服电机)连接到电位计以控制它们的运动。此外,使用计算机作为虚拟仪器,在 MS Excel 中根据时间可视化 PV 面板的模式和电流、电压和功率。 Arduino Uno板用于实现系统的所有软件需求。

机械设计

如图 2 所示,太阳能跟踪器的计算机辅助设计 (CAD) 3D 模型是在 CATIA 中设计的。它由光伏面板、左右上下伺服电机和四个LDR传感器组成。对于水平轴,与上下伺服电机平行固定一个轴承,以提高灵活性。太阳能跟踪器设计有两个自由度,左右伺服电机从东到西,上下伺服电机从南到北。 LDR 传感器放置在光伏面板的四个角上,并放置在顶部带有小孔的暗管中,以检测太阳的光照度。这些暗管也被认为是辐射的集中器,用于提高太阳跟踪器的鲁棒性。

硬件系统

图 3 显示了所提出的测试平台的电子电路。对于自动模式,微控制器将 LDRsensors(引脚 A0 到 A3)的模拟值转换为数字值。然后它使用两个脉冲宽度调制 (PWM) 信号(引脚 5 和 6)控制两个伺服电机(上下和左右)来跟踪太阳。旋转运动发生在两个轴上,根据每日太阳路径从东到西方位角,根据季节太阳路径从南到北海拔。对于手动模式,电位计(引脚 A4)用于控制两个伺服电机的运动,部署按钮(引脚 11)将电位计连接到上下伺服电机或左右伺服电机。此外,另一个按钮(引脚 12)用于在两种模式之间切换。此外,通过Arduino的模拟引脚A5测量PV电压,然后计算PV电流,因为负载的电阻是已知的。接下来,将光伏电流、电压和功率随时间变化以及实际模式发送到计算机,以在 MS Excel 上实时呈现。

LDR 传感器电路设计为分压器电路。光强的变化与分压器输出电压的变化成正比。分压器的顶部为 5 V,接地为 0 V,分压器的输出连接到模拟输入 (A 0 例如)的微控制器。随后,微控制器的模数转换器(ADC)将A读取的模拟值进行转换 0 变成 0 到 1023 之间的数字值,因为 ADC 是用 10 位编码的,根据这个值,可以知道光的级别。分压器中使用的电阻值为330Ω。

使用了两个 180 度伺服电机。一个伺服电机(MG996R)根据垂直轴控制太阳能跟踪器,它是左右伺服电机。还有一个微型伺服电机(SG90)根据水平轴控制太阳能跟踪器,它是上下伺服电机。伺服电机的优点是我们可以使用直接连接到微控制器输出的单根低电流线控制其停止、运行、旋转方向和速度,无需任何驱动器。使用的伺服电机由 Arduino UNO 板通过 3 线电缆控制,如图 3 所示,两根线用于电源,一根线用于 PWM 以控制其位置。

嵌入式软件设计

嵌入式软件是将嵌入硬件 (Arduino Uno) 以控制和监控太阳能跟踪器测试台的部分。嵌入式软件旨在满足以下要求:

1. 试验台有两种模式:手动和自动。按钮连接到引脚 12 以在两种模式之间切换。

2. 如果手动模式处于活动状态,电位器可以控制伺服电机从东到西的左右电机或从南到北的上下电机。一个按钮连接到引脚11,用于在两个电机之间切换电位器,它控制左右伺服电机或上下伺服电机。

3. 如果自动模式处于活动状态,则将执行图 4 中所示的算法。后者使用 LDR 传感器返回的模拟值。例如,考虑方位或垂直轴,比较来自两个右侧 LDR 和两个左侧 LDR 的平均值,如果左侧一组 LDR 接收到更多光,则太阳能跟踪器将通过左右伺服电机沿该方向移动。后者将继续旋转,直到差异结果在 [-10, 10] 范围内。该范围用于稳定控制器,一旦太阳能跟踪器垂直于太阳,就不再进行进一步的控制。另一方面,如果右侧的一组 LDR 接收到更多的光,则太阳能跟踪器通过左右伺服电机沿该方向移动,并将继续旋转,直到差异结果在 [-10, 10] 范围内。仰角轴使用相同的方法。此外,我们还确定了四个 LDR 传感器之间的平均辐射,如果该值小于一个小值(8:实际调整和测试过的值,当辐射为零时返回)。也就是说,夜幕降临了。在这种情况下,太阳能跟踪器必须返回到太阳升起的位置。例如,如果将左右伺服电机设置为 0 度,将上下伺服电机设置为 30 度,就可以到达太阳升起的位置。这可以通过 C 函数“servox”轻松完成。 write(angle)”由 Arduino IDE 提供。

4. 必须处理通过模拟引脚 A5 获取的 PV 电压并用于计算 PV 电流和功率。然后所有这些数据和实际模式必须通过USB电缆发送到计算机,然后在MS Excel中呈现。

PLX-DAQ Excel 宏用于从 Arduino 微控制器到 Excel 电子表格的数据采集。我们只需要下载它。安装完成后,电脑上会自动创建一个名为“PLX-DAQ”的文件夹,里面有一个名为“PLX-DAQ电子表格”的快捷方式。然后,要建立电路板和 Excel 之间的通信,我们只需要打开电子表格并在 PLX-DAQ 窗口(图 5)中定义连接设置(波特率和端口)。此后,点击“连接”后,输出数据将被收集并实时显示在 Excel 电子表格上

原型

图 6 显示了处于分离和组装状态的太阳能跟踪器。如前所述,整个结构是用木板制造的,很明显,所有提到的组件都用于构建具有手动和自动模式的太阳能跟踪器(LDR 传感器、Arduino Uno、伺服电机、电位计、按钮和小型光伏面板)。

图 7 显示了整个测试台、带有虚拟仪器的太阳能跟踪器和一个可以暴露光线以测试太阳能跟踪器的人造灯。太阳能跟踪器和计算机通过 USB 电缆连接。获得 PV 电压后,控制器会处理此信息并使用它来计算 PV 电流和功率。然后,将所有这些数据发送到计算机以在 MSExcel 中显示它们。从无花果。从图 5 和 6 可以看出,建议的测试台小巧、灵活且易于使用。它可以让学生、研究人员和工程师在继续实施大型太阳跟踪设备之前,以简单的方式应用他们的算法。


代码

  • 嵌入式软件 os 太阳能跟踪器测试台
嵌入式软件操作系统太阳能跟踪器测试台Arduino
//伺服电机库#include //初始化变量int mode =0;int ax =0; int buttonState1 =0; int buttonState2 =0; int prevButtonState1 =0; int prevButtonState2 =0; int ldrtopr =0; // 右上角 LDR int ldrtopl =1; // 左上角 LDR int ldrbotr =2; // 右下角 LDR int ldrbotl =3; // 左下角 LDR int topl =0;int topr =0; int botl =0;int botr =0;//声明两个舵机Servoservo_updown;Servoservo_rightleft;int threshold_value=10; //测量灵敏度void setup(){ Serial.begin(9600); //串行连接设置//打开串行端口,将数据速率设置为9600 bps Serial.println("CLEARDATA"); //清除已经放置在Serial.println("LABEL,t,voltage,current,power,Mode")中的所有数据; //定义列标题(PLX-DAQ命令) pinMode(12, INPUT); //模式切换按钮 pinMode(11, INPUT); //轴切换 pinMode(A4, INPUT); //左右运动和上下运动的电位器servo_updown.attach(5); //伺服电机上下运动servo_rightleft.attach(6); //伺服电机左右运动}void loop(){// pv_power();char Mode;浮点电压 =模拟读取(A5)*5.0/1023;浮动电压 =2*伏特; // Volt=(R1/R1+R2)*Voltage / R1=R2=10Ohms => voltage=2*volt) 浮动电流=电压/20; // I=电压/(R1+R2)浮动功率=电压*电流; Serial.print("数据,时间,"); // PLX-DAQ 命令 Serial.print(电压); //发送电压到串口Serial.print(",");串行打印(当前); //将电流发送到串口Serial.print(",");串行打印(电源); //给串口送电 Serial.print(","); // Serial.println(模式); buttonState1 =digitalRead(12); if (buttonState1 !=prevButtonState1) { if (buttonState1 ==HIGH) { //改变模式并点亮正确的指示器 if (mode ==1) { mode =0; }其他{模式=1; } } } prevButtonState1 =buttonState1;延迟(50); // 等待 50 毫秒 if (mode ==0) { Mode='M'; Serial.println(模式); //发送模式“手动”到串口manualsolartracker(); } else { // 模式自动模式 ='A'; Serial.println(模式);自动太阳能跟踪器(); //发送Mode“Automatic”到串口 } }void automaticsolartracker(){ //捕获每个LDR的模拟值 topr=analogRead(ldrtopr); //捕获右上角LDR的模拟值 topl=analogRead(ldrtopl); //捕获左上角LDR的模拟值 botr=analogRead(ldrbotr); //捕获bot right LDR的模拟值 botl=analogRead(ldrbotl); //捕获bot left LDR的模拟值 // 计算平均值 int avgtop =(topr + topl) / 2; //顶级LDR的平均值 int avgbot =(botr + botl) / 2; //底部 LDR 的平均值 int avgleft =(topl + botl) / 2; //左 LDR 的平均值 int avgright =(topr + botr) / 2; //右LDR的平均值 //得到不同的int diffelev =avgtop - avgbot; //获取LDRs top和LDRs bot之间的不同平均值 int diffazi =avgright - avgleft; //获取右侧LDR和左侧LDR之间的不同平均值//太阳能跟踪器的左右运动 if (abs(diffazi)>=threshold_value){ //仅当光差大于阈值时才改变位置 if (diffazi> 0 ) { if (servo_rightleft.read() <180) {servo_rightleft.write((servo_updown.read() + 2)); } } if (diffazi <0) { if (servo_rightleft.read()> 0) {servo_rightleft.write((servo_updown.read() - 2)); } } } //太阳能跟踪器的上下运动 if (abs(diffelev)>=threshold_value){ //仅当光差大于threshold_value时才改变位置 if (diffelev> 0) { if (servo_updown.read() <180){servo_updown.write((servo_rightleft.read()-2)); } } if (diffelev <0) { if (servo_updown.read()> 0) {servo_updown.write((servo_rightleft.read() + 2)); } } } } void manualsolartracker(){ buttonState2 =digitalRead(13); if (buttonState2 !=prevButtonState2) { if (buttonState2 ==HIGH) { //改变模式并点亮正确的指示器 if (axe ==1) { ax =0; } else { ax =1; } } } prevButtonState2 =buttonState2;延迟(50); // 等待 50 毫秒 if (axe ==0) { //控制左右移动servo_rightleft.write(map(analogRead(A4), 0, 1023, 0, 180)); } else { // //控制上下移动servo_updown.write(map(analogRead(A4), 0, 1023, 0, 180)); } }

示意图


制造工艺

  1. Arduino 数字骰子
  2. Arduino 游戏控制器
  3. 太阳能追踪器 V2.0
  4. 像素追逐游戏
  5. 基于物联网 (IoT) 的太阳能跟踪器
  6. Arduino 排斥电磁悬浮
  7. 由 Alexa 激活的 Arduino 家庭控制器
  8. NeoMatrix Arduino Pong
  9. 使用 Arduino 测量太阳辐射
  10. LED 轮盘游戏
  11. 太阳追踪太阳系
  12. 基于 Arduino 的安全系统