Digitale Werte auf analoge Anzeigen ausgeben

Beschreibung

Bevor ich das Projekt Boardcomputer in dem Umfang angegangen bin, den es jetzt hat, wollte ich zunächst lediglich zwei Werte aus der OBD2-Schnittstelle auf analoge Anzeigen bringen.

Welche Anzeige steuert man wie an?

Die darzustellenden Werte werden vom Raspberry Pi vom OBD2 ausgelesen – zum Beispiel Motortemperatur. Die Aufgabe war es also einen Wert vom Raspberry Pi eine analoge Anzeige zu bringen.

Als analoge Anzeige, wie man sie von der Tankanzeige, der Öl- oder Wassertemperatur kennt, kommt in diesem Falle ein Voltmeter zum Einsatz, der später ein anderes Cover (Gauge Face) bekommt.

Der Ausgang des Raspberry Pi kann 0V oder 3.3V. Damit könnte man einen Voltmeter entweder mit 0V oder mit 3.3V ansteuern. Mit PWM ist das dann fast stufenlos möglich und so lässt sich der Zeiger auf jede Position stellen die man möchte.

Im folgenden Beispiel wird ein 3V-Voltmeter an PIN12 geklemmt und PWM aktiviert. Der Rest wird in Prozent gesteuert.

0% ~0V
50% ~1,65V
100% ~3.3V

Programmierung

#!/usr/bin/env python

import RPi.GPIO as GPIO

# GPIO 12 als Output
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12,GPIO.OUT)

# PWM auf PIN 12 aktivieren
my_pwm=GPIO.PWM(12,1000)
my_pwm.start(0)

# 100% -> 3.3V
my_pwm.ChangeDutyCycle(100)

# 50% -> 1.65V
my_pwm.ChangeDutyCycle(100)

Analoge Anzeige

Den Voltmeter den ich verwenden kann (damit er zu den bereits verbauten passt) ist ein Kfz-Voltmeter von JOM.

Mit einem entsprechenden Cover wird daraus eine passende analoge Anzeige.

Allerdings haben KFZ-Anzeigen (wie diese auch) oft einen Bereich von 8-16V und somit schon einmal mehr als die maximalen 3.3V des Raspberry Pi.

Für die Skala würden dann ca. 8V den 40°C und ca. 16V den 130°C entsprechen.
Dazwischen steigt die Skala zwar nicht linear an, aber am Ende muss man sich hier nur einmal das Mapping ausdenken.

Das große Problem hier ist: wie steuere ich mit einem 3.3V Ausgang ein 16V Voltmeter an?

Die maximal 16V bekomme ich mit einer 12V-Leitung vom Auto und die wird mit einem StepUp Modul auf 16V gebracht.

Diese Spannung muss dann noch im Bereich 8V-16V geregelt werden. Das soll nun theoretisch mit einem Mosfet-Treiber gehen.

Hier im Bild fehlt noch das StepUp-Modul aber der Aufbau sieht wie folgt aus:

Je nach Spannung vom Raspberry Pi, wird dann die Spannung von der Stromquelle vom Mosfet geregelt.

Raspberry PiMosfet
0V0V
1.65V8V
3.3V16V

Das hat soweit auch gut funktioniert, jedoch zeigt das Voltmeter nicht den richtigen Wert an. Bei 5V war das Voltmeter schon fast am Anschlag. Ein ebenfalls angeschlossener Multimeter zeigte den Wert richtig an.

Mir wurde gesagt, dass das wohl an einem fehlenden endlosen Widerstand liegen würde (wie es ein Multimeter sei).

Die Idee mit den analogen Anzeigen habe ich dann aber zugunsten eines LCD und dem Bordcomputer-Projekt dann komplett verworfen und das Problem somit auch nicht mehr weiter verfolgt.