DIY 双轴太阳能跟踪系统——基于 Arduino UNO
元器件与物料
- Arduino UNO ×1
- Analog Devices LDR 光敏传感器 ×4
- 全尺寸无焊面包板 ×1
- 太阳能电池板 ×1
- SG90 微型舵机 ×2
- 跳线(通用) ×1
- 1kΩ 电阻 ×4
应用与在线服务
- Arduino IDE
项目简介
如今太阳能电池板随处可见,从农村移动充电到人行道路灯。太阳能易用、易得、低成本。但日常见到的面板皆为固定安装,虽简单满足小型应用,却无法发挥最大发电潜力。
我们的跟踪器是双轴跟踪器,即同时在 X 轴(左右)和 Y 轴(上下)跟踪太阳。一旦设置好,无论太阳如何移动,跟踪器都会自动跟随,无需人工干预。
(原文包含多张组装照片)
代码
/*
* Author: Mayur Rabadiya
* Email: mayurrabadiya994@gmail.com
* Code: Sun tracking solar system
*/
#include <Servo.h>
Servo s; // 垂直舵机
Servo sh; // 水平舵机
int start1 = 90; // 初始角度 90°
int start2 = 90;
int L1 = A0; // LDR1
int L2 = A1; // LDR2
int L3 = A2; // LDR3
int L4 = A3; // LDR4
int a = 15; // 灵敏度阈值
void setup() {
s.attach(9); // 垂直舵机接 D9
sh.attach(10); // 水平舵机接 D10
pinMode(L1, INPUT);
pinMode(L2, INPUT);
pinMode(L3, INPUT);
pinMode(L4, INPUT);
s.write(start1);
sh.write(start2);
delay(2000);
}
void loop() {
int LDR1 = analogRead(L1);
int LDR2 = analogRead(L2);
int LDR3 = analogRead(L3);
int LDR4 = analogRead(L4);
int plus14 = (LDR1 + LDR4); // 对角和
int plus23 = (LDR2 + LDR3);
int plus12 = (LDR1 + LDR2); // 上下和
int plus34 = (LDR3 + LDR4);
int diff1 = abs(plus14 - plus23);
int diff2 = abs(plus23 - plus14);
int diff3 = abs(plus12 - plus34);
int diff4 = abs(plus34 - plus12);
// 垂直轴调整
if ((diff1 <= a) || (diff2 <= a)) {
// 差值小于阈值,不动作
} else {
if (plus14 > plus23) start2--; // 向小于90°方向
if (plus14 < plus23) start2++; // 向大于90°方向
}
// 水平轴调整
if (plus12 > plus34) start1--; // 向小于90°方向
if (plus12 < plus34) start1++; // 向大于90°方向
s.write(start1);
sh.write(start2);
delay(100);
}
原理图
(原文包含原理图图片)
制造工艺
- 太阳能供暖系统:从被动式到主动式的可持续家居供暖方案
- 多位置温度传感器系统,助力智能家居集成
- MotionSense:基于 Arduino 与 ESP8266 的智能入侵检测系统
- 3D 打印机防火卫士:智能传感器安全系统
- Arduino Nano 驱动的智能家居植物自动浇水系统
- Arduino 简易排斥式磁悬浮:电路与 DIY 指南
- 进阶遥控夹爪机器人:精密抓取 DIY 指南
- 高性能 Arduino 气象气球数据记录器
- Arduino Nano + OpenCV 人脸追踪自主机器人小车
- 进阶微控制器实验平台:ESP32、Arduino、PIC 与多传感器模块集成
- DIY 视觉暂留 (POV) 球体:Arduino Mega 驱动的 LED 光绘艺术
- CoroFence 热成像检测器:Panasonic GridEye + PIR + IoT 集成