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

Arduino 双轴太阳能跟踪器:自动/手动模式 + Excel 实时数据采集

项目概述

本项目实现了一款低成本、开源的双轴太阳能跟踪测试平台。核心控制器为 Arduino Uno,配合 4 个 LDR 光敏电阻与 2 个舵机 (SG90 + MG996R) 实现方位角 (东西) 与俯仰角 (南北) 双轴跟踪。支持自动跟踪与电位器手动模式切换,并通过 PLX-DAQ 宏将电压、电流、功率实时写入 Excel 表格,适合教学演示与算法验证。

核心组件

机械结构设计

电路原理

LDR 分压电路

每路 LDR 与 330 Ω 电阻串联跨接 5V-GND,中点接 Uno A0–A3。光照越强 → LDR 电阻越小 → 分压电压越高 → ADC 值越大。

舵机驱动

PWM 信号线直连 Uno D5 (俯仰) 与 D6 (方位),电源另接外部 5V/2A 以上电源(Uno 5V 引脚电流不足)。

模式切换与轴选择

PV 电压/电流采集

A5 分压采集面板电压 (分压比 1:2),已知负载电阻 20 Ω,计算电流 I = V/20,功率 P = V×I。

自动跟踪算法

  1. 读取 4 路 LDR 值:topR, topL, botR, botL
  2. 计算平均值:
    • avgTop = (topR + topL)/2
    • avgBot = (botR + botL)/2
    • avgLeft = (topL + botL)/2
    • avgRight = (topR + botR)/2
  3. 差值判断:
    • diffAzi = avgRight - avgLeft (方位)
    • diffEle = avgTop - avgBot (俯仰)
  4. 死区阈值 threshold = 10:|diff| < 10 不动作,防抖动
  5. 步进 2° 移动舵机,直到差值落入死区
  6. 夜间检测:四路平均 < 8 → 复位至日出位置 (方位 0°, 俯仰 30°)

PLX-DAQ Excel 实时记录

  1. 下载安装 PLX-DAQ,生成 PLX-DAQ Spreadsheet 快捷方式
  2. 打开表格,设置波特率 9600、对应 COM 口,点击 Connect
  3. Arduino 发送格式:DATA,TIME,voltage,current,power,Mode
  4. Excel 实时追加行,自动生成时序图表

代码关键片段

自动跟踪核心

void automaticsolartracker() {
  topr = analogRead(A0); topl = analogRead(A1);
  botr = analogRead(A2); botl = analogRead(A3);

  int avgtop = (topr + topl) / 2;
  int avgbot = (botr + botl) / 2;
  int avgleft = (topl + botl) / 2;
  int avgright = (topr + botr) / 2;

  int diffazi = avgright - avgleft;
  int diffelev = avgtop - avgbot;

  if (abs(diffazi) >= THRESHOLD) {
    if (diffazi > 0 && servo_rightleft.read() < 180)
      servo_rightleft.write(servo_rightleft.read() + 2);
    else if (diffazi < 0 && servo_rightleft.read() > 0)
      servo_rightleft.write(servo_rightleft.read() - 2);
  }
  if (abs(diffelev) >= THRESHOLD) {
    if (diffelev > 0 && servo_updown.read() < 180)
      servo_updown.write(servo_updown.read() - 2);
    else if (diffelev < 0 && servo_updown.read() > 0)
      servo_updown.write(servo_updown.read() + 2);
  }
}

手动模式

void manualsolartracker() {
  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 数字骰子:LCD 显示随机点数的电子骰子
  2. DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄
  3. 太阳能跟踪器 V2.0:进阶 DIY 光伏自动追日系统
  4. Pixel Chaser:Arduino Nano 单键 NeoPixel 追逐小游戏
  5. 物联网双轴太阳能跟踪器:基于 Arduino 与 Cayenne 的智能能源管理
  6. Arduino 简易排斥式磁悬浮:电路与 DIY 指南
  7. Alexa 语音控制 Arduino 智能家居中枢:基于 Yun + PubNub + AWS Lambda 全栈实现
  8. Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
  9. Arduino UNO + 以太网盾板实现低成本太阳辐射测量仪(热电堆原理)
  10. DIY LED 轮盘赌游戏机 —— Arduino Nano 打造单人桌面街机
  11. DIY 双轴太阳能跟踪系统——基于 Arduino UNO
  12. Arduino 智能安防系统:超声波测距 + 舵机扫描 + 声光报警