Forum: Mikrocontroller und Digitale Elektronik Druckgeber auswerten


von Uwe H. (mistert)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte gerne einen Druckgeber auswerten.
Dazu dachte ich an einen Spannungsteiler mit 200Ohm und eben dem Sensor.
Nur wir rechne ich den gelesenen Spannungswert dann in den 
entsprechenden Druck um?

Gruß
Uwe

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Puh,
ich war da ja faul...

Ich habe zu jedem Druckwert (volle bar) über den Widerstandswert den 
Wert des ADCs errechnet und in einer Tabelle abgespeichert.

Zur Auswertung:
Dann hole ich mir 2 Werte aus der Tabelle und sehe nach, ob der der 
gelesene Wert dazwischen liegt - wenn nein, 1 bar weiter und den 
nächsten Wert aus der Tabelle holen.
sonst:
ich teile die Differenz in x (20) Teile auf und suche den Punkt, wo der 
gelesene Wert über dem aufaddierten liegt. (Rundungsfehler!)
Dann habe ich meinen Wert mit einer Genauigkeit, die mir genügt.
Man programmiert diese Routine etwas tricky um die Rundungsfehler in den 
Griff zu bekommen !

Hier mal mein Basic-Code:
1
ConvertDruck:
2
    If Ct_Druck<n_Mittel Then Ct_Druck=Ct_Druck+1   ;Anzahl mitzählen
3
    I=n_Mittel-1:Repeat:Druck_1[I]=Druck_0[I]:I=I-1:Until I=0;Buffer rotieren
4
    hDruck_ADC=ADRESH:lDruck_ADC=ADRESL             ;Druck-Wert aus ADC lesen
5
    If_Bit=0:Druck[1]=0                             ;Anfangsdruck der Tabelle 0,0 bar
6
    If Druck_ADC<1000 Then                          ;kein Kabelbruch Drucksensor ?
7
        If Druck_ADC>50 Then                        ;kein Kurzschluß Drucksensor ?
8
@           Set_Tbl _Tbl_Druck
9
            Gosub ReadWord
10
            If DummyW Then                          ;Anfangsspannungswert ADC nicht schon 0 ?
11
                Dummy2W=DummyW
12
                Repeat
13
                    Dummy1W=Dummy2W:Gosub ReadWord  ;alte Obergrenze als Untergrenze übernehmen und nächster Wert aus Tabelle
14
                    If DummyW Then                  ;auch nicht 0 ?
15
                        Dummy2W=DummyW              ;neuen Wert als Obergrenze übernehmen
16
                        DummyW=1000                 ;1000 mbar als Default setzen
17
                        If Druck_ADC>=Dummy1W Then
18
                            If Druck_ADC<=Dummy2W Then;gemessener Wert liegt zwischen beiden Tabellenwerten ?
19
                                DummyW=Dummy2W-Dummy1W:Dummy1W=(Druck_ADC-Dummy1W)*1000:DummyW=DIV32 DummyW:If_Bit=1
20
                            Endif
21
                        Endif
22
                        Druck[1]=Druck[1]+DummyW    ;Wert für dieses Intervall addieren
23
                    Else
24
                        If_Bit=1
25
                    Endif
26
                Until If_Bit
27
            Endif
28
        Endif
29
    Endif
30
31
;Umrechnung Druck
32
;ADC-Wert für Druck
33
Tbl_Druck:                                          ;0-5 bar in 1bar-Schritten
34
    @ DW 64,248,362,447,505,564,0

von Uwe H. (mistert)


Lesenswert?

Hmm dankeschön!
Also schon über ne Lookup Tabelle? Wäre es nicht einfacher ne Tabelle 
mit 1024 Einträgen zu erstellen? Dann spare ich mir das ewige 
vergleichen. Zumal ich gerne eine Genauigkeit von 0,1Bar hätte.
Wie rechne ich überhaupt die entsprechende Spannung aus? Das ist ja dann 
ein belasteter Spannungsteiler oder?

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Ich weiß ja nicht, welchen uC Du nutzen möchtest. Ich habe mit einem PIC 
gearbeitet, der einen deutlich höheren Eingangswiderstand gegenüber den 
200 Ohm Sensoren hat. Er ist sogar so hoch, daß ich ihn in der Rechnung 
gar nicht berücksichtigt habe.

Und wie willst Du mit den Werten auf 0,1 bar genau messen ?
Das ist doch auch sicher so eine Druckdose, die einen Schiebewiderstand 
bewegt. Da kannst Du Dich über 0,5bar freuen.
Und laß Dir von dem Rechenpolygon keine Genauigkeit vortäuschen !

Ich wollte auch keinen (kostbaren) Platz für 1024 Werte opfern. Etwas 
Hirn spart da schon mal knappen Platz.

von Uwe H. (mistert)


Lesenswert?

Ich verwende einen AVR(ATMega 16/32). Da ist der Eingangswiderstand ja 
auch recht hochohmig.
Wie der Druckgeber intern aufgebaut ist, weiß ich nicht. Aber genauer 
wie 0,5Bar sollte er laut Datenblatt schon messen.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

OK,
wer ist der Hersteller des Druckgebers, wie heißt die Bestellnummer - 
ich such mir selbst das Datenblatt.

In Deiner Tabelle berühren sich die Worst-Case-Werte ja an den 
0,5bar-Schritten. Wie soll da 0,1bar möglich sein ?

von Uwe H. (mistert)


Angehängte Dateien:

Lesenswert?

Das Datenblatt musst du nicht suchen, das habe ich angehängt :)

Stimmt, die Überschneidung ist mir noch gar nicht aufgefallen. Das ist 
aber schade, ich hätte halt schon gerne eine Schrittweite von 0,1 Bar.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Ja,
genau so ein "Ding" habe ich von Motometer hier.
Du kannst evtl. Druckänderungen so fein auflösen, aber ich habe hier 
auch einen Druckmesser, da habe ich das Gefühl, daß der Schleifer 
manchmal etwas "hängt" und der Druck schon stärker ansteigen muß, damit 
sich der gemessene Wert ändert.
Der absolute Druck ist halt immer mit einem systematischen Fehler 
behaftet, je nach Kennlinie der Schleifbahn.

Für grobe Sachen reicht der aus und ist bezahlbar.

von Uwe H. (mistert)


Lesenswert?

Naja was er in Wirklichkeit misst, ist ja nicht so wild. Wichtig ist 
halt, dass die Anzeige dann im 0,1 Bar bereich interpoliert. ;)
Der kritische Bereich ist eh um 1 Bar oder so. Also erst wenn der Druck 
um 1 Bar fällt wirds kritisch.
Wie hast du den Geber ausgewertet? Ohne Spannungsteiler? Momentan läuft 
der ADC mit der internen Referenzspannung von 2,56V. Daher hab ich halt 
den 1:1 Spannungsteiler. Aber ich könnte ja auch auf 5V Referenzspannung 
gehen.

von Peter D. (peda)


Lesenswert?

Also wenn ich mir den Toleranzbereich ansehe, ist da nichts mit 0,1Bar.

Bis 2 Bar sinds bestenfalls 0,5 Bar und dann wirds rapide schlechter.

Nimm ne simple Tabelle in 0,5Bar Schritten (= 19 Einträge) und gut is.


Peter

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Ja klar mit einem Spannungsteiler, anders geht es nicht.
Ich arbeite hier mit 5V Systemen, wo mir die Genauigkeit der 
5V-Versorgung als Referenz ausreicht.

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Gemeinerweise ist Kopieren aus dem VDO-PDF verhindert, hier deshalb 
abgetippt die Kennlinie mit Toleranzschlauch. Die mittlere Linie sieht 
bis auf einen Versatz nach oben ziemlich linear aus, aber die 
Abweichungen sind am oberen Ende schon recht groß.

von Uwe H. (mistert)


Lesenswert?

normal wird eh nur bis 6 Bar gemessen. Daher ist es egal wenn er darüber 
ungenauere Werte anzeigt.

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.