Introducere

Lumina este reprezentata de o unda electromagnetica, perceputa diferit, in functie de lungimea de unda. Lumina este absorbita de ochiul uman, care asociaza fiecarei lungimi de unda o anumita culoare. In practica, un obiect are culoarea rosie deoarece tot spectrul vizibil este asborbit de acesta, mai putin lungimea de unda corespunzatoare culorii rosii, care va fi reflectata, dand astfel nuanta obiectului. Colorimetru este un dispozitiv care poate determina concentatiile de culori dintr-un obiect. Pentru implementarea circuitului se foloseste un senzor, principalul responsabil in determinarea culorii.

Descriere generală

In continuare voi prezenta pasii necesari realizarii unui dispozitiv pentru recunoasterea culorii unui obiect -un colorimetru. Acest tip de dispozitiv poate fi folosit pentru un robot (de exemplu, daca dorim ca un robot sa recunoasca anumite obiecte in functie de culoarea lor), sau in realizarea unor obiecte de design (realizarea unei lampe ambientale care isi schimba culoarea in functie de culoarea obiectelor din jur).

Hardware Design

Pentru implementarea circuitului, voi construi un senzor care trebuie sa fie capabil sa faca diferenta intre culori. Voi folosi un fotorezistor, care va utiliza comparatia la nivel de stralucire a culorii pentru a gasi nuanta dorita. Fotorezistorul este o rezistenta a carei valoare depinde de lumina incidenta ce cade pe ea.Rezistenta acestuia variaza invers proportional cu cantitatea de lumina incidenta. Fotorezistorul va fi inconjurat de trei LED-uri avand culorile de baza (verde, rosu, albastru), care vor emite pe rand asupra obiectului; vom inregistra valorile stralucirii culorii. Problemele care apar sunt la culorile apropiate in spectru (galben, portocaliu), deoarece fotorezistoarele au nivele de sensibilitate diferite pentru diferite culori.

Pentru a putea fi folosita in componenta detectorului de culoare, fotorezistenta trebuie calibrata. Fiind foate sensibila la variatii mici ale intensitatii luminoase, masuratorile sunt influentate de prezenta sau absenta luminii din mediul in care sunt realizate, cat si de distanta la care este plasat LED-ul fata de aceasta.Astfel, toate determinarile se vor efectua la intuneric (intr-o cavitate special realizata), componenta fiind fixata astfel incat fiecare dintre cele trei LED-uri (rosu, verde, albastru) sa emita perpendicular si la aceeasi distanta fata de aceasta.

Realizand un circuit simplu, precum cel de mai jos, se determina valorile fotorezistentei la iluminarea succesiva cu cele trei culori de baza. Se intregisteaza astfel urmatoarele valori:

    led rosu: intensitatea curentului 23,7 mA; rezistenta fotorezistentei: 465 ohmi
    led verde: intensitatea curentului 19,4 mA; rezistenta fotorezistentei: 430 ohmi
    led albastru: intensitatea curentului 20 mA; rezistenta fotorezistentei: 478 ohmi

    

Observatie: pentru a determina valoarea rezistentei, componenta conectata la multimetru se plaseaza deasupra LED-ului, iar rezultatul va fi afisat pe display-ul aparatului. Astfel am determinat sensibilitatea fotorezistentei la cele trei nuante; pentru cea mai mica valoare a rezistentei, piesa va fi cea mai sensibila. Analizand datele obtinute, se va alege rezistenta de 430 (gasita pentru LED-ul verde), pentru a putea determina cu ajutorul ei tensiunea ce va fi folosita pentru programarea micorcontrolerului, conform urmatoarei scheme

In urma masuratorilor efectuate asupra celor trei LED-uri, tensiunile obtinute folosind montajul cu rezistenta de 430 Ω sunt:

    LED rosu: 1,6V ;
    LED verde: 1,35V;
    LED albastru:1,13V.
    

Rezulta ca, pentru a ne construi montajul dorit avem nevoie de rezistentele urmatoare (aferente ledurilor):

    Ralbastru=55Ω
    Rrosu=80Ω
    Rverde=130Ω

Fiecare led inseriat cu rezistenta lui este legat la cate un pin al procesorului (PC7,PC3,PB6) Fotorezistenta va fi pasata in mijlocul triunghiului format din cele 3 leduri. Ea va fi legata intre rezistenta de 430 ohmi si masa.

Software Design

Pentru inceput, am scris un cod simplu pentru a verifica montajul din sectiunea anterioara. Ledurile se aprind si se sting pe rand.

  #include <avr/io.h>
  #define F_CPU 16000000
  #include <util/delay.h>
   
  int main(){
  	/*setez pinii de iesire*/
  	DDRC = (1<<PC7)|(1<<PC3);
	DDRB = 1<<PB6;
  	while(1){
	/* aprind un led,astept 1000ms si apoi il sting*/
  		PORTC = PORTC ^ (1<<PC7);
		_delay_ms(1000);
		PORTC = PORTC ^ (1<<PC7);
		PORTC = PORTC ^ (1<<PC3);
		_delay_ms(1000);
		PORTC = PORTC ^ (1<<PC3);
		
		PORTB = PORTB ^ (1<<PB6);
		_delay_ms(1000);
		PORTB = PORTB ^ (1<<PB6);
		
  		
  	}
  	return 0;
  }
  
  

In continuare trebuie sa scriu un cod in care sa citesc tensiunea de la adc dupa aprinderea fiecarui led. Pe baza unei formule voi determina apoi culoarea obiectului dorit.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

pm/prj2010/amocanu/colorimetru.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