Hallo,
eine Frage an die Experten:
Ich versuche den internen Temperatursensor des ATTinys 25 anzusteuern.
Auf große Genauigkeit kommt es mir nicht an.
Bin so langsam echt am verzweifel, was mach ich falsch? Habe mich streng
an das Datenblatt gehalten.
hier mal der Quellcode:
ADTemperatur:
ldi temp_interrupt, 0b10101111 ;intern
out admux, temp_interrupt
ldi temp_interrupt, 0b11000011
out adcsra, temp_interrupt
nop
nop
nop
nop
nop
Feedback3:
SBIC adcsra, 6
rjmp Feedback3
in Temperatur_UL, ADCl
in Temperatur_UH, ADCh
Über eine kleine Hilfe wäre ich euch sehr dankbar. Seit zwei Tagen
bastele ich schon dran rum und habe irgendwie ein Brett vorm Kopf.
Was für Werte habe ich denn bei Raumtemperatur in den Resgistern zu
erwarten?
Ergebnis soll linksbündig sein. Will nur das Highbyte auswerten.
Die Externen Wandler arbeiten problemlos.
Grüße
Karsten
Du weist nicht, was du für Werte erwarten kannst?
Kleine Frage: Wie stellst du fest, dass die Wandlung nicht tut?
Kommt immer 0 raus oder wie macht sich das bemerkbar?
das ist die Routine aus meinem Sensor im Gefrierfach...
Der Offset der Werte ist stark Exemplarabhängig, mit Thermometer
vergleichen und als Konstante dazurechnen reicht für einfache Sachen.
Die Ein-/Ausschalterei des ADC ist dafür, den AVR im Powerdown wenig
Strom verbrauchen zu lassen.
Gruß aus Berlin
Michael
Karsten schrieb:
> Was für Werte habe ich denn bei Raumtemperatur in den Resgistern zu> erwarten?> Ergebnis soll linksbündig sein. Will nur das Highbyte auswerten.
Datenblatt, Table 17.2
BTW: Hier werden sich mehr Leser um Deinen Code kümmern, wenn Du
anstelle der absoluten Werte symbolische verwendest!
im datenblatt stehen ja ein paar werte drin die bei 25 grad zu erwarten
sind.
hatte bisher einen tiny13 eingesetzt.
der tiny25 dient als pwm controller für einen hochsetzer der einen
konstanten strom liefert.
wenn die lampe zu warm wird soll er einfach auf die kleinste stufe die
leistung reduzieren.
wenn noch wer erfahrung mit dem internen sensor gesammelt hat, bin
für jede hilfe dankbar!
auch schon mal vielen dank für die sie schon geantwortet haben.
lg
karsten
Was Deine eigentlich Frage ist, wird mir bisher nicht klar.
Ob Du wirklich 2 Bits verwerfen willst, kann ich nicht entscheiden.
Mach doch mal Folgendes:
- ADC für Temperaturmessung initialisieren
- Messwert auslesen, diesen ersten Wert verwerfen
- ADSC erneut setzen, noch einmal messen
- diesen Wert ausgeben (UART, LCD, LEDs ... irgendwie halt)
Das Ganze ohne große Belastung des Controllers bei Raumtemperatur, um
einen Referenzwert zu bekommen. Eventuell auch eine Messreihe bei
verschiedenen Temperaturen (z.B. Plastiktüte mit warmem Wasser [T
bekannt] auf den µC legen).
hallo,
ich ralle es leider nicht, wie ich den sensor initialisiert bekomme.
habe eigentlich mich nach dem datenblatt gerichtet.
der attiny steuert eine lampe mit einem hochsetzsteller an und
wenn die zu warm wird soll er auf die kleinste stufe dimmen.
mit einem externen sensor bisher kein problem. nur habe ich den externen
port gebraucht und will den internen verwenden. auf genauigkeit kommt es
bei der sache nicht an, nur die finger soll man sich nicht verbrennen..
lg
karsten
hallo,
werde morgen versuchen den ad wert einfach als pwm wert
auszugeben. das sollte mit dem oszilloskop ja kein problem sein.
stimmt schon, leider weiß ich nicht ob ich den adwandler nicht schon
richtig initialisiert habe.
ich werde berichten.
grüße
karsten
Hallo allerseits,
so bin leider erst heute dazu gekommen den AD-Wert des internen Fühlers
über den PWM-Ausgang des ATTinys auszugeben.
vielen Dank an die die mich auf den rechten Pfad der Erkenntnis gebracht
haben.
Wie schon einige vermutet haben war der Temperatursensor richtig
initialisiert und arbeitet auch. Allerdings hatte ich wohl einfach
einen falschen Registerinhalt angenommen und deshalb auch keine
Funktion im meinem Sinne gehabt!
Vielen Dank an Alle! Frohe Ostern