www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Druckgeber auswerten


Autor: Uwe H. (mistert)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht 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:
ConvertDruck:
    If Ct_Druck<n_Mittel Then Ct_Druck=Ct_Druck+1   ;Anzahl mitzählen
    I=n_Mittel-1:Repeat:Druck_1[I]=Druck_0[I]:I=I-1:Until I=0;Buffer rotieren
    hDruck_ADC=ADRESH:lDruck_ADC=ADRESL             ;Druck-Wert aus ADC lesen
    If_Bit=0:Druck[1]=0                             ;Anfangsdruck der Tabelle 0,0 bar
    If Druck_ADC<1000 Then                          ;kein Kabelbruch Drucksensor ?
        If Druck_ADC>50 Then                        ;kein Kurzschluß Drucksensor ?
@           Set_Tbl _Tbl_Druck
            Gosub ReadWord
            If DummyW Then                          ;Anfangsspannungswert ADC nicht schon 0 ?
                Dummy2W=DummyW
                Repeat
                    Dummy1W=Dummy2W:Gosub ReadWord  ;alte Obergrenze als Untergrenze übernehmen und nächster Wert aus Tabelle
                    If DummyW Then                  ;auch nicht 0 ?
                        Dummy2W=DummyW              ;neuen Wert als Obergrenze übernehmen
                        DummyW=1000                 ;1000 mbar als Default setzen
                        If Druck_ADC>=Dummy1W Then
                            If Druck_ADC<=Dummy2W Then;gemessener Wert liegt zwischen beiden Tabellenwerten ?
                                DummyW=Dummy2W-Dummy1W:Dummy1W=(Druck_ADC-Dummy1W)*1000:DummyW=DIV32 DummyW:If_Bit=1
                            Endif
                        Endif
                        Druck[1]=Druck[1]+DummyW    ;Wert für dieses Intervall addieren
                    Else
                        If_Bit=1
                    Endif
                Until If_Bit
            Endif
        Endif
    Endif

;Umrechnung Druck
;ADC-Wert für Druck
Tbl_Druck:                                          ;0-5 bar in 1bar-Schritten
    @ DW 64,248,362,447,505,564,0

Autor: Uwe H. (mistert)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Uwe H. (mistert)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Uwe H. (mistert)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Uwe H. (mistert)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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ß.

Autor: Uwe H. (mistert)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.