Forum: Mikrocontroller und Digitale Elektronik mcp23017 und udn2981 für 2x 8 channel solid state relay


von Markus S. (max4mikro)



Lesenswert?

Hallo!

Könnte bitte jemand (der mehr als ich davon versteht) einen Blick auf 
meinen allerersten Schaltplan werfen, den ich im Leben angefertigt habe, 
ob der in Ordnung ist? Ich habe mir die Mühe gemacht, das gleich mit 
fritzing zu machen, damit es halbwegs sauber wird...

Mein Projekt: Ich möchte gerne zwei 8-Channel Solid State Relays (also 
insgesamt 16 Relays) am Raspberry Pi 3 über i2c betreiben.

Hierzu habe ich mich kundig gemacht, dass der Portexpander MCP23017 eine 
gute Lösung ist in Verbindung mit Leistungsverstärkern - ich habe hierzu 
den UDN2981 gewählt (obwohl es hier im Forum einen thread gibt, wo 
stattdessen ein ULN empfohlen wird, aber ganz klar ist die Diskussion 
dort nicht, weswegen ich mich am Ende doch für den UDN entschieden habe, 
der andernorts auch in Verbindung mit 595er Schiftregistern empfohlen 
wird).

Vor allem ist mir nicht klar, ob ich den 100nF Kondensator an der 
richtigen Stelle eingeplant habe.

Die Relays sind nur symbolisch eingezeichnet, damit man sieht, dass ich 
sie parallel zu den Kontroll-LEDs betreiben möchte (natürlich würden sie 
so wie eingezeichnet mit einer Leitung nie funktionieren).

Vielen Dank im Voraus für Eure Bemühungen - ich bin gespannt darauf 
dazuzulernen! Als absoluter Laie habe ich Wochen gebraucht, um das hier 
alles auf die Reihe zu bekommen, also seid bitte gnädig mit mir sollte 
ich Unsinn produziert haben!

von Jens M. (schuchkleisser)


Lesenswert?

Ordentlich und Fritzing schließt sich aus. :)

Freilaufdioden an den Relais fehlen.
SDA und SCL brauchen Pullups. Ich weiß nicht ob im Pi welche sind.
Die Betriebsspannung und die I²C-Spannung musst evtl. angepasst werden. 
5V und 3,3V mischen macht aua.
Der Rest passt wohl so.

Aber solid state relays haben nur eine LED, keine Spule, die kannst du 
direkt aus dem MCP antreiben.

: Bearbeitet durch User
von wendelsberg (Gast)


Lesenswert?

Die LEDs sind verpolt.

von Jens M. (schuchkleisser)


Lesenswert?

wendelsberg schrieb:
> Die LEDs sind verpolt.

Oh sorry, ja. Das ist ein High-side-Treiber.
Ich hatte den als "normalen" Open-Collector-Treiber gesehen.

Yup, LEDs falschrum.

von Markus S. (max4mikro)



Lesenswert?

Jens M. schrieb:
> Ordentlich und Fritzing schließt sich aus. :)
>
> Freilaufdioden an den Relais fehlen.
> SDA und SCL brauchen Pullups. Ich weiß nicht ob im Pi welche sind.
> Die Betriebsspannung und die I²C-Spannung musst evtl. angepasst werden.
> 5V und 3,3V mischen macht aua.
> Der Rest passt wohl so.
>
> Aber solid state relays haben nur eine LED, keine Spule, die kannst du
> direkt aus dem MCP antreiben.

Freilaufdioden an den Relais? Also die von mir verwendeten von Sainsmart 
Omron SSR haben dort pro Relay schon eine Kontroll-LED, aber ich weiss 
nicht ob die als Freilaufdiode funktionieren... Wäre es dann nicht 
besser, wenn die von mir vorgesehenen (bislang parallel geschalteten) 
Kontroll-LED gleich als Freilaufdioden zum Einsatz kämen, also direkt zu 
den Relays führten?

Im Raspberry Pi sind in den beiden i2c-Leitungen m.W. Pullups 
automatisch dabei (das sollte also nicht notwendig sein).

Aber richtig: Der Raspberry Pi verwendet 3,3V für i2c, das habe ich 
bereits korrigiert.

Den MCP23017 betreibe ich trotzdem mit 5V, was hoffentlich kein Problem 
sein sollte, denn der ist ja getrennt, wenn ich das richtig verstehe.

Die UDNs wären demnach überflüssig? Aber die geben doch nur knapp 25 
Mikroampere aus pro Kanal - und alleine schon die Kontroll-LEDs 
verbrauchen davon 20 Mikroampere, deswegen habe ich gelesen wären die 
Leistungstreiber ratsam.

Und dann klar die Leuchtdioden verpolt - danke für die Hinweise!

Anbei der nach obigen Hinweisen korrigierte Schaltplan - wobei die 
Frage, ob UDNs nötig sind, noch offen ist, ebenso wie die Frage, ob die 
Freilaufdioden erforderlich sind bzw. die Kontroll-LEDs als solche zum 
Einsatz kommen können.

: Bearbeitet durch User
von Thomas S. (selli69)


Lesenswert?

Die internen PullUps des Raspi sind mit 50K relativ schwach. Ich würde 
externe 4k7 PullUps eindesignen. Um eine Pegelanpassung 3V3/5V kommst Du 
trotzdem nicht herum.

von Frank K. (fchk)


Lesenswert?

Das alles hängt von der SSR-Baugruppe ab. Welche ist es denn GENAU?

Die hier?
https://www.sainsmart.com/products/2-4-8-ch-5v-solid-state-relay

Oder was anderes?

fchk

von Jens M. (schuchkleisser)


Lesenswert?

Markus S. schrieb:
> Wäre es dann nicht
> besser, wenn die von mir vorgesehenen (bislang parallel geschalteten)
> Kontroll-LED gleich als Freilaufdioden zum Einsatz kämen, also direkt zu
> den Relays führten?

LEDs gehen nicht als Freilauf. Eine Freilaufdiode ist "falschrum" 
gepolt, die LED soll ja die Funktion anzeigen, nicht im Abschaltmoment 
kurz aufblitzen.
Aber SSRs brauchen eh keine.

Markus S. schrieb:
> Im Raspberry Pi sind in den beiden i2c-Leitungen m.W. Pullups
> automatisch dabei (das sollte also nicht notwendig sein).
>
> Aber richtig: Der Raspberry Pi verwendet 3,3V für i2c, das habe ich
> bereits korrigiert.
>
> Den MCP23017 betreibe ich trotzdem mit 5V, was hoffentlich kein Problem
> sein sollte, denn der ist ja getrennt, wenn ich das richtig verstehe.

Wenn der I2C-Bus 3,3V benutzt, wird er vermutlich an einem IC mit 5V 
Versorgung nicht zuverlässig funktionieren. Manche Chips erkennen 3,3V 
noch als high, manche nicht, manche zu langsam (in dem Fall kannst du 
die Bitrate des I²C runtersetzen).
Der MCP braucht 0,8x VDD um ein signal als H zu sehen, bei 5V also 4V am 
Eingang. Das wird also nichts.
Der MCP läuft aber mit 3V3, sofern alles ok, wenn du die 5V mal 
weglässt.

Markus S. schrieb:
> Die UDNs wären demnach überflüssig? Aber die geben doch nur knapp 25
> Mikroampere aus pro Kanal - und alleine schon die Kontroll-LEDs
> verbrauchen davon 20 Mikroampere, deswegen habe ich gelesen wären die
> Leistungstreiber ratsam.

Milli.
10 hoch -3 ist Milli.
Ich musste leider feststellen, das im Datenblatt nur 3mA Belastbarkeit 
stehen.
Ob das SSR damit klarkommt ist unbekannt, da Typ nicht genannt.
Aber 20mA pro LED ist letztes Jahrtausend.
Selbst wenn, sind 3mA reichlich wenig und mehr als 3V3 darfst du ja 
nicht benutzen, das reicht nicht für 2 LEDs in Reihe...
Also doch mit Treiber.

Oder was ganz anderes:
TPIC6B595: Power-Schieberegister. oder
PCA9685: 16er LED-Treiber (mit PWM sogar)
Beide könnten direkt die Ausgänge antreiben.

von Markus S. (max4mikro)


Lesenswert?

Frank K. schrieb:
> Das alles hängt von der SSR-Baugruppe ab. Welche ist es denn
> GENAU?
>
> Die hier?
> https://www.sainsmart.com/products/2-4-8-ch-5v-solid-state-relay
>
> Oder was anderes?
>
> fchk

Ja, genau von dieser Baugruppe habe ich die 8-ch-5v-SSRs.

von Markus S. (max4mikro)


Lesenswert?

Jens M. schrieb:
> Wenn der I2C-Bus 3,3V benutzt, wird er vermutlich an einem IC mit 5V
> Versorgung nicht zuverlässig funktionieren. Manche Chips erkennen 3,3V
> noch als high, manche nicht, manche zu langsam (in dem Fall kannst du
> die Bitrate des I²C runtersetzen).
> Der MCP braucht 0,8x VDD um ein signal als H zu sehen, bei 5V also 4V am
> Eingang. Das wird also nichts.
> Der MCP läuft aber mit 3V3, sofern alles ok, wenn du die 5V mal
> weglässt.

Danke auch für diesen Hinweis! Ja, stimmt natürlich, das war falsch von 
mir formuliert:

Den MCP rein mit 3V3 betreiben, da das die beiden i2c-Ausgänge des RPI 
ausgeben - das sollte laut Datenblatt des MCP funktionieren.

Aber die Leistungstreiber (die meinte ich), die möchte ich mit 5V 
betreiben. Deren Spannung ist ja vom MCP unabhängig (so war das gemeint, 
aber falsch von mir forumuliert).

von Markus S. (max4mikro)


Lesenswert?

Jens M. schrieb:
> Milli.
> 10 hoch -3 ist Milli.
> Ich musste leider feststellen, das im Datenblatt nur 3mA Belastbarkeit
> stehen.
> Ob das SSR damit klarkommt ist unbekannt, da Typ nicht genannt.
> Aber 20mA pro LED ist letztes Jahrtausend.
> Selbst wenn, sind 3mA reichlich wenig und mehr als 3V3 darfst du ja
> nicht benutzen, das reicht nicht für 2 LEDs in Reihe...
> Also doch mit Treiber.
>
> Oder was ganz anderes:
> TPIC6B595: Power-Schieberegister. oder
> PCA9685: 16er LED-Treiber (mit PWM sogar)
> Beide könnten direkt die Ausgänge antreiben.

20mA max. steht auf den von mir verwendeten SMD LED 1206 - da die, die 
ich verwenden möchte, nur mit 3,3 V betrieben werden sollten, habe ich 
einen Widerstand von 100 Ohm eingeplant und deswegen auch die 
Parallelschaltung, weil ich die 5 V des Leistungstreibers gerne an die 
SSR weitergeben möchte, da in deren Datenblatt steht: "2.5V - 20V High 
state (SSR is ON)", d.h. ich möchte mit 5 V auf der sichereren Seite 
sein.

PS: Ursprünglich wollte ich die Schaltung mit dem TPIC6B595 machen 
(gefällt mir super), aber ich habe nur Schaltungsbeispiele für den 
74HC595 gefunden (und die Behauptung, dass die 595er Reihe -also auch 
die TPIC-Reihe- gleich zu betreiben wäre, was aber bei mir nicht 
hingehauen hat, weswegen ich davon wieder abgerückt bin - 
merkwürdigerweise gibt es für die TPIC-Reihe kaum Programmierbeispiele 
im Netz - für mich leider ein Knock Out).

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Markus S. schrieb:
> Frank K. schrieb:
>> Das alles hängt von der SSR-Baugruppe ab. Welche ist es denn
>> GENAU?
>>
>> Die hier?
>> https://www.sainsmart.com/products/2-4-8-ch-5v-solid-state-relay
>>
>> Oder was anderes?
>>
>> fchk
>
> Ja, genau von dieser Baugruppe habe ich die 8-ch-5v-SSRs.

Dann sind da bereits Treibertransistoren drauf, und Du brauchst den UDN 
überhaupt nicht. Schau in den Schaltplan, den es zum Download gibt. Wenn 
Dir die Schaltschwelle von 2.5V für on nicht passt, musst Du einfach den 
Spannungsteiler vor der Basis jeden Transistors anpassen. Aber normal 
sollte das einfach so funktionieren. Und wenn Du einen Pi mit 40 Pin 
Pfostenleiste hast, hast Du auch genug Pins frei, um auf den I2C 
Expander verzichten zu können.

fchk

von Karl K. (karl2go)


Lesenswert?

Markus S. schrieb:
> Ja, genau von dieser Baugruppe habe ich die 8-ch-5v-SSRs.

Dann kannst Du Dir die ULN sparen und die SSR direkt mit den MPC 
schalten, auch mit 3.3V.

von Jens M. (schuchkleisser)


Lesenswert?

Markus S. schrieb:
> Aber die Leistungstreiber (die meinte ich), die möchte ich mit 5V
> betreiben. Deren Spannung ist ja vom MCP unabhängig (so war das gemeint,
> aber falsch von mir forumuliert).

Gleiches Problem: Erkennen die Chips mit 5V Betriebsspannung ein Signal 
mit 3V3 als High?

Markus S. schrieb:
> SMD LED 1206 - da die, die
> ich verwenden möchte, nur mit 3,3 V betrieben werden sollten,

Nope.
LEDs werden immer mit Strom betrieben, die Spannung stellt sich selber 
ein.
100 Ohm an 5V mit einer LED sind so 30mA. Deutlich viiiiiel zu viel.
10 sind schon weit gedacht für heutige LEDs.

Markus S. schrieb:
> und die Behauptung, dass die 595er Reihe -also auch
> die TPIC-Reihe- gleich zu betreiben wäre

Das ist auch gleich anzusteuern. Deine Falle war mit Sicherheit, das der 
TPIC ein Open collector Treiber ist, d.h. der Ausgang zieht mächtig auf 
Masse. High bekommst du da aber nicht raus. Allerdings musst du ein 
1-Bit senden, damit der Ausgang Aktiv (also Low) wird.
Im Grunde ein normales 595er mit einem ULN2803 in einem Gehäuse.
Die Programmierbeispiele des normalen 595er passen (wobei das ein 
einfaches Schieberegister ist, das kann man mit wenigen Zeilen selber 
machen), nur das eben nicht "LED gegen Masse" sondern "LED gegen Plus" 
geschaltet werden muss.

Karl K. schrieb:
> Dann kannst Du Dir die ULN sparen und die SSR direkt mit den MPC
> schalten, auch mit 3.3V.

Ich fürchte, die SSR sind abgelötet.

von Markus S. (max4mikro)


Lesenswert?

Nach den zahlreichen - sehr hilfreichen! - Antworten habe ich das Ganze 
jetzt auch mal mit Steckbrett getestet:

Sieht man mal von Wackelkontakten meines Steckbretts (bzw. der 
aufgesteckten ICs) ab, so funktionierte die Schaltung aus MCP + 2x UDN 
allem Anschein nach mit den Testprogrammen so wie gewünscht.

Ich habe dann aber auch mal den Multiplexer MCP direkt mit dem Solid 
State Relay Modul verbunden, also die 3.3 V Signale des MCP direkt in 
die Anschlüsse der Relays geführt; gleichzeitig habe ich den SSR an 
seiner Versorgungsklemme mit 5 V versorgt - und das Schalten der Relays 
funktionierte einwandfrei (zumindest was die LEDs anbetrifft, Lasten 
habe ich noch keine geschaltet).

Es sieht also in der Tat danach aus, dass ich mir die Leistungstreiber 
UDN sparen kann, ebenso wie die zusätzlichen LEDs (sowie deren 
Vorwiderstände auch), da ja das SSR-Modul selbst über LEDs verfügt und 
somit eine Sichtkontrolle erlaubt, welcher Kanal gerade geschaltet wird.

von Markus S. (max4mikro)


Lesenswert?

Thomas S. schrieb:
> Die internen PullUps des Raspi sind mit 50K relativ schwach. Ich würde
> externe 4k7 PullUps eindesignen. Um eine Pegelanpassung 3V3/5V kommst Du
> trotzdem nicht herum.

Hallo Thomas:

An welcher Stelle wäre denn der 4.7K PullUp einzubauen? Direkt am 
3V3-Pin?

von Jens M. (schuchkleisser)


Lesenswert?

Je einer von SCL und SDA nach 3V3

von Karl K. (karl2go)


Lesenswert?

Markus S. schrieb:
> An welcher Stelle wäre denn der 4.7K PullUp einzubauen? Direkt am
> 3V3-Pin?

Gar nicht. Laut Doku hat der Raspi 1k8 Pullups, das ist klein genug.

von Thomas S. (selli69)


Lesenswert?

Karl K. schrieb:

> Gar nicht. Laut Doku hat der Raspi 1k8 Pullups, das ist klein genug.

Laut welcher Doku? Ich finde überall nur die Angabe von 50K - 65K für 
die per SW setzbaren Pull-ups. Es stellt sich auch die Frage, weshalb 
viele Projekte die 4K7 als PullUp drin haben. Hätte der Pi 1K8 PullUps 
dürfte der I2C eigentlich gar nicht mehr funktionieren.

von Karl K. (karl2go)


Lesenswert?

Thomas S. schrieb:
> Laut welcher Doku?

Echt jetzt? Aber den Arsch abwischen schaffst Du schon alleine? Das kann 
doch nicht wahr sein, wie dämlich sich manche im Internet anstellen:

Erster Link bei google nach raspberry pi schaltplan

https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/README.md

Der Pi3 hat 1k8 an den I2C Gpios. Für die anderen schaffst Du es selbst 
zu schauen, oder?

von Thomas S. (selli69)


Lesenswert?

Karl K. schrieb:
> Echt jetzt? Aber den Arsch abwischen schaffst Du schon alleine? Das kann
> doch nicht wahr sein, wie dämlich sich manche im Internet anstellen:

Ich frage mich bei Leuten wie Ihnen immer ob es der Papa oder die Mama 
war, der/die Sie nie lieb gehabt hat. Wohingegen sich keine Frage stellt 
ist ob Sie im RL mit ihrer Attitüde irgendwann mal an den Falschen 
geraten, der Sie auf handfeste Art und Weise motivieren wird über den 
Umgang mit anderen Menschen, welche Ihnen nicht das Geringste getan 
haben nach zu denken. Viel Spaß dabei!

von Karl K. (karl2go)


Lesenswert?

Thomas S. schrieb:
> ob Sie im RL

Im RL versuche ich dummen Menschen weitgehend aus dem Weg zu gehen.

von Markus S. (max4mikro)



Lesenswert?

Habe inzwischen mit Eurer Hilfe einen Prototyp angefertigt und getestet: 
Die Relays schalten auch bei Last ordentlich (zumindest mit einem Kanal 
habe ich es schon getestet); alle Kanäle gehen ansonsten an und aus just 
so wie ich es haben möchte.

Auf einen Pull-up-Widerstand für die beiden i2c-Leitungen habe ich 
erstmal verzichtet, da in der Tat laut Datenblatt dort bereits welche 
mit 1K8 eingebaut sind.

Neben den 4 Anschlüssen für 3V3, GND, SDA und SCL gibt es noch 3 andere 
Doppelschraubklemmen, die im Sinne einer Y-Weiche verbunden sind: Damit 
bediene ich die 5V und GND für die Relay-Module. Was noch fehlt, das ist 
der GND-Anschluss, der vom Pin neben den Datenleitungen zurückkommt (den 
habe ich im Moment noch direkt an GND des RPI angeschlossen, das ist 
natürlich ungeschickt bzw. ist noch zu verbessern).

Allerdings muss ich jetzt noch mit Hexadezimalwerten die i2c Parameter 
programmieren lernen (vorzugsweise Python), und zwar wie ich bitgenau 
ein bestimmtes Relay an- oder ausschalten kann, ohne die anderen Relays 
dabei zu verändern. Wenn jemand dazu eine gute Anleitung kennt, die man 
auch als Nicht-Mathematiker verstehen kann... ich habe leider bislang 
vergeblich gesucht.

In der Anlage zwei (schlechte) Fotos vom Prototyp (Vor- und Rückseite). 
Dank Kupferlackdraht und regelbarer Lötstation hat das diesmal sogar 
recht gut geklappt (es handelt sich um die 2. Platine, die ich in meinem 
Leben gelötet habe...) - mit dem Multimeter habe ich sämtliche Wege 
geprüft und keine Fehler gefunden. Ob der 100nF Kondensator unter dem IC 
so glücklich angebracht ist (Hitzeentwicklung könnte IC-Lebensdauer 
beeinträchtigen ???) - da werde ich beim nächsten Prototyp nach einem 
besseren Plätzchen suchen müssen.

Danke nochmals an alle die soweit geholfen haben! Falls Ihr Schwächen 
oder gar Fehler seht - ich freue mich über jede Rückmeldung!

: Bearbeitet durch User
von Markus S. (max4mikro)


Lesenswert?

So, nun habe ich auch noch herausgefunden, wie das mit dem Schalten von 
einzelnen Bits geht:

Zunächst mal hat man die beiden Bänke A und B des MCP, die jeweils einem 
Byte aus 8 Bits entsprechen. Jedem Bit (man zählt seine Position von 
rechts nach links und fängt mit 0 an) im Binärsystem entspricht genau 
eine Dezimalzahl, die man durch die entsprechende Hochzahl der Position 
errechnen kann:

Die Binärzahl 11111111 (bzw. 0b11111111) kann demnach wie folgt 
aufgelöst werden:

Bit 0 = 1 * 2 hoch 0 = 1
Bit 1 = 1 * 2 hoch 1 = 2
Bit 2 = 1 * 2 hoch 2 = 4
Bit 3 = 1 * 2 hoch 3 = 8
Bit 4 = 1 * 2 hoch 4 = 16
Bit 5 = 1 * 2 hoch 5 = 32
Bit 6 = 1 * 2 hoch 6 = 64
Bit 7 = 1 * 2 hoch 7 = 128

1+2+4+8+16+32+64+128 = 255

Und der Hexidezimalwert von 255 ist 0xff - womit ich per i2cset alle 
Relais gleichzeitig anschalten kann.

Der Witz ist nun, dass sich aus der Kombination dieser Werte eine Zahl 
ergibt, bei der eindeutig feststeht, ob das Bit den Wert 1 hat oder 0.

Will ich also Relay 5 (= Bit 5) ausschalten, dann muss ich einfach -32 
rechnen (also vom aktuell per i2cget ermittelbaren Wert diese Zahl 
abziehen) bzw. +32 rechnen, dann wird eindeutig jeweils der Pin 5 
angesprochen.

Natürlich sollte ich dann auch noch wissen, wie ich Hexadezimalwerte in 
Dezimalwerte (und ggf. in Binärwerte) und umgekehrt umrechnen kann.

Mit Python geht das z.B. so:

Hexadezimal → Dezimal:
>>> int('0xa6', 16)
166

Dezimal → Hexadezimal:
>>> hex(166)
'0xa6'

Dezimal → Binär:
>>> bin(166)
'0b10100110'

Binär → Dezimal:
>>> int('0b10100110', 2)
166

Einen kleinen Haken gibt es noch: Wenn ich nicht weiß, dass Pin 5 
bereits 1 ist und dann versehentlich nochmal 32 dazurechne (was 
eigentlich den Wert von Pin 5 von 0 auf 1 ändert), dann ist das so als 
hätte ich stattdessen 64 hinzugezählt - und das bewirkt freilich dass 
dann Pin 5 auf 0 und Pin 6 auf 1 gesetzt wird... Das darf natürlich 
nicht passieren, d.h. ich muss wohl mit i2cget oder anderen Verfahren 
checken, in welchem Zustand sich das Byte bzw. die einzelnen Bits 
befinden.

Ich hoffe mal, dass diese Hinweise anderen Anfängern wie mir, deren 
Matheunterricht unterbelichtet war, ein paar Stunden mühsame Suche 
ersparen - und dass mich die Profis korrigieren, sollte ich hier etwas 
falsch oder irreführend angegeben haben.

: Bearbeitet durch User
von Markus S. (max4mikro)


Lesenswert?

Und abschließend auch noch die beste Literatur, die ich zum Projekt 
gefunden habe:

"Raspberry Pi: I2C-IO-Expander mit MCP23017" (Quelle: 
http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-I2C-Expander/index.html)

bzw. die beste Erklärung zum Verständnis von RPI und I2C:

"Raspberry Pi: I2C-Konfiguration und -Programmierung" (Quelle: 
http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_I2C.html)

Im erstgenannten Artikel findet sich auch die Lösung für Python, um 
bitgenau Relays ansteuern zu können: Hierzu gibt es sogar bereits 
passende Bibliotheken bzw. Programme für den MCP!

von Jens M. (schuchkleisser)


Lesenswert?

Den ganzen Kram mit der Addition und den Fehlern kannst du dir schenken, 
wenn du es einfach und richtig machst:
Jeder Ausgang ist ein Bit.
Weise dem gewünschnten Signal einen Namen, dem wiederum einen Wert zu:
LEDGrün=0b00010000 // LED Grün an Bit 4
LEDRot= 0x08 // LED Rot an Bit 3

Setze ein Bit per or:
PortJetzt | LEDGrün // LED ist an

Lösche ein Bit per AND mit negiertem Wert
PortJetzt & ~LEDGrün // LED ist aus

Das funktioniert unabhängig davon ob die LED an oder aus ist, wenn du OR 
machs ist sie hinterher an.

Mehrere LEDs kannst du auch in einem Befehl schalten:
PortJetzt | LEDGrün | LEDRot // Beide LEDs an
bzw.
PortJetzt & ~LEDGrün & ~LEDRot // Beide LEDs aus

Am schnellsten dürfte es jeweils sein, eine Globale Variable PortJetzt 
zu halten, die den Sollzustand darstellt.
Dann einfach immer o.g. Funktionen durchführen und zum Chip senden.
Erst lesen, dann ändern und wieder zurückschreiben ist fehlerträchtig 
und langsamer.

von Markus S. (max4mikro)


Angehängte Dateien:

Lesenswert?

Inzwischen habe ich mit KiCAD einen eigenen Schaltplan entworfen und 
nach diesem dann eine eigene Platine anfertigen lassen - leider mit 
Problemen:

Wie man auf dem Foto anbei erkennen kann, brennen alle LEDs sobald ich 
3,3V und GND vom Raspberry Pi anlege (soweit gut), aber i2cdetect -y 1 
findet nichts, kein device (der MCP23017 sollte mit 0x20 erscheinen).

Wie kann ich den Fehler finden?

Ich habe mit meinem Protoyp getestet, dass mein Raspberry Pi dessen 
MPC23017 nach wie vor problemlos erkennt, daran kann es also nicht 
liegen.

Ich habe sämtliche Kontakte der Platine mit dem Multimeter überprüft: 
Alle Leitungen sind durchgängig bzw. piepsen, wenn ich die 
entsprechenden Punkte verbinde, und auch nur da wo es sein soll. Die 
Pins sind allem Anschein nach richtig verbunden.

Und genau deswegen verstehe ich nicht, warum ich die i2c-Adresse per 
i2cdetect nicht angezeigt bekomme, und auch nicht, warum alle LEDs 
leuchten sobald ich 3V3 und GND anschließe.

Das ergibt für mich alles keinen Sinn.

Kann mir jemand Hinweise geben, was ich falsch gemacht haben könnte bzw. 
wie ich weiter vorgehen soll?

LG Markus

Beitrag #5805275 wurde vom Autor gelöscht.
von Jürgen (Gast)


Lesenswert?

Thomas S. schrieb im Beitrag #5805275:
> !RESET liegt auf GND.

Nö, auf VDD.

von Thomas S. (selli69)


Lesenswert?

Jürgen schrieb:
> Thomas S. schrieb im Beitrag #5805275:
>> !RESET liegt auf GND.
>
> Nö, auf VDD.

Da hast Du schneller geantwortet, als ich meinen Schmarrn wieder löschen 
konnte... ;)

von Thomas S. (selli69)


Lesenswert?

Die LEDs leuchten vermutlich deshalb, weil der 23017 seine Ports nach 
dem PoR als Eingänge konfiguriert und diese damit hochohmig sind. Da 
hätte es Pull-Downs für einen definierten Zustand bis zur 
Portkonfiguration gebraucht. Doch nicht so schlimm, hast ja Klemmen 
dran, an welche du jetzt die PDs hängen kannst.. ;)

BTW: Schon mal nachgesehn ob du beim Anschluss SDA/SCL vertauscht hast?

: Bearbeitet durch User
von Markus S. (max4mikro)


Lesenswert?

> BTW: Schon mal nachgesehn ob du beim Anschluss SDA/SCL vertauscht hast?

Den Verdacht hatte ich auch schon und hab deswegen mal SDA/SCL 
getauscht, aber i2cdetect hat auch nichts gefunden.

Eine Merkwürdigkeit habe ich inzwischen entdeckt:

Wenn ich die Leitungen der IC 2 und IC 3 hin zu den LEDs teste, dann 
funktionieren die von IC 2 einwandfrei so wie sie sollen, aber die von 
IC 3 gar nicht.

Daraufhin habe ich mal nur die Strecken von den Widerständen hin zu den 
LEDs getestet - und siehe da, auch dort leuchten lediglich die LEDs, die 
mit IC 2 verbunden sind, nicht aber die, die mit IC 3 verbunden sind.

Das ist um so merkwürdiger als beim Anschließen ja nichtsdestoweniger 
alle LEDs aufleuchten, wie auf dem Foto zu sehen ist.

Ich bin ratlos...

von Thomas S. (selli69)


Lesenswert?

Markus S. schrieb:
> Das ist um so merkwürdiger als beim Anschließen ja nichtsdestoweniger
> alle LEDs aufleuchten, wie auf dem Foto zu sehen ist.

Die LEDs leuchten nicht, sie blinken. Mit genau dem Signal, welches die 
16 Antennen an den Eingängen der 541er empfangen, da diese Leitungen, 
wie ich oben schon schrieb, floatend sind.

Mach mal über die Klemmen 16 Pullups dran.

von Thomas S. (selli69)


Lesenswert?

Weiterhin kann es sein, dass du mit deinen 16 floatenden 541er Eingängen 
durch die HF an den Ausgängen so dermaßene Störungen auf der 
Stromversorgung produzierst, dass die Abblockkondis damit überfordert 
sind und deswegen der 23017 wegen der versifften Versorgung nicht 
richtig läuft.

von Karl K. (karl2go)


Lesenswert?

Ich seh ja nur einen Teil des Routings, aber: Kann es sein, dass der MCP 
falschrum im Sockel sitzt?

von Markus S. (max4mikro)


Lesenswert?

> Die LEDs leuchten nicht, sie blinken. Mit genau dem Signal, welches die
> 16 Antennen an den Eingängen der 541er empfangen, da diese Leitungen,
> wie ich oben schon schrieb, floatend sind.

Jetzt sehe ich tatsächlich, dass die LEDs blinken (genauer: flimmern), 
wohl mit so hoher Frequenz, dass ich das für ein dauerhaftes Leuchten 
hielt.

> Mach mal über die Klemmen 16 Pullups dran.
Wieviel Ohm empfiehlst Du und wie genau soll ich an den Klemmen Pullups 
dranhängen? Das ist mir nicht wirklich klar...

Den Dip-Schalter zum Wählen der Hex-Adresse des IC 1 habe ich inzwischen 
überprüft: Wenn ich die Schalter betätige, so liegt Strom an den 
betreffenden (drei) Pins A0, A1, A2 des MCP23017 an; allerdings bin ich 
mir noch nicht sicher, ob die 3 Pins auch tatsächlich mit GND verbunden 
sind, das hab ich bisher nur bei 2 von den 3 verifizieren können.

Inzwischen gehe ich vor allem dem Verdacht nach, dass der 28-Pin-Sockel 
die Kontakte zum MP23017 nicht richtig herstellt. Ich konnte z.B. 
zunächst die 3V3 mit dem Multimeter nirgendwo finden; erst nachdem ich 
den IC entfernt, die Sockelkontakte entsprechend getestet und etwas 
aufgebogen habe, konnte ich die 3V3 an den richtigen Pins nachweisen, 
sowie auch die anderen Anschlüsse. Möglich, dass da das eigentliche 
Problem liegt.

von Markus S. (max4mikro)


Lesenswert?

Habe nun die beiden 8 Channel Solid State Relais angeschlossen: Jetzt 
sind alle LEDs aus, es leuchtet bzw. flackert nichts. Aber i2cdetect 
erkennt nach wie vor nichts...

von Thomas S. (selli69)


Lesenswert?

Markus S. schrieb:
> Inzwischen gehe ich vor allem dem Verdacht nach, dass der 28-Pin-Sockel
> die Kontakte zum MP23017 nicht richtig herstellt. Ich konnte z.B.
> zunächst die 3V3 mit dem Multimeter nirgendwo finden; erst nachdem ich
> den IC entfernt, die Sockelkontakte entsprechend getestet und etwas
> aufgebogen habe, konnte ich die 3V3 an den richtigen Pins nachweisen,
> sowie auch die anderen Anschlüsse. Möglich, dass da das eigentliche
> Problem liegt.

Dann klingel doch bitte mal alle Leitungen bei gestecktem 23017 von 
dessen Pins aus durch.

Ich verstehs ehrlich gesagt nicht, wie es sein kann, dass man sich für 
teuer Geld ne Platine fertigen lässt, dann aber beim IC-Sockel spart und 
keinen mit gedrehten Kontakten kauft. Wegen an der falschen Stelle 
gesparten Centbeträgen dann bei der Inbetriebnahme Wallung zu machen ist 
nicht so pralle...

: Bearbeitet durch User
von Thomas S. (selli69)


Lesenswert?

Markus S. schrieb:
> Jetzt sehe ich tatsächlich, dass die LEDs blinken (genauer: flimmern),
> wohl mit so hoher Frequenz, dass ich das für ein dauerhaftes Leuchten
> hielt.

Sag ich doch.

> Wieviel Ohm empfiehlst Du und wie genau soll ich an den Klemmen Pullups
> dranhängen? Das ist mir nicht wirklich klar...

10K -100K. Es geht ja nur darum einen definiierten Zustand an den CMOS 
Eingängen deiner 541er herzustellen. Und bitte Pull-Downs, keine 
Pull-Ups. Du willst ja nicht, dass im EInschaltmoment alle LEDs leuchten 
und alle SSRs durchschalten bis der 23017 richtig initialisiert ist.

Markus S. schrieb:
> Habe nun die beiden 8 Channel Solid State Relais angeschlossen: Jetzt
> sind alle LEDs aus, es leuchtet bzw. flackert nichts. Aber i2cdetect
> erkennt nach wie vor nichts...

Weil die 541er Eingänge via den SSRs Ground (oder was ähnliches) sehen. 
Die Pull-Downs gehören trotzdem rein!

von Karl K. (karl2go)


Lesenswert?

Tu mal Layout top und bottom rein.

von Markus S. (max4mikro)


Lesenswert?

Thomas S. schrieb:
> Ich verstehs ehrlich gesagt nicht, wie es sein kann, dass man sich für
> teuer Geld ne Platine fertigen lässt, dann aber beim IC-Sockel spart und
> keinen mit gedrehten Kontakten kauft. Wegen an der falschen Stelle
> gesparten Centbeträgen dann bei der Inbetriebnahme Wallung zu machen ist
> nicht so pralle...

Nur zur Erklärung: Wirtschaftlich ist das Projekt nicht - ich bin 
absoluter Laie bzw. Autodidakt und wusste gar nicht, dass es einen 
Unterschied zwischen  gedrehten und nicht gedrehten Kontakten gibt... 
Andernfalls hätte ich an dieser Stelle bestimmt nicht gespart! Danke für 
den Hinweis!

Ich versuche dabei zu lernen (und zahle natürlich Lehrgeld) - inzwischen 
habe ich schon gemerkt, dass ich für einen Bruchteil des Geldes, das ich 
investiert habe, ein fertiges Teil aus Asien hätte bestellen können 
(bzw. sogar in einer Schachtel liegen habe), aber darum geht es mir 
nicht: Ich lerne bei diesem Projekt und lerne dank Euch und auch von Dir 
jede Menge dazu und das macht einfach Spass!

Danke!

: Bearbeitet durch User
von Markus S. (max4mikro)


Angehängte Dateien:

Lesenswert?

Karl K. schrieb:
> Tu mal Layout top und bottom rein.

Hier sind die beiden, soweit ich Dich verstanden habe.

von Thomas S. (selli69)


Lesenswert?

Markus S. schrieb:
> Hier sind die beiden, soweit ich Dich verstanden habe.

Ja gut.. Leider hast Du alle anderen Lagen jeweils nicht ausgeblendet, 
so ist das alles iwie schwer zu erkennen. Meine alten Augen auch 
immer... Wenn Du uns nen Gefallen tun möchtest, dann stell noch mal 
beide Lagen ohne die zusätzlichen ein, vllt sogar ein wenig größer..

Markus S. schrieb:
> Ich versuche dabei zu lernen (und zahle natürlich Lehrgeld) - inzwischen
> habe ich schon gemerkt, dass ich für einen Bruchteil des Geldes, das ich
> investiert habe, ein fertiges Teil aus Asien hätte bestellen können
> (bzw. sogar in einer Schachtel liegen habe), aber darum geht es mir
> nicht: Ich lerne bei diesem Projekt und lerne dank Euch und auch von Dir
> jede Menge dazu und das macht einfach Spass!

Kann schon sein, dass ich ein bisschen ein unangenehm wirkender 
Zeitgenosse bin, verbal hin und wieder übers Ziel hinausschieße und auch 
wenig empathisch rüber komme. Sieh es mir nach.

von Thomas S. (selli69)


Lesenswert?

Ganz schönes Kopfschmerz-Layout... Macht nichts, funktionieren sollte es 
trotzdem und Du bist ja Anfänger von daher ist da halt noch viel Luft 
nach oben. Bis jetzt habe ich nichts gefunden, sehe es mir aber morgen 
tagsüber noch mal an.

von Markus S. (max4mikro)


Angehängte Dateien:

Lesenswert?

Thomas S. schrieb:
> Markus S. schrieb:
>> Hier sind die beiden, soweit ich Dich verstanden habe.
>
> Ja gut.. Leider hast Du alle anderen Lagen jeweils nicht ausgeblendet,
> so ist das alles iwie schwer zu erkennen. Meine alten Augen auch
> immer... Wenn Du uns nen Gefallen tun möchtest, dann stell noch mal
> beide Lagen ohne die zusätzlichen ein, vllt sogar ein wenig größer..
Hoffe, dass es so besser ist - habe partout keinen Modus gefunden, wie 
sich die Lagen mit hoher Auflösung exportieren oder abspeichern lassen 
(immer nur grobes PDF), also hab ich Screenshots gewählt so groß wie 
mein Monitor es eben zulässt...

> Kann schon sein, dass ich ein bisschen ein unangenehm wirkender
> Zeitgenosse bin, verbal hin und wieder übers Ziel hinausschieße und auch
> wenig empathisch rüber komme. Sieh es mir nach.
Ist bei mir nicht negativ angekommen - wollte aber trotzdem klarstellen, 
dass ich stolz wie eine Henne bin, die zum ersten Mal ein Ei gelegt hat 
;-)

von Markus S. (max4mikro)


Lesenswert?

Thomas S. schrieb:
> Ganz schönes Kopfschmerz-Layout...

Geht mir zwar auch so, dass ich mich frage, wie man das kontrollieren 
soll ohne Knoten in den Sehnerven zu bekommen, aber das Routen hat doch 
KiCAD bzw. dieses Add-On von KiCAD (das unter Linux ganz schön schwer zu 
installieren war) übernommen - insofern dachte ich, das muss so sein?!

von Thomas S. (selli69)


Lesenswert?

Diese Bilder sind wesentlich besser.

Markus S. schrieb:
> dass ich stolz wie eine Henne bin, die zum ersten Mal ein Ei gelegt hat

Glaube ich dir. :) Und ich will auch nicht der sein, der nur am meckern 
ist, doch ohne Kritik kommst Du auch nicht weiter.

Noch kurz zum Layout: Du hast Dir da viele Stellen eingebaut bei denen, 
wenn die Löterei nicht 100% passt, Kurzschlüsse geradezu provoziert 
werden. So Sachen wie eng mit Bahnen um Lötpads herumzufahren oder auch 
mit zwei Leitungen zwischen DIL Pads durch zu fahren kann man zwar 
machen, ist jedoch absolut unnötig. Auch könnte man mit Gatter/Pin-Swaps 
arbeiten. So hätte man die ganze Sache sogar mit einer einseitigen (eine 
Kupferlage) Platine hin bringen können.

Aber egal. Ich bin jetzt raus und melde mich morgen wieder.

von Thomas S. (selli69)


Lesenswert?

Markus S. schrieb:
> Thomas S. schrieb:
>> Ganz schönes Kopfschmerz-Layout...
>
> Geht mir zwar auch so, dass ich mich frage, wie man das kontrollieren
> soll ohne Knoten in den Sehnerven zu bekommen, aber das Routen hat doch
> KiCAD bzw. dieses Add-On von KiCAD (das unter Linux ganz schön schwer zu
> installieren war) übernommen - insofern dachte ich, das muss so sein?!

Ach, das ist das Ergebnis eines Autorouters? Dann wundert es mich nicht. 
Autorouter sind eine Wissenschaft für sich. Ich route meine Layouts 
immer manuell/interaktiv, da mich noch kein Ergebnis eines Autorouters 
zufrieden stellen konnte.

von Markus S. (max4mikro)


Angehängte Dateien:

Lesenswert?

Thomas S. schrieb:
> Noch kurz zum Layout: Du hast Dir da viele Stellen eingebaut bei denen,
> wenn die Löterei nicht 100% passt, Kurzschlüsse geradezu provoziert
> werden. So Sachen wie eng mit Bahnen um Lötpads herumzufahren oder auch
> mit zwei Leitungen zwischen DIL Pads durch zu fahren kann man zwar
> machen, ist jedoch absolut unnötig. Auch könnte man mit Gatter/Pin-Swaps
> arbeiten. So hätte man die ganze Sache sogar mit einer einseitigen (eine
> Kupferlage) Platine hin bringen können.

Sehr interessant: Ich hab mich da als Laie auf die Software verlassen - 
dachte, die optimiert das... Beim Löten hab ich dann selber gemerkt, 
dass von mir Höchstleistung abverlangt wird, nicht nur wegen der 
SMD-Teile, sondern weil die Leitungen eng beeinanderliegen und 
insbesondere die Kondensatoren viel zu breit für die Footprints waren, 
die ich gewählt habe (wohl ein Fehler) und bei den Dip-Schaltern hab ich 
versehentlich Footprints ohne Bohrungen gewählt (nicht gemerkt) und 
musste die Pins der Stecker dann umknicken und kürzen bzw. auf Stelzen 
gestellt auf die Lötstellen auflöten, alles suboptimal.

von Karl K. (karl2go)


Lesenswert?

Das ist witzig!

Ok, Du siehst das vielleicht anders, aber: Das ist witzig!

Du hast den Käfer auf dem Rücken liegen.

Wie auch immer Dein Layout-Programm das geschafft hat, aber der MCP 
liegt nicht auf dem Toplayer (front) sondern auf dem Bottomlayer. 
Dadurch sind alle Pins spiegelsymmetrisch. Das fällt nicht gleich auf, 
weil die Ausgänge (Pin 1-8 und Pin 21-28) auch spiegelsymetrisch liegen, 
aber wenn Du Vcc, GND, Reset und die Adresspins anschaust, siehst Du es.

Bei ICs ist immer "unten links" Pin 1, da wo der kleine Punkt ist. Bei 
Dir im Toplayer ist das aber oben rechts.

Gut, passiert, in einem alten Funkbummi gabs mal eine Anleitung, was man 
tun kann um solche Leiterplatten (beim Selberätzen passiert das, wenn 
man die Folie falschrum auf den Belichter legt) zu retten.

1. Du kannst die Fassung runterpopeln und eine Neue auf der Unterseite 
auflöten. Dann sitzt der MCP unter der Platine und die Symmetrie stimmt 
wieder. Ich würd die Fassung nicht am Stück auslöten, sondern zerstören 
und jeden Pin einzeln auslöten.

2. Du kannst alle Beinchen des MCP in die andere Richtung biegen. 
Riskant, ziemlich sicher brechen welche ab und durch Risse im Gehäuse 
diffundiert Sauerstoff ein und macht Dir den Chip kaputt.

3. Du kannst an jedes Beinchen einen Drahtabschnitt nach oben 
überstehend anlöten, so dass Du den MCP kopfüber mit den Drahtstücken in 
die Fassung stecken kannst.*

Oder Du machst die Leiterplatte neu.

Es kann natürlich sein, dass der MCP kaputt ist. Allerdings gehen Vcc 
und Reset (an Vcc) auf NC bzw. die INT Pins, so dass eigentlich nix 
passiert sein dürfte.

*) Ich finde gerade kein Bild dazu, aber vielleicht erinnert sich jemand 
an den Beitrag im Funkamateur und hat den Artikel noch.

von Karl K. (karl2go)


Lesenswert?

Mit den letzten Bildern ist es klar: Der MCP liegt auf dem Bottom-Layer.

von Thomas S. (selli69)


Lesenswert?

Karl K. schrieb:
> Mit den letzten Bildern ist es klar: Der MCP liegt auf dem Bottom-Layer.

LOL... Hast recht. Der arme Markus. Sowas wünscht man nicht mal seinen 
Feinden...

Wobei den Chip auf die Rückseite zu packen jetzt nicht soo wild ist. Hat 
sogar den Vorteil, dass der DIL von der Oberseite weniger kritisch zu 
löten ist als von unten.. ;)

@Markus: Wennst noch mal eine neue Platine machen willst, dann 
unterstütze ich dich dabei.

von Thomas S. (selli69)


Lesenswert?

Karl K. schrieb:
> Ich würd die Fassung nicht am Stück auslöten, sondern zerstören
> und jeden Pin einzeln auslöten.

Das mit em Zerstören ist immer so ne Sache, bei Sockeln mit gedrehten 
Buchsen geht das ganz gut, bei dem Billigding was er drauf hat zerstört 
man meist mehr als nur den Sockel. Wenn ich so einen Fall habe, dann 
spanne ich die Platine hochkant ein, packe einen einzelnen Kontakt des 
(intakten) Sockels mit einer Mini-Spitzzange oder Pinzette und mache den 
Pin von der anderen Seite heiß. Normalerweise schmilzt der sich relativ 
schnell aus dem Plastik frei und man kann ihn gleichzeitig aus 
Sockelgehäuse und Platine raus ziehen.

von Karl K. (karl2go)


Lesenswert?

Thomas S. schrieb:
> Das mit em Zerstören ist immer so ne Sache...

Da ist doch genug Platz drumrum, die Fassung kann man wegdremeln, so 
dass die Pins noch greifbar stehenbleiben.

von Thomas S. (selli69)


Lesenswert?

Karl K. schrieb:
> die Fassung kann man wegdremeln

Ja Karl, das kann man schon machen. Viele Wege führen nach Rom. Ich 
vermeide es halt immer gern mit der Trennscheibe eines Dremels in die 
nähe von Platinen zu kommen und empfehle das daher auch nicht. Der 
Markus wird das schon hin bekommen, da bin ich mir sicher. Genau so 
sicher wie er bestimmt nicht nur eine Platine produzieren hat lassen. ;)

von Karl K. (karl2go)


Lesenswert?

Thomas S. schrieb:
> Ich
> vermeide es halt immer gern mit der Trennscheibe eines Dremels in die
> nähe von Platinen zu kommen und empfehle das daher auch nicht.

Ich hab letztens mit Proxxon Fräse und Kreuztisch 4x4mm QFN nRF24 Chips 
runtergefräst, um die Chinafakes gegen "echte" Nordic Chips zu tauschen.

So schlimm ist das nicht. Ausgerissene Lötaugen beim Versuch die Fassung 
am Stück auszulöten machen mehr Schaden.

von Thomas S. (selli69)


Lesenswert?

Karl K. schrieb:
> Ich hab letztens mit Proxxon Fräse und Kreuztisch 4x4mm QFN nRF24 Chips
> runtergefräst, um die Chinafakes gegen "echte" Nordic Chips zu tauschen.

Schau, in solchen Fällen werfe ich meine HotAir Rework Station an, heize 
das Bauteil und hebe es mit dem Vakuumpicker ab. Und auf diesem Weg 
kommt das neue auch drauf.

Will sagen: Jeder nach seinen Fähigkeiten, Möglichkeiten und Vorlieben. 
Das ist Vielfalt. Und die gilt es zu bewahren und anzuerkennen. Ich bin 
halt nicht so der hemdsärmelige Typ. Und das soll jetzt keine Wertung 
sein.

> Ausgerissene Lötaugen beim Versuch die Fassung
> am Stück auszulöten machen mehr Schaden.

Da sind wir uns wohl einig.

: Bearbeitet durch User
von Markus S. (max4mikro)


Lesenswert?

omg, Leute, Ihr seid klasse!

Mit Fehlern kann ich sehr gut leben! Zumal, wenn man sie wieder auf den 
Rücken drehen kann (habe vorsichtshalber noch eine zweite Platine 
anfertigen lassen, in Serie wollte ich allerdings nicht gleich gehen ;-)

Überlege mir jetzt in Ruhe beim Frühstück, ob ich zuerst die verkorkste 
Platine zu reparieren versuche oder gleich an die zweite gehe. Ist ja 
auch immer eine gute Übung im Löten besser zu werden - hätte mir vor 
einem Jahr jemand gesagt, dass ich mal so SMD-Teile löten werde, dem 
hätte ich den Vogel gezeigt!

Euch allen ganz herzlichen Dank! Habt mir die Woche, ach was, das 
Frühjahr gerettet!

Euer Gregor Samsa (aka Markus)

von Karl K. (karl2go)


Lesenswert?

Markus S. schrieb:
> ob ich zuerst die verkorkste
> Platine zu reparieren versuche oder gleich an die zweite gehe.

Dreh einfach den Käfer auf den Rücken und mach das mit den Drahtstifte. 
Sieht komisch aus, ist aber erstmal der geringste Aufwand.

von Markus S. (max4mikro)



Lesenswert?

Karl K. schrieb:
> Markus S. schrieb:
>> ob ich zuerst die verkorkste
>> Platine zu reparieren versuche oder gleich an die zweite gehe.
>
> Dreh einfach den Käfer auf den Rücken und mach das mit den Drahtstifte.
> Sieht komisch aus, ist aber erstmal der geringste Aufwand.

Käfer auf dem Rücken (mit Drahtstiften gepinnt) funzt!

Super!

Anbei auch noch Fotos vom Horrorkäfer auf dem Rücken - es diene der
Abschreckung aller Nachahmer! - und vom gesamten Projekt aus Platine,
Raspberry Pi (mit Schraubklemmen-Steckplatine) und den beiden
8-Kanal-Solid State Relays.

Jetzt kann ich beruhigt die zweite Platine löten gleich mit dem IC auf 
dem Rücken, wobei ich überlege, ob ich nicht sofort den IC in die 
Platine stecke und löte (ohne die Billigsockel), denn ob das auf Dauer 
gut geht, wenn diese Sockel so schlechten Kontakt herstellen...

Lediglich der Dip-Schalter scheint einen Fehler zu haben, denn ich 
bekomme lediglich die hex-Adressen 24, 25, 26 und 27 - aber es müssten 
wohl acht Adressen sein (2 hoch 3), also 20-27 (wenn ich mich nicht 
irre). Aber immerhin, das sind ja schon mal mehr als genug für meine 
Zwecke (die Steuerung eines Gewächshauses).

LG Markus

: Bearbeitet durch User
Beitrag #5806942 wurde vom Autor gelöscht.
von Markus S. (max4mikro)


Angehängte Dateien:

Lesenswert?

Habe jetzt die zweite Platine bestückt - mit dem MCP auf der Rückseite - 
und leider ein neues Phänomen, welches ich mir nicht erklären kann:

Die LEDs leuchten spiegelverkehrt zu den Relays (und Kontroll-LEDs der 
Relays), was für mich überhaupt keinen Sinn ergibt (vgl. Foto anbei).

Obwohl insgesamt das Löten noch einmal besser lief als schon bei der 
ersten Platine, hatte ich Probleme bei den Kondensatoren, deren 
Footprints etwas zu klein gewählt wurden. Ich hab's aber mit viel Geduld 
hinbekommen.

Dafür funktioniert diesmal der Dip-Schalter einwandfrei, d.h. ich kann 
alle 8 hex-Adressen abrufen, so wie es sein sollte.

Lediglich die Invertierung der gesamten Schaltung irritiert mich total, 
wie kann das sein? Könnte es sein, dass ich im MCP ein Register 
angesprochen habe, welches die beiden Bänke invertiert? Aber die 
Ausgänge bedienen doch LEDs und die entsprechenden Klemmanschlüsse 
gleichzeitig. Macht irgendwie keinen Sinn!

Vielleicht hat von Euch jemand eine Idee, wie ich das Problem angehen 
und womöglich lösen kann? Ich kann mir das Phänomen noch nicht einmal 
erklären...

LG Markus

: Bearbeitet durch User
von C. U. (chriull)


Lesenswert?

Markus S. schrieb:
> Lediglich der Dip-Schalter scheint einen Fehler zu haben, denn ich
> bekomme lediglich die hex-Adressen 24, 25, 26 und 27 - aber es müssten
> wohl acht Adressen sein (2 hoch 3), also 20-27 (wenn ich mich nicht
> irre).

Wenn vier der acht Adressen funktionieren hat es was mit der Lötstelle 
eines Schalters - anhand der Adressen und deines Programmes solltest du 
ja feststellen können welcher Schalter nicht mitspielt.

Markus S. schrieb:
> Die LEDs leuchten spiegelverkehrt zu den Relays (und Kontroll-LEDs der
> Relays), was für mich überhaupt keinen Sinn ergibt (vgl. Foto anbei).

Hab mir die Schaltung nicht im Detail angesehen, ob das überhaupt 
möglich ist, aber das klingt auf den ersten Blick sehr nach verpolten 
LEDs.

von Karl K. (karl2go)


Lesenswert?

Markus S. schrieb:
> Vielleicht hat von Euch jemand eine Idee, wie ich das Problem angehen
> und womöglich lösen kann? Ich kann mir das Phänomen noch nicht einmal
> erklären...

Echt jetzt?

Du hast doch selbst die linke LED-Reihe der rechten Buchsenreihe und 
umgekehrt zugeordnet. Warum auch immer, aber isso:

https://www.mikrocontroller.net/attachment/409470/front_3d.png

Natürlich leuchten dann die LED rechts, wenn die Relais links aktiv 
sind.

von Markus S. (max4mikro)


Lesenswert?

Karl K. schrieb:
> Du hast doch selbst die linke LED-Reihe der rechten Buchsenreihe und
> umgekehrt zugeordnet. Warum auch immer, aber isso:
>
> https://www.mikrocontroller.net/attachment/409470/front_3d.png
>
> Natürlich leuchten dann die LED rechts, wenn die Relais links aktiv
> sind.

Du hast recht - jetzt sehe ich es selbst auch. Ich bin immer vom 
Schaltplan ausgegangen; auf dem Front-Layer sieht man es, wenn man 
hinschaut.

Hm... Hätte also tatsächlich die Layer kontrollieren müssen und nicht 
davon ausgehen sollen, dass der PC das schon vernünftig macht. Wahnsinn!

Nochmals Danke!

LG Markus

von Karl K. (karl2go)


Lesenswert?

Markus S. schrieb:
> Hätte also tatsächlich die Layer kontrollieren müssen und nicht
> davon ausgehen sollen, dass der PC das schon vernünftig macht.

Entschuldigung, aber das Placing hast Du selbst gemacht. Das kannst Du 
nicht dem Autorouter unterschieben. Da hast Du J3 und J4 auf die 
falschen Seiten gesetzt.

Wenn Du sowas nochmal machst: Die 541 zur Ansteuerung der LED kannst Du 
Dir sparen. Für die LED reichen 1k5 bis 3k3 auch aus. Dann kannst Du die 
direkt parallel zu den Ausgängen schalten und neben die Steckerleisten 
platzieren.

Und aus den 3.3V vom Raspi solltest Du nicht zuviel Strom ziehen, der 
3.3V Spannungsregler auf dem Raspi ist nicht sehr potent. Wenn da noch 
mehr dazu kommt, besser einen extra 3.3V Spannungsregler nehmen, dessen 
3.3V aber nicht mit den 3.3V des Raspi verbinden.

von Markus S. (max4mikro)


Lesenswert?

Karl K. schrieb:
> Entschuldigung, aber das Placing hast Du selbst gemacht. Das kannst Du
> nicht dem Autorouter unterschieben. Da hast Du J3 und J4 auf die
> falschen Seiten gesetzt.

Nehm ich gerne auf meine Kappe. So oder so, blöd (von mir) zu glauben, 
der PC wird es schon richten (oder sich auch nur darauf zu berufen, die 
Schuld läge beim PC).

Ich frage mich trotzdem, ob das Schlamassel nicht damit seinen Ursprung 
genommen hat, dass ein Schaltplan plötzlich zwei Ebenen bekam? Und 
besonders glücklich fand ich bei der Anordnung auch nicht, dass der 
MCP-IC die beiden Bänke nicht auf einer Seite hat - somit müsste man ihn 
senkrecht zur gedachten Achse der beiden LED-Reihen anordnen, um eine 
symmetrische Verteilung der Laufbahnen zu haben, wozu er aber ganz schön 
lang ist, also unnötig Platz verbraucht, oder eben die 8 
gegenüberliegenden Bahnen um ihn herumführen, was nicht sehr elegant 
ist.

Wie auch immer, ich bin ja schon dankbar, dass ich es überhaupt 
hinbekommen habe - und aus den Fehlern habe ich ne Menge gelernt. Genau 
so wird mir das hoffentlich nie wieder passieren!

Karl K. schrieb:
> Wenn Du sowas nochmal machst: Die 541 zur Ansteuerung der LED kannst Du
> Dir sparen. Für die LED reichen 1k5 bis 3k3 auch aus. Dann kannst Du die
> direkt parallel zu den Ausgängen schalten und neben die Steckerleisten
> platzieren.

So hatte ich das ursprünglich auch vor - nur habe ich dann einen 
Schaltplan im Netz gefunden, der es mit den beiden Verstärkern 
vorgemacht hat, so dass ich davon ausgegangen bin, dass man das besser 
so machen sollte...

Also gar nicht die 3V3 vom Raspi nehmen, sondern genauso wie die 5V von 
einer externen Spannungsquelle - da habe ich eine im Schaltkasten, die 
7A hat, das sollte für meine Zwecke mehr als ausreichen.

Der Vorteil von Deinem Vorschlag wäre auch, dass die Platine somit noch 
kleiner werden könnte... Danke!

: Bearbeitet durch User
Beitrag #5812779 wurde vom Autor gelöscht.
von Markus S. (max4mikro)


Angehängte Dateien:

Lesenswert?

Hier ein Foto des fertigen Moduls, so wie ich es mit Hutschienen-Clips
auf der Rückseite des Plexiglases, auf dem ich die Module montiert habe,
in einen Verteilerkasten einbauen werde.

Es funktioniert alles hervorragend und soweit hinreichend stabil - dass
die LEDs seitenverkehrt angezeigt werden (aufgrund meines
Lay-Out-Fehlers), damit kann ich gut leben; vorsichtshalber habe ich die
Platine beschriftet, so dass ich das hoffentlich auch noch in Zukunft
beachten werde.

Allen, die mir so fachkundig geholfen haben, nochmals herzlichen Dank!

LG Markus

von Thomas S. (selli69)


Lesenswert?

Schön zu sehen, dass Du dein Projekt erfolgreich verwirklichen konntest 
und Du das Ergebnis hier präsentierst. Darüber freut sich jeder, der 
mitgeholfen hat.

Etwas schade finde ich jedoch diese Bemerkung:

> soweit hinreichend stabil

Soll das heißen, dass es nicht so stabil läuft wie Du es dir vorgestellt 
hast? Wenn ja, vllt können wir dir da noch ein wenig weiter helfen.

Ich würde dem Pi noch eine USV spendieren, das spart Dir den Ärger mit 
Corruptions der SD-Karte bei Stromausfall. Ich nehme hierfür immer 
diese:

http://www.pimodulescart.com/shop/item.aspx?itemid=50

Damit hast du praktisch keinerlei Aufwand und kannst sogar dein Hat mit 
den Klemmen weiter benutzen.

BTW: Der Herr hat Kabelbinder und Aderendhülsen nicht geschaffen um 
Hobbybastler zu ärgern.. ;)

: Bearbeitet durch User
von Markus S. (max4mikro)


Lesenswert?

Thomas S. schrieb:
> Schön zu sehen, dass Du dein Projekt erfolgreich verwirklichen konntest
> und Du das Ergebnis hier präsentierst. Darüber freut sich jeder, der
> mitgeholfen hat.
>
> Etwas schade finde ich jedoch diese Bemerkung:
>
>> soweit hinreichend stabil
>
> Soll das heißen, dass es nicht so stabil läuft wie Du es dir vorgestellt
> hast? Wenn ja, vllt können wir dir da noch ein wenig weiter helfen.

Danke für Deine aufmerksame Nachfrage! Nein, das ist eine 
missverständliche Formulierung meinerseits: Ich wollte vorsichtig 
festhalten, dass ich das Modul bisher ja nur mit geringer Last und auch 
nur für relativ kurze Zeit testen konnte, so dass mir das bisherige 
Ergebnis vielversprechend erscheint (=> hinreichend), um es in der 
Praxis zu verwenden bzw. in situ zu testen. Ich wollte damit eine 
leichtfertige Formulierung wie "absolut stabil" vermeiden, denn die 
könnte schnell überholt sein ;-)

> Ich würde dem Pi noch eine USV spendieren, das spart Dir den Ärger mit
> Corruptions der SD-Karte bei Stromausfall. Ich nehme hierfür immer
> diese:
>
> http://www.pimodulescart.com/shop/item.aspx?itemid=50

Danke für den Hinweis, dem ich bereits nachgegangen bin, das ist sicher 
eine gute Ergänzung.

> BTW: Der Herr hat Kabelbinder und Aderendhülsen nicht geschaffen um
> Hobbybastler zu ärgern.. ;)
Du wirst lachen, ich bin heute morgen früh aufgewacht und habe mich 
gefragt, ob Aderendhülsen nicht nachgerüstet werden sollten - für die 
strom zu- und abführenden dickeren Kabel habe ich das sowieso geplant, 
aber die extrem dünnen Leitungsdrähte zu den Relais hin, da wäre es 
schlecht möglich, die haben ja noch nicht einmal 1mm Dicke bzw. da habe 
ich mich sowieso gefragt, ob ich die verwenden darf (sind halt so schön 
bunt, und ja, ich wollte die noch nach hinten wegführen, damit kein so 
Kabelsalat zu sehen ist, also Stichwort Kabelbinder - danke!)

LG Markus

von Karl K. (karl2go)


Lesenswert?

Markus S. schrieb:
> aber die extrem dünnen Leitungsdrähte zu den Relais hin

Guckst Du TME, die haben AEH auch für kleine Querschnitte. Und scheue 
Dich nicht, 100er Beutel zu kaufen, das Zeug wird alle.

Eine brauchbare Presszange ist diese: 
https://www.amazon.de/gp/product/B01J5KTA06/ Ein Knipex Nachbau, ich 
kauf sonst auch Knipex, aber deren Presszangen sind halt sauteuer.

Ich hab auch jahrelang mit der hier 
https://www.pollin.de/p/aderendhuelsen-presszange-165-mm-500367 
gepresst, geht auch.

von Markus S. (max4mikro)


Lesenswert?

Karl K. schrieb:
> Markus S. schrieb:
>> aber die extrem dünnen Leitungsdrähte zu den Relais hin
>
> Guckst Du TME, die haben AEH auch für kleine Querschnitte. Und scheue
> Dich nicht, 100er Beutel zu kaufen, das Zeug wird alle.

Da finde ich nur Endhülsen ohne Isolierung - oder kann ich darauf 
verzichten?

von Thomas S. (selli69)


Lesenswert?

Markus S. schrieb:
> extrem dünnen Leitungsdrähte

Wenn das keine Litzen sind sondern Drähte, dann brauchts keine ADHs. Ich 
würd jedoch keine Drähte verwenden, denn die bergen immer die Gefahr, 
dass wenn nicht peinlichst genau mit einer exakt eingestellten 
Abisolierzange abisoliert und somit damit der Draht angekerbt wurde ein 
Bruch des Drahtes an der Kerbe provoziert wird.

Besorg dir lieber ein paar Meter 10-poliges 0,14mm² LIYY oder LIYCY 
Steuerkabel, welches sich super zum Schlachten für für solche 
Anwendungen eignet. Einfach die benötigte Länge abschneiden und aus dem 
Mantel ziehen. Dazu die von Karl beschriebenen ADHs + Presszange. Die 
Litzen in den Steuerleitungen sind auch schön bunt. :)

von Karl K. (karl2go)


Lesenswert?

Markus S. schrieb:
> Da finde ich nur Endhülsen ohne Isolierung

Doch, gibts auch mit Isolierung, hab ich schon gekauft.

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.