Operácie

TSL1401 Line Sensor: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Balogh (diskusia | príspevky)
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

  1. Určte ohniskovú vzdialenosť objektívu
  2. Určte vzdialenosť kamery od 3cm pásiku, aby sa premietol na celý čip.
  3. Pomocou osciloskopu a čierneho pásiku zaostrite kameru
  4. Zistite vplyv osvetlenia zadnej steny čipu na kvalitu obrazu
  5. Pripojte kameru k PC a pomocou demonštračného programu zosnímajte jednoduchý čiarový kód
  6. Pozrite si zároveň aj signál na osciloskope (uložte na USB klúč)
  7. Zistite vplyv zmeny expozičnej doby na kvalitu snímky
  8. Zosnímajte predložený čiarový kód.
  9. 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);  

   }
}