Forum: Mikrocontroller und Digitale Elektronik ATMEGA328P - CAN


von Oliver (Gast)


Angehängte Dateien:

Lesenswert?

Hallo ihr Lieben,
ich habe vor für mich Zuhause einen CAN-Bus zu realisieren.
Dazu habe ich mir folgendes überlegt:
Ein Raspberry mit JAVAFX + USBtin von Thomas 
Fischl(http://www.fischl.de/usbtin/) soll die zentrale Steuereinheit 
werden und die verschiedenen Knoten im CAN-Netzwerk steuern.

Die einzelnen Knoten für das Netzwerk wollte ich mir jetzt selber ätzen 
und setzte dafür gerade den Schaltplan auf.
Da ich noch Student bin und noch relativ grün hinter den Ohren bin, 
wollte ich gerne von euch Profis wissen, ob der Schaltplan so korrekt 
ist und ob ihr Verbesserungsvorschläge oder Tipps für mich habt.
Zudem bin ich mir bei dem Quartz von 12Mhz unsicher, da der USBtin einen 
24Mhz Quartz verwendet.
Für die Kommunikation reichen mir 125kBit mit dem MCP2515 vollkommen.
Anbei der Schaltplan.

Schönen Gruß aus Köln!

von Frank K. (fchk)


Lesenswert?

So würde ich die Sache lösen:

Beitrag "Re: Probleme mit MCP25625"

von Rudolph (Gast)


Angehängte Dateien:

Lesenswert?

Also für einen kleinen CAN-Knoten würde ich den ATMega16M1 empfehlen.
Das Bild hatte ich hier schonmal gepostet in etwas schlechterer 
Auflösung, zusammen mit Beispiel-Test-Code für den CAN.

Das hat den Vorteil, dass man direkt am CAN dran ist und nicht noch 
zusätzlich über den SPI gehen muss.

Okay, das Teil ist SMD aber die AVRs sind da ja allesamt noch recht 
harmlos mit ihren Pin-Abständen von 0,8 mm,

Der Quarz ist ein "16.000000-MT" von Reichelt, für den passen dann auch 
zufällig mal die 22pF Kondensatoren die man fälschlicherweise "überall" 
verbaut findet.

von Thomas F. (igel)


Angehängte Dateien:

Lesenswert?

Der Reset-Pin des MCP2515 muss beschaltet werden. Ich schliesse diesen 
immer mit dem Reset des Atmega zusammen und dann einen 10K Widerstand 
nach VCC (hast du schon) und einen 100nF nach GND (fehlt noch).

Pin 4,5, und 6 des MCP2515 kannst du unbeschaltet lassen.  RS am 
Tranceiver mit einem Widerstand nach GND. Meist nehme ich hier irgendwas 
unter 1k.

Die Quarzfrequenz des MCP2515 ist unabhängig von anderen CAN-Knoten, 
hier musst du dich nicht an diesen orientieren. 12 MHz für 125kBit 
funktioniert, 1MBit nicht mehr.

von Oliver (Gast)


Lesenswert?

Rudolph schrieb:
> Also für einen kleinen CAN-Knoten würde ich den ATMega16M1
> empfehlen.
> Das Bild hatte ich hier schonmal gepostet in etwas schlechterer
> Auflösung, zusammen mit Beispiel-Test-Code für den CAN.
>

Ein wunderbarer Vorschlag. Zuvor hatte ich die AT90CAN*-Serie im Auge, 
war mir aber mit einem Stückpreis von fast 9€ einfach zu teuer und 
überdimensioniert.
Die Spezifikation des ATMega16M1 passt für mich wie die Faust aufs Auge.
Ich frage mich nur welche Bibliothek du in Eagle für den ATMega16M1 
nutzt?

> Okay, das Teil ist SMD aber die AVRs sind da ja allesamt noch recht
> harmlos mit ihren Pin-Abständen von 0,8 mm,
>

SMD sollte ich hinbekommen mit dem Pinabstand.
Dann dazu noch ne kurze Frage zum SMD:
Hintergrund:
Ich möchte mir meine Platine gerne selber ätzen und das Layout mit Eagle 
erstellen.
Wenn ich jetzt ein SMD Bauteil auf dem Top-Layer habe und für einige 
Pins gerne einen Pinheader haben möchte, muss ich die Leitungen doch mit 
einem Via auf den Bottom-Layer führen, um die Pinne dann von unten zu 
verlöten, richtig?
Das heißt ich muss die Platine auf beiden Seiten ätzen. Ginbt es 
zufällig einen Trick um es nur beim Top-Layer zu belassen?
Sowas wie SMD Pinouts?

von ogol (Gast)


Lesenswert?

Hallo Rudolph,

kannst Du mal das eagle-lib bitte posten?

von Oliver (Gast)


Lesenswert?


von ogol (Gast)


Lesenswert?


von Oliver (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Rudolph,

ich habe jetzt den Schaltplan an deinen angepasst.
Es handelt sich ausschließlich um SMD-Bauteile.
Ein kritischer und Prüfender Blick wäre für mich, bevor ich das Layout 
erstelle wirklich hilfreich.
Ich brauche noch eine Diode an der SPannungsversorgung in SMD Bauform. 
Irgendwelche vorschläge? (Reichelt)
Kenne mich mit den Diodenwerten noch nicht wirklich aus.

LG Oliver

von Oliver (Gast)


Angehängte Dateien:

Lesenswert?

Habe den falschen Anhang hochgeladen. RS vom MCP2551 auf GND mit 1k 
Widerstand.

von Sven K. (svenk)


Lesenswert?

Hallo Oliver,

C6 ist falsch angeschlossen,
der darf nicht an Gnd vom Ic.
Das IC muss direkt an Gnd und der C6 an
Vcc in Nähe vom Ic.

Lg Sven

: Bearbeitet durch User
von Oliver (Gast)


Lesenswert?

Hallo Leute,
ich habe mich jetzt entschieden das Board bei jackaltac herstellen zu 
lassen.
Da die Sache doch ein bisschen mehr Geld kostet als erwartet, dafür aber 
um einiges professioneller ist, habe ich noch einige Fragen zur 
Bestückung.
Ist es sinnvoll einen Reset-IC einzusetzen ? Welche Vorteile bringt er 
mir?
Und sollte ich den CAN-Tranceiver galvanisch vom AVR trennen?
Was kann passieren, wenn ich es nicht mache?

Und noch eine kurze Frage zum Eagle-Autorouting: Ich glaube ich kann 
kaum was falsch machen, wenn ich die Komponenten an die richtige Stelle 
ziehe und alles vom Autorouter erledigen lasse? Oder sollte man lieber 
auf ihn verzichten und per Hand routen?

LG Oliver

von H.Joachim S. (crazyhorse)


Lesenswert?

Oliver schrieb:
> Ist es sinnvoll einen Reset-IC einzusetzen ? Welche Vorteile bringt er
> mir?
Atmel hat es gelernt, ordentliche reset-Schaltungen einzubauen - ich 
nehme seit Jahren keine extra-ICs mehr dafür.

> Und sollte ich den CAN-Tranceiver galvanisch vom AVR trennen?
> Was kann passieren, wenn ich es nicht mache?
Kommt drauf an, wofür du es einsetzen willst. Schaden kanns nicht, 
ausser eben mehr Aufwand und Kosten.
Nutzen: Zuhause eher keiner. Interessant wirds in industriellen Anlagen.

> Und noch eine kurze Frage zum Eagle-Autorouting: Ich glaube ich kann
> kaum was falsch machen, wenn ich die Komponenten an die richtige Stelle
> ziehe und alles vom Autorouter erledigen lasse?
Doch, fast alles (es sei denn, der ist in den letzten Jahren erwachsen 
geworden).
Oder sollte man lieber
> auf ihn verzichten und per Hand routen?
Zumindest die Stromversorgung (Vcc und Gnd) selbst machen, dann kannst 
du dem Autorouter das Spiel überlassen. Muss aber i.a. trotzdem 
nachgearbeitet werden, kann man also gleich lassen.

von Thomas F. (igel)


Angehängte Dateien:

Lesenswert?

Oliver schrieb:
> Und sollte ich den CAN-Tranceiver galvanisch vom AVR trennen?

Kommt auf deinen Anwendungsfall an. Aber wenn du schon eine Platine 
machen lässt und sicher gehen willst, dann halte die Lötpads für 
zusätzlichen ESD-Schutz vor, siehe Bild. Bestücken musst du ja erst mal 
nicht.


> Und noch eine kurze Frage zum Eagle-Autorouting: Ich glaube ich kann
> kaum was falsch machen, wenn ich die Komponenten an die richtige Stelle
> ziehe und alles vom Autorouter erledigen lasse?

Vergiss den Autorouter erst mal. Wenn du die par Bauteile sowieso schon 
"richtig" platziert hast ist das Routing von Hand da um Welten besser.

von Oliver (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
vielen Dank für eure tatkräftige Unterstützung bis jetzt!
Anbei die aktuelle Schaltung. Hinzugekommen ist die galvanische Trennung 
und ein paar LED's.
Soweit jemanden noch ein Fehler auffallen sollte oder 
Verbesserungsvorschläge hat - immer raus damit!
Hoffe die Schaltung ist bis hierhin soweit korrekt und dass ich eure 
Vorschläge richtig umgesetzt habe.

LG Oliver

von H.Joachim S. (crazyhorse)


Lesenswert?

CAN-Transceiver: R4 hängt am falschen Gnd
Und Pin3 (Vcc) solltest du auch noch mal nacharbeiten :-)

von Oliver (Gast)


Lesenswert?

Hallo Herr Seifert,
ich habe R4 abgeändert. Jedoch verstehe ich nicht so ganz was mit dem 
Pin3(VCC) nicht stimmt. Könntest du mir vielleicht auf die Sprünge 
helfen?

LG Oliver

von H.Joachim S. (crazyhorse)


Lesenswert?

Naja, der sollte schon direkt an Vcc angeschlossen werden, nicht über 
einen Kondensator :-)

von Oliver (Gast)


Angehängte Dateien:

Lesenswert?

Die Änderungen... Danke nochmals!

LG Oliver

von H.Joachim S. (crazyhorse)


Lesenswert?

Und die Rx/Tx-Dioden würde ich andersherum platzieren (L-aktive 
Signale), wenn sie denn überhaupt Sinn machen.
Lieber eine, die vom MC gesteuert wird, manchmal ganz nützlich :-)

Serielle Schnittstelle würde ich auch getrennt herausführen, zumindest 
eine 3polig Stiftleiste, MAX232 ö.ä. muss es ja nicht unbedingt sein.

Und ganz dringend solltest eine 5V-TVS-Diode parallel zur Netzbuchse 
machen.

von Peter D. (peda)


Lesenswert?

Oliver schrieb:
> Ich glaube ich kann
> kaum was falsch machen, wenn ich die Komponenten an die richtige Stelle
> ziehe und alles vom Autorouter erledigen lasse?

Wenn Du wirre undurchdringliche Muster magst, wie eine Spinne auf LSD.
Autorouterlayouts sind auch elektrisch deutlich schlechter oder 
funktionieren garnicht erst.
Ein Autorouter hat erst dann eine Chance, wenn Du ihm mit vielen Rules 
Vorgaben machst.

Das Placen und Routen ist ein iterativer Prozess. Man schaut sich die 
Gummifäden an und versucht durch Drehen und Verschieben der Bauteile sie 
möglichst zu optimieren (kurz und wenig Kreuzungen).

Ich mache da gerne Inseln, wo ein IC in der Mitte sitzt und dann erst 
alle dazu gehörende passiven Bauteile drumherum plaziert werden.

von Oliver (Gast)


Angehängte Dateien:

Lesenswert?

H.Joachim Seifert schrieb:
> Und die Rx/Tx-Dioden würde ich andersherum platzieren (L-aktive
> Signale), wenn sie denn überhaupt Sinn machen.
> Lieber eine, die vom MC gesteuert wird, manchmal ganz nützlich :-)

Stimmt per Software hat man noch mehr Möglichkeiten. Habe es abgeändert.

> Serielle Schnittstelle würde ich auch getrennt herausführen, zumindest
> eine 3polig Stiftleiste, MAX232 ö.ä. muss es ja nicht unbedingt sein.
>
> Und ganz dringend solltest eine 5V-TVS-Diode parallel zur Netzbuchse
> machen.

Gute Idee. Habe hier ein USB-Kabel mit eingebauten TTL<->USB per VCP den 
man da drauf stecken könnte.

Peter Dannegger schrieb:
> Wenn Du wirre undurchdringliche Muster magst, wie eine Spinne auf LSD.

Da kamen wir fast die Tränen bei dieser Metapher :')

Peter Dannegger schrieb:
> Das Placen und Routen ist ein iterativer Prozess. Man schaut sich die
> Gummifäden an und versucht durch Drehen und Verschieben der Bauteile sie
> möglichst zu optimieren (kurz und wenig Kreuzungen).
>
> Ich mache da gerne Inseln, wo ein IC in der Mitte sitzt und dann erst
> alle dazu gehörende passiven Bauteile drumherum plaziert werden.

Vielen Dank für diese wertvollen Tipps. Wenn ich das Layout mache, werde 
ich es nochmal zur Kontrolle hochladen.

LG Oliver

von H.Joachim S. (crazyhorse)


Lesenswert?

An B6 hätte ich LED nun nicht gerade gelegt, manchmal ist es hilfreich, 
einen kompletten Port frei zu haben (LCD z.B.). PC1 wäre besser.

TVS-Diode ist falsch herum.

von Michael B. (froeschl)


Lesenswert?

Hallo,

warum hat die Zeichnung keinen Kontrast?

MfG froeschl

PS: Zeichenprogramm Demoversion oder individuelle Einstellung des 
technischen Zeichners?

von Oliver (Gast)


Angehängte Dateien:

Lesenswert?

Michael B. schrieb:
> Hallo,
>
> warum hat die Zeichnung keinen Kontrast?
>
> MfG froeschl
>
> PS: Zeichenprogramm Demoversion oder individuelle Einstellung des
> technischen Zeichners?

Hallo Michael,
ich benutze Eagle Professional in der Version 7.2.
Das Schema wurde einfach über die Standarteinstellungen exportiert als 
Grafik.

H.Joachim Seifert schrieb:
> An B6 hätte ich LED nun nicht gerade gelegt, manchmal ist es
> hilfreich,
> einen kompletten Port frei zu haben (LCD z.B.). PC1 wäre besser.
>
> TVS-Diode ist falsch herum.

Die Diode hatte ich analog zur LED plaziert - sollte aber andersrum 
sein! Vielen Dank!
Anbei das Update.

von Michael B. (froeschl)


Lesenswert?

Hallo,

ein Laie dankt für die Info, aber bitte mal versuchen, in den 
Standardeinstellungen die Strichfarbe auf schwarz zu stellen.

MfG froeschl

von Oliver (Gast)


Angehängte Dateien:

Lesenswert?

Hallo ihr Lieben,
ich bin's nochmal: Ich habe mich jetzt an das Layout begeben und stoße 
schon auf die ersten Probleme. Das Pinout des ATMEGA16M1 ist nicht mit 
der Pinnummer sortiert - es scheint fast so, als sei es alles wilder 
Zufall.

Jetzt ist es für mich sehr problematisch die Ports alle "sortiert" auf 
die Steckleisten rauszuführen, da sich die Leitungen alle kreuz und quer 
überlagern.
Habt ihr einen Tipp / eine Idee wie ich das bewältigen könnte?
Anbei ist das Eagle Projekt

LG Oliver

von Thomas F. (igel)


Angehängte Dateien:

Lesenswert?

Jetzt geht eben das Schieben los. SV1 passt z.B. besser nach links oben.

Müssen denn die Portpins immer zusammen auf einen Stekcer gehen? Oder 
einfach die Portpins durcheinander herausführen?

Deinen CAN-Teil habe ich mal ganz kurz von 2-lagig auf 1-lagig geändert, 
damit du siehts dass man immer noch optimieren kann.

Und noch was: Poste deinen aktuellen Stand immer als Bild. Nur wenige 
wollen sich dein Projekt extra auf ihren Rechner kopieren und öffnen. 
Und andere haben gar kein Eagle.

von Oliver (Gast)


Lesenswert?

Thomas Forster schrieb:
> Jetzt geht eben das Schieben los. SV1 passt z.B. besser nach links
> oben.
>
> Müssen denn die Portpins immer zusammen auf einen Stekcer gehen? Oder
> einfach die Portpins durcheinander herausführen?
>
Einfacher wäre es natürlich nach der Pinnummer rauszuführen, aber ich 
möchte schon gerne die B/C/D-Ports gebündelt haben.

> Deinen CAN-Teil habe ich mal ganz kurz von 2-lagig auf 1-lagig geändert,
> damit du siehts dass man immer noch optimieren kann.
>
Ja stimmt jetzt sehe ich es auch - hatte das raster zu grob eingestellt 
und konnte nicht zwischen den Pins des Can-Stekers routen - jetzt 
klappt's aber!

> Und noch was: Poste deinen aktuellen Stand immer als Bild. Nur wenige
> wollen sich dein Projekt extra auf ihren Rechner kopieren und öffnen.
> Und andere haben gar kein Eagle.
Danke für den Tipp. Dachte mir nur, dass man so direkt was darin 
abändern könne. Demnächst kommt es als Bild und Projekt.
Dankeschön bis hier hin ich werde einfach mal versuchen es 
hinzubekommen.

LG Oliver

von Bernd K. (prof7bit)


Lesenswert?

Wirf mal nen Blick auf die LPC11C22 und  LPC11C24, die haben 
CAN-Controller und CAN-Transceiver(!) schon integriert, sind schön 
handlich im LQFP-Gehäuse, Das Layout wird kompakter und einfacher und 
kosten tun die auch nicht mehr als ein gleichwertiger Atmel (eher 
weniger).

von Oliver (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
es gibt Neuigkeiten: Ich habe das PCB endlich per Hand geroutet 
bekommen, ohne dass sich die Leiterbahnen schneiden! yuhu
Anbei das Board.
Seht ihr irgendwo noch Verbesserungsvorschläge?
Zudem wundere ich mich über die enorme Größe der Diode?

LG Oliver

von Frank K. (fchk)


Lesenswert?

1. Willst Du das Board selber ätzen und auf der Unterseite nur 
Drahtbrücken verwenden? Normalerweise sollte der %-Satz der 
Kupferbedeckung auf Ober- und Unterseite in der gleichen Größenordnung 
liegen, weil sich das Board sonst verzieht.

2. Galvanische Isolation: Wofür willst Du die haben? Isolation ohne 
geeignete Isolationsabstände ist sinnlos. Zwischen Schutzkleinspannung 
und Netzspannung sind etwa 8 mm Kriechstecke vorzusehen. Das ist ein 8 
mm breiter Streifen quer durchs Board, wo kein Kupfer ist - Null, nix, 
0. Dafür musst Du andere Gehäusetypen für den DC-DC Wandler und den ADuM 
wählen.

http://www.reichelt.de/Wandler-Module-DC-DC/NKE0505DC/3/index.html?ACTION=3&GROUPID=4956&ARTICLE=140625&OFFSET=500&WKID=0&;
(das Symbolbild ist falsch, schau ins Datenblatt)

http://www.analog.com/static/imported-files/data_sheets/ADuM2200_2201.pdf
(Wide SOIC Gehäuse)

Das klingt zwar etwas kleinlich, hat aber seinen Sinn, wenn der Bus 
tatsächlich mal auf Netzpotential ö.ä. sein sollte. Wenn die 
Isolationsabstände nicht eingehalten werden, muss Deine Leiterplatte 
bloß etwas schmutzig sein - etwas Fett von den Fingern oder 
Flussmittelreste reichen, damit das ganze leitfähig werden kann. Und 
dann kann es Puff machen - oder Aua. Gewöhne Dir also an, bei so etwas 
ganz penibel zu sein.

3. Deine Ground-Fläche ist recht zerstückelt. Denke daran, dass Du es 
mit Stromkreisen zu tun hast, d.h. bei jedem Signal muss der Strom nicht 
nur über die Leiterbahn zum Verbraucher hin, sondern auch wieder zurück, 
und zwar auf möglichst dem gleichen Weg. Male Dir mal für ein Signal den 
Stromkreis in Deinem Layout auf. Dann stelle Dir vor, dass das eine 
(oder mehrere) Windungen einer Spule ist. Je nachdem, wie groß die 
Fläche dieser Windung ist, kannst Du mehr oder weniger 
elektromagnetische Störungen Senden und einfangen. Also der Profitip: 
Flache der Leiterschleifen minimieren. Deswegen macht man so gerne eine 
durchgehende Massefläche. Klappt nicht immer, aber das ist ein 
Optimierungskriterium.

Der Rest wie rechte Winkel etc ist jetzt zwar unschön, aber nicht so 
wichtig.

fchk

von Bülent C. (mirki)


Lesenswert?

Ist der ISP nicht falsch beschaltet? Der muss doch immer an die 
MISO/MOSI/SCK _A sofern einer existiert?

von Thomas Forster (Gast)


Lesenswert?

> Ist der ISP nicht falsch beschaltet? Der muss doch immer an die
> MISO/MOSI/SCK _A sofern einer existiert?


Du meinst hier:
http://www.mikrocontroller.net/attachment/246593/CAN_NODE.png

Stimmt, sieht falsch aus.
Wollen wir hoffen die Platine ist noch nicht beauftragt.

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.