Problem mit Analogmessung atmega8

OP #1672099
Lesenswert?

Hallo,
ich hab die Temperatursteuerung von Thomas Pfeifer (Reflow Ofen) 
nachgebaut und den atmega8 mit der Software gebrannt. Das Funktioniert 
auch so weit.
Nur bei der Temperaturmessung habe ich das Problem, das am Meßeingang 
eine Spannungsdifferenz von ca. 0,5V habe, je nachdem ob der die 
Ausgänge am PORTD 0 oder 1 haben.
Das bedeutet wenn PORTD = 0b00000000 habe ich am Meßeingang PC0 einen 
Spannungsunterschied von 0,5V als wenn PORTD = 0b11100000.

Ich hab keine Ahnung warum...

Hier mal ein kleiner Auszug aus dem Quellcode:
Messung:
1
void adcinit() {
2
  // Activate ADC with Prescaler 16 --> 1Mhz/16 = 62.5kHz
3
  //ADCSRA = _BV(ADEN) | _BV(ADPS2);
4
  ADCSRA = _BV(ADEN) | _BV(ADPS2) | _BV(ADPS1);
5
  ADMUX=  0;
6
}
7

8
int getadc(uint8_t channel) {
9
  // Select pin ADC0 using MUX
10
  ADMUX = channel | _BV(REFS0) | _BV(REFS1);
11

12
  //Start conversion
13
  ADCSRA |= _BV(ADSC);
14

15
  // wait until converstion completed
16
  while (ADCSRA & _BV(ADSC) ) {}
17

18
    // get converted value
19
  return(ADCW);
20
}

Regelung:
1
void control(int t_ist, int t_soll) {
2
  if (t_ist>t_soll) {
3
    PORTD = 0b00000000;  //off
4
  } else {
5
    PORTD = 0b11100000;  //on
6
  }
7
}

Es gibt sicherlich eingie die die Schaltung auch nachgebaut haben.

Viele Grüße
Volker
#1672162
Lesenswert?

Hmm, das Schematic sieht natürlich einwandfrei aus - soweit
ich das beurteilen kann.
Wenn Du die Schaltung selbst aufgebaut hast (Testplatine o.ä.)
würde ich auf ein Masseproblem des TempSensors tippen.
Miss mal diese Masse gegen die am Optokoppler.
Falls Du auch das PCB-Layout übernommen hast, muss ich leider passen.

Viel Erfolg,
T.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren