TSL1401 Line Sensor: Rozdiel medzi revíziami
Zo stránky SensorWiki
Riadok 18: | Riadok 18: | ||
# Určte vzdialenosť kamery od 3cm pásiku, aby sa premietol na celý čip. | # Určte vzdialenosť kamery od 3cm pásiku, aby sa premietol na celý čip. | ||
# Pomocou osciloskopu a čierneho pásiku zaostrite kameru | # Pomocou osciloskopu a čierneho pásiku zaostrite kameru | ||
# Zistite vplyv osvetlenia zadnej steny čipu na kvalitu obrazu | |||
# Pripojte kameru k PC a pomocou demonštračného programu zosnímajte jednoduchý čiarový kód | # Pripojte kameru k PC a pomocou demonštračného programu zosnímajte jednoduchý čiarový kód | ||
# Pozrite si zároveň aj signál na osciloskope (uložte na USB klúč) | # Pozrite si zároveň aj signál na osciloskope (uložte na USB klúč) | ||
# Zistite vplyv zmeny expozičnej doby na kvalitu snímky | |||
# Zosnímajte predložený čiarový kód. | # Zosnímajte predložený čiarový kód. | ||
# Záznam z každej úlohy vypracujte vo forme technickej správy. | # Záznam z každej úlohy vypracujte vo forme technickej správy. | ||
Riadok 25: | Riadok 27: | ||
[[Súbor:TSL1401chip.jpg]] | [[Súbor:TSL1401chip.jpg]] | ||
<source lang=c> | |||
/* ************************************************************ */ | |||
/* Cvicenie so snimacom TSL1401 -- riadkovy CMOS snimac 128px */ | |||
/* */ | |||
/* ************************************************************ */ | |||
// Sensor interface: | |||
#define AOpin 0 // Analog output - yellow | |||
#define SIpin 3 // Start Integration - orange | |||
#define CLKpin 2 // Clock - red | |||
// Vcc - brown | |||
// GND - black | |||
#define NPIXELS 128 // No. of pixels in array | |||
byte Pixel[NPIXELS]; // Field for measured values <0-255> | |||
#define FASTADC 1 | |||
// defines for setting and clearing register bits | |||
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) | |||
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) | |||
void setup(void) | |||
{ | |||
pinMode(SIpin, OUTPUT); | |||
pinMode(CLKpin, OUTPUT); | |||
//pinMode (AOpin, INPUT); | |||
digitalWrite(SIpin, LOW); // IDLE state | |||
digitalWrite(CLKpin, LOW); // IDLE state | |||
#if FASTADC | |||
// set prescale to 16 | |||
sbi(ADCSRA,ADPS2); | |||
cbi(ADCSRA,ADPS1); | |||
cbi(ADCSRA,ADPS0); | |||
#endif | |||
Serial.begin (115200); | |||
} | |||
void loop (void) | |||
{ | |||
int i; | |||
int expTime; | |||
digitalWrite (CLKpin, LOW); | |||
digitalWrite (SIpin, HIGH); | |||
digitalWrite (CLKpin, HIGH); | |||
digitalWrite (SIpin, LOW); | |||
delayMicroseconds (1); /* Integration time */ | |||
/* and now read the real image */ | |||
for (i = 0; i < NPIXELS; i++) { | |||
Pixel[i] = analogRead (AOpin)/4 ; // 8-bit is enough | |||
digitalWrite (CLKpin, LOW); | |||
delayMicroseconds (1); | |||
digitalWrite (CLKpin, HIGH); | |||
} | |||
Serial.write ((byte)0); // sync byte = 0 | |||
for (i = 0; i < NPIXELS; i++) { | |||
Serial.write ((byte)Pixel[i]+1); | |||
} | |||
} | |||
</source> |
Verzia z 10:05, 13. marec 2013
Základom kamery je lineárne senzorové pole 128x1 doplnené o vzorkovací obvod. Funkcia je popísaná v datasheete. Kamera okrem toho obsahuje oddelovací zosilňovač, ktorého schéma zapojenia je tu:
Dokumenty:
Úlohy
- Určte ohniskovú vzdialenosť objektívu
- Určte vzdialenosť kamery od 3cm pásiku, aby sa premietol na celý čip.
- Pomocou osciloskopu a čierneho pásiku zaostrite kameru
- Zistite vplyv osvetlenia zadnej steny čipu na kvalitu obrazu
- Pripojte kameru k PC a pomocou demonštračného programu zosnímajte jednoduchý čiarový kód
- Pozrite si zároveň aj signál na osciloskope (uložte na USB klúč)
- Zistite vplyv zmeny expozičnej doby na kvalitu snímky
- Zosnímajte predložený čiarový kód.
- Záznam z každej úlohy vypracujte vo forme technickej správy.
/* ************************************************************ */
/* Cvicenie so snimacom TSL1401 -- riadkovy CMOS snimac 128px */
/* */
/* ************************************************************ */
// Sensor interface:
#define AOpin 0 // Analog output - yellow
#define SIpin 3 // Start Integration - orange
#define CLKpin 2 // Clock - red
// Vcc - brown
// GND - black
#define NPIXELS 128 // No. of pixels in array
byte Pixel[NPIXELS]; // Field for measured values <0-255>
#define FASTADC 1
// defines for setting and clearing register bits
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
void setup(void)
{
pinMode(SIpin, OUTPUT);
pinMode(CLKpin, OUTPUT);
//pinMode (AOpin, INPUT);
digitalWrite(SIpin, LOW); // IDLE state
digitalWrite(CLKpin, LOW); // IDLE state
#if FASTADC
// set prescale to 16
sbi(ADCSRA,ADPS2);
cbi(ADCSRA,ADPS1);
cbi(ADCSRA,ADPS0);
#endif
Serial.begin (115200);
}
void loop (void)
{
int i;
int expTime;
digitalWrite (CLKpin, LOW);
digitalWrite (SIpin, HIGH);
digitalWrite (CLKpin, HIGH);
digitalWrite (SIpin, LOW);
delayMicroseconds (1); /* Integration time */
/* and now read the real image */
for (i = 0; i < NPIXELS; i++) {
Pixel[i] = analogRead (AOpin)/4 ; // 8-bit is enough
digitalWrite (CLKpin, LOW);
delayMicroseconds (1);
digitalWrite (CLKpin, HIGH);
}
Serial.write ((byte)0); // sync byte = 0
for (i = 0; i < NPIXELS; i++) {
Serial.write ((byte)Pixel[i]+1);
}
}