Christians Webseite        << zurueck        vor >>

Eine Ganganzeige selbst bauen, Teil 1, Hardware

Die folgenden Kapitel sollen eine Hilfestellung für alle Bastler geben die selbst eine Ganganzeige aufbauen möchten. Der erste Teil hat den Fokus auf der HW.

Beispiele von Versuchsplatinen aus frühen Entwicklungsphasen:
GA-DIY GA-DIY

Das generelle Prinzip der Gangerkennung

Der aktuell eingelegte Gang bestimmt die Gesamtübersetzung zwischen Motor-Drehzahl und Rad-Drehzahl (=Geschwindigkeit). Umgekehrt, wenn man diese beiden Drehzahlen kennt dann kann man daraus den Gang bestimmen. Genau das macht eine Ganganzeige.
GA-DIY

Es gibt auch Getriebevarianten in denen ein Gangschalter verbaut ist der direkt die jeweilige Gangposition signalisiert. Dessen Auswertung ist trivial und wird hier nicht betrachtet.

Testumgebung

Ein unentbehrliches Hilfsmittel bei der Entwicklung einer Ganganzeige ist ein Testgenerator. Er emuliert eine Motorrad-Elektronik und liefert definierte und bekannte Geschwindigkeits- und Drehzahlsignale. Der hier verlinkte Generator ist speziell für diesen Zweck ausgelegt. Er basiert auf einem Arduino-NANO Board.
arduino

HW und SW Auswahl

Eine elektronische Ganganzeige selbst zu programmieren ist heutzutage kein grosses Problem mehr. Es gibt eine breite Auswahl von sehr leistungsfähigen Mikroprozessoren und dazu komfortable Programmierumgebungen. Zeitkritische Programmteile sind praktisch nicht mehr vorhanden weil die Clock-Frequenzen und Rechenleistungen extrem angestiegen sind. Als Beispiel: ein ATmega128 (guter Stand der Technik vor 15 Jahren) hat eine typische Clock-Frequenz von 8MHz. Ein heute üblicher ESP32 arbeitet mit 240MHz. Man muss kein Assembler-Freak (mehr) sein um damit ein reaktionsschnelles System aufzubauen.

Die sonstige, notwendige Hardware ist aber eine ganz andere Geschichte mit einer einfachen Antwort: Es gibt nichts passendes! Am besten man baut sich die Elektronik selbst.
GA-DIY GA-DIY GA-DIY
Neben einem Prozessor(-Modul?) sind zusätzlich noch die folgenden Funktionsgruppen notwendig:

  • Gehäuse oder Befestigung
  • Stromversorgung
  • Display und Tasten
  • Elektronische Signalaufbereitung für Drehzahl und Geschwindigkeit

Für den Anfang sind die üblichen Compute-Module (Arduino, ESP32, etc) eine gute Wahl. Sie benötigen aber mindestens eine spezielle Interface-Platine. Die Stromversorgung solcher Module ist nicht für die typischen Störsignale im automotive Einsatz ausgelegt und alles würde nach kurzer Zeit versagen. Ebenso müssen die Signaleingänge geschützt und die Pegel angepasst werden.

Die nächsten zu klärenden Fragen sind:

  • Welchen Prozessor verwende ich als Basis?
  • Wie realisiere ich die Zusatzelektronik?
  • Wo und wie kann die Elektronik (am Motorrad) verbaut werden?
  • Wo sollen Display und Taster verbaut werden?

Für alle die am liebsten sofort mit dem Programmieren beginnen möchten sind diese Punkte natürlich super lästig. Aber leider direkt entscheidend ob das Projekt am Ende am Motorrad funktioniert.

Vom populären Raspberry Pi würde ich abraten. Er benötigt ein fehlerfreies Dateisystem auf einer SD-Karte. Genau das ist gefährdet durch plötzliche Spannungsausfälle die am Motorrad sehr leicht auftreten können. Ein Read-Only Mode des Betriebssystems wäre möglicherweise eine Lösung.
Weiterhin kann der enorm hohe Peak-Strombedarf ein Problem werden und die Spannung einbrechen lassen. Der Strombedarf ist eine direkte Folge der für diesen Einsatzzweck absurd überzogenen Rechenleistung.

Digitale Signalbusse

Alle modernen Motorräder verwenden digitale Busse zur internen Signalübertragung. Das bedeutet dass die Drehzahl- und Geschwindigkeitssignale nicht mehr "wie früher" direkt als Analogsignale zur Verfügung stehen. Oft handelt es sich um einen CAN- oder K-Line-Bus der auch an einem Diagnose-Connector zur Verfügung. Manchmal ist es aber auch ein proprietärer, interner Bus der nur Daten von der ECU zum Cockpit schiebt.

GA-DIY GA-DIY

In diesem Fall hat man 2 Optionen um an die Signaldaten zu kommen:

  • Die digitalen Signale dekodieren
  • Direkt die Sensoren anzapfen und auswerten

Eine Dekodierung der Digitalsignale ist vom Konzept her sehr elegant und umgeht viele Probleme der analogen Signalfilterung. Und den nachfolgenden SW-Algorithmen ist es ziemlich egal wie die Daten beschafft wurden. Leider gibt es dabei einige Hürden:

  • Man benötigt spezielle Interface-Bausteine um den Bus anzuzapfen
  • Die SW-Protokolle sind nur für die offiziellen OBD2 Übertragungsmodi bekannt und öffentlich. Alle anderen sind unbekannt und bei jedem Motorradtyp anders.


Alternativ kann man direkt die Sensoren anzapfen und auswerten. Für das Drehzahlsignal klappt das gut weil jeder Motor einen Kurbelwellensensor besitzt, teilweise auch noch einen Nockenwellensensor.

Ein Geber für das Geschwindigkeitssignal ist häufig nicht mehr separat vorhanden weil die Informationen durch das obligatorische ABS sowieso schon vorhanden sind. Das ABS ist aber ein sensibles Bauteil für die Verkehrssicherheit und das Anzapfen keine triviale Sache.

Welcher Weg der beste ist hängt stark vom Motorradtyp ab. Und natürlich von den eigenen Fähigkeiten und Präferenzen.

Senorsignale vorbereiten

Bei meinen Ganganzeigen werte ich immer nur die Sensorsignale aus, keinen digitalen Bus. Diese Entscheidung hat historische Gründe. Zu Beginn meiner Aktivitäten (~2004) wurden digitale Busse nur sehr selten eingesetzt. Alle Signale waren schön und sauber im Cockpit verfügbar.

Die Auslegung der Elektronik hängt von den zu erwartenden Signalen ab. Die Signalhöhe muss an das Pegelniveau des Prozessor angepasst werden und die Frequenzfilter auf den zu erwartenden Bereich zugeschnitten werden. Das folgende Bild zeigt beispielhaft die Drehzahl- und Geschwindigkeitssignale im Cockpit einer Yamaha FZS1000. Beide Signale sind sehr typisch und ähnlich bei den meisten Motorrädern zu finden.
GA-DIY

Das Drehzahlsignal (obere Kurve) hat eine Amplitude von 0 .. 12V. Die Motorelektronik erzeugt 2 Impulse pro Umdrehung der Kurbelwelle. Mit einem nutzbaren Drehzahlband von 1000 .. 12000 U/Min ergibt sich ein Frequenbereich von 33 .. 400 Hz.

Das Geschwindigkeitssignal (untere Kurve) hat eine Amplitude von 0 .. 5V. Der zugehörige Geber erzeugt 40 Impulse/Meter Mit einem nutzbaren Geschwindigkeitsbereich von 0 .. 250 km/h ergibt sich ein Frequenbereich von 0 .. 2800 Hz.

Wen man diese Werte zur Sicherheit noch grosszügig etwas aufrundent dann muss die Elektronik in der Lage sein Signale mit einer Frequenz von bis zu 3500 Hz und Amplituden von 0.. 12V zu verarbeiten.

Ein wenig komplizierter wird die Sache wenn man direkt den Kurbelwellensensor anzapfen muss. Das Drehzahlsignal ist dann nicht schon durch die ECU vorverarbeitet und aufgehübscht. Als Beispiel die Signale einer Yamaha FZ1:
GA-DIY

Das Signal spiegelt die Anzahl der Signalzähne (24 Zähne pro Umdrehung, = 400Hz pro 1000U/min) und ist um den Faktor 12 höher als im vorherigen Beispiel: 400 .. 4800 Hz .

Wesentlich lästiger ist dabei die Synchronisationslücke (zwingend notwendig für den Zündungzeitpunkt, wird durch Weglassen der Zähne 23 und 24 erzeugt). Das Signal hat dadurch 2 Frequenzanteile was die Auswertung erheblich verkompliziert.

Ein weiterer erschwerender Punkt ist die Signalamplitude. Das Signal im Beispiel liegt symmetrisch zum Massebezug und geht auch ins Negative. Zusätzlich wächst der Peak-Peak-Wert mit der Drehzahl (ca 10 .. 25V). Der Innenwiderstand ist relativ hoch und man muss die "Anzapfung" entsprechend hochohmig auslegen (40k Ohm oder so?).

Eingangsschutzbeschaltung

Eine geignete Schutz- und Filterbeschaltung für die Prozessoreingänge ist z.B. die folgende:
GA-DIY GA-DIY

Als Sensorsignal (V1) wird ein 5V Rechteck angenommen. Die Amplitude wird durch R1/R2 leicht verringert und durch D1 auf ~5V begrenzt. C1 erzeugt einen Tiefpass mit einer Eckfrequenz von ~15kHz. R1 verhindert hohe Ströme. Sein Wert ist so gewählt dass der Signaleingang nicht zu hochohmig und dadurch überempfindlich gegen gestrahlte Einstreuungen wird. Gleichzeitig soll das Sensorsignal nicht zu stark belastet werden.

Stromversorgung

Eine saubere Stromversorgung ist essentiell damit die Elektronik störungsfrei laufen kann. Die 12V-Bordspannung eines Motorrads ist hochgradig "verseucht" mit allem was man sich denken kann (Spannungsspitzen, -Einbrüche, Störsignale in allen Frequenzbereichen, kurzzeitige Umpolungen, Masse-Offsets, etc). Sowas führt sehr leicht zu einem Prozessor-Reset oder zur Zerstörung. Für Automobile, als Beispiel, muss man eine Filterkaskade ähnlich der folgenden Schaltung vorsehen um alle Testanforderungen zu erfüllen (links Eingang, rechts Ausgang):
GA-DIY

Diesen Aufwand muss man für eine DIY-Schaltung natürlich nicht unbedingt treiben. Hier sind 2 Entwürfe die für "normale" Ansprüche gut funktionieren:
GA-DIY
Die Schaltung basiert auf einem "good old" LM317. Die beiden dicken ELKOs am Eingang sorgen für eine extrem gute Filterung. Der 47R-Widerstand "verbrät" den Grossteil der unvermeidbaren Verlustleistung die in jedem Design mit linearen Spannungsreglern auftreten. Ein LM317 benötigt eine Eingangsspannung die ca 3V oberhalb der Ausgangsspannung liegt. Bei 100mA Strombelastung passt das alles sehr gut zusammen.

GA-DIY
Dieser Entwurf verwendet einen speziellen Automotive-Linearregler mit fix eingestellter Spannung. Seine Low-Dropout-Eigenschaft wird hier nicht wirklich benötigt, schadet aber auch nicht. Die Eingangsspannung läuft zuerst durch eine Verpolschutz-Diode. Die wird nicht für "Trunkenheit beim Einbau" benötigt sondern gegen eventuelle kurzzeitige lokale Umpolungen der Bordspannung. Es gibt Motorräder mit unglücklicher Masseführung wo so etwas durchaus auftreten kann. Der 47R ist aufgesplittet um extreme Hitzeentwicklung des Bauteils zu vermeiden (sehr kleine SMD Bauteile). Der 18V-Varistor ist möglicherweise überflüssig, die eingesetzten 1u-SMD-Kondensatoren sind aber nur bis 25V gerated.

Beide Entwürfe sind für Peak ca 100mA@3V/5V ausgelegt. Sobald man leistungsfähige Compute-Module einsetzt (oder sogar einen Raspberry Pi) wird das bei weitem nicht mehr ausreichen. Insbesondere wegen der Verlustleistunge wäre in diesem Fall ein Entwurf mit einem Schaltnetzteil angeraten.

Anzeigen der Werte

Für die Anzeige hat man die Qual der Wahl. Und man muss vorab entscheiden ob man die Gelegenheit nutzen möchte um auch direkt noch andere Parameter anzuzeigen (z.B Temperatur, Bordspannung, ect.). In diesem Fall reicht eine simple, einstellige Ziffernanzeige nicht mehr aus und man sollte auf eine Grafik-Anzeige überwechseln.

Am einfachsten umzusetzen ist die Ansteuerung eines 7-Segment LED-Displays. Diese können direkt durch die Ports jedes Mikroprozessors angesteuert werden und benötigen nur minimale Aufwände in der Software.
Mini-GA

Eine Stufe schwieriger sind sog. "statische LCDs", z.B. ein DE 112 RS. Schwieriger deshalb weil sie eine permanente Wechselspannung an den Segmenten erfordern. Dafür bieten sie einen hervorragenden Kontrast und sind deshalb eine gute Wahl bei starker Sonneneinstrahlung. Single-Digit Varianten sind praktisch vom Markt verschwunden und sehr schwer zu finden, deshalb hier ein 2-stelliges Beispiel.
LCD Display

Am schwierigsten und aufwändigsten sind LCD-Grafik-Displays. Je nach Ausführung benötigen sie in Einzelfällen sogar eine lästige, zusätzliche Hochspannung für das LCD. Am Prozessor ist ein passendes Bus-Interface notwendig (SPI, I2C, ..). In der Software benötigt man umfangreiche Bibliotheken und Schriftsätze.
Als grossen Vorteil bieten sie dafür aber alle Freiheiten bei der Darstellung. Selbst Animationen sind kein Problem und die schnöde Ganganzeige kann ein echter "Hingucker" werden.

Vereinfachen kann man das alles durch Verwendung von Displays aus (alten) Mobiltelefonen. Sehr verbreitet sind die Module aus Nokia-Telefonen. z.B. ein Nokia 1202 Display. Es existieren umfangreiche, freie Bibliotheken für sehr viele Modelle. Trotzdem bleibt die Integration in eigene Projekte eine grosse Aufgabe.
LCD Display LCD Display

LCD Character Textmodule sind ein Mittelding. Sie können mehrzeilige Texte darstellen. Allerdings ist die optische Erscheinung nicht jedermanns Sache und hat eher den Charme einer Steuerungsanzeige aus dem hintersten Keller eines Kernkraftwerks aus den 70er Jahren ..