Ein Temperatursensor soll über den Arduino Analogeingang überwacht werden. Er liefert eine Spannung zwischen Umin=0,1 und Umax=0,5 Volt. Die Differenz beträgt also nur 0,4 Volt. Das entspricht etwa 20°C (Umin) und 100°C (Umax). Ich habe nicht erwartet, dass die Spannungsdifferenz über den zu messenden Bereich so klein ist. Wenn die Referenzspannung 5 Volt beträgt, wird die Messung vermutlich entsprechend ungenau. Meine Frage ist jetzt, ob und wie ich dem Analogeingang sagen kann, dass die Referenz nur, sagen wir mal, 1 Volt beträgt. In der Skala von 1 Volt würde dann die Messung genauer, denn die 1024 Stufen des Arduino Analogeingang würden sich dann nicht auf 5, sondern nur auf 1 Volt beziehen. Ich hoffe, es ist rübergekommen, was ich beabsichtige. Ich freue mich über alle Tipps, wie ich die Aufgabe lösen kann.
> Ich hoffe, es ist rübergekommen, was ich beabsichtige. Ich freue mich > über alle Tipps, wie ich die Aufgabe lösen kann. Theoretisch koenntest du eine externe Referenzspannung von 1.25V anschliessen, oder vielleicht sogar intern einschalten. Ob das geht sagt dir das Datenblatt deines Mikrocontrollers. Ansonsten hat die Menschheit zur Loesung deiner Probleme den Operationsverstaerker erfunden. Olaf
Roth schrieb: > Wenn die Referenzspannung 5 Volt > beträgt, wird die Messung vermutlich entsprechend ungenau. Dann stell sie doch auf 1,1 V; siehe Datenblatt.
Roth schrieb: > Meine Frage ist jetzt, ob und wie ich dem Analogeingang sagen kann, dass > die Referenz nur, sagen wir mal, 1 Volt beträgt. Der Atmega328 hat eine interne Referenzspannung von 1,1V. Eingestellt wird das im ADMUX-Register. Inwieweit die Arduino-Programmierwelt das unterstützt weiß ich nicht, evtl. muss man das "von Hand" programmieren.
Arduino ist doch im Prinzip Atmega. Ist AnalogReference() vielleicht die Lösung?
Roth schrieb: > Ein Temperatursensor soll über den Arduino Analogeingang überwacht > werden. Er liefert eine Spannung zwischen Umin=0,1 und Umax=0,5 Volt. > Die Differenz beträgt also nur 0,4 Volt. Das entspricht etwa 20°C (Umin) > und 100°C (Umax). > > Ich habe nicht erwartet, dass die Spannungsdifferenz über den zu > messenden Bereich so klein ist. Fortgeschrittene Bastler verlassen sich nicht auf ihre Erwartungen, sondern lesen das Datenblatt des Sensors, um zu entscheiden ob er überhaupt paßt und/oder ob sie das Signal noch analog verarbeiten müssen, bevor sie es in einen ADC-Kanal ihres µC füttern können. Stichwort Signalkonditionierung. > Wenn die Referenzspannung 5 Volt > beträgt, wird die Messung vermutlich entsprechend ungenau. Das muß man nicht vermuten, sondern kann es auch ausrechnen. Ein 10-Bit ADC hat bei 5V Referenzspannung eine Auflösung von ca. 5mV. Der 400mV Bereich des Sensors wird also in 80 Schritte aufgelöst, was ziemlich genau 1° Temperaturauflösung ergibt. Der Fehler des ADC ist in der gleichen Größenordnung. Ob das für eine "Überwachung" (du hast nicht "Messung" geschrieben) reicht, weißt nur du selber. > Meine Frage ist jetzt, ob und wie ich dem Analogeingang sagen kann, dass > die Referenz nur, sagen wir mal, 1 Volt beträgt. Wenn der µC auf deinem Arduino ein ATMega328 ist, dannn kann man die Referenzspannung des ADC auf 1.1V umschalten und zumindest prinzipiell könnte am am AREF-Pin des µC auch eine externe Referenzspannung von z.B. 1V anlegen und dann ebenfalls auf diese Referenzspannung umschalten. Ob das Arduino-Framework das unterstützt, weiß ich nicht. Aber Google findet für "arduino analogread referenzspannung umschalten" einen Hinweis auf https://www.arduino.cc/reference/de/language/functions/analog-io/analogreference/. Das sieht doch schon mal gut aus. Es könnte wie eine gute Idee erscheinen, die Referenzspannung extern auf 0.4V zu legen. Ist es aber nicht. Der ADC funktioniert unterhalb einer bestimmten Größe der Referenzspannung nicht mehr. Bzw. der Fehler wird astronomisch groß. Datenblatt des µC lesen!
Man könnte das analoge Signal auch einfach verstärken, bevor man es in den ADC füttert. Das ist es, was man normalerweise tun würde. Man nehme dazu einen OPV und einen nicht invertierenden Verstärker mit einem GAIN von z.B. 10.
jemand schrieb: > Man nehme dazu einen OPV und einen nicht invertierenden Verstärker mit > einem GAIN von z.B. 10. Einige AVR/Arduinos haben das eingebaut. Das Arduino Framwork kann da von Hause aus nicht damit umgehen, aber bei Bedarf kann ich eine Klasse, welche das kann, hier publizieren
Bis 125°C bieten sich auch digitale Sensoren an. Entweder als Chip (DS18B20) oder als Sensor im Metallrohr: https://www.conrad.de/de/makeblock-temperatursensor-1549329.html
jemand schrieb: > Man könnte das analoge Signal auch einfach verstärken, bevor man es in > den ADC füttert. Das ist es, was man normalerweise tun würde. Normalerweise verwendet man eine stabile Referenz-Spannung, nicht VCC. Es sei denn, die Messung selbst liefert Spannungen relativ zu VCC. Für den Fall des TO scheint mir die interne 1,1V Referenz sehr gut geeignet. Ein zusätzlicher Verstärker würde das Signal nur unnötig verfälschen.
Stefanus F. schrieb: > Für den Fall des TO scheint mir die interne 1,1V Referenz sehr gut > geeignet. Ein zusätzlicher Verstärker würde das Signal nur unnötig > verfälschen. Mir fällt Offset und Rauschen ein. Beides ist bei der Anwendung kein Problem - einen ordenltichen OPV vorausgesetzt. Ich werf mal einen OPA340 ins Rennen. Bei einem GAIN von 10 wäre der Offset <2,5mV (der OPV hat 250µV), und das Rauschen durch den OPV liegt bei 25nV/SQRT(f) was zu irgenwas im µV-Bereich führt. Also alles total wurscht. Welche weiteren "Verfälschungen" du meinst, müsstest du schon näher ausführen. Das man eine Referenz verwendet ist geschenkt. Das geht bei diesem Arduino-gelumpe halt nicht gescheit. Man kann die interne nehmen, aber so super ist die auch nicht.
jemand schrieb: > Das geht bei diesem > Arduino-gelumpe halt nicht gescheit. Was meinst du damit? Oder ist das einfach nur wieder so ein fürchterlich dummer Arduino Bashing Spruch?
Hallo, Arduino ist eben hier Reizwort... Allerdings hat ein Teil der Arduino-User auch dazu beigetragen. Doku lesen scheint unbeliebt zu sein. https://www.arduino.cc/reference/en/language/functions/analog-io/analogreference/ analogReference(INTERNAL) hätte man sonst wohl selbst gefunden. Gruß aus Berlin Michael
:
Bearbeitet durch User
Roth schrieb: > Die Differenz beträgt also nur 0,4 Volt. Das entspricht etwa 20°C (Umin) > und 100°C (Umax). Wie nennt sich der Sensor?
Stefanus F. schrieb: > Normalerweise verwendet man eine stabile Referenz-Spannung, nicht VCC. Das ist nicht notwendig ein Widerspruch. Je nachdem welcher Arduino das ist und wie man ihn mit Spannung versorgt, kommt Vcc aus einem Spannungsregler (oder evtl. auch nicht). Die Spannung aus dem Spannungsregler ist im Zweifel ebenso stabil wie die interne Referenzspannung. Ist ja auch die gleiche technische Grundlage heutzutage; nämlich eine Gandgap-Referenz.
:
Bearbeitet durch User
Axel S. schrieb: > Die Spannung aus dem Spannungsregler ist im Zweifel ebenso stabil wie > die interne Referenzspannung. Nein, ist sie nicht, weil sie "im Zweifel" zum Beispiel vom Laststrom abhängt, der bei getakteten CMOS Schaltungen Prinzip-bedingt extrem schwankt. Dazu kommt Spannungsabfall an den Leitungen, insbesondere auch den Leitungen innerhalb des IC Gehäuses.
Michael U. schrieb: > Doku lesen scheint unbeliebt zu sein. Das sagst Du was! Womöglich noch die Anforderungen mitzuteilen ist absolut 'uncool' ;-)
Hallo, Roth schrieb: > Meine Frage ist jetzt, ob und wie ich dem Analogeingang sagen kann, dass > die Referenz nur, sagen wir mal, 1 Volt beträgt. In der Skala von 1 Volt > würde dann die Messung genauer, denn die 1024 Stufen des Arduino > Analogeingang würden sich dann nicht auf 5, sondern nur auf 1 Volt > beziehen. das war seine Frage auf die ich geantwortet haben. Die hätte er eigentlich in 3 Minuten googeln selbst beantworten können. Ob er mit der so erreichbaren Auflösung und Genauigkeit klarkommt muß er doch selber wissen... Gruß aus Berlin Michael
Arduino Fanboy D. schrieb: >> Das geht bei diesem >> Arduino-gelumpe halt nicht gescheit. > Was meinst du damit? > > Oder ist das einfach nur wieder so ein fürchterlich dummer Arduino > Bashing Spruch? Du kannst auf einen Arduino uno (so als Beispiel) gar keine externe ADc-Referenz draufbauen. Der ATMEGA der dort drauf ist, hat keinen VREF-Pin soweit ich sehe. Und das ist völlig unnötigerweise so, denn ein ATMEGA-128 an Sich hätte serwohl einen Eingang für eine Referenzspannung. Man hätte halt ein Package mit entsprechendem Pin nehmen können. Es wäre somit für <0,1€ problemlos möglich gewesen, eine saubere und genaue Referenz zu verbauen (eine olle TL431 von mir aus). Das man das nicht getan hat, spricht Bände. Dass das bisher keiner der Arduino-Jünger gemekt hat, ebenso.
jemand schrieb: > Das man das nicht getan hat, spricht Bände. Dass das bisher keiner der > Arduino-Jünger gemekt hat, ebenso. Das einzige was hier Bände spricht, ist deine herzerfrischende Kenntnisfreiheit, gepaart mit gottähnlicher Überlegenheit. Ja, beim UNO gibt es keinen Pin namens Vref. Allerdings einen mit dem Namen Aref. Wofür der wohl gut ist... jemand schrieb: > ATMEGA-128 Was ist das? Mit einem UNO hat das nichts zu tun, oder?
Michael U. schrieb: > Doku lesen scheint unbeliebt zu sein. Ihr Laberköppe ;) Axel S. schrieb: > Fortgeschrittene Bastler verlassen sich nicht auf ihre Erwartungen, > sondern lesen das Datenblatt des Sensors, um zu entscheiden ob er > überhaupt paßt und/oder ob sie das Signal noch analog verarbeiten > müssen, bevor sie es in einen ADC-Kanal ihres µC füttern können. Nee das geht leider nicht immer. Arduino Fanboy D. schrieb: > Wie nennt sich der Sensor? Er wird bei VW 'G2' genannt. G2 ist sowohl in ZE als auch in das KI integriert. G2 wird von meiner Schaltung ZUSÄTZLICH abgegriffen, also in eingebautem und systemintegrierten Zustand. Die G2 Widerstands-Kennlinie habe ich, aber die nützt mir nichts, weil da eben noch eine Blackbox (VW-Kühlwassersystem) dranhängt, zu deren 'Erforschung' ich tatsächlich keine Zeit und auch keine Lust habe. Die von mir gemessenen Werte (0,1 bis 0,4V) lassen vermuten, dass VW einen Spannungsteiler mit relativ kleinem Widerstand verwendet. Aber eben nur vermuten. Den resultierenden Wert, den von mir genannten Spannungsbereich, muss ich so verwenden, denn anpassen kann und darf ich ihn nicht, weil da noch mehr dran hängt, u.a. das MSG (Motorsteuergerät). Also habe ich den Wert (über einen möglichst großen Widerstand) abgegriffen und so MEINER Steuerung zugefügt. Beim Messen, was da eigentlich an Spannung-von-bis auftritt, kam ich auf den o.g. Spannungsbereich.
Und .... danke an alle :) auch an die "Laberköppe" ^^ :)
Arduino Fanboy D. schrieb: > Ja, beim UNO gibt es keinen Pin namens Vref. > Allerdings einen mit dem Namen Aref. > Wofür der wohl gut ist... Du hast recht! Das habe ich tatsächlich übersehen. Da hat jemand den sogar mitgedacht und den auf die Stiftleiste geklemmt. In dem Fall ist es sogar sinnvoll möglich, eine Referenz zu verwenden. Danke für die Korrektur. Was dsa Problem: Die sinnvollste Lösung für das Problem ist ein Verstärker, nicht eine niedrigere Referenzspannung.
Hallo jemand schrieb: > Du hast recht! > Das habe ich tatsächlich übersehen. Da hat jemand den sogar mitgedacht > und den auf die Stiftleiste geklemmt. > > In dem Fall ist es sogar sinnvoll möglich, eine Referenz zu verwenden. > Danke für die Korrektur. leider aber nur halb mitgedacht: AVCC ist nicht gefiltert und einen Kondensator zwischen AREF und AGND an sinnvoller Stelle gibt es auch nicht. Wenn es mein Projekt wäre würde ich es trotzdem testen, AREF auf internal, Sensor ran und Werte begutachten. 100nF könnte man auch testweise zwischen dem AREF-Pin und dem benachbarten GND am UNO anstecken. Es hängt doch stark von der Anwendung ab, ob es so ausreicht. Ich zumindest messe hier die Luftfeuchte auch nicht mit 2 Stellen hinter dem Komma, auch wenn es der Sensor angeblich können soll. Ich brauche diese Auflösung praktisch einfach nicht. Ich bräuchte z.B. auch im Auto die Kühlwassertemperatur nichtmal auf 1 Grad genau und auch nicht zwingend mit 1 Grad Auflösung. Gruß aus Berlin Michael
Stefanus F. schrieb: > Axel S. schrieb: >> Die Spannung aus dem Spannungsregler ist im Zweifel ebenso stabil wie >> die interne Referenzspannung. > > Nein, ist sie nicht, weil sie "im Zweifel" zum Beispiel vom Laststrom > abhängt, der bei getakteten CMOS Schaltungen Prinzip-bedingt extrem > schwankt. Albern. Wenn man dem AREF-Pin wie vom Hersteller empfohlen (und wohl von den meisten Arduinos auch umgesetzt) einen Abblockkondensator spendiert, dann ist die Referenzspannung tiefpaßgefiltert. Vielleicht doch erstmal das Datenblatt lesen.
Michael U. schrieb: > Es hängt doch stark von der Anwendung ab, ob es so ausreicht. Kommt mal wieder runter. Ich will die Kühlwassertemperatur des Fahrzeugs anzeigen. Mit der original Kühlwassertemperaturanzeige des Cockpits. Die ist ohnehin nur "Pi-mal-Daumen". Also keine Dr-Arbeit vermuten ;) Der (für mich) relativ kleine Spannungsbereich, den ich im Range 20 bis 100° C gemessen habe, ließ mich Probleme mit einer halbwegs genauen Datenerfassung vermuten. Das Problem ist ja nun gelöst durch die Möglichkeit der Anpassung der Referenzspannung. Danke nochmal. Für alle, die das Wort "Plateaufunktion" noch nie gehört haben (ich gehörte auch dazu), will ich auch den Grund des Ganzen erörtern. VW hat in der Anzeige der Kühlwassertemperatur eine sogenannte "Plateaufunktion" implementiert. Die hat laut VW den Zweck, Alarmstimmung (und Anrufe) besorgter Fahrer bei vermeintlich "zu hoher Kühlwassertemperatur" zu vermeiden. Im Temperaturbereich zwischen ca. 75 und 107°C wird nicht mehr die tatsächliche Temperatur, sondern IMMER 90°C angezeigt. Da ich die genaue Temperatur sehen will, stört mich das. An die Original-Umrechnungstabelle im EPROM das KI komme ich natürlich nicht so einfach ran. Also habe ich mir was anderes ausgedacht: Schrittmotor von der Platine ablöten (Foto) und mit einem eigenen uC ansteuern. Der Arduino nur zum Testen. Im Auto ist mir der zu groß. Wenn hinterher alles funzt, spendiere ich dem Projekt eine eigene Platine. Vermutlich ATMega. So, Spekulationen können aufhören, jetzt wisst ihr es ;)
Info zur Fahrerberuhigungs-Aktion von VW, der Plateau-Funktion: https://www.t4-wiki.de/wiki/Plateau-Funktion ähm warum muss ich jetzt gerade an den VW-Dieselskandal denken ..... ^^
Servus! wenn es nur das Ziel hat die Kühlmitteltemperatur bei VW im Bereich um 90Grad exakter angezeigt zu bekommen? Als Vorschlag zum probieren: Einfach einen preiswerten (5Euro ebay) ELM327 China Bluetooth Clone + Torque Android APP. Die Kühlmittel-Temp ist dort meistens enthalten. Ob dieser Wert auch Plateau gefiltert ist würde ich mal bezweifeln. Beste Grüße! Maddin PS. Der tip passt nur für OBD-II fähige FAhrzeuge. Benzin ab 2001, Diesel ab 2003 laut wiki.
:
Bearbeitet durch User
Frage des TO: Meine Frage ist jetzt, ob und wie ich dem Analogeingang sagen kann, dass die Referenz nur, sagen wir mal, 1 Volt beträgt. In der Skala von 1 Volt würde dann die Messung genauer, denn die 1024 Stufen des Arduino Analogeingang würden sich dann nicht auf 5, sondern nur auf 1 Volt beziehen. Antwort (kurz und bündig) - vgl.Arduino Referenz-Seite: https://www.arduino.cc/reference/en/language/functions/analog-io/analogreference/ analogReference() [Analog I/O] Description: Configures the reference voltage used for analog input (i.e. the value used as the top of the input range). The options are: Arduino AVR Boards (Uno, Mega, etc.) DEFAULT: the default analog reference of 5 volts (on 5V Arduino boards) or 3.3 volts (on 3.3V Arduino boards) INTERNAL: an built-in reference, equal to 1.1 volts on the ATmega168 or ATmega328P and 2.56 volts on the ATmega8 (not available on the Arduino Mega) INTERNAL1V1: a built-in 1.1V reference (Arduino Mega only) INTERNAL2V56: a built-in 2.56V reference (Arduino Mega only) EXTERNAL: the voltage applied to the AREF pin (0 to 5V only) is used as the reference. mfG Grober Klotz
Hallo, und welchen entscheidenden Vorteil hat Deine Antwort jetzt gegenüber meiner von 17.09.2018 11:09? Gruß aus Berlin Michael
:
Bearbeitet durch User
@Roth: Was sagt eigentlich der TÜV dazu? So ein ähnliches Projekt hab ich auch mal machen wollen, aber rechtlich ist man da äußerst beschränkt. Mal angenommen, man verursacht einen Kurzschluss o.ä.?
Viktor B. schrieb: > Was sagt eigentlich der TÜV dazu? Wenn die Abgaswerte des verwendeten Arduinos stimmen, ist das ok. Meiner erfüllt die Werte ;)
Wieso scheidet bei Deiner Anwendung ein Verstärker mit OPV aus? Ein nichtinvertierender Verstärker mit OPV ist von Haus aus hochohmig, d.h. er belastet Deinen Messpunkt nicht mehr als der Eingang des Arduino. Wenn Du ganz sicher gehen willst nimmst Du halt einen OPV mit FET Eingang - der ist dann sehr hochohmig. Man kann auch über einen Doppel-OPV nachdenken. Der erste OPV wird als Spannungsfolger geschalten (Verstärkung 1) und dient zur Entkopplung. Der zweite OPV macht die eigentliche Verstärkung.
Zeno schrieb: > Wieso scheidet bei Deiner Anwendung ein Verstärker mit OPV aus? Gegenfrage: Was nützt mir ein Operationsverstärker, wenn das auch ohne geht?
jemand schrieb: > Die sinnvollste Lösung für das Problem ist ein Verstärker, nicht eine > niedrigere Referenzspannung. Wieso soll eine Lösung die zusätzliche Bauteile erfordert, die sinnvollste sein? Klar, es kommt darauf an welche Genauigkeit man erwartet. Wie oben jemand vorgerechnet hat, kommt man schon bei 5V ref, auf eine Auflösung von 1°. Der Sensor wird kaum erheblich genauer als das sein.
Wenn man einen Spannungsfolger einbaut, könnte der ggf. nen floatenden Pin abfangen? Was passiert denn wenn der kleine Käfer startet oder hängen bleibt? Nicht das du dann da noch irgendwas zurück schickst.
Nico W. schrieb: > Wenn man einen Spannungsfolger einbaut, könnte der ggf. nen floatenden > Pin abfangen? Was passiert denn wenn der kleine Käfer startet oder > hängen bleibt? Nicht das du dann da noch irgendwas zurück schickst. Man greift das Signal einfach über einen Widerstand (1 MOhm) ab. Leckströme bei feuchter Luft dürften eine höhere 'Last' Darstellen. Am ADC-Eingang liegt zudem ein 10 nF Kondensator nach GND. Nein, man macht keine 10000 Messungen/s.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.