Forum: Mikrocontroller und Digitale Elektronik Fototransistor SFH 300 an ADC vom Atmega644


von Christian H. (thunder2002) Benutzerseite


Lesenswert?

Hi,

mal wieder scheitere ich wohl an den einfachsten Dingen...

Ich wollte die Helligkeit mit einem Fototransistor messen, habe mir 
dafür den SFH 300 besorgt. Hab gelesen das der Emitter (langes Bein) 
Richtung GND muss. Dann hab ich ein paar Beiträge gefunden wonach es 
wohl Schaltungen gibt die diesen mit 100 Omh aber auch mit 10kOhm 
betreiben. Ich hab mitlerweile 270 Ohm, 4.7kOmh und 10kOhm getestet, das 
ist alles was ich in dem Bereich da habe. Ich habe dazu den Widerstand 
im Stromfluss vor den Fototransistor geschaltet und den Widerstand mit 
Vcc verbunden. Den Fototransistor dann an PA0 (ADC0). AVCC liegt auf VCC 
und GND unterhalb von AVCC ebenfalls auf "normalem" GND.

Wiefolgt mein Code das dann zu messen und anzuzeigen:
1
// enable ADC
2
ADCSRA |= (1<<ADEN); 
3
// disable ADC interrupt
4
ADCSRA &= ~(1<<ADIE); 
5
// prescaler = 110 = 64
6
ADCSRA |= (1<<ADPS2) | (1<<ADPS1);
7
ADCSRA &= ~(1<<ADPS0);
8
// AVCC as reference
9
ADMUX &= ~(1<<REFS1);
10
ADMUX |= (1<<REFS0);
11
// ADC0 as input
12
ADMUX &= ~(1<<MUX4);
13
ADMUX &= ~(1<<MUX3);
14
ADMUX &= ~(1<<MUX2);
15
ADMUX &= ~(1<<MUX1);
16
ADMUX &= ~(1<<MUX0);
17
18
spi_master_init();  
19
20
dogm_init();
21
22
while (1)
23
{
24
  dogm_clear();
25
26
  // start converstion
27
  ADCSRA |= (1<<ADSC);
28
  while (ADCSRA & (1<<ADSC));
29
30
  uint16_t val = ADCL;
31
  val += (ADCH<<8);
32
33
  char tmp[6];
34
  ItoA(val, &tmp);
35
  dogm_goto(0,0);
36
  dogm_print_string(tmp);
37
38
  _delay_ms(5000);
39
}

Ich messe leider immer 1023 als maximalwert, außer ich zieh den 
Fototransistor dann pendelt der freie pin bei ca. 110. Es ändert sich 
nichts je nach Lichtverhältnis und Widerstand :( Kann mir jemand helfen 
und sagen was ich falsch mache?

CU Chris

von Mathias O. (m-obi)


Lesenswert?

Warum nutzt du nicht einen Fotowiderstand? Du willst doch messen und 
nicht sagen wann Licht da ist und wann nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.