Problem mit AD-Wandlung (Referenzspannung)

Hallo,

vorweg eine kurze Beschreibung, was ich mit meinem Leonardo gemacht habe:
Ich habe eine Stromquelle mit einem KTY10- Temperatursensor als Last aufgebaut. Der Sensor liegt im Pfad zwischen Vcc (5V) und der Stromquelle. Ich messe also den Spannungsabfall über der CE-Strecke des Transistors und des Emitterwiderstandes. Diese Spannung möchte ich mit einem der integrierten AD-Wandler digitalisieren. Zur Kontrolle habe ich ein hochohmiges Multimeter parallel dazu gehabt. Ich gehe einfach davon aus, dass das Multimeter den korrekten Wert anzeigt.
Mein digitalisierter und auf einem 16x2 LCD ausgegebener Wert lag (bei nicht expliziet angegebener Aref- Spannung, also bei “default”) immer ca. 0.9 - 1V daneben. Dann habe ich expliziet Aref auf 5V extern angegeben und angeschlossen, da lag der Messfehler bei niedrigen Spannungen bei 0,2-0,3V und ab 4V dann bei 1V Fehler.
Meine Ideen waren: Fehlanpassung da zu niedriger Eingangswiderstand des ADCs- das habe ich ausgeschlossen in dem ich direkt eine Spannungsquelle angeschlossen habe, statt der Messschaltung… gleicher Fehler.
Ich habe dann die Aref auf 2,56V extern eingestellt… da ging alles einwandfrei (natürlich nur bis 2,5V Eingangsspannung am ADC-Pin).
Wenn ich hergehe und die 2,56V extern nehme, habe ich den Vorteil, dass ich die Schrittweite eben anständig habe… bei 5V ist das ja ein krummer Wert. Ich möchte aber trotzdem wissen, warum das mit 5V (Default wie Aref )falsch wird,… wäre super cool, wenn mir jemand weiterhelfen kann… den Code liefere ich gleich nach.

Hier der Code:

/*
Temperaturmessung

 */
//include LCD Library
#include<LiquidCrystal.h>
#include<math.h>
//initialisiere die Library mit den Interface Pins
LiquidCrystal lcd(12,11,5,4,3,2);



int sensorPin = A1;    
float sensorValue = 0.0;  
float sensorVoltage =0.0;
float zaehler = 0.0;
float nenner = 0.0;
float Rt = 0.0;
floatTemp = 0.0;

void setup() {
 lcd.begin(16,2);
 //analogReference(EXTERNAL);
}



void loop() {
  sensorValue = analogRead(sensorPin);    
  sensorVoltage = sensorValue*(5.00/1023.0);
  
  lcd.setCursor(0,0);
  lcd.print(sensorVoltage); 

  delay(1000);
  
}

Soll das heissen, Dein Leonardo hat bei 5V angelegter Spannung nur 4V gemessen? Hast Du das mit verschiedenen Pins versucht? Hast Du die Versorgungsspanung des Leonardos auch gemessen (Referenzspannung)?

Dein Versuchsaufbau müsstest Du mit einem Schaltbild erklären, vor allem der Satz

Der Sensor liegt im Pfad zwischen Vcc (5V) und der Stromquelle

hat mich etwas stutzig gemacht. Wie willst Du das noch messen (ich nehme mal an, die Stromquelle hat eine höhere Spannung als 5V, sonst könnte der Spannungsregler ja keine 5V mehr daraus erzeugen).

Hier der Schaltplan der Stromquelle,… ja, ich habe A0…A3 ausprobiert, es war püberall gleich, A3 ist an “SensorPin2” angeschlossen. Der KTY selbst liegt zwischen SensorPin1 und SensorPin2… ich hab nur auf die Schnelle nichts passendes gefunden.
Umgekehrt, wenn es 4V sein sollten, werden 5 angezeigt. Wo genau soll ich die Referenzspg messen, wenn sie default intern ist? Aber ja, die Versorgungsspannung habe ich gemessen, ich versorge das Board mit 5V (nicht über USB sondern über die Hohlbuchse)… oder liegt da schon der Fehler? ist das möglicherweise zu wenig?

Ja, das ist definitiv zu wenig. Die Versorgungsspannung sollte immer mind. 1.5V über der Boardspannung liegen, also über 6.5V. 7V und 7.5V sind gute Werte, 9V geht bei kleinen Lasten auch noch, von 12V rate ich ab (der Spannungsregler wird recht warm).

Somit dürfte die Referenzspannung schon nur knapp 4V betragen und somit richtig gemessen werden.

Aber ja, die Versorgungsspannung habe ich gemessen

Das bezweifle ich. Hast Du wirklich die Spannung vom 5V-Pin zum GND-Pin gemessen? Dort müssten exakt 5V sein, damit die Messungen an den Analog-Pins maximale Genauigkeit haben.

Ja okay.... ich gebs zu... das war ein dummer Fehler... es funktioniert zwar noch nicht einwandfrei (ich bekomme nur die Vorkommastelle angezeigt) aber es ist besser^^ Tatsache ist, ich versorge mit einem Steckernetzteil einen auf Lochraster aufgebauten 7805, der die Vesorgung von LCD und Backlight und Sensor übernimmt (wollte nicht alles an den Arduino- 5V Pin hängen, erschien mir bei 100-200mA sehr hoch). Und mit den 5V hab ich auch den Arduino versorgt... jetzt versorge ich ihn mit der Spg (7,5V) die aus dem Steckernetzteil kommt.... :blush: aber danke für die Hilfe!

Woran könnte es liegen, dass ich jetzt nur die Vorkommastelle angezeigt bekomme?

l_a_s_t: Hier der Schaltplan der Stromquelle,... ja, ich habe A0...A3 ausprobiert, es war püberall gleich, A3 ist an "SensorPin2" angeschlossen. Der KTY selbst liegt zwischen SensorPin1 und SensorPin2... ich hab nur auf die Schnelle nichts passendes gefunden. Umgekehrt, wenn es 4V sein sollten, werden 5 angezeigt. Wo genau soll ich die Referenzspg messen, wenn sie default intern ist? Aber ja, die Versorgungsspannung habe ich gemessen, ich versorge das Board mit 5V (nicht über USB sondern über die Hohlbuchse).... oder liegt da schon der Fehler? ist das möglicherweise zu wenig?

Der KTY10 hat ca 2kOhm bei 25°C Ich weiß jetzt nicht wie Du die Konstantstromquelle dimensioniert hast, aber bei falscher Dimensionierung ist es leicht möglich, daß der Transistor die Spannung erhöht damit durch den KTY der Konstantstrom fließen kann aber ans limit der Versorgungspannung kommt. Grüße Uwe

Hallo,
wie groß sind die Widerstände R1 und R2?
Der Strom, der durch R1 fließt ist ca. 0,7/R1 und sollte für einen KTY 1mA nicht überschreiten, weil sonst die Eigenerwärmung den Messwert verfälscht.
Gruß Reinhard

Bestimme doch mal die Versorgungsspannung im Chip. Wie das geht findest Du hier:

http://blog.blinkenlight.net/experiments/measurements/supply-voltage-measurement/

Danach weisst Du auf jeden Fall mal ob die 5V auch wirklich 5V sind.

Mittlerweile funktioniert alles. Der Vollständigkeit halber: Mein Fehler war, dass ich mit den 7,5V (mehr, bei weniger Laststrom) auf einen 7805 bin, weil ich den Strom, den das Display zieht nicht vom Arduino haben wollte, und mit diesen 5V auf die Spg-Buchse vom Arduino... die 5V waren dem Arduino-Spg-Regler dann zu wenig und die Aref stimmte im Default nicht mit 5V. Ich gehe jetzt mit den 7,5V sowohl direkt auf den Arduino als auch auf den Regler, der dann das LCD versorgt.

Durch meinen KTY fließen 0,73mA, das hab ich gemessen und enspricht ziemlich genau meiner Berechnung.

Vielen Dank für Eure Hilfe.

Der KTY hat leider keine lineare Kennlinie, wenn er mit einem konstanten Strom betrieben wird. Die Temperaturanhängigkeit des gemessenen Signals lässt sich linearisieren, wenn der KTY an 5V mit einem Vorwiderstand von 2k7 betrieben wird. Zum Nachlesen: http://www.sprut.de/electronic/temeratur/temp.htm#ntc