Arduino Solar Tracker

Apa yang berlaku:

Ia mencari sumber cahaya terang seperti matahari.

Terdapat versi baru dan lebih baik projek ini: //www.instructables.com/id/Dual-Axis-300W-IOT-Solar-Tracker/

Langkah 1: Bagaimana Ia berfungsi

Bagaimana ia berfungsi:
Saya telah membuat sensor 4 LDRs dengan helaian di antara mereka

Titik putih adalah LDRs

Apabila batang di atas dituju kepada matahari atau titik terang
Empat LDR mendapat jumlah cahaya yang sama.


Contoh1 apabila lampu ditinggalkan di atas:
kanan atas, ke bawah, kiri-bawah berada dalam bayang-bayang
dan kiri-atas mendapatkan yang paling ringan

Contoh2 apabila cahaya berada di atas
kiri dan ke bawah berada dalam bayang-bayang dan atas berada dalam cahaya

Langkah 2: Senarai Bahagian

  • E-mel 2 x servo Ebay 1.5 $ / sekeping
  • 4 x lightdepending resistors (ldr) Murah LDR pada Ebay 0.78 $ untuk 20 pcs
  • 4 x resistor 10K Resistor pada Ebay 0.78 $ untuk penghantaran percuma 50pcs
  • 1 x Arduino Arduino UNO Ebay pautan 3.5 $ penghantaran percuma
  • 2 x potensiometer 10k (nilai tidak kira) Ebay link

Langkah 3: Set-up

Hanya gam panas itu bersama-sama !!!

Langkah 4: Litar

Langkah 5: Kod

anda boleh memuat turun kod ke bawah halaman ini

/ * kod ini ditulis oleh geobruce
untuk maklumat lanjut periksa laman web saya //xprobe.net
* /
#include // termasuk perpustakaan Servo

Servo mendatar; / servo mendatar
int servoh = 90; // berdiri servo mendatar

Servo menegak; / servo menegak
int servov = 90; / servo tegak berdiri

// Sambungan pin LDR
// name = analogpin;
int ldrlt = 0; // LDR ke kiri atas
int ldrrt = 1; // LDR atas rigt
int ldrld = 2; // LDR ke kiri
int ldrrd = 3; // ldr down rigt

batal persediaan ()
{
Serial.begin (9600);
// sambungan servo
// name.attacht (pin);
horizontal.attach (9);
vertical.attach (10);
}

kekosongan gelung ()
{
int lt = analogRead (ldrlt); // kiri atas
int rt = analogRead (ldrrt); // kanan atas
int ld = analogRead (ldrld); // bawah kiri
int rd = analogRead (ldrrd); // bawah rigt

int dtime = analogRead (4) / 20; // baca potensiometer
int tol = analogRead (5) / 4;

int avt = (lt + rt) / 2; // nilai purata atas
int avd = (ld + rd) / 2; // nilai purata ke bawah
int avl = (lt + ld) / 2; // nilai purata yang tinggal
int avr = (rt + rd) / 2; // Nilai purata betul

int dvert = avt - avd; // periksa perbezaan di atas dan ke bawah
int dhoriz = avl - avr; // periksa perbezaan dan kiri dan rigt

jika (-1 * tol> dvert || dvert> tol) // periksa apakah perbezaan di sudut toleransi lain mengubah sudut menegak
{
jika (avt> avd)
{
servov = ++ servov;
jika (servov> 180)
{
servov = 180;
}
}
lain jika (avt <avd)
{
servov = --servov;
jika (servov <0)
{
servov = 0;
}
}
vertical.write (servov);
}

jika (-1 * tol> dhoriz || dhoriz> tol) // periksa apakah perbezaan di dalam toleransi lain menukar sudut mendatar
{
jika (avl> avr)
{
servoh = --servoh;
jika (servoh <0)
{
servoh = 0;
}
}
lain jika (avl <avr)
{
servoh = ++ servoh;
jika (servoh> 180)
{
servoh = 180;
}
}
lain jika (avl == avr)
{
/ tiada apa-apa
}
horizontal.write (servoh);
}
kelewatan (dtime);
}

Lampiran

  • solar_tracker__english_.pde Muat turun

Artikel Berkaitan