Projekt 76b: LIN Demonstrator
Autoren: Nadine Schwenke und Marcel Bröckelmann
Betreuer: Prof. Schneider
→ 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
Projektdurchführung
Programmablaufdiagramm
-
Abb. XX: Programmablaufplan Master
-
Abb. XX: Programmablaufplan Slave
Aufbau
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
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.
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)