Forum: Mikrocontroller und Digitale Elektronik LIN-CAN Gateway / Bauteilauswahl


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Stefan E. (stefan_e20)


Lesenswert?

Hallo liebe Community,

ich bräucht mal wieder eure Hilfe.
Ich benötige für ein privates Projekt ein Modul das mir Telegramme von 
LIN Bus auf CAN Bus umsetzt.
Somit sollte das Gerät als Gateway fungieren.
LIN Bus: Master, Geschwindigkeit 19.200 bit/s, ID des Slave und deren 
Telegramme müssen von mir noch ermittelt werden.
CAN Bus: 500kbit/s, ID und Data muss noch festgelegt werden, können aber 
eigentlich frei gewählt werden.

Kurz zu dem Vorhaben und warum ich das benötige:

Das Ganze findet im Automobilbereich statt, wie ihr sicherlich schon 
vermutet habt.
Ich möchte mir Multifunktionstasten aus einem neueren Model in mein 
Fahrzeug einbauen und auf meinem zusätzlichen Dashboard verarbeiten.
Bei den alten Tasten geht der LIN Bus auf das Steuergerät an der 
Lenksäule und gibt die CAN Telegramme auf dem Bus aus.
Bei den neuen Tasten ist die Verbindung auf einem anderen Steuergerät 
(Komfort).
Ich kann leider das Steuergerät nicht gegen das Neuere austauschen, da 
diese zu unterschiedlich sind.

Das Komfort Steuergerät und die Tasten hab ich bereits da und bau die 
Testschaltung bereits auf, um die LIN Bus Telegramme aufzuzeichnen und 
zu analysieren.
Da es mir am Oszilloskop ein wenig zu umständlich ist, habe ich mir den 
"LIN Serial Analyzer" von Microchip raus gesucht und werde ihn morgen 
bestellen.
Ich erhoffe mir ein klein wenig leichtere Analyse.

Ebenfalls hab ich noch einen Arduino R3, ein CAN Bus shield von seeed 
und einen PCAN-USB von Peak hier aus einem anderen Projekt.

Mir ist allerdings aufgefallen, dass ich zu wenig Ahnung habe was immer 
auf diesen Shields und fertigen Platinen passiert.
Da ich beruflich auch viel mit CAN Bus und Elektronik zu tun habe möchte 
ich somit meine Kenntnisse vertiefen.
Ich möchte nun die benötigte Schaltung auf einem Steckbord aufbauen und 
am Ende die Tasten drücken und die Telegramme mit dem CAN-Peak auslesen.

Den "LIN Analyzer" hab ich bei Farnell gefunden und wollte auch gleich 
die benötigten Chips mitbestellen.
Doch da fangen jetzt meine ersten Probleme und Fragen an.

Wie "entwickelt" man eine solche Schaltung am besten?

Ich seh da für mich folgende Probleme:

- Welcher LIN und CAN transceiver
- Welcher Mikrocontroller
- Wie kann ich eine ordentliche Spannungsversorgung realisieren

Was mir bewusst ist, dass es Elektronik in einem Fahrzeug auf Grund der 
Spannungspitzen überhaupt nicht leicht hat (Abwerfen Lichtmaschine, 
Zünden der Scheinwerfer etc.)

Ich hab mir jetzt folgende Bauteile mal genauer angesehen: MCP2004A (LIN 
transceiver), MCP2515(CAN Controller), MCP2562 (CAN transceiver)
Vor allem stell ich mir die Frage, ob es besser ist auf einen Controller 
zu setzten, der die Hardware für CAN und LIN bereits an board hat oder 
lieber auf separate Bauteile.
Wo liegen dort jeweils die Vor- und Nachteile?

Mir ist klar, dass durch separate Bauteile der Controller entlastet 
wird. Gleichzeitig kann es Probleme mit der Übertragung bzw. Handling 
zwischen den Bauteilen geben.
Ich vermute aber, dass der Controller nicht unbedingt bei der Anwendung 
entlastet werden muss.
Wenn alles im Controller sitzt, gibt es ja meist fertige Libs die 
verwendet werden können.

Doch wie wählt man den richtigen Controller aus? Wie geht ihr da vor?
Ich habe bei Microchip.com den "part selector" angeworfen.
Allerdings komm ich da nach dem Filtern immer noch auf unzählige 
Controller...

Könnt ihr mir da vielleicht ein wenig unter die Arme greifen und Tipps 
geben was ich mir genauer an evtl. Schnittstellen, Bauteilen ansehen 
soll?
Leider gibt es so viel zu dem Thema, dass man vermutlich den Wald vor 
lauter Bäumen nicht mehr sieht.

Ich bin auch schon auf folgendes Board gestoßen "Teensy CAN-Bus and 
LIN-Bus Breakout Board withTeensy 3.2"
Doch da sind wir wieder bei einer fertigen Schaltung und ich versteh 
danach wieder nicht, warum es so ausgelegt wurde oder eventuell nicht 
ausgelegt werden sollte.

Viele Dank,
Grüße Stefan

von H.Joachim S. (crazyhorse)


Lesenswert?

Stefan E. schrieb:
> Ich seh da für mich folgende Probleme:
>
> - Welcher LIN und CAN transceiver
Mehr oder weniger egal. Zumindest alle LIN-Transceiver die ich bisher in 
den Händen hatte waren auch automotive-geeignet. Bei CAN sieht es ein 
bisschen anders aus, ist aber auch nicht schwer was passendes zu finden.
> - Welcher Mikrocontroller
Idealerweise einer mit internem CAN, Auswahl auch reichlich. Wenn du den 
MCP2515 als CAN-Controller benutzen möchtest: fast jeder beliebige MC 
mit UART (LIN) und  SPI (MCP2515). 8k Flash und 1kB RAM sollten völlig 
ausreichen. ATMega88 wäre völlig ausreichend. Tiny441 tuts auch (4k)
> - Wie kann ich eine ordentliche Spannungsversorgung realisieren
Die Frage kannst du mit nur wenig Suchfleiss selbst beantworten.

von Thomas (kosmos)


Lesenswert?

ATMEGA16M1/32M1/64M1 der hat sowohl LIN als auch CAN-Controller 
integriert.

von Thomas F. (igel)


Lesenswert?

Stefan E. schrieb:
> Ebenfalls hab ich noch einen Arduino R3, ein CAN Bus shield von seeed
> und einen PCAN-USB von Peak hier aus einem anderen Projekt.

Dann hast du ja schon alles Nötige zusammen.

> Ich möchte nun die benötigte Schaltung auf einem Steckbord aufbauen und
> am Ende die Tasten drücken und die Telegramme mit dem CAN-Peak auslesen.

> Wie "entwickelt" man eine solche Schaltung am besten?

Welche schaltung? Du musst doch nur den Arduino mit dem CAN-Shield 
verbinden. Das sind 6 Drähte.

> Ich seh da für mich folgende Probleme:

> - Welcher LIN und CAN transceiver
Der CAN-Transceiver ist doch schon auf dem CAN-Shield drauf.
Für LIN nimmst du irgendeinen, völlig egal.

> - Welcher Mikrocontroller

Völlig egal, das kann jeder.

> - Wie kann ich eine ordentliche Spannungsversorgung realisieren.

Beitrag "12V KFZ Versorgungs-Schaltung aus de.dse-faq"

von Thomas F. (igel)


Lesenswert?

Stefan E. schrieb:
> Bei den alten Tasten geht der LIN Bus auf das Steuergerät an der
> Lenksäule und gibt die CAN Telegramme auf dem Bus aus.

Nachtrag:

Handelt es sich bei dem CAN-Bus für die Tasten um einen Highspeed-Bus 
oder einen Fault-Tolerant Low-Speed?

Seite 18: 
https://cta.physik.uzh.ch/public/theses/files/2014-WidmerTimothy-Bachelor.pdf

Für Low-Speed braucht man einen anderen CAN-Transceiver.

von H.Joachim S. (crazyhorse)


Lesenswert?

500k ist nicht lowspeed.

von Thomas F. (igel)


Lesenswert?

H.Joachim S. schrieb:
> 500k ist nicht lowspeed.

Habe ich überlesen.

von Stefan E. (stefan_e20)


Lesenswert?

Hallo Jungs,

Erstmal vielen Dank für eure Antworten!

H.Joachim S. schrieb:
> Stefan E. schrieb:
>> Ich seh da für mich folgende Probleme:
>>
>> - Welcher LIN und CAN transceiver
> Mehr oder weniger egal. Zumindest alle LIN-Transceiver die ich bisher in
> den Händen hatte waren auch automotive-geeignet. Bei CAN sieht es ein
> bisschen anders aus, ist aber auch nicht schwer was passendes zu finden.
>> - Welcher Mikrocontroller
> Idealerweise einer mit internem CAN, Auswahl auch reichlich. Wenn du den
> MCP2515 als CAN-Controller benutzen möchtest: fast jeder beliebige MC
> mit UART (LIN) und  SPI (MCP2515). 8k Flash und 1kB RAM sollten völlig
> ausreichen. ATMega88 wäre völlig ausreichend. Tiny441 tuts auch (4k)
>> - Wie kann ich eine ordentliche Spannungsversorgung realisieren
> Die Frage kannst du mit nur wenig Suchfleiss selbst beantworten.

Thomas O. schrieb:
> ATMEGA16M1/32M1/64M1 der hat sowohl LIN als auch CAN-Controller
> integriert.

Auf Grund der Bauteile Flut auf dem Markt, ist für mich als Neuling 
nicht ganz klar nach welchen Spezifikationen gewisse Bauteile ausgewählt 
werden.

z.B. welchen Controller wähle ich aus und welche Vor- und Nachteile 
haben gewisse Punkte wie: LIN Controller onboard oder über Software 
lösen.

Ich bin auch zuvor schon auf den ATMEGA16M1 gestoßen.
Mich hat aber die QFN32 Bauform ein wenig abgeschreckt, da ich sowas 
noch nie gelötet hab und es auch keine Sockel und Adapter dafür gibt.
Nur diese Programmieradapter für 100€+ und das war mir eigentlich zu 
viel.

Da ich aber die Vorteile des Controllers mit den Schnittstellen 
Controller onboard sehe, hab ich mir jetzt 2 Stück in den Warenkorb 
gelegt.
War gar nicht einfach welche zu bekommen...
Zusätzlich hab ich noch ein Breakout besorgt und versuche mal meine 
Lötkünste.
Es gibt ja schon sehr Hilfreiche Beiträge im Forum.
Als Backup gibt's noch einen ATMega88, falls was schief läuft.
Einen 16 / 8 MHzQuarz, nen Schwung Kerkos (100nF/22nF) sind noch da.

Vom LIN Transceiver (MCP2004) hab ich mir das Datenblatt nochmal 
angesehen und die zusätzlichen Bauteile (Z-Dioden, Abblockkondensator 
und Widerstände) besorgt.

Für den CAN gibt es einen MCP2562 Transceiver mit VIO Pin.

Falls die ATMega16M1 nicht wollen, hab ich für den ATMega88 noch das CAN 
shield hier.

Ich hab mir mal den Beitrag zur Spannungsversorgung durchgelesen.
Das hat einen Nachmittag gedauert, um alles halbwegs zu verstehen.
Jetzt hab ich aber definitiv ein besseres Verständnis für die Prüfung.


Thomas F. schrieb:
>> Ich möchte nun die benötigte Schaltung auf einem Steckbord aufbauen und
>> am Ende die Tasten drücken und die Telegramme mit dem CAN-Peak auslesen.
>
>> Wie "entwickelt" man eine solche Schaltung am besten?
>
> Welche schaltung? Du musst doch nur den Arduino mit dem CAN-Shield
> verbinden. Das sind 6 Drähte.
>
>> Ich seh da für mich folgende Probleme:
>
>> - Welcher LIN und CAN transceiver
> Der CAN-Transceiver ist doch schon auf dem CAN-Shield drauf.
> Für LIN nimmst du irgendeinen, völlig egal.

Mir ging es vor allem bei dem Projekt darum, nicht einfach fertige 
Shields zu verwenden.
Ich wollte ein wenig verstehen, warum welche Bauteile mit auf die 
Platine müssen.
Leider sind einige Shields auch nicht sauber dokumentiert und man weiß 
nicht was da alles so mit drauf ist.
Die Vielzahl der Bauteile ist auch so riesig, dass ich nie verstehe wie 
man da das richtige Teil finden soll?
Vielleicht bin ich auch mit dem Thema zu wenig bewandert und es kommt 
durch die Erfahrung.
Die hohe Schlagzahl in diesem Forum ist auch unglaublich!
Das macht die Suche nach bestimmen Antworten auch nicht immer leichter, 
da vieles zwischen den Zeilen steht.

Viele Dank auf jeden Fall für eure Unterstützung!

Soll ich mal paar Bilder, Telegramminformationen der Tasten und 
Zwischenstände zum Projekt hier reinstellen oder ist das eher 
unübersichtlich für das Forum?

Viele Grüße Stefan

von H.Joachim S. (crazyhorse)


Lesenswert?

LIN-Unterstützung in Hardware habe ich noch nie gebraucht, der einzige 
Unterschied zur normalen UART ist die Break-Erzeugung (master) bzw. 
erkennung (slave). Kann man nutzen wenn da, den Controller danach 
aussuchen wenn anderes dagegenspricht (Bauform z.B.) nein.
Und dein geplantes System wird sich die ganze eh nur langweilen.

von Frank K. (fchk)


Lesenswert?

Ok, halten wir mal fest:
Du brauchst:
- handhabbares Gehäuse (SOIC oder DIP)
- CAN integriert (extern ist immer nur eine Notlösung und bedeutet mehr 
Aufwand)
- einen LIN-fähigen UART, der BREAK-Signale erzeugen und erkennen kann
- nicht viele IOs

Ich hab Dir da mal den hier rausgesucht:
DSPIC33EP256MC502
https://www.microchip.com/en-us/product/dsPIC33EP256MC502
Digikey hat den in SOIC und DIL vorrätig. Der erfüllt alles, ist mit 
3.75€ in Einzelstückzahlen nicht allzu teuer, mit 70MHz, 256k Flash und 
32k auf jeden Fall mehr als ausreichend, und Du kannst ihn problemlos 
verarbeiten und als DIL-Chip auf einem Steckbrett ausprobieren.

Alternativen:
DSPIC33EP256GP502 (hat etwas andere Peripherie, stört Dich aber nicht. 
Pinout ist kompatibel.)
DSPIC33EP128MC/GP502 (128k Flash und 16k RAM)
DSPIC33EP64MC/GP502 (64k Flash und 8k RAM)

IDE, Compiler und Softwarebibliotheken gibts bei Microchip, als Debugger 
reicht ein PICKT3-Clone vom Chinamann für maximal 20€.

LIN- und CAN-Transceiver brauchst Du als 3.3V Version - da hast Du dann 
die freie Auswahl. Diese Chips sind meist pinkompatibel und von 
verschiedenen Herstellern erhältlich, eigal ob TI, ON, Microchip, ST...

fchk

von Rudolph R. (rudolph)


Lesenswert?

Frank K. schrieb:
> LIN- und CAN-Transceiver brauchst Du als 3.3V Version

LIN Transceiver haben in der Regel nur einen VBat Anschluss und der 
RXD-Ausgang ist Open-Collector, sprich da gibt es keine 3,3V Version.
High-Pegel für die TXD und Enable Eingänge ist dann so 2V mindestens.
Und der VIO Pin an einem 3,3V tauglichen CAN-Transceiver ist jetzt auch 
nicht nur für 3,3V.

von Stefan E. (stefan_e20)


Lesenswert?

Frank K. schrieb:
> Ich hab Dir da mal den hier rausgesucht:
> DSPIC33EP256MC502

Vielen Dank für das raus suchen!
Die PICs hatte ich gar nicht auf dem Schirm...
Hab in der Vergangenheit nur einfache AVRs gemacht.

Wie hast du jetzt aber den Controller raus gesucht?
Das ist das, was ich bis jetzt noch nicht ganz verstanden habe...
Vermutlich über den "MICROCHIP ADVANCED PART SELECTOR" auf der 
Microchip.de oder?

Da muss für die Filterung ausgewählt werden:
LIN
CAN -> Number of CAN Moduls -> 1

Aber ich hab jetzt nicht die Möglichkeit den Gehäuse Typ (DIP) zu 
filtern oder bin ich blind?
Ich glaub, das sind die Kleinigkeiten die fehlen um sowas eigenständig 
hin zu bekommen.

Frank K. schrieb:
> IDE, Compiler und Softwarebibliotheken gibts bei Microchip, als Debugger
> reicht ein PICKT3-Clone vom Chinamann für maximal 20€.

Hab mir überlegt vielleicht gleich den PICKIT 4 zu besorgen, um ihn auch 
für die AVRs nutzen zu können.
Aktuell hab ich nur den "myAVR mySmartUSB MK2" zum Übertragen.

Frank K. schrieb:
> LIN- und CAN-Transceiver brauchst Du als 3.3V Version - da hast Du dann
> die freie Auswahl. Diese Chips sind meist pinkompatibel und von
> verschiedenen Herstellern erhältlich, egal ob TI, ON, Microchip, ST...

Rudolph R. schrieb:
> LIN Transceiver haben in der Regel nur einen VBat Anschluss und der
> RXD-Ausgang ist Open-Collector, sprich da gibt es keine 3,3V Version.
> High-Pegel für die TXD und Enable Eingänge ist dann so 2V mindestens.
> Und der VIO Pin an einem 3,3V tauglichen CAN-Transceiver ist jetzt auch
> nicht nur für 3,3V.

Richtig, der LIN Transciever MCP2004 wird über die Boardspannung 
versorgt.

Beim MCP2562 liegt VDD bei 5V und der VIO zwischen 1.8V und 5.5V und 
kann somit mit einen 3.3V Controller betrieben werden, oder?

Danke für eure Hilfe!
Grüße Stefan

von Frank K. (fchk)


Lesenswert?

Stefan E. schrieb:
> Frank K. schrieb:
>> Ich hab Dir da mal den hier rausgesucht:
>> DSPIC33EP256MC502
>
> Vielen Dank für das raus suchen!
> Die PICs hatte ich gar nicht auf dem Schirm...
> Hab in der Vergangenheit nur einfache AVRs gemacht.

Ja, ja, die meisten Leute verbinden "PIC" nur mit dem alten 8-Bit Zeug.

> Aber ich hab jetzt nicht die Möglichkeit den Gehäuse Typ (DIP) zu
> filtern oder bin ich blind?

Die kleinen Gehäuse mit bis zu 28 Pins sind bei den "echten" 
Microchip-Produkten (nicht dem zugekauften Zeugs) fast immer auch als 
DIL erhältlich. Das weiß man irgendwann.

Ich suche gerne bei Digikey. Dann weiß ich auch, ob ich das ausgewählte 
auch tatsächlich bekomme.

> Ich glaub, das sind die Kleinigkeiten die fehlen um sowas eigenständig
> hin zu bekommen.
>
> Frank K. schrieb:
>> IDE, Compiler und Softwarebibliotheken gibts bei Microchip, als Debugger
>> reicht ein PICKT3-Clone vom Chinamann für maximal 20€.
>
> Hab mir überlegt vielleicht gleich den PICKIT 4 zu besorgen, um ihn auch
> für die AVRs nutzen zu können.

Ist klug.

> Richtig, der LIN Transciever MCP2004 wird über die Boardspannung
> versorgt.

Ich hatte letztens einen LIN-Transceiver mit eingebautem LDO verbaut 
(NCV7428), da war natürlich die Ausgangsspannung wichtig. Dadurch wird 
ein kleiner LIN-Slave recht einfach.

> Beim MCP2562 liegt VDD bei 5V und der VIO zwischen 1.8V und 5.5V und
> kann somit mit einen 3.3V Controller betrieben werden, oder?

Ja. Das ist ein Dual-Supply Transceiver mit VCC (5V) und VIO (3.3V). Es 
gibt auch reine 3.3V-Transceiver, die nur einen 3.3V VCC haben und keine 
5V mehr brauchen, z.B.

https://www.ti.com/lit/ds/symlink/sn65hvd230.pdf

Das spart Dir die 5V-Versorgung, wenn Du ansonsten nirgendwo anders 5V 
brauchst. Wenn ich die 5V-Versorgung woanders noch brauche, sind mir die 
Dual-Supply Transceiver lieber.

fchk

von Daniel E. (Gast)


Lesenswert?

Stefan E. schrieb:
> Da es mir am Oszilloskop ein wenig zu umständlich ist, habe ich mir den
> "LIN Serial Analyzer" von Microchip raus gesucht

Schon ausprobiert? Kannst du den Microchip-Analyzer dafür empfehlen?

Ich überlege noch, ob ich mir den kaufe oder einen USBLINI aufbaue 
https://www.fischl.de/usblini/

von Wolfgang (Gast)


Lesenswert?

Rudolph R. schrieb:
> LIN Transceiver haben in der Regel nur einen VBat Anschluss und der
> RXD-Ausgang ist Open-Collector, sprich da gibt es keine 3,3V Version.

Außerhalb der Regel schon, z.B. der MCP2021 - aber die haben ja keine 
Ahnung.
https://ww1.microchip.com/downloads/en/DeviceDoc/20002018H.pdf

von Guest (Gast)


Lesenswert?

ich habe damals mit so nem Adapter angefangen. So schwer ist das nicht. 
Eine Linie Lötpaste einmal außen rum, möglichst weit an der Außenseite 
der Lötflächen, Chip drauflegen dann noch ne Linie Flussmittel über die 
Beinchen Dann jeweils 2 Ecken festgelötet also Chip festhalten und kurz 
mit dem Lötkolben an einen Eckpin und dann gegenüber auf einen anderer 
Eckpin. Danach mit dem Lötkolben einmal außen rum.

Ich würde auf externe Controller verzichten. Wenn das integriert ist 
schreibst du einfach in die Register, wenn nicht, muss das dann noch 
extra extern übertragen werden.

Es gibt High Speed Tranceiver (MCP2551 ggf. Nachfolger MSC2561) die auch 
Lowspeed können also bis hinter auf 16 kbit/s. Oder geht es dir darum 
das es noch mit nur einer CAN-Leitung läuft?

von Stefan E. (stefan_e20)


Lesenswert?

Daniel E. schrieb:
> Schon ausprobiert? Kannst du den Microchip-Analyzer dafür empfehlen?

Ja, hab schon alle Telegramme mitgeschnitten und ausgewertet die ich 
brauch.
Am Anfang hatte ich ein wenig Probleme mit der richtigen Baudrate 
(19,2kBits) und um die Signale sauber rein zu bekommen.
Mir zeigte es des öfteren Checksummen Fehler oder nicht vollständige 
Nachrichten an.
Das Schreiben dauerte auch ein wenig.
Hab es dann auf einem anderen Rechner versucht und da lief es sofort.

Leider musste ich auch die Version 2.0.0.4 verwenden, da bei mir keine 
CD Datei war und auf der Homepage der Link für die 3.0.0.0 ins leere 
geht...
Es kommt wirklich drauf an was du damit vor hast.
Ich arbeite beruflich öfters mal an CAN und muss da mitlesen und 
schreiben. Dort verwende ich was von Peak Systems und das ist schon was 
anderes, was die Analysesoftware angeht.
Mich stört auch ein wenig der Daten Export, es kann da keine CSV oder 
Text Datei erstellt werden, der die rein mitgeschnittenen Telegrammen 
speichert.

Beispiel:
"{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 
Microsoft Sans Serif;}}
{\colortbl ;\red0\green0\blue0;}
\viewkind4\uc1\pard\cf1\f0\fs17 00791,472   73  FE  0F  00  00  FF  FF 
00  FF      7E     enhanced  19231     \par
\pard\cf0\fs17\par
}"

Ich hab es dann als PDF gedruckt und wieder in Excel eingelesen.
Wenn es finanziell möglich ist und sowas öfters genutzt werden soll, 
würde ich mir einen kombinierten  CAN und LIN analyzer von Peak oder 
IXXAT ansehen.
Da war ich bis jetzt auch immer sehr mit der Software zufrieden.


Guest schrieb:
> Ich würde auf externe Controller verzichten. Wenn das integriert ist
> schreibst du einfach in die Register, wenn nicht, muss das dann noch
> extra extern übertragen werden.
>
> Es gibt High Speed Tranceiver (MCP2551 ggf. Nachfolger MSC2561) die auch
> Lowspeed können also bis hinter auf 16 kbit/s. Oder geht es dir darum
> das es noch mit nur einer CAN-Leitung läuft?

Vielleicht würde ich beim nächsten Projekt auch ein paar Teile anderst 
aussuchen. So lernt man mit jedem Projekt dazu.
Für mich ist es immer noch schwer sich durch den Bauteiledschungel zu 
kämpfen.
Da es später im KFZ Bereich eingesetzt wird, war für mich wichtig, dass 
die Bauteile generell schon einen recht hohen Schutz haben.
Wie meinst du mit nur noch einer CAN Leitung?

von Daniel E. (Gast)


Lesenswert?

Stefan E. schrieb:
> Ja, hab schon alle Telegramme mitgeschnitten und ausgewertet die ich
> brauch.

Danke für die Info und deinen Erfahrungsbericht zur Software. Das werde 
ich mir im Vorfeld dann nochmal genauer ansehen. Ist für Hobby, die 
teuren Adapter kommen daher nicht in Frage.

von Stefan E. (stefan_e20)


Angehängte Dateien:

Lesenswert?

Daniel E. schrieb:
> Danke für die Info und deinen Erfahrungsbericht zur Software. Das werde
> ich mir im Vorfeld dann nochmal genauer ansehen. Ist für Hobby, die
> teuren Adapter kommen daher nicht in Frage.

Hallo Daniel,

ich hab gestern eine Mail vom Microchip Support bekommen.
Sie haben die Software für den LIN Serial Analyzer wieder hochgeladen 
und die Software ist jetzt wieder bereit für den Download.

Ich hab eben mal kurz die Software installiert und das Logging getestet.
Es sieht viel besser aus als vorher.

Damit müsste man jetzt auf jeden Fall was anfangen können.
Zur richtigen Analyse benötigt man immer noch ein externes Tool.
Für das meiste müsste es aber Excel reichen.

von Rudolph R. (rudolph)


Lesenswert?

Also gerade für was langsames wie LIN kann man auch einen Logic-Analyzer 
verwenden, wenn es nur darum geht zu lauschen.
Dafür braucht es dann auch keinen teuren Adapter, 10 Euro für einen 
einfachen Clone und Sigrok/Pulseview.
Damit bekommt man dann auch heraus, warum die Frames kaputt sind und 
nicht nur, dass sie kaputt sind, etwa wenn das Break zu kurz ist.

von Stefan E. (stefan_e20)


Lesenswert?

Hallo Rudolph,

da hast du recht.
Wenn man wirklich sehen möchte was auf dem Bus los ist, braucht man 
einen Logik-Analyzer oder ähnliches.
Es ist aber beim LIN auch komfortabel, wenn man gleich einen 
automatischen Response einleiten kann.
Ebenfalls zum einfachen auslesen der Telegramme, ist meiner Meinung 
nach, ein reiner LIN Analyzer einfacher und übersichtlicher.
Jedes Tool hat seine Berechtigung und es muss im Vorfeld betrachten was 
gebraucht wird.

von Stefan E. (stefan_e20)


Angehängte Dateien:

Lesenswert?

Das Programm für den Controller hab ich vor einigen Tagen mit Erfolg 
fertig bekommen und gleich mal mit allen Teilen auf dem Breadbord 
getestet.
Durch eure Hilfe hab ich das echt zum Laufen bekommen.
Vielen Dank an euch!

Als ich das ganze aber auf dem Steckbrett so gesehen habe, stellte ich 
fest, dass es vermutlich nicht leicht und hübsch wird, alle Teile auf 
eine Lochrasterplatine zu packen...

Nach 15 Minuten Youtube über PCBs stellte ich fest, dass es vermutlich 
doch nicht all zu schwer ist Platinen professionell fertigen zu lassen.

Ich war all die Jahre eine Raketenwissenschaft und ich war der Meinung 
sowas würde zig Euro oder Unmengen an Stückzahl bedeuten!

Da ich eine Fusion360 Abo Version hab musste ich nicht mal groß was 
installieren und hab sofort damit angefangen.
Am Anfang war es sehr holprig, aber nach ein paar Tutorials von Autodesk 
ging es dann ganz gut.

Ich hab euch mal ein paar Bilder vom Layout und der Platine angehangen.

Da ihr ja schon wisst, dass ich auf dem Gebiet völliger Anfänger bin, 
hätte ich die Bitte vielleicht mal kurz auf die Bilder zu sehen, ob ihr 
typische Anfängerfehler findet?
Oder ihr könnt mir Tipps geben vorauf ich besonders achten soll, da es 
meistens beim ersten mal meistens falsch gemacht wird?

Ich hab die Leiterbahnbreite für das
12V Netz auf 59 mil
5V Netz auf 25 mil
3.3V Netz auf 10 mil,
alle weiteren Verbindungen auf 6 mil gemacht.

Auf dem 12V Netz dürften normal maximal 2,5A, 5,5V Netz 1,0A und 3.3V 
Netz 0,3A unterwegs sein.
Da hab ich auch den Artikel von euch über Leiterbahnbreite herangezogen.

Das ganze möchte ich beim Aisler machen lassen oder würdet ihr mir davon 
abraten?

Ich vermute es ist für euch jetzt schwierig eine Aussage über die 
Platine zu treffen, da ihr nicht mal das Schaltbild dazu habt.
Ich möchte aber jetzt auch nicht, dass ihr mir nochmal alles im Detail 
überprüft.
Mir geht es um Grundliegende oder typische Anfängerfehler.

Viele Grüße Stefan

von Andre (Gast)


Lesenswert?

Stefan E. schrieb:
> Nach 15 Minuten Youtube

Naja gut, immerhin ehrlich 😄

Das Board stammt vom Autorouter?
Mach es lieber manuell. Die Spule gehört zu einem Schaltregler? Da gibt 
es hier eine beliebte Methode mit Stromschleifen das Layout zu 
optimieren. Der Quarz sollte auch anders angebunden werden.

von Stefan E. (stefan_e20)


Lesenswert?

Andre schrieb:
> Naja gut, immerhin ehrlich 😄

Ich bin immer ehrlich 😉😄

Ich hab mir natürlich schon ein wenig mehr dazu angesehen, aber bei den 
meisten Videos von Autodesk geht es eigentlich nur um das Handling mit 
den Bibliotheken oder den Funktionen innerhalb von Fusion.

Ein detaillierteres Video zur Erstellung von PCBs hab ich leider nicht 
gefunden.
Du merkst vermutlich schon, dass mir Wissen und einige tiefere 
Hintergründe zur Erstellung von Leiterbahnen fehlen.
Vermutlich bin ich aber auch wieder zu blöd die Suchfunktion richtig zu 
verwenden...

Der Quarz muss näher an den IC oder?

Zur Spule:
Ziemlich am Anfang wurde hier der Link für eine Spannungsversorgung im 
12V KFZ-Netz gepostet.
Beitrag "12V KFZ Versorgungs-Schaltung aus de.dse-faq"

Diese wurde mal EMV getestet und die hab ich so 1:1 übernommen.


Andre schrieb:
> Da gibt es hier eine beliebte Methode mit Stromschleifen das Layout zu
> optimieren.

Kannst du das vielleicht ein wenig ausführlicher erklären oder mir nen 
Tipp geben wo ich darüber mehr nachlesen kann?

Ja, das kommt zum größten Teil aus dem Autorouter.

Wo liegt der Vorteil beim manuellen routen bzw. was mach der Autorouter 
falsch?

Ich hab es zweimal mal versucht komplett von Hand zu routen.
Am Schluss kam ich mit den Pads nicht mehr zusammen und ich musste 
einiges wieder auf trennen und umlegen oder n haufen Vias setzen.
Ist vermutlich aber auch nur Übungssache oder?

Ich glaub auch inzwischen, dass die Platine vielleicht eine Nummer zu 
groß für den Anfang ist 😅

von Thomas (kosmos)


Angehängte Dateien:

Lesenswert?

> Andre schrieb:
>> Da gibt es hier eine beliebte Methode mit Stromschleifen das Layout zu
>> optimieren.
>
> Kannst du das vielleicht ein wenig ausführlicher erklären oder mir nen
> Tipp geben wo ich darüber mehr nachlesen kann?

Hier mal ganz banal aufgezeichnet. Im oberen Beispiel hast du einen 
riesige Schleife die über das ganze Bord geht. Im unteren Beispiel ist 
diese schon viel kleiner, das ließe sich dann noch so optimieren wenn 
VCC und GND genau übereinander liegen würden, also VCC auf der oberen 
Platinenseite und GND auf der unteren Platinenseite. Umso kleiner die 
Schleifen ausfallen desto schlechter Strahlen sie ab und dann ist noch 
entscheiden wie steil die Flanken auf dieser Leitung ausfallen, wenn man 
möglichst nah am Baustein abblockt dann hat man diese Schwankungen nicht 
auf dem ganzen Stück der Leitung sondern nur auf einem relativ kurzen 
Stück.

So als Buchthema könntest du dir soetwas anschauen.
EMV Design Richtlinie
EMV gerechtes Gerätedesign
PCB Layout
.....

https://www.mikrocontroller.net/attachment/241743/doc2521.pdf
Schau dir mal die Bilder 2-1 und 2-2 an, da siehst du einmal die große 
Stromschleife und einmal die kleine mittels Abblockung, möglichst nah am 
µC.

: Bearbeitet durch User
von Stefan E. (stefan_e20)


Angehängte Dateien:

Lesenswert?

Die Leiterbahnen für den Quarz hab ich ja voll übersehen...
Langsam versteh ich, warum der Autorouter sparsam verwendet werden soll.

Hab es jetzt gestern nochmal manuell versucht, aber ich muss mir das 
nächste mal noch mehr Gedanken bei der Platzierung der Bauteilen 
Gedanken machen.
Vor allem bei der Spannungsversorgung.

Ich hab gestern noch ein Springer Fachbuch gefunden.
Dort war ein kleiner Teil über PCB Layout und EMV drin.
Ich werd mir aber mal ein eigenes Fachbuch besorgen.

Bis auf die langen Spannungsleitungen ist es glaub schon ein Stück 
besser oder?

von Rudolph R. (rudolph)


Lesenswert?

Gibt es auch einen Schaltplan dazu?
Ich kann in den Bildern gerade weder LIN noch CAN entdecken.

von Wolfgang (Gast)


Lesenswert?

Stefan E. schrieb:
> Da ihr ja schon wisst, dass ich auf dem Gebiet völliger Anfänger bin,
> hätte ich die Bitte vielleicht mal kurz auf die Bilder zu sehen, ob ihr
> typische Anfängerfehler findet?

Ein Layout zu beurteilen, ohne den Schaltplan und die verwendeten 
Bauteile zu kennen, ist müßig. Und Anhand von PNG-Files macht das 
sowieso keinen Spaß. Es gibt hier genug Leute, die mit den Eagle-Dateien 
umgehen können.

Warum mischt du THT und SMT an Stellen, wo es wirklich nicht nötig ist?
Die Positionen der Befestigungsbohrungen dürften kaum zu einem 
handelsüblichen Gehäuse passen. Muss das PCB so groß sein?
Für den Bereich um den Quarz gibt es Musterlayouts vom µC-Hersteller. 
Normalerweise gibt der vor, dass die Masse für die Lastkondensatoren 
direkt bei den Oszillator-Pins abgenommen werden soll.
Du hast eine ganze Menge "Fernleitungen" auf dem PCB - muss das sein?

von Stefan E. (stefan_e20)



Lesenswert?

Da hab ich wieder mal den Schaltplan nicht mitgeschickt...
Tut mir leid Wolfgang, hier der Schaltplan als Screenshots (Sorry 
nochmal, schon wieder Bilder) und die Fusion Datei.

Zu der Mischung kommt es aus folgendem Grund.
Ich hab noch ein paar Bauteile mehrfach da, die ich verbauen wollte 
(MCP2562/MCP2004A/dsPIC33) und zum anderen war der Mikrocontroller die 
letzten Wochen nicht in anderer Bauform verfügbar.
Ebenfalls ist der MCP2562 immer noch schwer in einem SMD Gehäuse zu 
bekommen.

Die Größe des PCB war mir nicht so wichtig, da ich "Platz" hab.
Ich hatte an bedeutend anderen Baustellen zu kämpfen, wie ihr ja 
mitbekommt und wollte mir da nicht noch mehr Probleme bereiten.

Die Befestigungspunkte sind ebenfalls am Ende entstanden.
Ich drucke mir ein Gehäuse im 3D Drucker, da ich gleichzeitig die 
entsprechenden Haltepunkte für die Befestigung im Fahrzeug anbringe.
Ist am Ende vermutlich paar Euro teurer, aber es passt perfekt an die 
dafür vorgesehene Stelle.

Ich hab gleich noch einen zweiten LIN Transceiver eingebaut inkl. 
Versorgung, dass ich das Board als LIN/LIN Gateway auch nutzen könnte.
Die zwei LEDs sind zum Debuggen.
Ebenfalls der Eingang (JP5) über die zwei Stiftleisten soll später eine 
Debug Funktion aktivieren.


Auf der linken Seite des Bords ist der CAN Transceiver inkl. 
Abschlusswiderstand, Pogrammier-Schnittstelle, Reset, 2x LEDs und 1 
Eingang über Jumper.
Auf der rechten Seite befindet sich die 2 LIN Transceiver inkl. 
Spannungsversorgung (Falls die als Master agieren sollen)

Danke nochmals für eure Hilfe!

von Thomas (kosmos)


Lesenswert?

die TVS Diode würde ich eins nach rechts schieben, dann kannst du die 
Drossel als Begrenzungswiderstand verwenden, so das die Spannung auch 
zusammenbricht. Vorrausgesetzt die Drossel hat nen Widerstand der nicht 
zu niedrig ist.

In deinem Fall würde bei einer längeren Überspannung die TVS Diode 
irgendwann durchbrennen und dann kommt die Überspannung auf deine 
Spannungsregler.

von Rudolph R. (rudolph)


Lesenswert?

Die beiden TVS Dioden im LIN Teil sind eher sinnlos, den Job vor 
Transienten zu schützen hat doch schon TVS1.

Die Master-Jumper für den LIN bringen für sich noch nichts, die 
Kondensatoren müssen von 220pF (eigentlich 180pF) auf 1nF geändert 
werden.
1N4148 gibt es auch als SMD in 0805 und 1206.

D3 und D5 würde ich auch weg lassen, die fackeln so eh nur ab wenn die 
Spannung auf dem LIN zu hoch wird.

von Stefan E. (stefan_e20)


Angehängte Dateien:

Lesenswert?

Da hast du Recht, die TVS kann ich weg lassen.
Hab ich nicht mehr überprüft, als ich das Beispiel vom Datenblatt des 
MCP2004 angesehen und übernommen hab.

Die Kapazität wird doch nicht beim umschalten zwischen Master und Slave 
nicht geändert oder?

Bei der Diode das gleiche Thema wie bei den anderen Bauelemente, ich 
hätte noch welche da, aber ich glaub ich sollte einfach überall SMD 
verwenden.

von Rudolph R. (rudolph)


Lesenswert?

Stefan E. schrieb:
> Die Kapazität wird doch nicht beim umschalten zwischen Master und Slave
> nicht geändert oder?

Doch, Master hat 1nF, Slave hat 180pF.

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Stefan E. schrieb:
> Tut mir leid Wolfgang, hier der Schaltplan als Screenshots (Sorry
> nochmal, schon wieder Bilder) und die Fusion Datei.

Ich meinte jetzt keinen Fusion Moloch, sondern Eagle Schaltplan und 
Board

von Stefan E. (stefan_e20)


Angehängte Dateien:

Lesenswert?

Rudolph R. schrieb:
> Doch, Master hat 1nF, Slave hat 180pF.

Ich bin mal kurz über die Spezifikation des LIN Bus geflogen und hab 
eine Interessante Tabelle gefunden (LIN_Spez_Kapazität.png).

In der Tabelle steht, dass Master/Slave typischerweise 220pF haben.
Die gesamte Kapazität des BUS muss aber 1nF betragen.
Bei 1x Master und 4x Slave wären die "typisch" verwendeten Kondensatoren 
ausreichend.
Werden weniger Slaves verwendet, müsste die Kapazität am Master höher 
sein.

Kann mir mal jemand erklären warum es so verwirrend spezifiziert wird?
Am einfachsten wäre doch gleich eine größere Kapazität an dem Master 
festzulegen oder liege ich da falsch?

Bei den ganzen Schaltungen die ich bis jetzt im Internet gefunden hab, 
wird auch immer der 220pF Kondensator verwendet, egal ob Slave oder 
Master...
Wie hier zum Beispiel bei Microchip und deren LIN Serial Analyzer.

Ist es wirklich nochmal, dass sich hier keiner an die Spez hält??

von Stefan E. (stefan_e20)


Angehängte Dateien:

Lesenswert?

Wolfgang schrieb:
> Ich meinte jetzt keinen Fusion Moloch, sondern Eagle Schaltplan und
> Board

Echt mühsam mit den ganzen Anfängern oder?

Es tut mir leid...

von Asdf Q. (Gast)


Lesenswert?

Stefan E. schrieb:

> Auf der rechten Seite befindet sich die 2 LIN Transceiver inkl.
> Spannungsversorgung (Falls die als Master agieren sollen)

Schmeiss die Spule am Eingang raus. Du hast keine Störquellen auf der 
Platte, die einen LC-Pi-Filter am Eingang erfordern, und bei extern 
eingekoppelten Störungen macht Dir das Ding mit seinen Eigenresonanzen 
eher Ärger.

Die TVS am Eingang brauchst Du nicht bestücken, da der TLE42754 
Automotive-konform ist und 45 V Eingangsspannung verträgt. Loaddump geht 
heute nur noch bis 32 V und die ISO-Pulse drückt Dein Elko platt.

Wenn Du Automotive-Bauteile für die CAN- und LIN-Transceiver verwendest 
(NXP oder Infineon), dann brauchst Du dort üblicherweise keine 
ESD-Bauteile. Die TVS würde ich vorsehen aber nicht bestücken.

von Rudolph (Gast)


Lesenswert?

Stefan E. schrieb:
> Bei den ganzen Schaltungen die ich bis jetzt im Internet gefunden hab,
> wird auch immer der 220pF Kondensator verwendet, egal ob Slave oder
> Master...

Ich habe mir gerade mal die LIN Spezifikation 1.3, 2.0 und 2.2A dazu 
angesehen und Du hast Recht, da steht überall 220pF für Master und Slave 
drin, dann wird man das auch so machen können.

Die Ursache für die Verwirrung liegt in dem Lastenheft eines großen 
Automobil Konzerns das mir vorliegt und welches für den Master einen 
anderen Bereich fordert mit einem Default-Wert von 1nF.
Warum auch immer.

Schön dass ich über das Thema gestolpert bin, dann werde ich diese 
Anforderung in dem USB/LIN Interface an dem ich gerade schnitze mal 
geflissentlich ignorieren. :-)

von Wolfgang (Gast)


Lesenswert?

Stefan E. schrieb:
> Ich bin mal kurz über die Spezifikation des LIN Bus geflogen und hab
> eine Interessante Tabelle gefunden (LIN_Spez_Kapazität.png).
>
> In der Tabelle steht, dass Master/Slave typischerweise 220pF haben.
> Die gesamte Kapazität des BUS muss aber 1nF betragen.

Es ist immer gefährlich, in irgendwelche aus dem Zusammenhang gerissenen 
Daten etwas wild hinein zu interpretieren.

Wenn man den ganzen Abschnitt 6.5.5 liest, ergibt sich eine ganz andere 
Bedeutung. Es geht um die Abschätzung der Buskapazität unter Annahme 
typischer Werte für die in der Tabelle 6.11 zusammengefassten Parameter.
Die Tabelle sagt, dass sich aus der Rechnung Gl.13 ein C_Bus von 1nF bis 
10nF ergibt. In der Gleichung steht nämlich neben den Kapazitäten von 
Master und den Slaves auch die spezifische Kabelkapazität multipliziert 
mit der Kabellänge drin.
https://www.cs-group.de/wp-content/uploads/2016/11/LIN_Specification_Package_2.2A.pdf

p.s.
Und wenn du schon eine Tabelle irgendwoher kopierst, könntest du 
wenigstens eine vernünftige Quellenangabe in Form eines eindeutigen 
Links machen.

von Wolfgang (Gast)


Lesenswert?

Rudolph schrieb:
> Die Ursache für die Verwirrung liegt in dem Lastenheft eines großen
> Automobil Konzerns das mir vorliegt und welches für den Master einen
> anderen Bereich fordert mit einem Default-Wert von 1nF.
> Warum auch immer.

In dem Lastenheft des "großen Automobil Konzerns" wird IMHO auch 
gefordert, dass die Kommunikation mit 10nF Bus-Last getestet werden 
muss.

von Rudolph R. (rudolph)


Lesenswert?

Wolfgang schrieb:
> In dem Lastenheft des "großen Automobil Konzerns" wird IMHO auch
> gefordert, dass die Kommunikation mit 10nF Bus-Last getestet werden
> muss.

Nicht in dem was ich habe, die Unterlagen zum Test sind ein eigenes 
Dokument.
Aber in dem was ich habe steht zum Beispiel noch, dass das LIN Interface 
so nah wie möglich an den Stecker zu bringen ist, was für CAN auch gilt.
Also die allgemeine Aufteilung der Platine hier ist noch nicht so 
optimal, wie auch auch bereits angemerkt wurde.

von Stefan E. (stefan_e20)


Lesenswert?

Wolfgang schrieb:
> p.s.
> Und wenn du schon eine Tabelle irgendwoher kopierst, könntest du
> wenigstens eine vernünftige Quellenangabe in Form eines eindeutigen
> Links machen.

Da hast du Recht.
War nicht schlau von mir einen Screenshot der Tabelle, ohne den 
Dokumentenkopf oder anderweitigen Anhaltspunkt zu veröffentlichen.

Danke, dass du den Link online gestellt hast!


Jetzt aber nochmal kurz zu dem Kapitel 6.5.5 in der LIN Spezifikation 
2.2A

Dort wird doch beschrieben wie die "RC Zeitkonstante" berechnet werden 
kann.
Diese wird benötigt um sicherzugehen, dass eine Flanke des Bus Signal 
innerhalb der spezifizierten Zeit liegt.
Es ist eine Beispielrechnung aufgeführt wie "C-BUS" und "R-BUS" 
berechnet wird, um daraus die "RC Zeitkonstante" zu berechnen.

Im Text steht jetzt auch noch, dass die Kapazität des Masters höher 
gewählt werden kann, um einen gewissen Puffer sicherzustellen, da 
eventuell unklar ist wie viele Slaves am BUS angeschlossen sind.
>"The capacitance of the master module can be chosen higher than in the slave 
modules, in order
>to provide a ’buffer’ in case of network variants with various number of nodes."

Die Tabelle 6.11 die ich zuvor angehängt hatte, zeigt doch einige 
spezifizierte Werte, wie zum Beispiel: die Min/Max Kapazität am BUS 
(C-BUS)
An keiner anderen Stelle der Spezifikation hab ich andere Angaben 
gesehen.

In dem Fall würde ich dem Lastenheft das dem Rudolph vorliegt recht 
geben.
Wenn nicht klar ist was dahinter hängt, lieber dem Master einen 1nF 
Kondensator spendieren.

Jetzt aber zu dem eigentlichen Punkt.
Warum werden dann in den ganzen Analyzer (z.B. Microchip) nur 220pF 
verwendet?
Das wäre ja dann eigentlich falsch oder?
Wenn nur 1 Slave angeschlossen wird, wäre es außerhalb der 
Spezifikation.

Sorry, vielleicht steh ich auf dem Schlauch, ich möchte es aber Wissen.
Nicht, dass ich noch mehr Halbwissen verbreite.

von Stefan E. (stefan_e20)


Angehängte Dateien:

Lesenswert?

Ich hab den Sonntag mal her genommen, um die ganzen Anmerkungen von euch 
umzusetzen.

Die Spule am Eingang ist weg.
Alle Bauteile in SMD, außer der MCP2004 (nicht verfügbar und noch in DIP 
hier)
Neues Layout mit Stecker näher am LIN und CAN.
Ein paar Bauteile wurden auf die Rückseite verlegt.

Ich hab alle Footprints für die TVS und ESD Bauteile drauf gelassen.
Da das Board vermutlich meist mit nur 2 Schnittstellen (LIN-CAN / 
LIN-LIN) verwendet wird können dann die Bauteile wie benötigt bestückt 
werden.

Ich werd morgen noch den 1nF Kondensator für die LIN Master Funktion mit 
einsetzen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.