Forum: Mikrocontroller und Digitale Elektronik ADC und Widerstand messen


von Michael B. (michael123)


Angehängte Dateien:

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

von Thorsten (Gast)


Lesenswert?

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

von Michael B. (michael123)


Lesenswert?


von Sepp -O- (Sepp_O) (Gast)


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

von Thorsten (Gast)


Angehängte Dateien:

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

von Michael B. (michael123)


Lesenswert?

Hallo,

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

danke
Michael

von Thorsten (Gast)


Angehängte Dateien:

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

von Michael B. (michael123)


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

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.