Hallo Leute
Ich will mit meinem ATMega8 die Temperatur messen! Dazu hab ich einen
Wiederstand, der je nach Temperatur seinen Wiederstand ändert! Jetzt
weis ich aber nicht ob ich denn richtig angeschlossen habe!? hab den
Wiederstand sowohl mal an GND als auch VCC angeschlossen und dann gegen
PC0... Der hat ungefähr 1,5 Ohm bei raumtemperatur! Als Aref hab ich
intern 2,5... V eingestellt!
Das hier ist mein Code:
Hi
>Ist an dem Code was falsch? Und warum liegt an meinem Wiederstand keine>Spannung an egal ob ich diesen gegen masse oder vcc schalte!?
Wo soll die Spannung herkommen? Eine Spannung kannst du nur messen, wenn
ein Strom durch den Widerstand fließt.
>Der hat ungefähr 1,5 Ohm bei raumtemperatur!
Nicht sehr geeignet.
MfG Spess
ADC schrieb:> Dazu hab ich einen Wiederstand, der je nach Temperatur seinen> Wiederstand ändert!> Der hat ungefähr 1,5 Ohm bei raumtemperatur!
Bist du dir sicher dasses sich um einen temperaturabhängigen Widerstand
(NTC bzw. PTC) und nicht um ein Thermoelement handelt?
Gruß,
Magnetus
oh ja natürlich Widerstand...
Hab mich verschrieben! Der hat 1,5 KOhm! Das müsste ein Widerstand sein!
Wenn ich ihn ans multimeter anstecke und ihn dann erwärme verringert
sich sein widerstand...
Ich muss ihn also gegen Vcc stecken oder?
ADC schrieb:> Ich muss ihn also gegen Vcc stecken oder?
Ob gegen GND oder VCC (genauer gesagt VREF) ist egal. Damit legst du
eigentlich nur fest, ob die gemessene Spannung mit zunehmender
Temperatur kleiner oder größer wird. Du musst halt nur mit Hilfe eines
weiteren Widerstands einen Spannungsteiler aufbauen.
Gruß,
Magnetus
durch denn Widerstand fliesen gerade mal 3,5mA... hab mal so ne
spannungsteilerschaltung gebaut und jetzt kann ich auch ne Spannung
messen! ca. 3V abhängig von der Temperatur... Diese schaltung sieht so
aus:
> 1kOhm Widerstand----VCC(5V)
Masse(0V)----Thermowiderstand <
> PB0
Verständlich?
jedoch zeigt mir das Display immer nur zwei verschiedene Werte an:
10000000 und 00000000 (<--- nicht abhängig von der Temperatur glaub ich)
Was läuft da falsch?
Hi
>ca. 3V abhängig von der Temperatur... Diese schaltung sieht so aus:....
Du hast nach eigenen Angaben 2,5V Referenzspannung. Also kannst du nur
Spannungen <=2,5V Messen. Nimm statt dem 1K mal 2k.
MfG Spess
Ich hab jetzt mal die Referenzspannung hoch auf 5 V und 2 kOhm
Widerstand genommen aber es kommen immer noch nur diese beiden Werte!?
@magnetus: Ja die Frage ist WO?
R20 enthält das anzuzeigende Zeichen:
lcd_data:
mov r21, r20
Hier lädst Du mehrfach eine ASCII "1" nach R20 und gibst diese aus:
ldi r20, 0x31
rcall lcd_data
und dann führst Du eine Endlosschleife aus.
Welche Funktion erwartest Du von Deinem Programm ?
Hi
>Hab jetzt auch schon den Verdacht, dass es daran liegen könnte!?
Nicht wahrscheinlich. Nach dem Programm in deinem 1.Post machst du nur
eine Messung. Nach einer Umschaltung der Referenzspannung (in deiner
Initialisierung) ist die erste Messung fehlerbehaftet. Füge mal eine
Dummymessung ein.
MfG Spess
Also ich hab in meinem Hauptprogramm noch einen Fehler entdeckt: ich hab
immer geschrieben:
1
sbrs r16, 7
2
ldi r20, 0x30
3
sbrc r16, 0 <-------
4
ldi r20, 0x31
5
rcall lcd_data
1
sbrc r16, 7
In der markierten zeile müsste anstelle der 0 eine 7 stehen(hab ich
jetzt nur als Beispiel herangezogen! In den 6 anderen Fällen hab ichs
jetzt auch geändert...
ich will von denn ganzen Code, dass er mir ein Byte in ASCII Zeichen
(also '0' und '1') umwandelt und Bit für Bit jeweils als Byte auf dem
Display ausgibt!
ja genau r20 ist für das aktuelle Byte vorgesehen, das als nächstes
gesendet werden soll! aber ich überprüfe ja immer zuvor ob an der
aktuellen Stelle im Byte eine 1 oder 0 steht!? je nach dem wird dann
0x30 ('0') oder 0x31 ('31') geschrieben...
Könnt ihr mir folgen?
ja - ok - hättest Du dazu schreiben sollen....
Wie spess schon schrieb, taugt die erste Messung nichts.
Ausserdem gibst Du mit R16 ja nur ADCH und nicht ADCL aus.