Forum: Mikrocontroller und Digitale Elektronik 12-Bit ADC für 0-10v an Raspberry Pi


von John D. (johnny123)


Lesenswert?

Hallo Leute,

ich bin neu hier und melde mich gleich einmal mit einer Frage. Hoffe, 
ich bin diesbezüglich hier im richtigen Unterforum gelandet. Wenn nicht, 
bitte einfach verschieben.

Zu meinem Problem: Ich suche im Moment nach einer Lösung, um einen 0-10v 
Analogsensor für Einstrahlung (0-1300w/m^2) mithilfe eines Raspberry Pis 
"möglichst genau" auszulesen. Der Raspberry Pi hat ja selbst keine 
analogen Eingänge also benötige ich einen ADC.
Für erste Versuche habe ich bereits einen 10BIT MCP3008 besorgt, welchen 
ich auch über die SPI Schnittstelle auslesen kann. Allerdings kann 
dieser nur 5V Analogspannung ab, was einen Spannungsteiler notwendig 
macht und auf Kosten der Genauigkeit geht. Außerdem wären mir für meine 
Anwendung 12 Bit lieber.

Was ich eigentlich benötigen würde wäre ein ADC, der über 3.3V versorgt 
werden kann, aber eine Referenzspannung von 10V und eine 
Analogeingangsspannung von 10V abkann.

Die 3.3 Volt Versorgungspannung dehalb, weil ich gelesen habe, dass man 
sonst die SPI Schnittstelle am Raspberry nicht zum Auslesen benutzen 
kann, wenn Vdd höher als 3.3V ist.

Gibt es so einen ADC überhaupt oder ist das technisch nicht möglich?

Ich würde mich sehr über Vorschläge oder Anregungen freuen, welchen ADC 
ich benutzen könnte oder wie ich die Messwerte der Sonsoren anderweitig 
in den Raspberry zur Weiterverarbeitung bekomme.

Vielen Dank

Johnny

von Joachim B. (jar)


Lesenswert?

John D. schrieb:
> Außerdem wären mir für meine
> Anwendung 12 Bit lieber.

warum ?

10 bit sind ca. 0,1% genauer wird eh schwer wer sich nicht bestens in 
Dimensionierung, einpegeln, messen und Fehlerrechnung auskennt. Die 
nötigen Messmittel dafür müssten ja neben der Kenntnis dazu vorhanden 
sein.
Ich wüsste für privat keinen Nutzen für mehr als 10 Bit.

Meine Dipl.Arbeit habe ich mit 8-Bit Wandler gemacht, das reichte für 
eine Auflöung von 5°C bei 1200°C Messung und selbst die 5°C waren fast 
zu genau, wen interessiert +-5°C bei 1200°C ?

Momentan baue ich was mit 16-Bit DAC -> Kundenwunsch (obwohl unnsinnig)
Ich habe noch keine Idee wie ich selbst mit 6,5-stelligen DMM das 
hinbekommen soll.

von asd (Gast)


Lesenswert?

> Was ich eigentlich benötigen würde wäre ein ADC, der über 3.3V versorgt
> werden kann, aber eine Referenzspannung von 10V und eine
> Analogeingangsspannung von 10V abkann.

So was hab ich noch nie gesehen. Du wirst nicht darum herum kommen einen 
ADC mit 3,3V im Digitalteil zu verwenden und eine Referenz im Bereich 
2-3,3V, je nach dem was dein ADC kann.
Einige ADCs haben einen extra Eingang für die Referenzspannung, das ist 
genauer als wenn die 3,3V Betriebsspannung als Referenz verwendet 
werden.
Wenn du mit einem einmaligen Abgleich leben kannst, kannst du bei der 
Referenz und den Widerständen für den Spannungsteiler nur auf die 
Temperaturkoeffizienten achten und die absolute Genauigkeit außer acht 
lassen (außer die Langzeitstabilität vielleicht).
Das ist wesentlich billiger als wenn auch die absolute Genauigkeit 
passen muss. Was man nur braucht wenn man bei Inbetriebnahme nicht 
abgleichen will oder kann.

von Ulrich H. (lurchi)


Lesenswert?

ADCs mit mehr als 5 V Spannungsbereich sind sehr selten, sofern es da 
überhaupt noch was gibt. Es geht also kaum ohne Spannungsteiler - bzw. 
eine Anpassung beim Sensorverstärker.

Dann spricht auch nichts gehen einen ADC mit 3,3 V Versorgung und 
entsprechend etwa 1-3 V Messbereich. Sofern es nicht besonders schnell 
sein muss, gibt es da viel Auswahl, mit SPI oder I2C Interface.

von PittyJ (Gast)


Lesenswert?

Wo ist das Problem mit einem Spannungsteiler?
Die Widerstände haben zwar eine gewisse Toleranz. Aber kalibriert werden 
muss das System später ohnehin. Von daher dürfte es sich wieder 
rausrechnen lassen.
Nimm doch erst mal ein 10Bit Atmel. In Form eines Arduino lässt der sich 
leicht vom Raspi aus ansteuern und abfragen. Bau einen Spannungsteiler, 
und dann schau erst mal, was da wirklich heraus kommt, und ob das nicht 
schon den Anforderungen genügt.

Ich hatte mal einen 24 Bit ADC. Die umgebende Elektronik war schon 
äußerst anspruchsvoll. Nichts für Hobby-Entwickler.
Und die letzten 4 Bits habe ich trotzdem gleich gelöscht, weil die schon 
nicht stabil waren.

von Leo (Gast)


Lesenswert?

PittyJ schrieb:
> Nimm doch erst mal ein 10Bit Atmel. In Form eines Arduino
Arduino mit 10bit Atmel? Kenn ich nicht, sind die neu?

von Harald W. (wilhelms)


Lesenswert?

Joachim B. schrieb:

> 10 bit sind ca. 0,1% genauer wird eh schwer wer sich nicht bestens in
> Dimensionierung, einpegeln, messen und Fehlerrechnung auskennt.
> Ich wüsste für privat keinen Nutzen für mehr als 10 Bit.

Naja, von den 10 Bit Auflösung bleiben meist nur 8Bit Genauigkeit
übrig. Das ist für viele Anwendungen, z.B. PT100, zu wenig. Die
mit einem 12Bit-Wandler erreichbare Genauigkeit von 1 Promille
ist noch gut mit Standardbauteilen erreichbar. Das man sich dafür
gut mit Analogtechnik auskennen muss und auch entsprechende Kali-
briermöglichkeiten haben muss, ist klar.

> Momentan baue ich was mit 16-Bit DAC -> Kundenwunsch (obwohl unnsinnig)
> Ich habe noch keine Idee wie ich selbst mit 6,5-stelligen DMM das
> hinbekommen soll.

Naja, für 12Bit Genauigkeit muss man, je nach Eingangssignal, schon
einige Klimmzüge machen. Ich würde da aber, da es ja kaum mehr kostet,
doch einen 16Bit-Wandler nehmen. Den angezeigten Meßwert kann man
dann ja auf ca.12 Bit runterkürzen.
Gruss
Harald

von Joachim B. (jar)


Lesenswert?

Harald Wilhelms schrieb:
> Naja, von den 10 Bit Auflösung bleiben meist nur 8Bit Genauigkeit
> übrig. Das ist für viele Anwendungen, z.B. PT100, zu wenig.

ud trotzdem ist mehr z.B. 12-bit übertrieben für Hobbyisten ohne 
Kenntnisse und Messgeräte.

Harald Wilhelms schrieb:
> Naja, für 12Bit Genauigkeit muss man, je nach Eingangssignal, schon
> einige Klimmzüge machen. Ich würde da aber, da es ja kaum mehr kostet,
> doch einen 16Bit-Wandler nehmen. Den angezeigten Meßwert kann man
> dann ja auf ca.12 Bit runterkürzen.

ich glaube jeder der effektiv 10-bit -> 1024 -> 0,1% erreicht ist froh, 
ein Promille das ist doch schon mal ne Ansage und dabei haben wir noch 
nicht mal über Temperaturdrift gesprochen.

von John D. (johnny123)


Lesenswert?

Danke erstmal für die vielen Antworten. Dann hilft wohl alles nichts und 
mir bleibt nur der Spannungsteiler. Aber kann ich dafür einfach 
"normale" Widerstände nehmen? Oder wäre ein Trimmpoti besser? Das Ganze 
soll aber relativ langzeitstabil sein, da eine Wetterdatenbank aus den 
Messwerten über Jahre hinweg erstellt werden soll.
Reicht mir als Spannungsreferenz ein LM317? Hier brauch ich ja auch 
wieder sehr genaue Widerstände um die Spannung richtig einzustellen, 
oder? Aber besser als die 3.3V direkt vom Raspberry wird das auf jeden 
Fall sein. Für die 3.3V aus em LM317 würde ich dann einen 240 und einen 
393.6 Ohm Widerstand benötigen. Also für den 2. Widerstand auch hier ein 
Trimmpoti?

Ich werde das ganze jetzt erstmal mit dem schon vorhandenen und bereits 
über SPI verbundenen MCP3008 umsetzen und bei Bedarf ist eine aufrüstung 
ja immer noch möglich.

Gibt es sonst noch etwas, was ich unbedingt beachten muss, damit meine 
Messung was wird?

von Wolfgang (Gast)


Lesenswert?

John D. schrieb:
> Allerdings kann dieser nur 5V Analogspannung ab, was einen
> Spannungsteiler notwendig macht und auf Kosten der Genauigkeit geht.

Welche Genauigkeit hat denn die Kalibrierung von deinem Sensor?

Und welche Zeitauflösung benötigst du überhaupt?

Bei den Widerständen im Spannungsteiler interessiert eigentlich nur, 
dass das Verhältnis konstant bleibt.

von Sven B. (scummos)


Lesenswert?

Bei so Wettermessungen hat man doch bestimmt sowieso riesige Fehler, 
oder? Insofern ist die Frage ob die 0.5% von irgendwo da überhaupt in's 
Gewicht fallen. Ich denke ja, wenn das dein Problem ist, ist deine 
Messung schon extrem gut. Insofern würde ich sagen nimm doch einfach 
einen ADC mit interner Referenz, das ist für deine Zwecke sicher gut 
genug. Bei dem Spannungsteiler sehe ich auch kein Problem, nimm halt 
1%-Widerstände und nicht 10%. Potis würde ich auch eher nicht nehmen.

von John D. (johnny123)


Lesenswert?

Wolfgang schrieb:
> John D. schrieb:
>> Allerdings kann dieser nur 5V Analogspannung ab, was einen
>> Spannungsteiler notwendig macht und auf Kosten der Genauigkeit geht.
>
> Welche Genauigkeit hat denn die Kalibrierung von deinem Sensor?
Die Genauigkeit beträgt 5% vom Endwert, bei dem Sensor handelt es sich 
um einen SI-13TC-T-K.
>
> Und welche Zeitauflösung benötigst du überhaupt?
>
Angedacht ist hier ein Messwert pro Sekunde, wobei zu überlegen ist, ob 
während dieser Zeit zum Beispiel über 10 Messwerte gemittelt werden 
sollte...

> Bei den Widerständen im Spannungsteiler interessiert eigentlich nur,
> dass das Verhältnis konstant bleibt.

Ja, aber dieses Verhältnis möglichst genau einzustellen und dann 
konstant zu halten wird doch nicht einfach?

von Sven B. (scummos)


Lesenswert?

John D. schrieb:
> Ja, aber dieses Verhältnis möglichst genau einzustellen und dann
> konstant zu halten wird doch nicht einfach?
Wenn du einfach zwei gleiche Widerstände nimmst oder den einen doppelt 
so groß wie den anderen oder so, glaube ich nicht, dass das groß 
driftet. Die Widerstände driften mit der Temperatur ja beide ungefähr 
gleich und altern wahrscheinlich auch sehr ähnlich. Wie gesagt, ich 
glaube nicht, dass das eine signifikante Fehlerquelle für dein Vorhaben 
darstellt.

von Joachim B. (jar)


Lesenswert?

John D. schrieb:
>> Bei den Widerständen im Spannungsteiler interessiert eigentlich nur,
>> dass das Verhältnis konstant bleibt.
>
> Ja, aber dieses Verhältnis möglichst genau einzustellen und dann
> konstant zu halten wird doch nicht einfach?

mit Widerstände leichter als mit Poti, Potikontakte ist das erste was 
ausfällt, da ist mit Langzeitstabilität Essig.

Grobabgleich, R berechnen wählen zusammenbauen.
Wenns genauer sein soll kann man durch Parallelschaltung am oberen oder 
unteren Teiler sich auf 0,1% annähern oder besser.

Oder man hat eine Netzteil speist die maximale Spannung oben Y1 ein 
nimmt den Digitalwert X1 und dasselbe nochmal für die minimale Spannung 
oben Y2 ein nimmt den Digitalwert X2

und baut die Geradengleichung y= m * x + b in den Rechner

mit Y = gemessene Spannung aus X = digits.

von Ulrich H. (lurchi)


Lesenswert?

Poties sind vond er Stabilität eher schlecht. Wenn es geht sollte man in 
Software Kalibrieren. Der LM317 ist als Referenz ungeeignet - ist ja 
auch ein Spannungsregler. Ein TL431 ist so etwa das Minimum, es darf 
aber auch ruhig besser sein.

Es gibt auch auch gleich ADCs mit integrierter Referenz. Relativ günstig 
wäre etwa ein MCP3421 oder MCP3426. Ich weiss die haben noch mehr als 12 
Bits Auflösung, aber man muss die extra Auflösung ja nicht nutzen, und 
Sigma Delta Wandler machen so etwas die Antialiasing-filter einfacher. 
Auch ist schon die Interne Referenz relativ gut.

Der naheliegende Umstieg vom MCP3008 wäre der MCP3208.

Beim Sensor ist noch die Frage, was das für eine Modul ist, denn direkt 
wird der Sensor keine 10 V liefern, sondern eher mV oder µA.

von Wolfgang (Gast)


Lesenswert?

John D. schrieb:
> Das Ganze soll aber relativ langzeitstabil sein, da eine
> Wetterdatenbank aus den Messwerten über Jahre hinweg erstellt
> werden soll.

John D. schrieb:
> Die Genauigkeit beträgt 5% vom Endwert, bei dem Sensor handelt es sich
> um einen SI-13TC-T-K.

5% Genauigkeit ist für Vergleich mit anderen Daten, z.B. 
Standortstatistiken zu schlecht. Auch wegen der Alterung der Solarzelle 
solltest du das ganze regelmäßig kalibieren (und die Scheiben immer 
sauber halten).

> Ja, aber dieses Verhältnis möglichst genau einzustellen und dann
> konstant zu halten wird doch nicht einfach?

Du baust einen Spannungsteiler auf (z.B. 1:4 aus vier gleichen 
Widerständen) und machst die Kalibrierung in der Software.

Ulrich H. schrieb:
> Beim Sensor ist noch die Frage, was das für eine Modul ist, denn direkt
> wird der Sensor keine 10 V liefern, sondern eher mV oder µA.

Eine Solarzelle dieser Größe wird wohl eher mA liefern.

von X4U (Gast)


Lesenswert?

John D. schrieb:
> Zu meinem Problem: Ich suche im Moment nach einer Lösung, um einen 0-10v
> Analogsensor für Einstrahlung (0-1300w/m^2) mithilfe eines Raspberry Pis
> "möglichst genau" auszulesen. Der Raspberry Pi hat ja selbst keine
> analogen Eingänge also benötige ich einen ADC.

Meine Empfehlung:

http://www.analog.com/en/circuits-from-the-lab/CN0254/vc.html

Macht 16 Bit 250ksps/s. Der Analog frontend  hat +/- 10V Standard und 
mit dem den umlöten von ein paar Widerständen macht der dann auch 0-10V 
(falls 15 Bit Auflösung nicht reichen). Wie das geht steht in der Doku 
und die reicht auch um das ganze von Hand nachzubauen.

Schaltpläne Layout Stücklisten gibt es alles zum download.

Mit dem optionale Prozessor Board gibt es noch full speed PC Messungen 
miut allem was das Herz begehrt (wenn es um FFT THD SNR SINAD etc. 
geht).

Hab von dem Dingens sehr viel gelernt, deshalb preise ich es an.

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.