Forum: Mikrocontroller und Digitale Elektronik Spannungsteiler zw. MCP2515 und MCP2551 liefert falsche Spannung


von Daniel H. (zeddi2k6)



Lesenswert?

Hallo Forum!

Ich habe eine Platine designed auf der ich zwei CAN-Ports an einem 
Teensy 3.2 über SPI ansteuern möchte.
Die CAN-Ports habe ich jeweils mit einem MCP2515 und MCP2551 realisiert.

Ich habe jetzt jedoch den seltsamen Effekt, dass mein Spannungsteiler 
zwischen dem RXD-Ausgangspin am MCP2551 (5V) und dem RXCAN-Eingangspin 
(3.3V) eine ganz andere Spannung ergibt als ich es erwartet hätte.

Damit ich eher knapp unter als über die Versorgungsspannung des MCP2515 
komme, habe ich in Reihe einen 10kOhm-Widerstand und danach zu GND einen 
18kOhm-Widerstand. Daraus sollten sich bei 5V Eingang rechnerisch ca. 
3.2V ergeben die am RXCAN-Pin des MCP2515 ankommen sollten.

Mir kommt jedoch statt der 3.2V nur ca. 2.5V an. Beim zweiten Port ist 
es - obwohl der Spannungsteiler dort identisch aufgebaut ist - sogar 
noch extremer: Dort sind es ca. 1.9V. Der zweite MCP2515 soll jedoch 
über den CLKOUT des 1. MCP2515 getaktet werden und das ist noch nicht 
richtig konfiguriert, daher evtl. andere interne Widerstände im IC?

Mein Board hat auf TOP- als auch BOTTOM-Layer GND geflutet, aber ich 
habe schon gesehen das meine GND-Führung vom 18kOhm-Widerstand zu den 
größeren GND-Flächen nicht die Beste ist. Hier hätte ich aber gehofft 
das das nicht so einen extremen Einfluss haben sollte!?

Kann sich jemand erklären warum mein Spannungsteiler also weit unter 
3.2V ergibt? Ich bin leider etwas ratlos.

Noch zur Info:
* Lötbrücken habe ich geprüft und was da war entfernt
* Alle Pins sind korrekt gelötet
* Zum Messen habe ich nur ein einfaches Multimeter

Danke vorab & Gruß
Daniel

von Sebastian (Gast)


Lesenswert?

Widerstände nachgemessen?

LG, Sebastian

PS: Warum benutzt du nicht das interne CAN des Teensy?

von T. F. (sar)


Lesenswert?

Vlt ist es der Eingangswiderstand des RxCAN-Pins. Mach die Widerstände 
mal um einen Faktor 10 kleiner.

: Bearbeitet durch User
von Daniel H. (zeddi2k6)


Lesenswert?

@Sebastian:
Da die Widerstände ja bereits in der Schaltung sind weiß ich nicht ob 
die mir beim Nachmessen genau die puren Werte der einzelnen widerstände 
geben oder eben aufgrund der Gesamtschaltung "verfälschte Werte" raus 
kommen.
Jedenfalls sind die Werte tatsächlich wenn ich stromlos nachmesse sehr 
unterschiedlich:
R3 (SOLL: 10kOhm, IST: 9,69kOhm)
R5 (SOLL: 18kOhm, IST: 11,1kOhm)

Ich hab einen meiner übrigens 18kOhm-Widerstände mal ohne Schaltung 
gemessen: Das war +/-1% korrekt.
Können der MCP2515 oder MCP2551 so einen Einfluss auf den Widerstand 
gegen GND haben aufgrund deren interner Beschaltung?

Zum CAN des Teensy: Den nutze ich bewusst nicht, da ich ja wie gesagt 
zwei CAN-Ports auf dem Board habe und der Teensy nur einen CAN. Ich 
könnte natürlich 1x Teensy und 1x separat MCP2515 nutzen, aber ich 
dachte für die Lib die ich verwenden will könnte es einfacher sein 2x 
den selben Controller zu verwenden.

von Daniel H. (zeddi2k6)


Lesenswert?

@T.F.:
Aber wenn man generell Widerstände mit 1/10 des Wertes den ich verwendet 
habe verwenden soll dann müsste das doch bekannt sein? Zumindest in zwei 
unabhängigen Beispielschaltungen für MCP2551 und MCP2515 im Netz habe 
ich jetzt gesehen das Leute Widerstände in dem Bereich 10 & 18-22 kOhm 
verwendet haben. Aber die Widerstände wechseln wäre mal ein Versuch 
wert. Danke für den Hinweis! Ich schau noch was sich hier an Ideen 
ergibt und werde ggf. wenn ich die Widerstände wechsel berichten.

von Luca E. (derlucae98)


Lesenswert?

Für solche Geschichten gibt es doch extra Transceiver mit eingebautem 
Pegelwandler.
SN65HVDA540 zum Beispiel.

von Falk B. (falk)


Lesenswert?

Daniel H. schrieb:

> Ich habe jetzt jedoch den seltsamen Effekt, dass mein Spannungsteiler
> zwischen dem RXD-Ausgangspin am MCP2551 (5V) und dem RXCAN-Eingangspin
> (3.3V) eine ganz andere Spannung ergibt als ich es erwartet hätte.

Warum so hochohmig?

> Mir kommt jedoch statt der 3.2V nur ca. 2.5V an. Beim zweiten Port ist
> es - obwohl der Spannungsteiler dort identisch aufgebaut ist - sogar
> noch extremer: Dort sind es ca. 1.9V.

Dann hat das Pin einen relativ niedrigen Eingangswiderstand von einigen 
Dutzend kOhm. Hat das Ding interne, schaltbare Pull-Down Widerstände? 
Ein normaler CMOS-Eingang hat mehrere Megaohm, da sollte der 
Spannungsteiler nicht verfälscht werden. Trotzdem ist er unnötig 
hochohmig. Faktor 10 kleiner ist OK.

> Der zweite MCP2515 soll jedoch
> über den CLKOUT des 1. MCP2515 getaktet werden und das ist noch nicht
> richtig konfiguriert, daher evtl. andere interne Widerstände im IC?

Nö.

> Mein Board hat auf TOP- als auch BOTTOM-Layer GND geflutet, aber ich
> habe schon gesehen das meine GND-Führung vom 18kOhm-Widerstand zu den
> größeren GND-Flächen nicht die Beste ist. Hier hätte ich aber gehofft
> das das nicht so einen extremen Einfluss haben sollte!?

Vollkommen egal.

> Kann sich jemand erklären warum mein Spannungsteiler also weit unter
> 3.2V ergibt? Ich bin leider etwas ratlos.

Falsche Widerstände
Interner Pull-Down im Controller

von Falk B. (falk)


Lesenswert?

Daniel H. schrieb:
> Aber wenn man generell Widerstände mit 1/10 des Wertes den ich verwendet
> habe verwenden soll dann müsste das doch bekannt sein? Zumindest in zwei
> unabhängigen Beispielschaltungen für MCP2551 und MCP2515 im Netz habe
> ich jetzt gesehen das Leute Widerstände in dem Bereich 10 & 18-22 kOhm
> verwendet haben.

Das Problem ist nicht der MCP2551, denn der hat einen niederohmigen 
Ausgang. Es ist der MCP2515, der ggf. einen eher niederohmigen EINGANG 
hat. Das kann man leicht messen.

Beide Widerstände auslöten
Schalte dein Multimeter in den Strommeßbereich (mA) und verbinde das 
Eingangspin vom MCP2515 mit 3,3V. Da siehst du, wieviel Eingangsstrom 
fließt. Das werden einige Dutzend uA sein.

Laut Datenblatt sollten es aber nur max. 1uA sein. Entweder ist dein IC 
durch ESD beschädigt worden oder es gibt noch einen anderen Fehler.

von Stefan F. (Gast)


Lesenswert?

Falk B. schrieb:
> Es ist der MCP2515, der ggf. einen eher niederohmigen EINGANG
> hat. Das kann man leicht messen.

Hat er ja schon. Statt R5 = 18kΩ hat er 11kΩ gemessen. Das erklärt, 
warum der Spannungsteiler (samt Last) die Spannung halbiert hat.

Ich finde deine Empfehlung gut, nochmal in getrenntem zustand zu messen 
und zu erwägen, dass das IC defekt sein könnte.

von H.Joachim S. (crazyhorse)


Lesenswert?

Luca E. schrieb:
> Für solche Geschichten gibt es doch extra Transceiver mit eingebautem
> Pegelwandler.
> SN65HVDA540 zum Beispiel.

oder welche die direkt mit 3,3V arbeiten - SN65HVD23x
Aber trotzdem muss natürlich auch die Spannungsteilerlösung 
funktionieren.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Daniel H. schrieb:
> Da die Widerstände ja bereits in der Schaltung sind
Du kannst nicht sinnvoll Widerstände IN einer Schaltung messen.
> wenn ich stromlos nachmesse
Da ist ja trotzdem alles Mögliche parallel geschaltet. Auch nicht, wenn 
du "stromlos" misst (einen Widerstand in einer laufenden Schaltung unter 
Spannung zu messen wäre ja auch echt ausgemachter Unsinn).

Stefan ⛄ F. schrieb:
> Falk B. schrieb:
>> Es ist der MCP2515, der ggf. einen eher niederohmigen EINGANG
>> hat. Das kann man leicht messen.
> Hat er ja schon. Statt R5 = 18kΩ hat er 11kΩ gemessen.
So wie dieser Wert 11k ermittelt wurde (mit dem Ohmmeter an der 
strolosen Schaltung), misst man aber keine Eingangswiderstände.
> Statt R5 = 18kΩ hat er 11kΩ gemessen.
Mich würde eher wundern, wenn er 22k gemessen hätte...

Daniel H. schrieb:
> Können der MCP2515 oder MCP2551 so einen Einfluss auf den Widerstand
> gegen GND haben aufgrund deren interner Beschaltung?
Arg viel mehr Bauteile sind ja nicht beteiligt.

von Gerd B. (bertr2d2) Benutzerseite


Lesenswert?

Ich "oute" mich mal und beanspruche die Urheberschaft für den 
vermurksten Versuch um einen 3V3 Schaltungsteil mit 5V zu verbinden:
http://lnxpps.de/rpie/

Es ist interessant wie diese Unzulänglichkeit wie ein Wasserzeichen in 
verschiedenen Reinkarnationen der Schaltung weiter lebt.

Wie bereits angemerkt sind die Widerstände zu hoch -> 1k + 1k8 wären 
sicherlich besser geeignet.

TL;DR:
Der MCP2551 ist obsolet. Die legitimen Nachfolger MCP2561/2 sind besser 
geeignet. Der MCP2562 kann mit zwei Spannungen arbeiten. Hier entfällt 
sogar die Pegelanpassung bzw. der Spannungsteiler über die Widerstände
- weniger Bauteile -> weniger Fehlerquellen

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Gerd B. schrieb:
> Es ist interessant wie diese Unzulänglichkeit wie ein Wasserzeichen in
> verschiedenen Reinkarnationen der Schaltung weiter lebt.

Warum schaust du denn weiter zu, anstatt den Plan zu korrigieren? Weil 
es so interessant ist?

Weißt du, ich habe auch einigen Käse veröffentlicht, aber ich korrigiere 
die groben Fehler wenigstens umgehend, sobald sie mir bekannt werden.

von Sebastian W. (wangnick)


Lesenswert?

Daniel H. schrieb:
> Können der MCP2515 oder MCP2551 so einen Einfluss auf den Widerstand
> gegen GND haben aufgrund deren interner Beschaltung?

Im Datenblatt des MCP2551 sind für RXD min 0.7 VDD spezifiziert, das 
wären 3.5V. Hast du die 5V an RXD gemessen?

Daniel H. schrieb:
> Zum CAN des Teensy: Den nutze ich bewusst nicht, da ich ja wie gesagt
> zwei CAN-Ports auf dem Board habe und der Teensy nur einen CAN.

Teensy 4.0 hätte drei CAN-Ports ...

LG, Sebastian

von Gerd B. (bertr2d2) Benutzerseite


Lesenswert?

Stefan ⛄ F. schrieb:
> Gerd B. schrieb:
>> Es ist interessant wie diese Unzulänglichkeit wie ein Wasserzeichen in
>> verschiedenen Reinkarnationen der Schaltung weiter lebt.
>
> Warum schaust du denn weiter zu, anstatt den Plan zu korrigieren? Weil
> es so interessant ist?

Nein, reine Trägheit. Kritik ist angekommen - Zeichnung korrigiert. IMHO 
ist die Wahl mit 1k/2k2 besser geeignet.

> Weißt du, ich habe auch einigen Käse veröffentlicht, aber ich korrigiere
> die groben Fehler wenigstens umgehend, sobald sie mir bekannt werden.

Ich hatte ja bereits die verbesserte Version mit dem MCP2562 unter dem 
alten Schaltplan angefügt.

von Stefan F. (Gast)


Lesenswert?

Gerd B. schrieb:
> Kritik ist angekommen - Zeichnung korrigiert.

Na dann ist ja gut

von Thomas (kosmos)


Lesenswert?

wie gesagt wenn dein µC schon einen CAN Controller integriert hat 
brauchst du nicht über den SPI Flaschenhals zu gehen und lässt den 
MCP2515 weg.

von Daniel H. (zeddi2k6)


Lesenswert?

Thomas O. schrieb:
> wie gesagt wenn dein µC schon einen CAN Controller integriert hat
> brauchst du nicht über den SPI Flaschenhals zu gehen und lässt den
> MCP2515 weg.

Ich hatte weiter oben geschrieben das ich 2 CAN-Ports auf dem Board habe 
bzw. für meinen Fall brauche. Ich hätte natürlich 1x CAN vom Teensy und 
1x über SPI im MCP2515 nutzen können, aber ich habe mich bewusst für 2x 
MCP2515 entschieden da ich das vorab auch auf CAN-Shields so getestet 
hatte und ich mir dachte die Lib die ich verwende hätte damit weniger 
Schwierigkeiten.

Für ein Redesign würde ich aber wohl tatsächlich auf einen Teensy 4.0 
oder etwas Ähnliches mit 2+ integrierten CAN-Controllern gehen + MCP2562 
als Transceiver.

Unabhängig davon habe ich jetzt mal die Widerstände gegen 1k und 1k8 
getauscht: Die Spannung ist jetzt tatsächlich besser (im Bereich >3V 
beim Port der vorher 2.5 hatte, und ca. 2.5V beim Port der vorher 1.9 
hatte).

------
Allerdings habe ich zwischen den RX- und TX-Pins (Pins 1 & 2) am MCP2515 
einen SEHR niedrigen Widerstand (wenige Ohm), weshalb ich tatsächlich 
befürchte, dass mir dieser MCP2515 (und evtl. auch der Zweite) durch 
sind.
------EDIT:
Zwischen den Pins schien hinten Lötfett-Rückstand. Das sollte dachte ich 
eigentlich nicht leiten, aber nachdem ich noch etwas mit dem Lötkolben 
hin bin um das zu verdampfen habe ich nun denke ich 'normalere' ~30kOhm 
zwischen den Pins.

: Bearbeitet durch User
von H.Joachim S. (crazyhorse)


Lesenswert?

Daniel H. schrieb:
> Lötfett-Rückstand

??? Du redest hoffentlich nicht wirklich von Lötfett.

Thomas O. schrieb:
> brauchst du nicht über den SPI Flaschenhals

Nachgequatschtes Hörensagen, es ist kein nennenswerter Flaschenhals. Das 
Ziel muss ja nicht sein >95% Leerlauf am MC zu erreichen.

von Daniel H. (zeddi2k6)


Lesenswert?

H.Joachim S. schrieb:
> ??? Du redest hoffentlich nicht wirklich von Lötfett.

(Leider?) ja. Ich hab das seit Ewigkeiten und hab das aber auch nur sehr 
selten mit hergenommen. Ich hab gerade auch etwas nachgelesen und 
offenbar ist es 1) aggressiv und 2) teils zu einem gewissen Grad 
leitfähig. Das wandert also in die Tonne und wird gegen einen 
Flussmittelstift o.ä. ersetzt.

Ich hatte die Platine nach dem Löten auch mal sauber gemacht mit etwas 
Bremsenreiniger aber zum Nachlöten später nochmal etwas Lötfett an einer 
Stelle am MCP2515 verwendet.

von Daniel H. (zeddi2k6)


Lesenswert?

Auch wenn es eine vielleicht etwas unbefriedigende Rückmeldung ist: Ich 
habe jetzt ein weiteres Board aufgebaut und ebenso (inkl. der 
verringerten Widerstände wie empfohlen - also 1k und 1k8) bestückt. Ich 
habe diesmal kein Lötfett verwendet und mich auch penibel geerdet:
Jetzt habe ich auf beiden Controllern zwischen den RXCAN und TXCAN-Pins 
recht konstante 140 kOhm Widerstand. Der Spannungsteiler liefert jetzt 
auch bei beiden Ports die selben richtigen Werte: Aus ~4.8V am TXD-Pin 
der MCP2551 werden ca. 3.1V an den TXCAN-Pins der jeweiligen MCP2515.

Ich vermute schlichtweg das das Lötfett mir einen oder beide MCP2515 
gegrillt hatte. Nachdem ich nun auch noch einen Bug in meiner 
SPI-Implementierung behoben habe kann ich nun beide Controller wunderbar 
per SPI ansprechen und mich an die weitere Programmierung machen.

Vielen Dank nochmal für die vielen lehrreichen Ideen und Tipps!

von Horst G. (horst_g532)


Lesenswert?

Daniel H. schrieb:
> Lötfett
> Bremsenreiniger

Wow, was treibst du da bitte?
Die von dir beschriebenen Hilfsstoffe kannst du zum Dachrinnenlöten 
nehmen, aber in der Nähe von Elektronik haben die nichts verloren!

Bremsenreiniger kann gut gehen, wenn du ihn nicht zu lange einwirken 
lässt und dann gründlich wieder abwäschst, aber genau wie Lötfett ist 
das Zeug ebenfalls extrem aggressiv.
Kaufe dir für Elektronikzwecke stattdessen lieber einen Liter 
Isopropanol. Und Flussmittelzusatz habe ich in meinen Jahrzehnten 
Löter"karriere" tatsächlich noch nie gebraucht – alles, was du brauchst, 
ist ein ordentliches Elektroniklot; dessen Flussmittelseele reicht 
vollkommen aus.

von Thomas (kosmos)


Lesenswert?

H.Joachim S. schrieb:
> Thomas O. schrieb:
>> brauchst du nicht über den SPI Flaschenhals
>
> Nachgequatschtes Hörensagen, es ist kein nennenswerter Flaschenhals. Das
> Ziel muss ja nicht sein >95% Leerlauf am MC zu erreichen.

Ich meine die Verzögerung die durch eine weitere Übertragung vom 
CAN-Controller über den SPI Bus zustande kommt. Wann das alles 
integriert ist holt man die Daten innerhalb ein paar Takte ab und bei 
der anderen Version weiß man noch garnicht das etwas da ist.

Das ist einfach ne Notlösung für Raspberrys oder Arduinos die das nicht 
integriert haben. Es mag für viele Fälle reichen es kann aber auch zum 
Flaschenhals werden.

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.