mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MEGA32 - ADC defekt ?


Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
€!

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry,

es ist ein ATMEGA32 für 3 Euro etwas.

Autor: Sonic (Gast)
Datum:

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

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du die Sensoren tauscht, bleibt dann der Fehler oder wandert er
mit?

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;
}

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: CLanghans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.