Ausgabe 27, September 2000

Sensordateien für einfache Sensoren

Erstellung von Dateien am Beispiel von NTC- und LDR-Sensoren
Von Burkhard Kainka


Programme wie ModulLAB, Prisma oder CompyctDefinition verwenden Sensordateien, um unterschiedliche Sensoren mit ihren korrekten Einheiten darzustellen. Man kann sich leicht eigene Sensordateien herstellen, wenn sie eine lineare Übertragungskennlinie haben. Beispiel: Ein DC-Motor als Drehzahlsensor liefert eine Generatorspannung, die proportional zur Drehzahl ist. Man braucht nur einen einzigen Messpunkt, um die Datei zu erstellen. Dies erfolgt z.B. mit MESSKAL.EXE. Inzwischen gibt es eine Spezialversion dieses Programms für C-Control. Sie kann auf der Internetseite des Autors geladen werden.

Bei nicht-linearen Sensoren ist es nicht so einfach, an eine Sensordatei zu kommen. Mit etwas Aufwand geht es aber doch. Man braucht nur möglichst genaue Daten des Sensors. Oft läst sich dann ein preiswerter sensor für einfache Messungen verwenden. Hier wird das Verfahren für einen NTC-Sensor und für einen LDR-Sensor gezeigt.

Ein NTC-Widertand wird in erster Näherung nur durch zwei Werte beschrieben: Den Nennwiderstand R25 und den B-Wert. Meist ist es sehr schwierig, genaue Daten zu bekommen. Für den im SIOS- und CompuLAB-Experimentierset verwendeten Typ mit 4,7 k oder 10 k konnten aber die B-Werte erfragt werden. Für den Standard-NTC-Widerstand von 10 k wurde ein B-Wert von 4300 K angegeben, für den 4,7-k-NTC B=3950 K. Beide Sensoren werden im Normalfall in einer Spannungsteilerschaltung eingesetzt, wobei der Festwiderstand gegen die Referenzspannung gleich dem Nennwiderstand des NTC bei 25 °C sein soll.

Die Auswertung wird hier für Excel beschrieben. In der A-Spalte kann man sich einige Temperaturen eintragen. Der Widerstand berechnet sich dann für den 10-k-NTC mit der folgenden Formel.

= 10* EXP(4300*(1/(273+A:A)-1/298))

Man kann sich damit leicht den kompletten Widerstandsverlauf aufzeichnen lassen.

Für die Herstellung einer Sensortabelle ist die Aufgabe aber anders: Der AD-Wandler liefert einen Wert zwischen 0 und 255 für den Bereich von 0 V bis zur Referensspannung von z.B. 5 V. Aus diesem Ergebnis muss zunächst nach den Gesetzen der Reihenschaltung der Widerstand des Sensors bestimmt werden.

In Excel trägt man in der A-Spalte eine Zahlenfolge von0 bis 255 ein. In der B-Spalte liefert dann die folgende Folmel für den Sensorwidersatnd, wenn der Festwiderstand 10 k beträgt:

=(2550-10*A:A)/A:A

Aus diesem Widerstand kann nun in Spalte C die Temperatur berechnet werden:

=1/(LN(B:B/10)/4300+1/298)-273

Wenn man nun die wunderschönen Temperaturangaben sieht, könnte man fast dran glauben. Allerdings muss man sich immer vor Augen halten, dass der Nennwidertsand mit einer Toleranz von +/-5% angegeben wird. Das entspricht einer möglichen Abweichung von ca. +/-1 K bei 25 °C. Der B-Wert hat eine Toleranz von 3%. Das führt zu größeren Abweichungen bei sehr großen und sehr kleinen Temperaturen.

Um die gewonnene Temperaturtabelle in die Sensortabelle zu übertragen, verwendet man am besten ein Vorbild, das umgebaut wird. Hier eignet sich die vorhandene Tabelle TEMP2.DEF. Der Messbereich von -20 °C bis + 60 °C ist hier ebenfalls sinnvoll. Damit die Messgenauigkeit nicht zu übertrieben vorgetäuscht wird, wird in der Spalte D eine Kopie von C mit einem Zahlenformat mit nur einer Nachkommastelle angelegt. Diese Werte können nun in die TAB-Tatei kopiert werden. Es müssen genau 256 Werte kopiert werden. Die erste und die letzte Stelle kann Excel nicht berechnen, weil hier Divisionen durch Null auftreten. Dach stört aber nicht weil Sensrwiderstände von Null und Unendlich ohnehin nie auftreten können. Hier muss man selbst Grenzwerte eintragen. Außerdem muss beachtet werden, dass Excel in der deutschen Fassung ein Komma statt des erforderlichen Dezimalpuntes setzt. Da hilft nur Suchen und Ersetzen mit einer Textverarbeitung.

Die DEF-Datei enthält neben der reinen Text-Tabelle noch eine zweite Tabelle, die die relative Plot-Position für jeden Messwert angibt. Damit ist es möglich, nicht-lineare Skalen oder logarithmische Skalen zu verwenden. Die Datei NTC2.TAB verwendet eine lineare Temperaturskala von -20 bis +60 °C entsprechende der Plotposition 0.000 bis 1.000. Eine weitere Umrechnungsspalte liefert diese Werte mit der folgenden Formel:

=(C:C+20)/80

Da in Spalte C auch Werte unter -20 C und über +60 C auftreten, gibt es nun zunächst auch Plotpositionen unter Null und über Eins. Diese müssen durch die konstanten Grenzwerte 0,000 und 1,000 ersetzt werden. Das ganze wird dann in die DEF-Datei übertragen. Auch hier wieder muss das Komma durch den Punkt ersetzt werden. Wenn man das mit Word macht, hat man bei automatischer Übersetzung mit der Meldung "256 Zeichen ersetzt" gleich eine gute Kontrolle über die Länge der Tabelle.

Zum Schluss muss noch des Dateikopf etwas angepasst weren. In der ersten Zeile steht nun der verwendete NTC-Widerstand, damit es zu keinen Verwechslungen kommt. Die Dateien sind übrigens im DOS-Format geschrieben, da sie ursprünglich für PRISMA entwickelt wurden. Auch die neue Datei kann wieder mit PRISMA eingesetzt werden.

Sensor:            NTC 10 k -20..+60øC

Gr"áe: T

Einheit: øC



Y-Achse: T/øC

Position X-Achse: 0.250

Position Beschriftung

0.000 -20

0.125 -10

0.250 0

0.375 10

0.500 20

0.625 30

0.750 40

0.875 50

1.000 60



Zuordnung 0...255

-60.0

-57.6

-49.9

-45.0

-41.4



Die fertige Datei wird unter dem Namen NTC10k.DEF gespeichert. Manch einer mag sich sagen, na gut, dan brauche ich ja die ganzen Rechnungen nicht selbst auszuführen. Das stimmt. Aber wenn man mal einen andern Sensor hat oder ein ähnliches Problem lösen will, findet man hier die nötigen Arbeitsschritte.

Der LDR-Sensor

Jeder LDR-Sensor hat eine ganz bestimmte Kennlinie. In erster Näherung erhält man im doppelt-logarithmischen Maßstab eine Gerade, wenn der Widerstand gegen die Helligkeit aufgetragen wird. Moderne LDRs mit einem sehr großen Variationsbereich liefern jedoch bei genauerem Hinsehen auch in diesem Maßstab eine leicht gekrümmte Kennlinie.

Viele Anwender von ELEXS oder SIOS haben bereits einen ganz bestmmten LDR-Sensor mit der Typenbezeihnung A9060-14. Im Datenblatt ist ein Widerstand von 15 k bei 100 lux angegeben. Ein Diagramm liefert noch einige weitere Anhaltspunkte. Mit einer Lupe und etwas Geduld wurden folgende Stützpunkte bestimmt:

I          R

1 lux ca. 1500 k

10 lux ca. 150 k

100 lux 15 k

1000 lux ca. 2 k

10000 lux ca. 0,3 k

Mit Excel wurde versucht, eine möglichst gute Näherung zu finden. Das Ergebnis ist folgende Gleichung:

R = 1350 / EXP [1,042 LN(I) - 0,015 (LN(I))²]

Mit etwas Mühe kann man diese Gleichung so umstellen, dass die Helligkeit I in Lux geliefert wird. Dann können ähnliche Methoden wie beim NTC-Sensor angewandt werden, um eine vorhandene Sensortabelle für den LDR umzurüsten. Ausgangspunkt war hier die Datei Licht_E.DEF. Das fertige Ergebnis LDR1.DEF kann hier geladen werden. Die einzelnen Rechenschritte sollen hier nicht ausgebreitet werden. Sie eignen sich eher dafür, einen Mathematik-Kurs in der Oberstufe zu quälen.

Auch hier wieder gilt: Man sollte sich nicht durch die schönen Zahlen blenden lassen. Die tatsächliche Genauigkeit ist natürlich nicht sehr hoch. Andererseits kann man die Datei für einen bestimmten Sensor kalibrieren. Man benötigt dazu einen bekannten Vergleichswert und das Programm MESSKAL. In der Nähe des kalibrierten Messwerts erhält man dann relativ genaue Messwerte.

Sensor:            LDR 1..100000 lux

Größe: E

Einheit: lux



Y-Achse: E/lux

Position X-Achse: 0.165

Position Beschriftung

0.008 0.1

0.165 1

0.326 10

0.478 100

0.635 1000

0.792 10000

0.949 100000



Zuordnung 0...255

0

1

1

2


Zurück zum CompaS-Archiv
Zurück zur Startseite AK-Modul-Bus