วันจันทร์ที่ 17 กันยายน พ.ศ. 2561

โปรเจคที่15 Arduino แผงควบคุมแสงอาทิตย์ตามแสงอาทิตย์

Arduino Based Sun Tracking โครงการแผงเซลล์แสงอาทิตย์โดยใช้ LDR และ Servo Motor

ส่วนประกอบที่จำเป็น:

  • เซอร์โวมอเตอร์ (sg90)
  • แผงเซลล์แสงอาทิตย์
  • Arduino Uno
  • LDR ของ X 2 (Light Resendent Resistor)
  • ตัวต้านทาน 10K X 2
  • แบตเตอรี่ (6 ถึง 12V)

มันทำงานอย่างไร:

ในโครงการนี้ LDR กำลังทำงานเป็นเครื่องตรวจจับแสง ก่อนที่เราจะเข้าสู่รายละเอียดเราจะต้องทำความเข้าใจกับผลงานของ LDR LDR (Light Resendent Resistor)หรือที่เรียกว่าResistor Resistorคืออุปกรณ์ที่ไวต่อแสง ความต้านทานลดลงเมื่อแสงลดลงและนั่นคือเหตุผลที่มันใช้บ่อยในวงจรตรวจจับความเข้มหรือแสง ตรวจสอบต่างๆวงจรบนพื้นฐานของ LDR ที่นี่
LDR ทั้งสองตัวถูกวางไว้ที่แผงเซลล์แสงอาทิตย์ทั้งสองด้านและServo Motorใช้หมุนแผงพลังงานแสงอาทิตย์ เซอร์โวจะเลื่อนแผงโซลาร์เซลล์ไปยัง LDR ที่มีความต้านทานต่ำจะหมายถึง LDR ที่มีแสงลดลงซึ่งจะทำให้แสงต่อไป และถ้ามีจำนวนแสงเท่ากันทั้ง LDR จากนั้น servo จะไม่หมุน เซอร์โวจะพยายามขยับแผงเซลล์แสงอาทิตย์ในตำแหน่งที่ทั้ง LDR จะมีค่าความต้านทานเดียวกันซึ่งหมายความว่าปริมาณของแสงเท่ากันจะลดลงทั้งตัวต้านทานและถ้าความต้านทานหนึ่งของ LDR เปลี่ยนไปแล้วจะหมุนไปทาง LDR ความต้านทานต่ำ ตรวจสอบวิดีโอสาธิตที่ท้ายบทความนี้

วิธีการสร้างต้นแบบ:

ในการสร้างต้นแบบคุณจะต้องทำตามขั้นตอนด้านล่าง:
ขั้นตอนที่ 1:
ก่อนอื่นให้เอากระดาษแข็งแผ่นเล็ก ๆ และทำเป็นรูที่ปลายข้างหนึ่ง เราจะใส่สกรูเข้าไปเพื่อแก้ไขในเซอร์โวในภายหลัง
อาคารต้นแบบสำหรับ Arduino แสงอาทิตย์แผงติดตาม-1

ขั้นตอนที่ 2:
ตอนนี้แก้ไขสองชิ้นเล็ก ๆ ของกระดาษแข็งกับแต่ละอื่น ๆ ในรูปร่าง V ด้วยความช่วยเหลือของกาวหรือปืนร้อนและสถานที่แผงเซลล์แสงอาทิตย์ในนั้น
อาคารต้นแบบสำหรับ Arduino แสงอาทิตย์แผงติดตาม-2

ขั้นที่ 3:
จากนั้นแนบด้านล่างของรูป V กับปลายอีกด้านของกระดาษแข็งชิ้นเล็ก ๆ ที่คุณทำเป็นรูในขั้นตอนแรก
อาคารต้นแบบสำหรับ Arduino แสงอาทิตย์แผงติดตาม-3

ขั้นตอนที่ 4:
ตอนนี้ใส่สกรูลงในรูที่คุณทำไว้ในแผ่นการ์ดและใส่เข้าไปในรูที่เซอร์โว สกรูมาพร้อมกับเซอร์โวมอเตอร์เมื่อคุณซื้อ
อาคารต้นแบบสำหรับ Arduino แสงอาทิตย์แผงติดตาม-4

ขั้นตอนที่ 5:
วางเซอร์โวลงบนกระดาษแข็งอีกชิ้นหนึ่ง ขนาดของกระดาษแข็งควรมีขนาดใหญ่พอเพื่อให้คุณสามารถวาง Arduino Uno, breadboard และแบตเตอรี่ได้
อาคารต้นแบบสำหรับ Arduino แสงอาทิตย์แผงติดตาม-5

ขั้นตอนที่ 6:
แนบ LDR ที่ด้านข้างของแผงเซลล์แสงอาทิตย์ด้วยกาว ตรวจสอบให้แน่ใจว่าคุณได้ต่อสายไฟกับขาของ LDR แล้ว คุณจะต้องเชื่อมต่อเหล่านี้กับ resistors ในภายหลัง
อาคารต้นแบบสำหรับ Arduino แสงอาทิตย์แผงติดตาม-6

ขั้นตอนที่ 7:
ตอนนี้วาง Arduino, แบตเตอรี่และ breadboard บนกระดาษแข็งและทำการเชื่อมต่อตามที่อธิบายไว้ในแผนภาพวงจรและส่วนคำอธิบายด้านล่าง ต้นแบบสุดท้ายจะแสดงด้านล่าง
Arduino แสงอาทิตย์แผงติดตามต้นแบบโดยใช้-LDR

แผนผังวงจรและคำอธิบาย:

Arduino แสงอาทิตย์แผงติดตามโดยใช้-LDR วงจรแผนภาพ

คำอธิบายโค้ด:

รหัสสำหรับเครื่องติดตามแผงโซลาร์เซลล์ของ Arduinoนี้เป็นเรื่องง่ายและสามารถอธิบายได้ด้วยความคิดเห็น ก่อนอื่นเราจะรวมไลบรารีสำหรับเซอร์โวมอเตอร์ จากนั้นเราจะเริ่มต้นตัวแปรสำหรับตำแหน่งเริ่มต้นของเซอร์โวมอเตอร์ หลังจากนั้นเราจะเริ่มต้นตัวแปรที่จะอ่านจากเซ็นเซอร์ LDR และเซอร์โว
#include <Servo.h> // รวมทั้งไลบรารีของเซอร์โวมอเตอร์ 
Servo sg90; / / การเริ่มต้นตัวแปรสำหรับ servo ชื่อ sg90
int initial_position = 90; // ประกาศตำแหน่งเริ่มต้นที่ 90
int LDR1 = A0; // ขาที่เชื่อมต่อ LDR
int LDR2 = A1; // ขาที่เชื่อมต่อ LDR
ข้อผิดพลาด int = 5; / / การเริ่มต้นตัวแปรสำหรับข้อผิดพลาด
int servopin = 9;

sg90.atach (servopin)จะอ่าน servo จาก pin 9 ของ Arduino ต่อไปเราจะตั้งค่าหมุด LDR เป็นขาเข้าเพื่อให้เราสามารถอ่านค่าจากเซ็นเซอร์และเลื่อนแผงเซลล์แสงอาทิตย์ตามที่ จากนั้นเราจะตั้งมอเตอร์เซอร์โวไว้ที่ 90 องศาซึ่งเป็นตำแหน่งเริ่มต้นของเซอร์โว
การตั้งค่าเป็นโมฆะ () 
{ 
  sg90.attach (servopin); // ยึดเซอร์โวบนพิน 9
  pinMode (LDR1, INPUT); // การสร้างขา LDR เป็นอินพุต
  pinMode (LDR2, INPUT);
  sg90.write (initial_position); // เลื่อนเซอร์โวที่ 90 องศา
  ล่าช้า (2000); // ให้ความล่าช้า 2 วินาที
}

จากนั้นเราจะอ่านค่าจาก LDRs และจะบันทึกใน R1 และ R2 จากนั้นเราจะใช้ความแตกต่างระหว่าง LDR สองตัวเพื่อย้ายเซอร์โวตามลำดับ หากความแตกต่างระหว่างพวกเขาจะเป็นศูนย์นั่นหมายความว่าปริมาณของแสงเท่ากันจะลดลงทั้ง LDR ดังนั้นแผงเซลล์แสงอาทิตย์จะไม่เคลื่อนที่ เราได้ใช้ตัวแปรชื่อข้อผิดพลาดและค่าของมันคือ 5 การใช้ตัวแปรนี้ก็คือถ้าความแตกต่างระหว่างสอง LDRs จะอยู่ภายใต้ 5 แล้ว servo จะไม่ย้าย ถ้าเราไม่ทำเช่นนี้ servo จะหมุนเวียนอยู่ และถ้าความแตกต่างมากกว่าค่าความผิดพลาด (5) เซอร์โวจะเลื่อนแผงโซลาร์เซลล์ไปในทิศทางของ LDR ซึ่งไฟตกลง ตรวจสอบรหัสฉบับสมบูรณ์และวิดีโอสาธิตด้านล่าง
  int R1 = analogRead (LDR1); // ค่าอ่านจาก LDR 1
  int R2 = analogRead (LDR2); // อ่านค่าจาก LDR 2
  int diff1 = abs (R1 - R2); // การคำนวณความแตกต่างระหว่าง LDR
  int diff2 = abs (R2 - R1);
  
  if ((diff1 <= error) || (diff2 <= ข้อผิดพลาด)) {
    / / ถ้าความแตกต่างอยู่ภายใต้ข้อผิดพลาดแล้วไม่ทำอะไรเลย
  } else {    
    ถ้า (R1> R2)
    {
      initial_position = - แรกเริ่ม; // เลื่อนเซอร์โวไปทาง 0 องศา
    }
    ถ้า (R1 <R2) 
    {
      initial_position = ++ initial_position; // เลื่อนเซอร์โวไปทาง 180 องศา
    }
  }

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

รหัส
#include <Servo.h> // รวมทั้งไลบรารีเซอร์โวเซอร์โว  
เซอร์ sg90; / / การเริ่มต้นตัวแปรสำหรับ servo ชื่อ sg90 
int initial_position = 90; / ประกาศตำแหน่งเริ่มต้นที่ 90 
int LDR1 = A0; // ขาที่ LDR เชื่อมต่อ
int LDR2 = A1; // ขาที่ LDR เชื่อมต่อ
ข้อผิดพลาด int = 5; // เริ่มต้นตัวแปรสำหรับข้อผิดพลาด
int servopin = 9; 
การตั้งค่าเป็นโมฆะ ()  
  sg90.attach (servopin); // ติดตั้งเซอร์โวบน pin 9 
  pinMode (LDR1, INPUT); / / การทำ PIN LDR เป็น input 
  pinMode (LDR2, INPUT); 
  sg90.write (initial_position); / / ย้ายเซอร์โวที่ 90 องศา
  ล่าช้า (2000); // ให้ความล่าช้า 2 วินาที
}   
 
void loop ()  
{  
  int R1 = analogRead (LDR1); // อ่านค่าจาก LDR 1 
  int R2 = analogRead (LDR2); // อ่านค่าจาก LDR 2 
  int diff1 = abs (R1 - R2); // การคำนวณความแตกต่างระหว่าง
  int ของ LDR diff2 = abs (R2 - R1); 
  
  ถ้า ((diff1 <= ข้อผิดพลาด) || (diff2 <= ข้อผิดพลาด)) { 
    // ถ้าความแตกต่างที่อยู่ภายใต้ข้อผิดพลาดแล้วไม่ทำอะไรเลย
  } else {     
    if (R1> R2) 
    {
      initial_position = - แรกเริ่ม; // เลื่อนเซอร์โวไป 0 องศา
    } 
    ถ้า (R1 <R2)  
    { 
      initial_position = ++ initial_position; // เลื่อนเซอร์โวไปทาง 180 องศา
    } 
  } 
  sg90.write (initial_position); / / เขียนตำแหน่งเพื่อ
  ล่าช้าservo (100); 
}
วีดีโอ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

งานที่ 5 ระบบควบคุณภาพในสถานประกอบการ

มาตรฐาน ISO 9001 ISO 9001 เป็นมาตรฐานสากลที่องค์กรธุรกิจทั่วโลกให้ความสำคัญ เพื่อความเป็นเลิศทางด้านคุณภาพ และความมีประสิทธิภาพของการ...