Forum: Mikrocontroller und Digitale Elektronik MEGA32 - ADC defekt ?


von Jens (Gast)


Lesenswert?

Hallo, habe die AVR-Ctrl aufgebaut und auch die Heizungssteuerung
erfolgreich per ISP eingespielt.

Einer der beiden Sensoren funktioniert nicht (mehr?), sondern bleibt
immer auf einem Wert stehen, der sich mit jedem Reset ändert.
Sensortausch über Kreuz hat auch nix gebracht.
Die geteilte Spannung vom 1,5K Widerstand und dem KTY-91/110 liegt am
MEGA an.

Hat evtl. die Software ein Problem, oder kann auch einer der beiden
ADC
Eingänge evtl. durch statusche Aufladung hinüber sein ?

Danke für eure Hilfe

von Sonic (Gast)


Lesenswert?

Also wenn was hinüber ist ist es wohl der ADC, den gibt's nur einmal,
also dürfte kein AD-Wert mehr einzulesen sein.
Was mich bei der sauteuren MEGA32-Version (wohl die von 'CON..'?)
erstaunt ist, dass ein C-Interpreter auf einem µC implementiert ist,
der sowieso in C programmiert werden kann ??!! Kauf' Dir lieber 'nen
ATmega32, den Quarz kriegste auch selber dran und sparst dabei noch 35
€!

von Jens (Gast)


Lesenswert?

Sorry,

es ist ein ATMEGA32 für 3 Euro etwas.

von Sonic (Gast)


Lesenswert?

Na gott sei dank ist nicht noch jemand auf 'C' reingefallen!

von Jens (Gast)


Lesenswert?

Ok,

selberlesen macht schlau.

Es gibt nur einen ADC, der auf 8 Leiungen (PA0-PA7) geschaltet werden
kann. PA1 nimmt keine Werte mehr ein bzw. nimmt keine Änderungen an.


Reset ohne Sensoren:         Anzeige zeigt ??
Reset mit "warmen" Sensor:   Anzeige für Ta konstant bei 35 Grad
Reset mit "kaltem" Sensor:   Anzeige für Ta konstant bei 30 Grad

Tk läßt sich durch Handerwärmung von 28 auf 37 Grad bringen:
Ta bleibt auf Wert stehen.



Gruß
Jens

von Sonic (Gast)


Lesenswert?

Also scheint der ADC zu arbeiten. Müsste sich demzufolge um ein
Hardwareproblem zu handeln. Ist die Eigangsspannung am entsprechenden
Pin OK? Ich kenne die Applikation nicht, aber der AD-Multiplexer
spricht bei offenem Eingang leicht über, also wäre es auch möglich dass
ein falscher Eingang belegt oder programmiert wurde.

von Hubert.G (Gast)


Lesenswert?

Wenn du die Sensoren tauscht, bleibt dann der Fehler oder wandert er
mit?

von Jens (Gast)


Lesenswert?

Hallo Hubert,

Sensortausch bringt nix.

Beide Sensoren liefern jeweils ca. 2 Volt an den PA Pins,
und ändern die Spannung bei Erwärmung auch.

Die erste ADC Wandlung klappt für den Außenfühler.

( Beide KTY sind mit ca. 20 cm Draht an der AVR angeschlossen)
Dannach kommt immer der gleiche, erste Wert.



Gruß
Jens

von Jens (Gast)


Lesenswert?

Bei den gegebenen Symptomen sieht es so aus, als ob PollingMinute
eine Veränderung der Außentemperatur "verhindert".
PollingMinute wird durch Interrupt Service Routine verändert.

Fazit: Controller macht anscheinend keinen Timer-Interrupt mehr.



------------------------------------------------------------------------ 
---------------
void GetTemperatur(unsigned char Start)
{
 signed int tmp_int;

 tmp_int = read_adc(1);

 if(Start) AussenTemperatur = tmp_int;
 if(PollingMinute)
  {
    if (AussenTemperatur > tmp_int)      AussenTemperatur--;
    else if (AussenTemperatur < tmp_int) AussenTemperatur++;
    PollingMinute = 0;
  }
 tmp_int = read_adc(2);

 if (KesselTemperatur > tmp_int)      KesselTemperatur--;
  else if (KesselTemperatur < tmp_int) KesselTemperatur++;
 if(Start) KesselTemperatur = tmp_int;
}

von Uwe (Gast)


Lesenswert?

Hi!
Das sieht eher nach einem Softwarefehler aus, denn nach Reset wird er
scheinbar gelesen. Vermutlich wird dann im Laufenden Prog. der Mux
nicht richtig umgeschaltet oder zugeordnet.-> Im Prog. Fehlerstelle
suchen. Kannst ja auch ein Minimalprogr. schreiben welches nur PA1
wandelt und irgendwo anzeigt.

Viel Erfolg, Uwe

von CLanghans (Gast)


Lesenswert?

Hi, auch wenn es schon ewig her ist. ich hatte heute ein sehr ähnliches 
Problem. Im Register des ADC lag stets der selbe wert vor, obwohl er im 
Freerunning war. Ich hatte auf die höchsten zwei bit verzichtet und nur 
ADCL ausgesen. Nachdem ich mir lange den Kopf zerbrochen hatte, stieß 
ich auf den Hinweiß, dass die Register erst wieder aktualisiert werden, 
wenn ADCH ausglesen wurde. Vielleicht hilfts ja.

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.