Forum: Mikrocontroller und Digitale Elektronik Spannung auf A4 messen D/A Wandlung; ARef auf 5V Verständnisfrage! (Arduino Micro)


von aref (Gast)


Lesenswert?

Hi!

ich habe hier ein unbekanntes Bauteil (ich vermute K-Type Thermostat), 
dass bei Erhitzung per Feuerzeug seinen Widerstand vergrößert.


Habe nun einfach 5V auf den Sensor gelegt und Schalte dahinter auf A4; 
also:

+5V -> Sensor -> | -> Masse
                 | -> A4

Auf A4 kommen also sowas um die 4.9 bis 4.7V an je nachdem wie heiß der 
Sensor ist. Der Sensor hat wohl eine große Temperaturspanne.

Nun will ich gern im Bereich 2V bis 5V eine Umrechnung auf int Werte 
0-1024 haben. (A/D-Wandlung)

Habe gelesen, dass ich die A/D-Referenzspannung über ARef anpassen muss.
Lege ich einfach +5V auf ARef an? Oder ziehe ich durch einen Pull-Down 
Widerstand einfach die Gesamtspannung runter? Aktuell bekomme ich immer 
den Wert 0 raus.

Code:

const int tempSensorPin = 4;

void setup() {

  Serial.begin(9600);

  pinMode(tempSensorPin, INPUT);
}

void loop() {

  int tempV = analogRead(tempSensorPin);

  Serial.println("tempV");
  Serial.println(tempV);

  delay(1000);
}

von Arduino (Gast)


Lesenswert?

Die Funktion map() übernimmt das mapping. Um die Kommaposition musst du 
dich evtl. selbst kümmern. http://arduino.cc/en/Reference/Map
1
pinMode(tempSensorPin, INPUT);

Kannst du dir sparen, wenn Du einen Analogen Wert ausliest.

von aref (Gast)


Lesenswert?

Ja, map() kenne ich, aber der Wert ist immer 0. Egal welche Spannung ich 
anlege. Ich dachte, dass AREF ggf. eine falsche Vergleichsspannung hat?

Habe +5V auf AREF gelegt, der Wert ist immer noch 0.
Ich versteh's nicht...

von bibabutzemann (Gast)


Lesenswert?

Laut deinem Schaltplan hast du den analogen Eingang (A4?) mit GND oder 
Masse verbunden. Dann kann auch nichts anderes herauskommen

von aref (Gast)


Lesenswert?

bibabutzemann schrieb:
> Laut deinem Schaltplan hast du den analogen Eingang (A4?) mit GND oder
> Masse verbunden. Dann kann auch nichts anderes herauskommen

Ja, das war falsch, klar.

Habe es nun so:

+5V -> A4 -> Sensor -> GRD

Habe ich natürlich immer 1023 jetzt.

Wie bekomme ich das so hin, dass ich die Spannung hinter dem Sensor an 
A4 anlege? Wenn ich den Sensor GRD direkt an A4 anschließe, fließt 
einfach gar kein Strom...
?!

von aref (Gast)


Lesenswert?

OK, Prolbem: Der Widerstand des Sensors schwankt je nach Temperatur 
zwischen 12 kOhm und 50 Ohm.

Wie bekomme ich das mit den +5V die anliegen gemessen?

Schaltung ist nun +5V an Sensor, GRD des Sensors an A4.

von chippy (Gast)


Lesenswert?

Also wenn dein Sensor nur 2 Anschlüsse hat -wovon ich ausgehe- dann 
musst du den eher so anschliessen :
+5V---Sensor---A4
und GND weglassen.

Verstehe gar nicht wieso du unbedingt GND und +5V anschliessen willst 
?!?

von bibabutzemann (Gast)


Lesenswert?

Also wenns ein Thermoelement ist, dann dürfte es eigentlich nicht als 
Widerstand missbraucht werden. Ein Thermoelement erzeugt doch eine 
Spannung, je nachdem wie heiß es gemacht wird. Sprich: Man müsste die 
Spannung des Thermoelements über einen Operationsverstärker oder so 
verstärken und damit dann in den µC.

von bibabutzemann (Gast)


Lesenswert?

Also ist wohl doch ein PTC/NTC Widerstand, oder? Das geht so nicht mit 
nur einem Widerstand. Du brauchst mindestens zwei Widerstände, damit an 
einem Widerstand (Spannungsteiler) mal mehr oder weniger Spannung (von 
der Referenzspannung = 5V) abfällt, die du dann mit dem ADC (A4) Eingang 
messen kannst.

von aref (Gast)


Lesenswert?

Also das Ding sieht so aus:

    http://www.rmw-kartservice.com/rmw-shop/images/product_images/popup_images/temp--sensor--type--k---abgas-40cm_0.jpg

Und hat 2 Anschlüsse.

Wenn ich mit dem Multimeter den Widerstand messe komme ich bei +25°C auf 
12 kOhm und wenn ich es mit dem Feuerzeug 20-30 Sek in die Flamme halte 
(die Spitze) komme ich auf c.a. 50 Ohm Widerstand.

Wenn ich es so mache:

+5V---Sensor---A4

Messe ich mit dem Multimeter zwischen den beiden Anschlüssen zwischen 
4.7 und 4.9V -- je nach Hitze -- desto heißer, desto weniger Spannung.

Bei analogRead() auf A4 kommt aber immer 1023 raus.

Das versteh ich nicht :-/

von bibabutzemann (Gast)


Lesenswert?

aref schrieb:
> Also das Ding sieht so aus:
>
>     http://www.rmw-kartservice.com/rmw-shop/images/pro...
>
> Und hat 2 Anschlüsse.

Das Bild sagt mir nichts, aber wenn die Bezeichnung im Link "(K-Typ)" 
stimmt, dann IST es ein Thermoelement und kann NICHT als Widerstand 
verwendet werden.

> Wenn ich mit dem Multimeter den Widerstand messe komme ich bei +25°C auf
> 12 kOhm und wenn ich es mit dem Feuerzeug 20-30 Sek in die Flamme halte
> (die Spitze) komme ich auf c.a. 50 Ohm Widerstand.

Wenn Spannung erzeugt wird, wirkt sich das natürlich auf den Widerstand 
aus. Versuch lieber mal das Ding zu erhitzen und eine SPANNUNGSMESSUNG 
zu machen. Keine Widerstandsmessung. Wenn dann eine Spannung bei großer 
Hitze Messbar ist, ist es eine Thermoelement -> siehe Wikipedia.

> Wenn ich es so mache:
>
> +5V---Sensor---A4

So kannst du es in keinem Fall machen. Du kannst dir es so vorstellen, 
dass in dem Mikrocontroller auch ein Widerstand von A4 nach GND ist (ein 
sehr großer). Das heißt es fällt über den Sensor eine kleine Spannung ab 
(ca 0,3V) und über A4 nach Masse (im µC) der Rest der 5V.  Du brauchst 
letztendlich, falls es wirklich ein Widerstand ist so eine Schaltung:

+5V--+--Sensor--+--Widerstand--Masse
     |--Aref   |---A4

> Messe ich mit dem Multimeter zwischen den beiden Anschlüssen zwischen
> 4.7 und 4.9V -- je nach Hitze -- desto heißer, desto weniger Spannung.
>
> Bei analogRead() auf A4 kommt aber immer 1023 raus.
>
> Das versteh ich nicht :-/

von aref (Gast)


Lesenswert?

bibabutzemann schrieb:
> Wenn Spannung erzeugt wird, wirkt sich das natürlich auf den Widerstand
> aus. Versuch lieber mal das Ding zu erhitzen und eine SPANNUNGSMESSUNG
> zu machen.

Hmm, ja -- das hab ich ja auch gemacht. 4.7 bis 4.9V kommt dabei raus.
Was ich nicht verstehe ist, dass wenn an A0 4.7 oder 4.9V anliegen immer 
1023 raus kommt. Liegen diese 4.7V über der Skala vom Analog-Pin?

Wie muss ich die Schaltung machen, um die Spannung zu messen?
Langsam bin ich total verwirrt ;)

von aref (Gast)


Lesenswert?

Also so wie es aussieht, muss ich einen zusätzlichen IC einsetzen:

    http://www.designer2k2.at/home/arduino/19-thermoelement-typ-k-an-arduino.html

z.B. AD595

von bibabutzemann (Gast)


Lesenswert?

aref schrieb:
> Also so wie es aussieht, muss ich einen zusätzlichen IC einsetzen:
>
>     http://www.designer2k2.at/home/arduino/19-thermoel...
>
> z.B. AD595

Das meinte ich doch.

Und beim Messen der Spannung meinte ich eigentlich nur zwischen den zwei 
Kontakten des Sensors die Messpitzen zu messen und keine Beschaltung 
(5V, Arduino oder sonstiges) verwenden. Sprich : Voltmeter nur mit 
Sensor verbinden and thats it.

Voltmeter(+) <---Sensor---> Voltmeter(-)

von aref (Gast)


Lesenswert?

bibabutzemann schrieb:
> Voltmeter(+) <---Sensor---> Voltmeter(-)

Nein, da tut sich nix. 0.000V bei beliebiger Temperatur. Es wird keine 
Spannung erzeugt. Es ändert sich NUR der Widerstand.

Damit is es aber auch kein Typ-K, richtig? Und den AD595 brauch ich dann 
auch nicht besorgen, denn wo nichts ist, kann man auch nichts 
verstärken.

Als ich +5V an den Sensor anlege und den anderen Pol an GRD des Arduino 
anschließe, kann ich bei Temperaturänderung einen Spannungsunterschied 
messen, da der Widerstand sich erhöht.

von Max G. (meaxxchen)


Lesenswert?

Schalte doch mal einen zusätzlichen Widerstand(10k z.B.) in Reihe nach 
Masse und greife mit A4 die Mitte dieses Spannungsteilers ab.
Da sollte doch zumindest kein Endwert(0 oder 1023) mehr bei rauskommen.
Solche passiven Sensoren schließt man doch eh meist als Spannungsteiler 
an ADCs an.

von aref (Gast)


Lesenswert?

Max G. schrieb:
> Schalte doch mal einen zusätzlichen Widerstand(10k z.B.) in Reihe nach
> Masse und greife mit A4 die Mitte dieses Spannungsteilers ab.
> Da sollte doch zumindest kein Endwert(0 oder 1023) mehr bei rauskommen.
> Solche passiven Sensoren schließt man doch eh meist als Spannungsteiler
> an ADCs an.

Das habe ich auch gedacht -- kann sein, dass ich zu müde bin/war und die 
Schaltung falsch aufgebaut habe, aber dann kam 0.00 raus.

Oh man, das ist doch völlig unlogisch...

Also hier meine Schaltung (jetzt alles minimiert, es gibt nur noch einen 
beschalteten Eingang --- jetzt auf A0) ausgehend von GRD / Arduino:

GRD -> 10k -> A4
                    -> Sensor -> +5V

Ich greife also A0 direkt hinter dem Sensor ab aber bevor der 
10k-Widerstand kommt. Der hängt dahinter und geht zu GRD des Arduino...

Programmcode (analogReference() war nur eine Spielerei - egal welcher 
Wert, es is immer 0.00):

const int tempSensorPin = 0;

void setup() {

  Serial.begin(9600);

  analogReference(INTERNAL);

}

void loop() {


  double sensorValue = analogRead(tempSensorPin);

  Serial.print("V?:");
  Serial.println(sensorValue);
}

---

Das kann doch gar nicht sein?! Am Multimeter habe ich zwischen + und - 
des Sensors astreine 4.924V. Zwischen A0 und GRD habe ich 4.923V. Und 
analogRead() sagt mir 0.00...?!

von aref (Gast)


Lesenswert?

OK! Ich hab den Fehler gefunden.

Die Schaltung sieht nun so aus:

+5V -> Sensor -> A0 -> 100 Ohm -> GRD

Durch die 100 Ohm komme ich bei 32°C auf einen Wert von 10.
Habe grade gemessen. 500°C ergeben einen Wert von 600.

Jetzt muss ich halt noch schauen, wie ich einen korrekten Zusammenhang 
zwischen Temperatur und Wert finde.

Danke euch allen schon mal.

von Tip (Gast)


Lesenswert?

aref schrieb:
> ich habe hier ein unbekanntes Bauteil (ich vermute K-Type Thermostat),
> dass bei Erhitzung per Feuerzeug seinen Widerstand vergrößert.

Bei unbekannten Bauteilen hilft oft schon mal ein Photo (scharf, 
Auflösung Bilddaten entsprechen optischer Auflösung - gell).
Und wenn es kein Thermoelement oder PT100(0) ist, ist Feuerzeug 
keine gut Idee, da bei NTC oder PTC meinst bei Temperaturen um 150°C 
Schluss mit Lustig ist.

von aref (Gast)


Lesenswert?

Tip schrieb:
> Bei unbekannten Bauteilen hilft oft schon mal ein Photo (scharf,
> Auflösung Bilddaten entsprechen optischer Auflösung - gell).
> Und wenn es kein Thermoelement oder PT100(0) ist, ist Feuerzeug
> keine gut Idee, da bei NTC oder PTC meinst bei Temperaturen um 150°C
> Schluss mit Lustig ist.

Das passt schon; es stammt aus einer Abgasanlage. Die Thermosensoren 
dort sind bis 1100°C spezifiziert. Klappt jetzt wunderbar.

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.