PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Temperatursensor am ADC



.Johannes.
05.12.2006, 11:35
Hallo!
Ich habe einen Temperatursensor, dessen Widerstand je nach Temperatur zwischen ungefähr zwischen 0,5kOhm und 2,5kOhm liegt.
diesen habe ich zwischen den ADC eingang und +5V geschaltet.
zwischen Aref und +5V habe ich einen widerstand von 15kOhm, sodass der ADC bei Zimmertemperatur den Wert 460 liefert. als ich ein feuerzeug in die Nähe des Sensors hielt, änderte sich der Wert jedoch nicht.
was mach ich falsch?

Florian
05.12.2006, 12:44
Hallo Johannes!
Sehe ich das richtig, dass Du das Prinzip eines Spannungsteilers verwenden möchtest?
Du musst dann also einen der Widerstände auf GND und einem auf Vcc, sowie den jeweiligen zweiten Pin zum ADC-Eingang legen.
So hast Du den Temperatursensor parallel zum Festwiderstand geschaltet.

http://www.axelbenz.de/root/PhysicalComputing/Bilder/spannungsteiler.gif
Du musst also zwischen R1 und R2 die Spannung mit dem ADC abgreifen.

Viele Grüße
Florian

.Johannes.
05.12.2006, 20:15
Aber was nehme ich dann für Vref?

Florian
06.12.2006, 14:31
Hallo Johannes!
Hast Du denn das Grundprinzip des internen ADCs des AVRs überhaupt schon verstanden?
An AVcc legst Du die Versorgungsspannung (+) von 5V.
An AGND legst Du Ground (-) GND.
Zwischen AVcc und AGND lötest Du am Besten auch noch einen kleinen 100nF-Kondensator zum Abblocken von Spannungseinbrüchen und anderen Störungen.
An Aref legst Du die Referenzspannung, es ist die Spannung, mit der die gemessene Spannung verglichen wird.
Diese Spannung muss kleiner bzw. genau gleich groß wie AVcc sein, aber darf auf keinen Fall größer sein.
Die Analogeingänge ADC0-n sind die eigentlichen Messeingänge.
Aber im Prinzip gibt es nur einen richtigen ADC, der allerdings intern über Multiplex (MUX) mit den Eingängen verbunden wird.

Soweit verstanden?

Für den Sensor brauchst Du auf jeden Fall einen Spannungsteiler, da Du sonst ja keine Spannungsänderungen messen kannst.
Die Dimensionierung können wir besprechen, wenn Du obigen Teil verstanden hast! :o)

Viele Grüße
Florian

MartinFunk
06.12.2006, 15:04
Hallo Joahnnes!
Du könntest auch die intene referenzspannung verwenden?
Die liegt immer bei 2,56 V und ändert sich auch nicht wenn z.B. der Akku
nachläst.
Du must deinen Spannungsteiler dan so dimensionieren das maximal nur 2,56 V anliegen.

MfG Martin

Florian
06.12.2006, 15:09
Hallo Martin!
Danke für den Einwand, das ist natürlich auch eine Lösung, allerdings muss man die interne Referenz extern gut absichern, damit keine Störungen z.B. Spannungseinbrüche o.ä. das Messergebnis verändern, was noch etwas schwieriger ist als insgesamt extern.

Die liegt immer bei 2,56 V und ändert sich auch nicht wenn z.B. der Akku nachläst.Im günstigsten Fall ja, allerdings ist die interne Referenz auch nicht unbedingt "super genau", es kommt darauf an, wie genau die Messergebnisse sein müssen.

Viele Grüße
Florian

MartinFunk
06.12.2006, 16:06
Hallo Florian!
Also ich habe bei meinem Bot die interne referenzspannung verwenden und ich habe damit noch nie irgentwelche probleme gehabt.
Generell hab ich keine spannungseinbrüche da ich vor meinem µC einen fetten Elko eingebaut hab.

MfG
Martin

Florian
06.12.2006, 16:20
Hallo Martin!
Was für Sensoren hast Du denn verwendet?
Vom MAX232 ist man z.B. gewohnt, dass er Störungen "sendet", auch die GP2DX sind nicht ohne.

Generell hab ich keine spannungseinbrücheDas würde ich so nicht stehen lassen wollen, Du siehst sie vielleicht nicht.
Aber kleine Einbrüche gibt es immer und es wird auch nicht zu verhindern sein.
Man kann einiges mit Kondensatoren bereinigen, das ist klar, aber manche Störungen, wie z.B. ungenaue Referenz kann man nicht ausbügeln.
Im AVR wird nur, ich denke mal, über eine Zener-Diode eine Referenzspannung erzeugt.
Durch Temperatur und andere Einflüsse, sowie schon eine "natürliche Ungenauigkeit" wird es immer Unterschiede geben.
Natürlich ist das auch bei externen Referenzen so, aber dort kann man die Referenz besser regeln bzw. sie ist automatisch die selbe wie die, die von den Sensoren verwendet wird.

Aber ich möchte Deinen Vorschlag garnicht schlechtreden, es kommt halt nur darauf an, wie genau die Ergebnisse sein sollen.
Für einfache Anwendungen reicht auch die interne Referenz vollkommen aus.

Viele Grüße
Florian

MartinFunk
06.12.2006, 18:54
Hallo Florian!
Was meinst du mit "Sensoren", für die temperatur oder zum messen von abständen?
Wenn du abstands sensoren meinst benutze ich die hier:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=25634
Ich benutze keinen MAX232 da ich kein RS232 benötige.

MfG Martin

Florian
06.12.2006, 19:52
Hallo Martin!
Entschuldige bitte, dass ich mich bzgl. der Sensoren so ungenau ausgedrückt habe.
Ich wollte nur wissen, welche Art die Sensoren Deines Roboters sind.
Soweit ich sehe basieren Deine Abstandssensoren auf relativ "einfachen" Bauelementen.
Bei allen Komponenten, die Messungen und andere Tätigkeiten in regelmäßigen Zyklen machen, gibt es immer bei diesen einen minimalen Spannungseinbruch, aufgrund der mehr benötigten Energie.
Das lässt sich natürlich mit Kurzeitspeichern, also Kondensatoren, blocken, also das Absacken der Spannung verhindern bzw. -mindern.

Am Besten teilt uns Johannes mit, wie präzise die Messungen sein sollen.
Am "einfachsten" ist natürlich die Verwendung der internen Referenz.
Ungefähr genauso "einfach" ist die Verwendung der Versorgungsspannung, allerdings müsste diese deutlich besser stabilisiert werden.
Komplexer und auch nur für genauere Messungen bzw. Anwendungen angebracht sind externe Referenzquellen, meistens auch Zener-Dioden mit einstellbarer Ausgabespannung.
Johannes müsste sich wohl für eine der beiden ersten Varianten entscheiden.
Welche Referenz passt besser zu den Ausgabewerten des Sensors?
-> Das ist hier im Prinzip relativ egal, denn über die Dimensionierung des Festwiderstandes kann man ja die Ausgabespannung anpassen.

Die Entscheidung zwischen 2,54V und 5V liegt also bei Dir, Johannes! *g*

Viele Grüße
Florian

izaseba
06.12.2006, 20:03
Die Entscheidung zwischen 2,54V und 5V

Wobei 2,54 oder 2,56 oder was auch immer AVR abhängig ist, die kann ganz gut schwanken, man sollte am besten am AREF nachmessen, wie groß sie wirklich ist :-)
Besser ist es VCC als AREF einzustellen und den Spannungsteiler auch mit dieser Spannung speisen, so kann mir egal sein ob ich 5V 4,5 oder was auch immer habe, die gemessenen Werte bleiben immer gleich...

Gruß Sebastian

Florian
06.12.2006, 20:07
Hallo Sebastian!

2,54 oder 2,56 oder was auch immerOaps! *g*
Ich muss zugeben ich habe mich immer gekonnt um die interne Referenz gedrückt ... ;p

Besser ist es VCC als AREF einzustellen und den Spannungsteiler auch mit dieser Spannung speisen, so kann mir egal sein ob ich 5V 4,5 oder was auch immer habe, die gemessenen Werte bleiben immer gleich...
sie ist automatisch die selbe wie die, die von den Sensoren verwendet wird.Danke, dass Du's auf den Punkt gebracht hast! ;o)

Viele Grüße
Florian



PS:
Dein ASM-Tut. finde ich klasse! *lob*
Vielleicht solltest Du den Delay-Loop-Generator vorstellen!?

izaseba
06.12.2006, 20:18
Hallo Florian,


Florian hat folgendes geschrieben::
sie ist automatisch die selbe wie die, die von den Sensoren verwendet wird.
Danke, dass Du's auf den Punkt gebracht hast! ;o)


:oops: Hab ich doch glatt überlesen :oops:



Dein ASM-Tut. finde ich klasse! *lob*
Vielleicht solltest Du den Delay-Loop-Generator vorstellen!?


Danke für die Blumen, ich gib mein bestes, vielleicht wird es irgendwann in einem Jahr mal fertig :-)

Delay-Loop-Generator.... irgendwo hatte ich mal einen Link auf so was feines, ich glaub Java, oder Javascript Anwendung... hättest Du den Link eventuell ?

Gruß Sebastian

P.S.
Ich hasse Delay Schleifen !

Florian
06.12.2006, 20:40
Hallo Sebastian!

Hab ich doch glatt überlesenMacht ja nichts! :o)


Danke für die Blumen, ich gib mein bestes, vielleicht wird es irgendwann in einem Jahr mal fertigDenk' dran, Projekte werden nie fertig, es sei denn man gibt sie auf! *g*

hättest Du den Link eventuell ?Oje, mal sehn, ob ich ihn so auf die schnelle finde ...
Hmmm, der alte Link zum Elektronik-Projekt geht seit dem Forum-Upgrade nicht mehr ... :o(
Ah, hab' ihn:
http://www.home.unix-ag.org/tjabo/avr/AVRdelayloop.html
Alle C-Programmierer müssen halt mit "asm volatile" arbeiten, funktioniert aber auch gut.

P.S.
Ich hasse Delay Schleifen !Ich auch ... für alle, die liber mit Timern arbeiten (ob nun mit oder ohne Interrupt): https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=169

Viele Grüße
Florian

izaseba
06.12.2006, 20:53
Hallo Florian,
Das Programm kenne ich, ich hatte mal eine Web Anwendung, die Dir direkt im Browser die Schleife berechnet hat, muß mal meine Favoriten durchsuchen...

Am sonsten werden wir jetzt ziemlich OT 8-[

Gruß Sebastian

P.S.
Danke für den Link!