Projekt 76b: LIN Demonstrator

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autoren: Nadine Schwenke und Marcel Bröckelmann
Betreuer: Prof. Schneider

Abb.1: LIN BUS



→ zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)

Aufgabe

Sensoren und Aktoren eines Kfz sollen über einen LIN BUS angesteuert werden. Visualisieren Sie die Daten mit CANoe.


Erwartungen an die Projektlösung

  • Recherche zum LIN BUS
  • Beschaffen Sie kostenlos LIN fähige Sensoren und Aktoren aus dem Kraftfahrzeug (Sponsoring, Schrottplatz)
  • Ein Arduino mit LIN Shield soll einen Sensor auslesen und einen Aktor ansteuern.
  • Überwachen Sie den Datenverkehr mit CANoe.
  • Test und wiss. Dokumentation
  • Live Vorführung der Kommunikation

Hinweise:

  • Dieses Projekt ist nur mit viel Kreativität und Eigeninitiative zu lösen. Sie sollten Spaß an Bussystemen im Kraftfahrzeug haben.
  • Dieses Projekt wurde zweifach vergeben. Stimmen Sie sich mit dem anderen Team ab, damit zwei unterschiedliche Demonstratoren entstehen.

Einleitung

Im Rahmen des Elektronik-Fachpraktikum im 5.Semester, im Bereich Mechatronik wurde uns die Aufgabe gestellt, ein Projekt mit einem Arduino Uno zu gestalten.
Das Projekt 76b soll eine LIN-Bus Verbindung demonstrieren. Hierzu sollen Fahrzeugsensoren und Aktoren über einen Arduino miteinander gekoppelt werden, sodass diese gesteuert werden können. Dies wird hier durch die Inbetriebnahme der Heizung eines Wohnmobilseitenspiegels demonstriert, welcher über einen Taster angesteuert wird.

LIN-Bus

Der Lin Bus (Lokal Interconnect Network) ist ein einfaches und kostengünstiges Bussystem, dass in den 90er Jahren entwickelt wurde. Über dem Systembus werden einfache Sensoren und Aktoren angesteuert, die eine relativ geringe Echtzeitanforderung haben. Ein paar Anwendungsbeispiele hierfür sind im Automobilbereich der Regensensor, Lichtsysteme, Spiegelverstellung, Fensterheber, Klimaanlage sowie die Sitzverstellung. In den Bereichen wo der CAN-Bus nicht benötigt wird findet die Kostengünstige „Ein-Draht-Leitung“ immer mehr Anwendungsgebiete.
An einem LIN-Bus können bis 16 Teilnehmer angeschlossen sein, dieses besteht aus einem Master-Knoten, der gleichzeitig das Gatway zu einem übergeordneten Netzwerk (z.B. CAN) ist. Die restlichen Teilnehmer sind Slave-Knoten, die ihr Datenpacket nach Anforderung vom Master über die Busleitung senden. Dabei darf die maximale Leiterlänge von 40m nicht überschritten werden. Bei der Kommunikation zwischen den Teilnehmern kommt eine UART-Übertragung (8 Datenbit, 1Startbit, 1Stopbit) zum Einsatz, die mögliche Bitrate beträgt 20 kbit/s.

Header-Massage

Die Header-Massage besteht aus den Kommunikationsteilen die als „synchbreak“, „synchfield“ und „identifier“ bezeichnet werden. Die Übertragung des Nachricht beginnt mit dem Synchronisation-Break (synchbreak), ein Masse dominierende Pegel von 13 Bitzeiten, sowie einen rezessiven Pegel von bis zu 4 Bitzeiten. Das darauf folgende Synchronisationsfeld (synchfield) wird mit einem Startbit (Wert 0x55) sowie einen Stoppbit eingeleitet, damit wird dem Slave ermöglicht, die Übertragungsrate des Masters zu ermittelt. Die Header-Massage wird mit dem Identifizierfeld (identifier) beendet. Dieser Teil bestimmt den weiteren Ablauf der Nachricht, der mit Datenbytes und zwei Paritätsbits gefüllt ist.

Response-Feld

Das Response-Feld wird generell als Antwort bezeichnet, hierbei werden zwei, vier oder acht Datenbytes versendet. Die Anzahl der Datenbytes ermittelt der empfangene Slave Knoten aus zwei Bytes vom Identifiers vom der Master Botschaft. Als letzen Byte der Antwort wird ein "Checkbyte" versendet.

LIN-Transceiver

Funktion Pin
Datenempfang (OUTPUT) 1
Chip auswählen 2
Fehler- Berichterstattung 3
Dateneingabe überragen 4
Masse 5
LIN BUS 6
Batterie Plus 7
Spannungsregler Ausgabe 8


Projekt

Projektplan

Benötigte Bauteile

Bauteile Anzahl
12V DC Netzteil 1
Arduino Uno 2
LIN- Transceiver 2
Steckbrett 1
Wohnmobilspiegel 1
Taster Heizung 1
220 kOhm Widerstände 2
4,7 kOhm Widerstände 2
1 kOhm Widerstände 2
50 Ohm Widerstände 2
100 nF Kondensatoren 2
220 nF Kondensatoren 2
1 µF Kondensatoren 2
Standarddioden 4


Schaltpläne

Abb.2: Schaltplan Heiztaster

Dieser Schaltplan zeigt die Belegung des Heiztaster im Bezug zu den einzelnen Spiegel. Da wir in unserer Demonstration nur ein Spiegel ansteuern ist für uns auch nur ein Schaltkreis relevant. Wenn wir uns an die Spiegelheizung mit der Bezeichnung 32R01, muss dieser an einem der Ausgänge mit der Masse verbunden werden. Dafür steht die Bezeichnung W0901. Des weitern muss eine Verbindung zum Slave Steuergerät hergestellt werden, dieses hat auf dem Schaltplan die Bezeichnung 04A02. In unserm Fall wird an diesem Ausgang der Arduino angeschlossen. Der Taster 32S01 ist am Pin 7 mit den 5 Volt vom Arduino verbunden und stellt bei geschlossener Schalterstellung ein Schaltkreis über den Pin 3 zum Steuergerät 04A01 her.

Abb.3: LIN BUS Verkabelung

Projektdurchführung

Aufbau
Der Heiztaster wird mit 5 Volt versorgt und wird mit dem Ausgang an den analogen Pin 3 des Master-Arduinos angeschlossen. Die Leuchtdiode des Tasters wird an Masse und Pin 9 des Master-Arduinos angeschlossen.
Der Lin-Transceiver wird wie in Abb.3, allerdings ohne den optionalen Aufbau,versorgt. Der Wake-Pin der Lin-transceiver wird anders als im oben angegebenen Schaltplan mit 5 Volt versorgt, damit dieser dauerhaft aktiv ist, sofern der entsprechende Arduino versorgt ist. Auf die Verbindung mit dem FAULT-Pin sowie die Verbindung zwischen Vren und Vdd und der Anschluss an die 12 Volt Versorgung und der Masse wird verzichtet. Die Versorungsverbindung wird wie zuvor beschrieben durch eine Verbindung mit den Arduinos gelöst, weshalb keine Schaltung gegen Masse von Nöten ist. Der Aufbau am Übertragungspin des Tranceivers wurde übernommen, wobei auf die Zener-Dioden verzichtet wurde, da diese lediglich als ESD-Schutz dienen.


Programmierung
Programmablaufdiagramme



Programmierung Master
Zu Beginn des Programms werden die analogen Pins des Master-Arduinos ausgelesen. Anschließend wird zuerst das Signal des Heiztasters ausgewertet. Hierzu wird der Wert mit vordefinierten Werten verglichen und ein Zustandsautomat mit vier Zuständen durchlaufen. Diese Zustände beschreiben die folgenden Situation:

  • Heizung aus,Taster nicht gedrückt
  • Heizung an, Taster gedrückt
  • Heizung an, Taster nicht gedrückt
  • Heizung aus, Taster gedrückt

Die Zustände können nur der Reihe nach durchlaufen werden und sorgen dafür, dass das Signal des Tasters korrekt gespeichert wird und jede Betätigung lediglich den Sprung um 1 Zustand ermöglicht. Um ein Prellen des Tasters zu verhindern, wird bei den Sprüngen in Zuständen mit nicht gedrückten Taster eine Variable hochgezählt, in der kein neues Schaltsignal des Tasters auftreten darf. Sollte ein Schaltsignal auftreten, resettet die Variable und sie muss erneut zum gewählten Wert hochzählen muss. Neben dem Zustandsautomaten wird der Steuerschalter durch einen analogen Eingang ausgelesen und das Signal verarbeitet. Hierzu wird der Analogwert mit Referenzwerten verglichen, um die am Schalter eingestellte Richtung zu ermitteln. Anschließend wird ein Datenpaket erstellt, welches die Signale des Heiztasters und des Steuerschalters beinhaltet. Dieses Datenpaket wird an den Lin-Transceiver gesendet, sodass dieses an den Slave-Arduino weitergeleitet wird.

Programmierung Slave
Der Arduino prüft das Eingangssignal des Lin-Transceivers. Sofern die Länge des Eingangs korrekt ist, wird das Signal ausgelesen. Anschließend wird die Checksumme errechnet und mit der gegebenen Checksumme verglichen. Entsprechen die Checksummen einander, so werden die weiterführenden Schritte ausgführt, andernfalls wird auf das nächste Datenpaket gewartet. Die korrekten Daten werden verarbeitet und die entsprechenden Ausgänge angesteuert, um die Heizung bzw. den Motor des Spiegels zu steuern.

Ergebnis

Der Versuchsaufbau ist nicht funktionsfähig, da der Lin-Transceiver keine Daten übermittelt. Die Ansteuerung des Heizelements wurde überprüft und als funktionsfähig befunden. Die Schaltung zwischen den Arduinos wurde ebenfalls geprüft, jedoch konnte der Fehler nicht ermittelt werden. Die Versorgung der Bauteile durch das Netzteil wurde überprüft und funktioniert einwandfrei.

Zusammenfassung

Lessons Learned

Durch das Projekt konnten wir unser Verständnis im Bereich der Bussysteme und der Programmierung erweitern. Insbesondere das Programmieren der Schnittstelle zwischen den Arduinos war eine besondere Herausforderung, da dieses Themenfeld uns gänzlich unbekannt war.
Darüber hinaus lernten wir, auf unvorhergesehene Probleme entsprechend zu reagieren. Eine neue Herausforderung war außerdem die Aquirierung gesponsorter Bauteile. Dies lief im Projekt nicht einwandfrei und sorgte so für große Zeitprobleme.
Auch das Verständnis von Schaltplänen und deren Adaption für die gegebenen Anforderungen wurde durch das Projekt verbessert. Hierzu wurde ebenfalls das Vertiefen des Verständnisses von Schaltplänen erforderlich. Als besondere Herausforderung stellte sich die Beschaffung von Schaltplänen für die bereitgestellten Schalter heraus, da diese online nicht frei zugänglich sind.
Da durch fehlerhafte Zeiteinteilung das Projekt letztendlich nicht zum Erfolg gebracht werden konnte, wird auch dieses Thema in Zukunft besser von uns behandelt.

Projektunterlagen

YouTube Video

Weblinks

[Lin Transceiver]
[PowerPoint TU-Dortmund über Lin-Bus]
[LIN Protokoll]

Literatur

--- → zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)