กลับไปหน้ารวมไฟล์
suntracker-solarpanel-arduino-uno-8ada9b.md


มันทำงานยังไงล่ะ?

การเคลื่อนที่:

การเคลื่อนที่ทั้งหมดของเจ้า SunTracker ตัวนี้ ใช้ [Servo](https://s.shopee.co.th/7fUgFAWSki) 2 ตัวเป็นตัวขับเคลื่อนหลัก

ตัวแรกคือ Servo MG995 อยู่ที่ฐาน ทำหน้าที่หมุนแนวนอน (ซ้าย-ขวา) ส่วนตัวที่สองคือ Servo SG90 ตัวเล็กกว่า เอาไว้ควบคุมการเคลื่อนที่แนวตั้ง (ขึ้น-ลง)

Solar Panel:

เมื่อแสงอาทิตย์ตกกระทบแผงโซลาร์เซลล์ พลังงานจากแสงอาทิตย์จะถูกดูดซับโดยเซลล์ PV ในแผง

พลังงานนี้จะสร้างประจุไฟฟ้าให้เคลื่อนที่ตอบสนองต่อสนามไฟฟ้าภายในเซลล์ ทำให้เกิดกระแสไฟฟ้าไหลขึ้นมา

[LDR](https://s.shopee.co.th/1BHCUqb0Tt) มันทำงานยังไง?

LDR - Light Depended Resistor

มันจะส่งสัญญาณแรงดันอนาล็อกออกมาตามปริมาณแสงที่ตกกระทบ ซึ่งเราก็อ่านค่าแรงดันนี้ผ่าน Analog Input Pin ของ [Arduino](https://s.shopee.co.th/7fUgFAWSki) ได้เลย

หลักการติดตามแสงของโปรเจกต์นี้เรียบง่ายมาก เรามี LDR 4 ตัววางเป็นสี่เหลี่ยมจัตุรัส 2x2 ตรงกลางมีแผ่นกั้นเพื่อป้องกันไม่ให้แสงจากทิศอื่นมาส่องรบกวน ในโค้ดเราก็แค่คำนวณค่าเฉลี่ยของแสงในแต่ละด้าน (บน, ล่าง, ซ้าย, ขวา) แล้วใช้ฟังก์ชัน IF() ตรวจสอบตำแหน่งของแหล่งแสง

if ((average_right - average_left) > LIGHT_THRESHOLD && pos_sh > LOWER_LIMIT_POS) {
    pos_sh++;
    servo_horizontal.write(pos_sh);
  }

ตัวอย่างเช่น: ถ้าแหล่งแสงอยู่ทางขวาของเซ็นเซอร์ LDR ค่าเฉลี่ยของ LDR ฝั่งขวา (บนขวา, ล่างขวา) จะสูงกว่าฝั่งซ้าย (บนซ้าย, ล่างซ้าย) Servo ก็จะค่อยๆ หมุนไปทางขวาโดยการเพิ่มองศาให้กับ Servo แนวนอนนั่นเอง

การวัดแรงดันด้วย Voltage Divider:

Voltage Divider เป็นวงจรพื้นฐานที่ใช้แปลงแรงดันสูงให้เป็นแรงดันต่ำลง แค่ใช้ตัวต้านทานสองตัวต่ออนุกรมกับแรงดันอินพุท เราก็จะได้แรงดันเอาท์พุทที่เป็นเศษส่วนของแรงดันต้นทาง

เราต้องใช้มันเพราะแผงโซลาร์เซลล์สามารถให้แรงดันออกมาเกิน 5V ได้ แต่ Analog Pin A0 ของ Arduino รับแรงดันได้สูงสุดแค่ 5V เท่านั้น ห้ามช็อตนะตัวนี้!

ตัวอย่าง: ถ้าแรงดันจากแผงโซลาร์เซลล์เป็น 9V แล้วเราต่อผ่าน Voltage Divider ที่ใช้ตัวต้านทาน 3 ตัวค่าเท่ากันต่ออนุกรมกัน แล้ววัดแรงดันหลังจากตัวต้านทานไป 2 ตัว เราจะได้แรงดันประมาณ 3V หรือพูดง่ายๆ คือได้แรงดันออกมา 1/3 ของแรงดันเข้า

ตามแผนภาพนี้เลย:

เพราะเราใช้ Voltage Divider เราก็ต้องคำนวณหาแรงดันจริงในโค้ดด้วย ง่ายๆ แบบนี้:

input_voltage = analogRead(Voltage_pin);
real_voltage = 3*((input_voltage*5.0)/1024);

[LCD](https://s.shopee.co.th/6AfsSPcAnb) I2C:

ถ้าน้องเคยลองต่อจอ LCD แบบธรรมดากับ Arduino น้องอาจจะสังเกตว่ามันใช้ขาเยอะมาก ใช้ถึง เจ็ดขา! ซึ่งนั่นคือครึ่งหนึ่งของขา Digital ที่ Arduino มีให้ แต่เจ้าโมดูล I2C นี้จะทำหน้าที่แปลงข้อมูล I2C จาก Arduino ไปเป็นข้อมูลแบบขนานที่จอ LCD ต้องการ ทำให้เราใช้สายข้อมูลแค่ 2 เส้น! (SDA, SCL) และอีก 2 เส้นสำหรับ VCC กับ GND เท่านั้น บอร์ดยังมาพร้อมกับ Potentiometer ตัวเล็กๆ สำหรับปรับความคมชัดของจออีกด้วย หล่อเท่เลยงานนี้



ข้อมูลเทคนิคเพิ่มเติม

ตรรกะการติดตามเส้นทางดวงอาทิตย์

เจ้า Tracker ตัวนี้ช่วยเพิ่มประสิทธิภาพของแผงโซลาร์เซลล์ได้สูงสุดถึง 40% โดยการปรับให้แผงหันเข้าหาดวงอาทิตย์ได้แม่นยำ

  • อาร์เรย์ LDR แบบสี่ส่วน: ใช้ Light Dependent Resistors 4 ตัว แยกจากกันด้วยแผงกั้นรูปกากบาท ถ้าดวงอาทิตย์เคลื่อนที่ ส่วนหนึ่งจะได้รับแสงมากกว่า ทำให้เกิดความไม่สมดุลของแรงดัน
  • ขั้นตอนการขับเคลื่อน: Arduino อ่านค่า Analog เหล่านี้ แล้วสั่งให้ Servo Motors 2 ตัว (Pitch และ Yaw) หันแผงโซลาร์เซลล์จนกว่าแสงจะสมดุลอีกครั้ง

การวิเคราะห์ประสิทธิภาพ

  • โหมดค้นหาแบบประหยัดพลังงาน: เมื่อดวงอาทิตย์ถูกบดบังด้วยเมฆ Servo Motors จะเข้าสู่โหมด "low-duty" cycle เพื่อประหยัดพลังงาน
  • รีเซ็ตอัตโนมัติ: ในเวลากลางคืน ระบบจะตรวจจับการขาดแสงทั้งหมด แล้วหมุนแผงกลับไปทางทิศตะวันออกโดยอัตโนมัติ เพื่อรอพระอาทิตย์ขึ้นในวันถัดไป

ข้อมูล Frontmatter ดั้งเดิม

title: "SunTracker SolarPanel - Arduino UNO"
description: "A solar panel tracking the sun using 4 LDR'S also measuring the Input Voltage and displaying it on the LCD."
author: "halkin"
category: "Sensors & Environment"
tags:
  - "Greener Planet"
  - "Energy Efficiency"
views: 5313
likes: 1
price: 699
difficulty: "Intermediate"
components:
  - "1x SG90 mini servo"
  - "3x Variable Resistor 10k ohm"
  - "1x Arduino Uno Rev3"
  - "1x MG995 servo motor"
  - "1x Solar Panel"
  - "1x 16 X 2 LCD with I2C Adapter"
  - "1x Soldering kit"
  - "4x LDR Resistor"
tools: []
apps:
  - "1x Arduino IDE 2.0 (beta)"
downloadableFiles:
  - "https://projects.arduinocontent.cc/4de23904-4b8c-4076-8aba-ae07047f1df7.ino"
documentationLinks: []
passwordHash: "ec03d2fc4e0ab1f12135a0567371159fc382fe07e2cea7a29c96b725bc1587df"
encryptedPayload: "U2FsdGVkX18SEcVUJRlEWJrCm5q/OPKO/ru7QSQQJn4EwBIsieJc/sEgHu63YgYZ6fSpBLVorv2D/5ELkIk7C5BRxZ9Y090IVb3vkBO9YxI="
seoDescription: "SunTracker SolarPanel project using Arduino UNO and 4 LDRs to track the sun, measure Input Voltage, and display data on an LCD."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/suntracker-solarpanel-arduino-uno-8ada9b_cover.jpg"
lang: "th"