Hallo! Ich möchte eine Thermosäule zur Messung der Strahlungsintensität basteln. Für ein Laserleistungsmessgerät habe ich dies mit einem Peltierelement bereits umgesetzt. Nun bin ich auf der Suche nach einem geeigneten Operationsverstärker, um die Spannungen im Bereich niedriger µV zu verstärken. Ich hätte an ein gain = 1000 gedacht. Dann kann ich die Spannungen mit einem 16bit ADC weiterverarbeiten. Die Eingangsspannung ändert sich nur sehr langsam im Sekundenbereich, von daher würde auch eine lahme Krücke ausreichen. Ich hätte jetzt aber eine Frage zur input offset voltage: Diese beträgt etwa beim AD820 vom Temperaturdrift einmal abgesehen typischerweise 100 µV. Das würde ja bedeuten, dass der "Nullpunkt" um 100µV verschoben ist. Dann wäre doch dieser OPV völlig ungeeignet, um Spannungen im Bereich von 10µV zu verstärken, wenn ich das richtig verstanden habe (siehe auch Wikipedia-Graphik). Ich würde dann ja einen sehr großen output-voltage-offset bekommen und nicht etwa ca. 0 mV output bei 0 µV input. Kann mich bitte jemand aufklären? Danke im voraus, stoppi
Such dir einen zero-drift opamp. https://www.analog.com/en/products/amplifiers/operational-amplifiers/zero-drift-op-amps.html
Christoph E. schrieb: > Das würde ja bedeuten, dass der "Nullpunkt" um 100µV verschoben ist. > Dann wäre doch dieser OPV völlig ungeeignet, um Spannungen im Bereich > von 10µV zu verstärken, wenn ich das richtig verstanden habe Ja. Ein LM358 tut es auch nicht. Die http://dse-faq.elektronik-kompendium.de/dse-faq.htm nennt TLC2652 (1uV http://www.ebay.de/itm/TLC2652-Chopper-Amplifier-Module-DC-Signal-Amplifiers-Weak-Acquisition-Module-/191848843270 ) LTC2051HV/LTC2052HV (3uV zerodrift bis 12V Reichelt) LTC2057HV (4uV zerodrift bis 60V) LMP2021 (5uV max) ICL/TC7650/7651/7652 (5uV max chopper, TME 2.12 EUR) LTC1050/LTC1250 (5uV chopper) MCP6V11 (8uV zerodrift 1.6-5.5V, Reichelt) TSZ121 (8uV, ST, 1.8-5.5V) LTC1049/LTC1152 (10uV zerodrift, Ladungspumpe, Reichelt) AD8551 (1uV typ 10uV max, zero drift, Reichelt 2.7-5.5V) AD8622 (10uV) LMP2015/LMP2016 (800nV typ. 10uV max. 2.7..5.25V) AD8671 (20uV, Reichelt) OPA177F/OPA188 (10uV typ 25uV max, 36V, 0.6MHz, Reichelt) OPA376/2376/4376 (5uV typ 25uV max 2.2-5.5V R2R TI) OPA192 (5uV typ 75uV max, 10MHz, 36V) TC913 (15uV max chopper TME) TSZ182 (R2R 25uV typ 45uV max 2.2-5.5V) OP07 (30uV typ. 75uV max. 36V, kein Rail-To-Rail)
Vielen Dank einmal für eure Hilfe! Der AD8551 sieht schon einmal sehr gut aus... Wenn ich den habe und es mit der thermosäule weiter geht, melde ich mich wieder... Mein erster, nicht invertierender Testverstärker mit gain = 1000 verwendet den LF357. Wenn dieser eine input-offset-voltage von z.b. 3 mV hat, dann müsste ich ja eine Ausgangsspannung im Bereich von 3 V erhalten, selbst bei 0 microvolt am Eingang. Und wenn ich dann 10 microvolt am Eingang anlege entsprechend 3.01 V am Ausgang. Soweit ich mich erinnere, ist dies aber nicht der Fall. Werde es aber gleich noch einmal ausprobieren... Sind meine Überlegungen soweit richtig?
> Wenn dieser eine input-offset-voltage von z.b. 3 mV
hat, dann müsste ich ja eine Ausgangsspannung im Bereich von 3 V
erhalten, selbst bei 0 microvolt am Eingang. Und wenn ich dann 10
microvolt am Eingang anlege entsprechend 3.01 V am Ausgang. Soweit ich
mich erinnere, ist dies aber nicht der Fall.
Der kann ja auch -1mV oder +1mV Offset haben. die +/-3mV sind das
Maximum.
Eine Verstärkerschaltung für diese Anwendung, egal mit welchem Opamp,
benötigt eine positive und eine negative Versorgungsspannung da selbst
nach der Verstärkung mit Faktor 1000 nur wenige mV Spannung
herauskommen. Hast du das beachtet?
:
Bearbeitet durch User
Hallo Helmut! Die 3 mV waren ja nur als Beispiel gedacht, wobei dieser Wert beim LF357 nicht das maximum sondern typisch ist... Das mit der symmetrischen Spannungsversorgung ist mir klar, wobei der AD8551 ein single supply Typ ist. Ist dann nur die Frage, ob er bei Eingangsspannungen so knapp über GND noch richtig arbeitet. Obwohl, dass die Eingangsspannungen sehr klein sind, davon ist ja bei OPV zu rechnen... Aber prinzipiell sind meine Überlegungen richtig gewesen? Eine Frage habe ich noch: Wenn ich den AD8551 mit 5V single supply nicht invertierend betreibe und nur positive Eingangsspannungen vorkommen, brauche ich dann auch noch eine virtuelle Masse z.b. Auf 2.5V?
:
Bearbeitet durch User
> brauche ich dann auch noch eine virtuelle Masse z.b. Auf 2.5V?
Das müssen jetzt nicht 2,5V sein. Es tun auch 0,xV. oder eine negative
Versorgungsspannung mit -0,xV. Beachte, dass die Thermospannung der
Übergänge deiner Messleitungen schnell mal einige 10uV betragen könnnen,
wenn die nicht exakt auf gleicher Temperatur sind.
Christoph E. schrieb: > Eine Frage habe ich noch: Wenn ich den AD8551 mit 5V > single supply nicht invertierend betreibe und nur > positive Eingangsspannungen vorkommen, brauche ich > dann auch noch eine virtuelle Masse z.b. Auf 2.5V? Auch wenn das überall "im Internet" anders steht: Ein separat erzeugtes Bezugspotenzial ist KEINE virtuelle Masse, sondern eine ganz reale Masse, wenn sie denn als Masse (=Bezugspotenzial) verwendet wird. Eine echte virtuelle Masse tritt bei manchen OPV- Schaltungen auf. Fast alles, was von Laien als virtuelle Masse bezeichnet wird, ist keine.
Hallo, > Nun bin ich auf der Suche nach einem geeigneten Operationsverstärker, um > die Spannungen im Bereich niedriger µV zu verstärken. Ich hätte an ein > gain = 1000 gedacht. Dann kann ich die Spannungen mit einem 16bit ADC > weiterverarbeiten. Die Eingangsspannung ändert sich nur sehr langsam im > Sekundenbereich, von daher würde auch eine lahme Krücke ausreichen. in Kurzform einige Hinweise: - eine solche Verstärkung geht mit einem Zero-Drift-Amplifier. - Eine geätzte Platine mit Massefläche ist bei diesen Spannungen m. E. Pflicht. - Kontaktspannungen und Thermospannungen können relevant werden. - eine (+/-)-Spannungsversorgung ist leichter zu realisieren als ein in der Luft hängendes Bezugspotential von 2,5V. - Schaltregler würde ich nach Möglichkeit nicht verwenden, um eine potentielle Fehlerquelle/Rauschquelle wegzuhalten. - Beim ADC solltest Du darauf achten, dass er den 50-Hz-Anteil rausnimmt, z. B. ADS1243. Bei einer Verstärkung von 1000 findest Du ansonsten überall 50 Hz. Leseempfehlung: Keithley Low Level Measurement Handbok (6th edition), im Netz erhältlich. Viele Erfolg und viele Grüße Michael
Hallo! Vielen Dank einmal für eure Bemühungen. Da ich noch glaubte in Erinnerung zu haben, mit einem 0815-OPV und gain = 1000 die µV-Spannungen einer gekauften Thermosäule ohne nennenswerten offset im Griff gehabt zu haben, habe ich schnell einen nicht invertierenden Verstärker mit dem LF357 und gain_max = 1000 gelötet. Und siehe da: Bei 0µV Eingang erhalte ich (wie zu vermuten war) eine sehr große offset-Spannung von 1.424 V. Speise ich 15 µV ein, so steigt diese um rund 15 mV auf 1.441 V. Von daher passt alles bis auf den extrem großen offset. Habe bereits AD8551 bei reichelt bestellt. Wenn diese und der SO-8 auf Dip Adapter eintrudeln, versuche ich mein Glück nochmals...
Der Offeset lässt sich doch auch weggegeln. viele Operationsverstärker haben hierfür einen extra Eingang.
Das schon, wenn der offset aber rund 1000mal größer als der Messwert ist, wird es schwierig ;-)
ÄXl schrieb: > Der Offeset lässt sich doch auch weggegeln. viele Operationsverstärker > haben hierfür einen extra Eingang. Das ist im Prinzip richtig, nur ist mit dem großen Offset in den meisten Fällen auch ein hoher TK des Offsets verbunden. Der stört hier auch massiv.
Hallo, > Und siehe da: Bei 0µV Eingang erhalte ich (wie zu vermuten war) eine > sehr große offset-Spannung von 1.424 V. Speise ich 15 µV ein, so steigt > diese um rund 15 mV auf 1.441 V. Von daher passt alles bis auf den > extrem großen offset. ja, sieht gut aus. Ich habe derartige Verstärkungen für ein µOhm-Meter genutzt. Das Problem mit den 50 Hz war sofort sichtbar, vermutlich weil die Leitungen relativ lang und in der Umgebung größere Maschinen bedient wurden. Ein Verdrillen war bei derartig dicken Leitungen nicht möglich. Die Massefläche dient vor allem dazu, überall das gleiche Bezugspotential zu haben. Wenn auf deiner Massleitung 1mA fließen und die Masseleitung 10mOhm hat, so kommst Du sofort auf eine Differenz von 10µV zwischen dem Anfang und dem Ende Deiner Masseleitung. Und die verstärkst du dann, wenn Dein Messignal und der OPV ihr Bezugspotential an unterschiedlichen Stellen abgreifen. Besonders lästig wird das, wenn die Ströme auf der Masseleitung sich zeitlich ändern (z. B. durch weitere Bauelemente im Rahmen einer größeren Schaltung). Insofern achte bei der endgültigen Schaltung, wo Du das Massepotential abgreifst. Die Probleme mit dem Bezugspotential treten erst recht auf, wenn Du mit einem 2,5V-Bezugspotential arbeitest. Dann machen dir leichte Schwankungen in der Versorgungsspannung die 2,5V-Bezugspotential kaputt, sofern sie sich nicht auf alle Schaltungsteile auswirken. > Habe bereits AD8551 bei reichelt bestellt. Wenn diese und der SO-8 auf > Dip Adapter eintrudeln, versuche ich mein Glück nochmals... Das wird schon :-) Viele Grüße Michael
So, die Teile (AD8551, SO-8 Adapter) sind eingetroffen. Am Eingang des nicht-invertierenden Verstärkers hängt ein 1:1 000 000 Spannungsteiler mittels 1k und 1GOhm Widerstand. Bei 0 µV am Eingang erhalte ich nun mit dem AD8551 einen offset von rund 1.5 mV. Steigere ich die Eingangsspannung auf z.B. 10 µV, habe ich bei einer fixen Verstärkung von 1000 rund 7 mV erhalten, also deutlich zu wenig. Deshalb habe ich den 1 MOhm-Widerstand im Rückkoppelzweig durch ein 2 MOhm-Poti ersetzt. Nun erhalte ich einigermaßen die zu erwartenden Messwerte (ca. 10 mV bei 10 µV am Eingang). Diese Spannungen im mV-Bereich werde ich dann mittels 16bit AD-Wandler ADS1115 dem Arduino zuführen. Auf der Anzeige der Thermosäule werde ich dann die Ursprungsspannung in µV und die Strahlungsintensität in W/m² angeben.
Ich würde die Verstärkung auf 2 OPV's aufteilen. Jeder OPV braucht natürlich eine Offsetkompensation. Vorteil des Verfahrens ist auf alle Fälle, das die Rauschspannungen kleiner werden, da Du bei niedrigeren Verstärkungen auch kleinere Widerstandswerte einsetzen kannst. Erste Stufe würde ich Verstärkung 10 einstellen und bei der 2. Stufe Verstärkung 100. Die zweite Stufe ist dann schon weniger kritisch, da dort die Eingangsspannung schon ca. 100µV also 0,1mV beträgt und das ist mit guten OPV's kein Problem mehr. Weiterer Vorteil bei geringeren Verstärkungen ist das das Ganze stabiler wird.
Zeno schrieb: > Ich würde die Verstärkung auf 2 OPV's aufteilen. Das ist sehr zu empfehlen. Ich hatte mir mal ein µA-Meter mit nur einer Stufe aufgebaut, da gab es immer wieder Abweichungen. Seit längerem nehme ich das schaltbild vom µCurrent http://www.eevblog.com/files/uCurrentRev5schematic.pdf mit MAX4239 https://www.maximintegrated.com/en/ds/MAX4238-MAX4239.pdf da läuft das perfekt.
Bei 10V am Eingang müssten 20mV am Ausgang herauskommen. Dass da nur 10mV herauskommt liegt daran, dass a) der Opamp im Bereich 0 bis 10mV eher nur Fahrkarten erzeugt und b) schon eine kleine Thermospannung der Messleitungsübergänge von -10uV genügen um 10mV Ablage am Ausgang zu bekommen. Da der Opamp ja keine negative Versorgung hat stimmt deshalb die lineare Zunahme der Ausgangsspannung nicht. Irgendwie kann man hier hundertmal erzählen, dass single supply und 0V Ausgangsspannung bei 0V EIngangsspannung eben nie richtig funktionieren kann. Versorge den Opamp mal mit -100mV oder negativer. Achtung der Opamp verträgt maximal 5,5V zwischen den Versorgungsspannungen V+ und V-.
:
Bearbeitet durch User
Danke einmal für die Kommentare...
>Bei 10V am Eingang müssten 20mV am Ausgang herauskommen
Wie kommst du auf das?
Christoph E. schrieb: > Danke einmal für die Kommentare... > >>Bei 10V am Eingang müssten 20mV am Ausgang herauskommen > > Wie kommst du auf das? Tippfehler. Das sollte 10uV heißen. Bei 10uV am Eingang müssten 20mV am Ausgang herauskommen. Dass da nur 10mV herauskommt liegt daran, dass a) der Opamp im Bereich 0 bis 10mV eher nur Fahrkarten erzeugt und b) schon eine kleine Thermospannung der Messleitungsübergänge von -10uV genügen um 10mV Ablage am Ausgang zu bekommen. Da der Opamp ja keine negative Versorgung hat stimmt deshalb die lineare Zunahme der Ausgangsspannung nicht. Irgendwie kann man hier hundertmal erzählen, dass single supply und 0V Ausgangsspannung bei 0V EIngangsspannung eben nie richtig funktionieren kann. Versorge den Opamp mal mit -100mV oder negativer. Achtung der Opamp verträgt maximal 5,5V zwischen den Versorgungsspannungen V+ und V-.
:
Bearbeitet durch User
Für eine niedrige Frequenz und mit AZ OP kann man eine 1000 fache Verstärkung noch gut in einer Stufe machen. Auf einen Poti / Trimmer im Feedback sollte man eher verzichten. Mit Eingangsspannung ganz an der 0 sollte der AD8551 kein Problem haben, für den Ausgang wird es aber schwer. Eine mögliche Fehlerquelle sind Einstreuungen, die so dicht am unteren Rand Gleichgerichtet werden - denn negative kann der OP am Ausgang nicht, auch nicht für ein überlagerte Wechselspannung (z.B. 50 Hz).
So, der 16bit ADC ADS1115 zur Weiterverarbeitung der vom AD8551 kommenden mV-Spannungen ist heute eingetroffen. Der ADS1115 arbeitet sehr zuverlässig und liefert sehr stabile Werte. In Kombination mit der AD8551-Verstärkerschaltung (gain = 1000) ist das dann schon etwas anders. Die µV-Spannungswerte schwanken etwa um +/-15%, was mir aber eigentlich ausreicht. Jetzt warte ich nur noch auf die Thermosäule, dann geht es ans Eichen...
1 | #include <LiquidCrystal_I2C.h> |
2 | #include <Wire.h> |
3 | #include <Adafruit_ADS1015.h> |
4 | |
5 | //Adafruit_ADS1015 ads1015; // Construct an ads1015 at the default address: 0x48 |
6 | //Adafruit_ADS1115 ads1115(0x49); // construct an ads1115 at address 0x49 |
7 | |
8 | Adafruit_ADS1115 ads1115; // Construct an ads1115 at the default address: 0x48 |
9 | |
10 | int16_t adc0, adc1, adc2, adc3; |
11 | |
12 | int i; |
13 | |
14 | float voltage; |
15 | float Leistung; |
16 | float Intensitaet; |
17 | |
18 | LiquidCrystal_I2C lcd(0x3F,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display. ACHTUNG: Adresse kann auch 0x3F sein !!! |
19 | |
20 | // Anschlüsse: |
21 | // GND - GND |
22 | // VCC - 5V |
23 | // SDA - ANALOG Pin 4 |
24 | // SCL - ANALOG pin 5 |
25 | |
26 | |
27 | // =========================== |
28 | // ======= SETUP ========= |
29 | // =========================== |
30 | |
31 | void setup() |
32 | { |
33 | Serial.begin(9600); |
34 | |
35 | lcd.init(); // initialize the lcd |
36 | lcd.backlight(); |
37 | lcd.setCursor(0,0); |
38 | lcd.print("Thermosaeule"); |
39 | lcd.setCursor(0,1); |
40 | lcd.print("uV-Meter"); |
41 | |
42 | delay(4000); |
43 | |
44 | lcd.setCursor(0,0); |
45 | lcd.print(" "); |
46 | lcd.setCursor(0,1); |
47 | lcd.print(" "); |
48 | |
49 | //ads1015.begin(); // Initialize ads1015 |
50 | ads1115.begin(); // Initialize ads1115 |
51 | |
52 | // The ADC input range (or gain) can be changed via the following |
53 | // functions, but be careful never to exceed VDD +0.3V max, or to |
54 | // exceed the upper and lower limits if you adjust the input range! |
55 | // Setting these values incorrectly may destroy your ADC! |
56 | // ADS1015 ADS1115 |
57 | // ------- ------- |
58 | // ads1115.setGain(GAIN_TWOTHIRDS); // 2/3x gain +/- 6.144V 1 bit = 3 mV 0.1875 mV (default) |
59 | // ads1115.setGain(GAIN_ONE); // 1x gain +/- 4.096V 1 bit = 2 mV 0.125 mV |
60 | // ads1115.setGain(GAIN_TWO); // 2x gain +/- 2.048V 1 bit = 1 mV 0.0625 mV |
61 | // ads1115.setGain(GAIN_FOUR); // 4x gain +/- 1.024V 1 bit = 0.5 mV 0.03125 mV |
62 | // ads1115.setGain(GAIN_EIGHT); // 8x gain +/- 0.512V 1 bit = 0.25 mV 0.015625 mV |
63 | // ads1115.setGain(GAIN_SIXTEEN); // 16x gain +/- 0.256V 1 bit = 0.125 mV 0.0078125 mV |
64 | |
65 | ads1115.setGain(GAIN_TWO); // 2x gain +/- 2.048V 1 bit = 0.0625mV |
66 | |
67 | } |
68 | |
69 | |
70 | // =========================== |
71 | // ======= LOOP ========= |
72 | // =========================== |
73 | |
74 | void loop() |
75 | { |
76 | adc0 = 0.0; |
77 | |
78 | for(i = 1; i <= 10; i++) |
79 | { |
80 | adc0 = adc0 + ads1115.readADC_SingleEnded(0); |
81 | } |
82 | |
83 | adc0 = adc0 / 10.0; |
84 | |
85 | /* |
86 | adc1 = ads1115.readADC_SingleEnded(1); |
87 | adc2 = ads1115.readADC_SingleEnded(2); |
88 | adc3 = ads1115.readADC_SingleEnded(3); |
89 | */ |
90 | |
91 | voltage = adc0 * 0.0625; // eingelesene Spannung in mV bzw. durch gain = 1000 in uV |
92 | |
93 | Leistung = voltage * 1.0; // Auf den Sensor auftreffende Strahlungsleistung |
94 | |
95 | Intensitaet = voltage * 2.0; // Strahlungsintensität in W/m² |
96 | |
97 | Serial.print("AIN0: "); |
98 | Serial.println(adc0); |
99 | Serial.print(" U = "); |
100 | Serial.print(voltage,2); |
101 | Serial.println(" uV"); |
102 | |
103 | /* |
104 | Serial.print("AIN1: "); Serial.println(adc1); |
105 | Serial.print("AIN2: "); Serial.println(adc2); |
106 | Serial.print("AIN3: "); Serial.println(adc3); |
107 | */ |
108 | |
109 | lcd.setCursor(0,0); |
110 | lcd.print("U = "); |
111 | lcd.print(voltage,1); |
112 | lcd.print(" uV "); |
113 | |
114 | lcd.setCursor(0,1); |
115 | lcd.print("I = "); |
116 | lcd.print(Intensitaet,2); |
117 | lcd.print(" W/m2 "); |
118 | |
119 | delay(2000); |
120 | |
121 | adc0 = 0.0; |
122 | |
123 | for(i = 1; i <= 10; i++) |
124 | { |
125 | adc0 = adc0 + ads1115.readADC_SingleEnded(0); |
126 | } |
127 | |
128 | adc0 = adc0 / 10.0; |
129 | |
130 | voltage = adc0 * 0.0625; // eingelesene Spannung in mV bzw. durch gain = 1000 in uV |
131 | |
132 | Leistung = voltage * 1.0; // Auf den Sensor auftreffende Strahlungsleistung |
133 | |
134 | Intensitaet = voltage * 2.0; // Strahlungsintensität in W/m² |
135 | |
136 | lcd.setCursor(0,0); |
137 | lcd.print("P = "); |
138 | lcd.print(Leistung,1); |
139 | lcd.print(" mW "); |
140 | |
141 | lcd.setCursor(0,1); |
142 | lcd.print("I = "); |
143 | lcd.print(Intensitaet,1); |
144 | lcd.print(" W/m2 "); |
145 | |
146 | delay(2000); |
147 | |
148 | } |
:
Bearbeitet durch User
Um welche Thermosäule handelt es sich?
Einerseits um eine vom Lehrmittelbedarf (Kosten rund 300 Euro) und dann um eine selbstgebaute mit Peltierelement, welche auch von AATiS um 19 Euro vertrieben wird (https://www.aatis.de/content/bausatz/AS516_Thermo%E2%80%90S%C3%A4ule)
:
Bearbeitet durch User
Christoph E. schrieb: > Am Eingang des > nicht-invertierenden Verstärkers hängt ein 1:1 000 000 Spannungsteiler > mittels 1k und 1GOhm Widerstand. Nicht gut. Schau dir mal die Temperaturkoeffizienten solcher Hochohmwiderstände an! Ausserdem reicht dann schon eine geringfügige Verschmutzung der Platine (oder des Widerstands durch Fingerabdrücke) um grosse Meßfehler zu bekommen. Thermolemente sind doch niederohmig und ermöglichen die Verwendung vernünftiger Widerstandswerte.
@nachtmix: Danke für deine Einwände. Ich brauchte einfach etwas zum Testen am Eingang im µV-Bereich. Die Peltierelemente bzw. die Thermosäule sind noch auf dem Weg zu mir...
So, habe heute die Thermosäule mit der auf dem Peltierelement befindlichen Widerstandskette kalibriert (siehe Excel-Graph und -Tabelle). Dies ergab folgende Beziehung: 11.26 mW/mV. Dieser Wert stimmt auch sehr gut mit meinem zweiten Laserleistungsmessgerät auf Peltierbasis überein (siehe älterer Beitrag weiter oben). Jetzt bin ich von der Peltierfläche A = 16 cm² = 1/625 m² ausgegangen. Treffen also 11.26 mW auf 1/625 m², so erhält man 1 mV. Demnach gilt auch: 625 * 11.26 mW auf 1 m² ergeben 1 mV. 7037.5 mW/m² ergeben 1 mV. Die zweite Beziehung lautet also: 7.0375 W/m²/mV. Richte ich etwa einen schwachen 532nm-Laser auf die Thermosäule, zeigt mir das Display rund 3 mW an. Das ist durchaus plausibel. Als Verstärkung des AD8551 habe ich jetzt 10x gewählt. Damit entspricht 1 bit des ADS1115 einer Spannung von rund 6 µV. Anzeigen lasse ich noch 1/100 mV, also 10 µV. Achtung: Der obige Code für den ADS1115 machte bei folgender Mittelwertsbildung Probleme:
1 | adc0 = 0.0; |
2 | |
3 | for(i = 1; i <= 10; i++) |
4 | { |
5 | adc0 = adc0 + ads1115.readADC_SingleEnded(0); |
6 | } |
7 | |
8 | adc0 = adc0 / 10.0; |
Da zeigte der ADS1115 nur bis rund 200mV richtige Werte, darüber wechselte er in den negativen Bereich... Also einfach die Mittelwertsbildung weglassen und einen Einzelwert einlesen oder ein delay einbauen. Der Bausatz für die Thermosäule ist wie gesagt bei AATiS für nur 19 Euro zu beziehen: https://www.aatis.de/content/bausatz/AS516_Thermo%E2%80%90S%C3%A4ule
:
Bearbeitet durch User
Ja, 200mV / 6uV sind ca 30'000, 15 bit, das 16.Bit ist das Vorzeichen wenn du mit Vorzeichen arbeitest. Deine variable adc0 ist also signed 16 bit ? Mach diese Variable 32 bit und es passt. Wozu duch 10 Teilen ? Lass das weg. Das bringt nichts.
:
Bearbeitet durch User
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.