Operácie

Projekt: Snímač farby ColorPal: Rozdiel medzi revíziami

Z SensorWiki

Riadok 68: Riadok 68:
 
#include <stdio.h>
 
#include <stdio.h>
  
char sgetc(void)
+
char sgetc(void)
 
{
 
{
 
while ((UCSR0A & (1 << RXC0)) == 0)                // Wait for data to be received  
 
while ((UCSR0A & (1 << RXC0)) == 0)                // Wait for data to be received  
Riadok 78: Riadok 78:
  
  
    int main(void)
+
int main(void)
    {
+
{
 
char buffer[9];
 
char buffer[9];
 
inituart();
 
inituart();
  
int i;
+
int i;
  
 
FILE mystdout = FDEV_SETUP_STREAM(sendchar, NULL, _FDEV_SETUP_WRITE);
 
FILE mystdout = FDEV_SETUP_STREAM(sendchar, NULL, _FDEV_SETUP_WRITE);
Riadok 94: Riadok 94:
 
     lcdControlWrite(1<<LCD_CLR);            // display clear
 
     lcdControlWrite(1<<LCD_CLR);            // display clear
 
     lcdControlWrite(0x40);  
 
     lcdControlWrite(0x40);  
lcdDataWrite('I');
+
    lcdDataWrite('I');
  
 
unsigned char znak;
 
unsigned char znak;

Verzia zo dňa a času 13:45, 24. január 2013

Snímač farby ColorPAL

  • Vypracovali:
Bc. Tamás Vincze
Bc. Adam Rozsár
  • Študijný odbor: Aplikovaná mechatronika
  • Ročník: 2.Ing

Zadanie

Zobrazte na LCD aktuálnu snímanú farbu zmeranú snímačom ColorPal.

Snímač a generátor farby ColorPAL

Vlastnosti

  • Sníma celý rozsah farieb o ktorých dáva informáciu vo forme RGB (Red/Green/Blue) komponentov.
  • Sníma spektrum okolitého osvetlenia s citlivosťou až 44uW/cm2 na lsb.
  • Generuje 24 bitové farby pomocou vstavaného RGB LED.
  • Možnosť pripojenia priamo na skúšobnú dosku alebo pomocou.
  • Na detekciu a generovanie farby využíva sériovú komunikáciu cez jeden pin.
  • Detekcia a generovanie farieb je riadené pomocou vstavaného mikrokontrolera.
  • Disponuje vstavanou EEPROM pamäťou pre uloženie snímaných informácií a generačných programov.
  • Autorun funkcia umožňuje spustenie vopred určeného programu iba použitím napájania.

Princíp činnosti

ColorPAL používa RGB LED na osvetlenie meranej farby (jedna farba naraz), spolu so široko spektrovým prevodníkom svetlo-napätie na meranie odrazeného svetla. Podľa množstva svetla ktoré sa odráža od meranej farby pri osvetlení od červenej, zelenej a modrej LED diódy je možné určiť farbu vzorky. ColorPAL používa sveteľný senzor TAOS typu TSL13T, ktorý má krivku spektrálnej citlivosťi nasledovný:

Obr1.png

Obr. 1: Krivka spektrálnej citlivosti prevodníka svetlo-napätie

Prevodník je kombináciou fotodiódy a transimpedančného zosilňovača v jednom integrovanom obvode. Aktívna plocha fotodiódy je 0.5 mm x 0.5 mm a senzor vníma žiarenie s vlnovou dĺžkou v rozsahu od 320 nm do 1050 nm.Výstupné napätie sa mení lineárne s intenzitou dopadajúceho žiarenia.

Obr2.jpg

Obr. 2: Funkčná schéma zapojenie prevodníka

Obr3.jpg

Obr. 3: Pohľad z hora prevodníka

Výstupom snímača je napätie, úmerný všetkým svetlom ktoré detekuje a ktoré sú potom merané podľa hore uvedenek krivky spektrálnej citlivosti. Keď predmet je osvetlený iba červenou LED, tak snímač bude reagovať s napätím úmerným červenej zložky z farby predmetu a podobne s modrou a zelenou. Snímač a RGB LED diódy sú umiestnené vedľa seba v jednej plastickej trubice.


Použitie

Senzor používa 3 piny: regulované +5V napájanie, zem a sériový dátový pin s otvoreným kolektorom. Pri práci sme snímač napojili na skúšobnú dosku podľa Obr. 2. Museli sme dávať pozor, aby bol jumper vhodne nastavený, na Vdd a nie na Vin.

Obr2.png

Obr. 4: Schéma zapojenia snímača ColorPAL

Programovanie

Komunikácia s ColorPAL-om je realizovaná cez seriálnu linku, prijímanie a odosielanie medzi 2400 a 7200 baudom. ColorPAL má v sebe zabudovaný pullup rezistor, preto nie je potrebné používať externe. Pretože používa open-drain protokol, pin ktorý sa používa na komunikáciu s ColorPAL-om by mal byť vždy nastavený ako vstupný, okrem prípadu keď ......... Pri inicializovania snímača musíme čakať aby ColorPAL dal tento pin do jednotky predtým než začneme posielať príkazy.


Snímač môže pracovať v rôznych módoch:

  • Priamy mód: príkazy sú prijímané a vykonávané ihneď
  • Bufferovací mód: príkazy sú prijímané a uložené do buffera pre použitie v budúcnosti
  • Vykonávací mód: príkazy, ktoré sú uložené do EEPROM pamäte, sa vykonajú


Snímač vieme resetovať troma rôznymi spôsobmi:

  • Powerup: pri prvom zapnutí ColorPAL začne vykonávať príkazy, ktoré sú uložené vo vnútornej pamäti EEPROM na adrese 00. Pri novom, ešte neprogramovanom snímači tento program prejde do priameho módu.
  • Short Break: 7 milisekundová logická 0 resetuje snímač a začne sa vykonávať Powerup.
  • Long Break: 80< milisekundová logická 0 resetuje snímač a vstúpy do Priameho módu.

Riešenie

#include "lcd.h"
#include "serial.h"
#include <stdio.h>

char sgetc(void)
{
while ((UCSR0A & (1 << RXC0)) == 0)                // Wait for data to be received 
	  {
	    // Do nothing until data have been recieved and is ready to be read from UDR
	  }; 
      return UDR0;                               // Fetch the recieved byte    
}


int main(void)
{
char buffer[9];
inituart();

int i;

FILE mystdout = FDEV_SETUP_STREAM(sendchar, NULL, _FDEV_SETUP_WRITE);
		
inituart();
			_delay_ms(80);
lcdInit4();     
			_delay_ms(80);

    lcdControlWrite(1<<LCD_CLR);            // display clear
    lcdControlWrite(0x40); 	 
    lcdDataWrite('I');

unsigned char znak;
 			_delay_ms(2000);

     lcdInit4();                             // inicializacia v 4-bitovom rezime
     lcdControlWrite(1<<LCD_CLR);            // display clear
     lcdControlWrite(0x40);                  // pozicia 0,0

		lcdDataWrite(znak='A');   
		lcdDataWrite(znak='H'); 
		lcdDataWrite(znak='O'); 
		lcdDataWrite(znak='J'); 


 	stdout = &mystdout;           // Odteraz funguje printf();
//	DDRD|=0x07;
//	PORTD=0x00;

   	DDRD&=0xF8;		//0bemenet 1kimenet
	PORTD=0x00;		//PULL-UP beallitva
	
	DDRD|=0x06;
	PORTD=0x00;

		_delay_ms(80);

	DDRD&=0xFA;