mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC und Widerstand messen


Autor: Michael Brambach (michael123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte mit dem ATmega8 einen Temperaturdatenlogger bauen. Dazu habe
ich mir schon folendes überlegt:

Ich muss dem ATmega8 irgendwie sagen wei viel OHM der Widerstand den
ich messen möchte, welcher von der Temperatur abhängt, hat. Das dachte
ich mach ich am besten mit dieser Hrdware:

http://coelmoba.co.funpic.de/Messungwirderstand1.bmp

So nun muss ich ja noch die Daten abspeichern. Das dachte ich, das ich
diese Daten in den eeprom schreibe.
Nun muss ich dann auch noch die Daten mit dem Computer abholen ohne ihn
mit dem ISP zu erkennen. Das dachte mache ich mit einem UART interrupt
und hole mir die Daten.

Das sind mein Überlegungen welche ich dann auch schon mal in einem
Programm zusammen geschreiben also Programmiert habe. Alles in BASCOM.


Dazu nun meine Fragen:
Ist der ADC so richtig geschreiben? (Ist der Port am µC richtig?)
Wie lange braucht der µC um die For-Schleife zu durchlaufen?
Ist der eeprom nach dem der µC in die ENDED-Unendlich-Schleife sprint
voll also so das keine Daten verloren sind oder geht och was rein oder
ist er übervoll also das er übergelaufen ist?
Kann ich die Interrupt Rotine so lassen? Also das beim Terminelprogramm
keine "Schmierzeichen" erscheine?
Ist die Speicher und Lese Rotine für den eeprom richtig?
Gibt es besser möglichkeiten den Widerstandswert zu erfassen? (kann
auch eine Andere hardware haben und eine Andere Programmiersprche sein
solange das Programm gut kommentirt ist.)

So das waren sie schon die Fragen. Ich weiß das es viel Fragen sind
aber ich bin halt neu auf dem Gbiet genau gesagt sei drei Tagen und
möchte auch mal so gut wie IHR werden. Also helft mir BITTE.

mfg
Michael

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,
Warum so kompliziert? Der Mega8 hat doch einen eingebauten ADC. Was für
einen Sensor willst Du denn benutzen?
Gruss,
Thorsten

Autor: Michael Brambach (michael123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es ist der:

http://www.reichelt.de/inhalt.html?SID=15LfIk06wQA...

Warum Kompliziet ich verwende doch den ADC vom ATmega8.

Ach ja noch eine Frage:
Wie muss ich dan die FUSEBits setzen?

mfg
Michael

Autor: Sepp -O- (Sepp_O) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um den ADC zu aktivieren muß man nicht an die Fuses.

Es reicht wenn man wie es im Datenblatt gezeigt wird, die einzelnen
Register richtig setzt.

Schau dir mal im Codesammlung mal den Beitrag "Wie sag ich's meinem
AVR" an.

Das Datenblatt mal genau durchzulesen hilft auch.

mfg Sepp

Autor: Thorsten (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Michael,
dass Du den ADC benutzt habe ich inzwischen auch entdeckt :-) - Du
verwendest ihn aber eher als Software-Komparator. Weiterhin hat Deine
Schaltung das Problem, dass die Kapazität des Kondensators deine
Messung beeinflusst, und die ist erstens nicht genau und zweitens
ebenfalls temperaturabhängig. Einfacher und wahrscheinlich auch genauer
wäre es, den Spannungsabfall am Sensor in einem Spannungsteiler direkt
zu messen. Im attachment ist eine Schaltung, die bei mir sehr gut
funktioniert (ich verwende einen KTY81-210, für den NTC musst Du halt
den Vorwiderstand noch anpassen). In der Software schalte ich dann PC1
ein, dadurch wird erstens AREF gesetzt und zweitens fliesst über den
Vorwiderstand ein Strom durch den Sensor. Den Spannungsabfall am Sensor
messe ich dann mit ADC0. Anschliessend PC1 wieder auf low, um Strom zu
sparen.

WIe Du die Fusebits setzen musst steht im Datenblatt und hängt von
verschiedenen Faktoren ab, z.B. welchen Takt Du verwendest (externer
Quarz, interner Oszillator) etc.

Gruss,
Thorsten

Autor: Michael Brambach (michael123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kannst du mir auch dann noch eine Beispiel sofware für geben?

danke
Michael

Autor: Thorsten (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Michael,
Hier meine Funktion zum ADC lesen. Ist aber in C, von Bascom hab ich
keine Ahnung. Den Speisungs-Pin steuere ich im Hauptprogramm, ist aber
trivial:
Erst den Pin als Ausgang definieren:
DDRC|= _BV(PC1);

Die Messung selber läuft dann so ab:
PORTC |= _BV(PC1);
value16 = ADCReadChannel(0);
PORTC &= ~_BV(PC1);

Gruss,
Thorsten

Autor: Michael Brambach (michael123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke habe mir gerade eben das GCC-Tutorial ausgedruckt und werde mich
damit mal heute abend und morgen beschäftigen danke

mfg
Michael

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.