TSL1401 Line Sensor: Rozdiel medzi revíziami
Z SensorWiki
(→Úlohy) |
(→Úlohy) |
||
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 zo dňa a času 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);
}
}