Analoge Werte in einen anderen Wertebereich umrechnen
Wer Programme für SPS oder Microcontroller schreibt, wird häufig bei der Erfassung, Verarbeitung und Ausgabe von Analogwerten mit verschiedenen Wertebereichen konfrontiert. Sensoren (z. B. Temperatur, Luftfeuchte, Lichtstärke) und Stellglieder (z. B. Stellwinkel eines Servomotors, Drehzahl eines Lüfters/Gebläses) haben ihren Arbeitsbereich (z. B. -20 bis 60 Grad Celsius, 0 bis 2000 U/Min.).
Zur Übertragung an die Steuereinheit wird der Arbeitsbereich in einen Spannungs- oder Strombereich umgesetzt. Im professionellen Bereich der „Speicherprogrammierbaren Steuerungen“ (SPS) wird meist die technisch aufwendigere Variante 4 bis 20 mA DC verwendet. Das vermeidet Verfälschungen durch Spannungsfall auf der Verbindungsleitung bei größeren Entfernungen. Zudem ermöglicht der untere Grenzwert von 4 mA DC die Erkennung defekter Messkreise. Bei kleinen Microcontrollen, wie dem Arduino Uno oder Mega 2560, kommt meist 0 bis 5 V DC oder 0 bis 3,3 V DC zur Anwendung.
Im Programm erfolgt die Weiterverarbeitung innerhalb des Abbildungsbereichs des Analogdigitalumsetzers (ADU) bzw. Digitalanalogumsetzers (DAU), z. B. 0 bis 255, 0 und 1023 oder 0 bis 4095 Digits. Der tatsächlich nutzbare Arbeitsbereich des Sensors bzw. des Stellgliedes kann auch geringer als der gesamte digitale Abbildungsbereich sein.
Monitor-/Displayanzeigen und Sollwerteingaben werden hingegeben meist wieder im Arbeitsbereich des Sensors bzw. des Stellgliedes vorgenommen. Das setzt eine Umrechnung in die verschiedenen Bereiche voraus.
Beispiel:
Sensor für Luftfeuchtigkeit: 0 bis 100 % relative Luftfeuchtigkeit
Analoger Eingang des Arduino Mega 2560:
- Referenzspannung 5 V DC
- 10 Bit Auflösung (0 bis 1023 Digits)
| Luftfeuchtigkeit | Messwert | Digitalisiert |
Von | 0 % rel. | 0 V DC | 0 |
Bis | 100 % rel. | 5 V DC | 1023 |
Ein Wert von 35 % rel. Luftfeuchte ergibt eine Messspannung von 1,75 V DC, die wiederum digitalisiert einen Wert von 358 Digits ergibt.
Das Programm
Das kleine Pascal-Programm SKAL dient zur Umrechnung eines Wertes (Rohwert) von einem 1. Wertebereich in einen Zielwert (Endwert) eines 2. Wertebereichs. Die Umrechnung erfolgt mittels linearer Gleichung.
ska1 = Anfangswert Skalierung 1
ske1 = Endwert Skalierung 1
ska2 = Anfangswert Skalierung 2
ske2 = Endwert Skalierung 2
skf1 = Faktor Skalierung 1
skk1 = Konstante Skalierung 1
rohwert = Wert im Skalenbereich 1
endwert = Wert im Skalenbereich 2
y = a * x + b
Faktor: a = (y2 – y1) / (x2 – x1)
skf1 = (ske2 – ska2) / (ske1 – ska1)
Konstante: b = y1 – a * x1
skk1 = ska2 – skf * ska1 (ein Wertepaar eingesetzt)
endwert = skf1 * rohwert + skk1
Bedienung
Zu Beginn werden die beiden Wertebereiche 1 und 2 vorgeben. Dann kann der Rohwert des Wertebereichs 1 eingegeben werden, der vom Programm unmittelbar in den Endwert des Wertebereichs 2 umgerechnet wird. Zur Eingabe des jeweiligen Wertes ist der invers dargestellte Buchstabe, z. B. „A“ für den Anfangswert des Wertebereichs 1, zu drücken. Unzulässige/unplausible Eingaben werden mit einem Beep-Ton gemeldet und ignoriert. Links werden die Zahlenwerte zusätzlich in Exponentialschreibweise dargestellt, d. h. der vorangestellten Mantisse folgt die Zehnerpotenz getrennt durch ein „E“.
Hinweis:
- Ein Komma muss statt „,“ als Punkt „.“ eingegeben werden
Download
- Freepascal 2.02 – Website des Herstellers: www.freepascal.org
- Programmlisting SKAL.PAS
Kommentare: 0