Light-Tracker

Introducere

Doresc sa realizez un panou auto-orientabil dupa soare sau cea mai puternica lumina. Orientarea se va realiza prin comanda de la un buton sau ciclic la un anumit interval de timp hardcodat. Ce face special proiectul meu este faptul ca voi urmari ca miscarea sa fie minimala incat sa nu consum mai mult decat as castiga prin orientarea dupa sursa de lumina; nu voi realiza miscari inutile ale motoarelor. Pentru a atinge acest deziderat voi folosi cat mai multi senzori cu putinta pentru a esantiona spatiul. Precizia nu este la un nivel foarte inalt (30 de grade), dar castig prin economie de putere folosita.

Descriere generală

După cum se cunoaşte, intensitatea într-un punct a luminii este dată de produsul scalar între vectorul intensităţii luminii şi normala la plan în punctul respectiv. Produsul scalar se scrie precum produsul modulelor şi cosinusul unghiului dintre cele două direcţii; dezirabil este ca acest cosinus să fie maxim (1) şi deci unghiul să fie nul. Graficul produsului scalar în funcţie de unghi este practic o cosinusoidă. Din ea vom tăia valorile negative (imposibile fizic în cazul de faţă) şi o vom shifta vertical, considerând o componentă continuă - lumina ambientală.
Orice altă sursă de lumină relativ puternică ar putea denatura această aliură a graficului.

light_theory.jpg

Voi poziţiona 6 senzori în planul XOY la câte 60 de grade. În acest moment obţin 6 eşantioane echidistante din tot planul. Toată problema se reduce la a determina shiftarea orizontală / de fază a sampleurilor faţă de o cosinusoidă - eroare 30 de grade. După deplasarea panoului în jurul axei Z, folosesc 4 senzori, tot la 60 de grade (de fapt refolosesc doi de la pasul anterior), pentru a eşantiona un semiplan care conţine direcţia sursei de lumină. Voi roti panoul în jurul normalei la acest plan pentru a îl orienta perpendicular pe direcţia sursei de lumină.

Hardware Design

Piese:

  • 8 Fotorezistori 20 Ohmi - 300 Kohmi
  • 8 rezistente pentru divizoarele de tensiune
  • 8 capacitati 100nF pentru eliminare diverse zgomote
  • 2 servomotoare nemodificate (180 grade)
  • diverse montaje din plastic, cabluri
  • transformator 6V

Software Design

A fost necesarea instalarea, pe windows:

  • Procyon Avrlib
  • WinAvr cu Programmer's Notepad
  • Proteus 6 Professional

Pe Linux:

  • uisp pentru programarea bootloaderului prin paralel

Se calculeaza care intrare de pe ADC are valoare minima. Montajul cu fotorezistorul la masa inseamna ca acea intrare cu tensiune minima este indreptata catre sursa de lumina. Urmeaza actionarea motorului 1 impreuna cu updatarea starii curente a pozitiei unghiulare, mereu shiftata in [0;180] grade.
Procedeu similar pentru intrarile ADC 0,3,6,7 (pentru semiplan), remasurate dupa rotatie. De data aceasta fotorezistorii nu se invart odata cu motorul, deci nu este nevoie sa tinem minte pozitia unghiulare curenta, rotatiile sunt mereu absolute (fata de origine).

Rezultate Obţinute

Valori mici pana la ordinul unitatilor si zecilor pentru soare puternic pe intrarile ADC. Separare clara intre fotorezistori si valori destul de stabile. Pentru sursa fixa, dispozitivul are o buna stabilitate / convergenta a gasirii solutiei si validarii acesteia. Desi este setat sa faca refresh la trei secunde, solutia este validata si dispozitivul nu se misca daca sursa de lumina a ramas neschimbata.
Momentan a fost testat doar pe lumina naturala.
Trebuie alimentat de la un transformator, fie el chiar si cu iesire usb, altfel lasa uC-ul fara curent.

-->>Demonstratie Inregistrata si Incarcata Pe Youtube

rgnspztedbc

Concluzii

O metoda eficienta de a orienta un panou de dimensiuni mici dupa soare, fara consum mare de energie. Precizia este destul de mica (cel mai rau caz - +/-60 de grade, in medie +/- 30 de grade pentru fiecare din cele 2 planuri).

Download

Aveti atasat proiectul WinAvr cu surse, makefile si obiecte deja compilate. Include schema simulare Proteus si in plus fata de proiect, arhiva surse doar pentru controlul a doua motoare Futaba prin Timer1, surse realizate de mine.
proiect_light_tracker.zip

Jurnal

  • 16 mai - Am efectuat comanda de doua motoare servo Futaba S3003 pe sierra.ro
  • 21 mai - A sosit comanda motoarelor de la sierra.ro
  • 25 mai - Am achizitionat 8 fotorezistori cu plaja cam de 20 Ohmi - 300 KOhmi
  • 31 mai - Am ancorat un motor intr-o carcasa de plastic si am confectionat un montaj dintr-un pet taiat pe care am “brodat” cei opt rezistori astfel incat sa esantiez cat mai bine spatiu in doua plane perpendiculare. Am redactat Controlling two Futaba servo motors with ATmega16
  • 3 iunie - Am reusit sa imi confectionez un isp dintr-un port parallel incat sa incarc de acasa bootloaderul. Acum am reusit sa fac primul program sa ruleze pe placa (invartitul motoarelor).

Bibliografie/Resurse

pm/prj2010/mcarjaliu/light-tracker.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0