Forum: Platinen Platinenentwurf für Heizungsregelung mit Raspberry Pi - Kritik?


von Martin T. (martin5)



Lesenswert?

Hallo zusammen,

ich habe vor, meine aktuelle Heizungsregelung mit der UVR1611 
http://ta.co.at/de/produkte/uvr1611/frei-programmierbare-regelung-uvr1611.html 
aufgrund der Speicherbegrenzung mit einem Raspberry Pi zu ersetzen. 
Dafür beschäftige ich mich jetzt seit ein paar Wochen das erste Mal mit 
Mikroelektronik und habe meine ersten beiden Platinen entworfen. Hätte 
ich vorher gewusst, auf was ich mich da einlasse... War ein 
Heidenaufwand, aber ich habe schon eine Menge dabei gelernt :-)

Ich würde euch gern die Platinen vorstellen und freue mich auf 
Verbesserungsvorschläge sowohl für die Schaltpläne als auch für das 
Layout. Ich habe Schaltung und Board als Images und als Eagle-Files 
angehängt, falls ihr direkt darin rumfummeln wollt.

In diesem Beitrag beginne ich mit der Interface-Platine, die als erstes 
hinter den Raspi gehängt werden soll. Die Relais-Treiber-Platine werde 
ich im nächsten Beitrag vorstellen.

Die Kommunikation mit dem Raspi soll ausschließlich über I2C erfolgen. 
Die schaltenden Bausteine (MCP23017) habe ich über einen N-Kanal-Mosfet 
an ein Schaltsignal gekoppelt, damit die Schaltungen nicht weiterlaufen, 
wenn der Raspi abbstürzt, von der Spannungsversorgung getrennt wird oder 
ein Update bekommt.

Die 3,3 V des Raspi setze ich über einen TXS0104D auf 5 V bidirektional, 
auch wenn das für die aktuellen Aufgaben (I2C, Schaltsignal, Interrupt) 
nicht zwingend notwendig wäre, weil z. B. die aktuellen Boards nur als 
I2C-Slaves arbeiten. Ich möchte das System aber offen halten für weitere 
Ideen.

Die vielen LEDs sollen als Schaltzustandsanzeige dienen. 8 Ports des 
dritten MCP23017 dienen als einfache Schalteingänge. Daran sollen z. B. 
Funkschalter angeschlossen werden.

Als Verpolschutz habe ich einen P-Kanal-Mosfet eingesetzt. Der I2C-Port 
wird über den Buffer PCA9600 wieder herausgeführt.

So, jetzt Feuer frei :-)

Martin

von Martin T. (martin5)



Lesenswert?

So, hier die zweite Platine. Ziel ist es, das 16-Fach-Relaisboard von 
Sainsmart 
http://www.sainsmart.com/arduino-compatibles-1/relay/16-channel-relay/16-channel-12v-relay-module-for-pic-arm-avr-dsp-arduino-msp430-ttl-logic.html 
anzusteuern.

Da die Relais gegen Masse geschaltet werden, der MCP23017 im stromlosen 
Zustand die Ports gegen Masse schaltet und damit die Relais alle 
schalten würde, habe ich die zwei ULN2803A dazwischen gesetzt.

Das Board wird wieder über einen gepufferten I2C angebunden. Die 
Stromversorgung kann entweder über den Bus oder über eine externe 
Spannungsquelle erfolgen. Hach, jetzt wo ich darüber schreibe, könnte 
ich das auch über Transistoren schalten....

Danke schon mal im Voraus für eure Kommentare!

Martin

von Marcus W. (marcusaw)


Lesenswert?

Kommt das Layout aus nem Autorouter oder ist das selbst geroutet? Wenn 
das deine erste Platine ist, Respekt!

EDIT: Wie willst du denn den CON1 löten, wenn du keine VIAs setzt?

: Bearbeitet durch User
von klausr (Gast)


Lesenswert?

Marcus W. schrieb:
> Kommt das Layout aus nem Autorouter oder ist das selbst geroutet? Wenn
> das deine erste Platine ist, Respekt!

Hm... ich tippe zumindest teilweise Autorouter. Würde man die 
Leiterbahnen unterhalb von R17-R31 so von Hand routen?
http://www.mikrocontroller.net/attachment/192502/RPi-Interfaceboard.brd.png

von Marcus W. (marcusaw)


Lesenswert?

Auweia, das hab ich übersehen ;)

von Martin T. (martin5)


Lesenswert?

Marcus W. schrieb:
> Kommt das Layout aus nem Autorouter oder ist das selbst geroutet? Wenn
> das deine erste Platine ist, Respekt!
>
> EDIT: Wie willst du denn den CON1 löten, wenn du keine VIAs setzt?

Ähmmm, das Grüne um den Pins sind keine Vias?

von Martin T. (martin5)


Lesenswert?

klausr schrieb:
> Marcus W. schrieb:
>> Kommt das Layout aus nem Autorouter oder ist das selbst geroutet? Wenn
>> das deine erste Platine ist, Respekt!
>
> Hm... ich tippe zumindest teilweise Autorouter. Würde man die
> Leiterbahnen unterhalb von R17-R31 so von Hand routen?
> http://www.mikrocontroller.net/attachment/192502/RPi-Interfaceboard.brd.png

Nee, das habe ich tatsächlich alles per Hand geroutet, weil ich keine 
bessere Idee hatte, genug Platz für den IC3 zu bekommen. Ich war 
heilfroh, als ich alle Bahnen untergebracht hatte. Den IC3 hätte ich 
alternativ vielleicht weiter nach rechts rücken können, bin mir aber 
nicht sicher, ob ich dann noch mit den Pullups gut hingekommen wäre.

von ... (Gast)


Lesenswert?

bist du dir sicher was die Beschaltung des PCA9600 angeht?
Ich würde dort einen PCA9306 einsetzen.

von Martin T. (martin5)


Lesenswert?

... schrieb:
> bist du dir sicher was die Beschaltung des PCA9600 angeht?

Dachte ich zumindest. Was siehst du da als fehlerhaft an?


> Ich würde dort einen PCA9306 einsetzen.

Der PCA9306 ist "nur" ein Voltage Level Shifter und kein Buffer. Das 
Level Shifting übernimmt bereits der TXS0104D, da ich neben dem I2C auch 
noch das Steuersignal und das Interruptsignal zwischen 3,3 V und 5 V 
umsetze. Den PCA9600 habe ich aufgrund des Artikels I2C als Hausbus 
ausgewählt. Gibt da bestimmt auch noch ein paar andere. Bei Vorschlägen 
würden mich natürlich die konkreten Vorteile interessieren.

VG, Martin

von someone (Gast)


Lesenswert?

Kleiner Tip: Jede Kupferfläche auf deiner Platine sollte mit einem 
Potential verbunden sein (vielleicht mit Ausnahme von Beschriftungen). 
Irgendwelche Kupferinseln zwischen Leitungen sind kontraproduktiv und 
helfen allerhöchstens, die Herstellung der Platine mit einem 
ausgesprochen schlechten Ätzprozess zu ermöglichen. Das wird bei dir 
aber sicher nicht der Fall sein, also ist es sinnvoll, die unverbundenen 
Kupferflächen zu entfernen.
Falls du die Platinen fertigen lässt, solltest du die Schrift auf 
"vector" umstellen. Nur so ist diese genau als Menge von Liniensegmenten 
definiert, ansonsten kann es Fertigungsprobleme geben.

von ... (Gast)


Lesenswert?

Martin T. schrieb:
> ... schrieb:
>> bist du dir sicher was die Beschaltung des PCA9600 angeht?
>
> Dachte ich zumindest. Was siehst du da als fehlerhaft an?
Ok, sorry, ich hatte nur RX und TX verbunden gesehen. Ist schon ok so 
nach Datenblatt.

Zur sicheren Fertigung der Leiterplatte noch TOP und BOT jeweils auf die 
Kupferseite.

von Martin T. (martin5)



Lesenswert?

Vielen Dank an alle für die Hinweise!

Ich habe jetzt folgende Änderungen vorgenommen:

1) Kupferflächen an Masse gelegt: Ich habe kurz überlegt, ob ich die 
TOP-Fläche an PWR anschließe. Aber durch den Verpolschutz bringt das ja 
gar nix. Ist es ok, wenn beide Flächen auf GND geschaltet sind?

2) Schrift in Vector geändert und TOP/BOT in die jeweilige Kupferfläche 
geschrieben.

Kann mich noch jemand aufklären, was Marcus W. mit den VIAs für CON1 
meint? Ich bin da etwas verunsichert.

VG, Martin

von Andy P. (Gast)


Lesenswert?

Ein paar Einwände, zumindest als Denkanstoß tauglich:
1. R41-R48 wären evtl besser als SIL auf der Platine. Es ist schmaler, 
kostet dich aber Routingplatz auf der Bottomseite wegen der 
ThrouthHole-Bauweise (gibts sowas nicht sogar in SMD?)

2. Die Adressjumper könntest du doch zweipolig statt dreipolig machen - 
einfach per PullUp-Widerstand.

3. Die LED-Vorwiderstände in oberster Reihe (R9-R30) auf die andere 
Seite legen.

4. den TXs kannst problemlos näher an de PCA schieben. Das Via einfach 
direkt unter Pi 7 des TXS, eenso die Widerstände links vom TXS. 
Ergebnis, kein kleines 2,5mm Montagelochmehr sondern etwas mehr 
"Fleisch"

5. Schau mal nach IC2 Pin28 (mittelster MCP, Pin rechts oben). Du gehst 
aus dem Pad auf 11 Uhr raus um das letzlich in Richtung zwei Uhr 
wegzugehen. Und alle anderen Bahnen müssen rundherum. Ebenso IC1 Pin 10.

6. bei der verwendeten Leiterbahnbreite (ich schätze mal 6-8mil) kommst 
du bei dem einen oder anderen PCB-Fertiger in die Nähe der 
Standardlimits (Dünner geht gegen Aufpreis, aber wozu?). Das in 
Kombination mit dem schrägen "rauskommen" aus den Pads könnte bei de 
Fertigung Probleme geben. Da das deine erste Platine ist, würde ich es 
an deiner Stelle nicht drauf ankommen lassen.

7. Da du einen Raspi hast, kannst auch nach Lust und Laune (je nach 
KnowHow) die sendenden Bits so verwürfeln, daß du die auszugebenden Pins 
paarweise tauschen kannst. Hier steckt viel Potential!

von Andy P. (Gast)


Lesenswert?

Relaisplatine:
1. CON1-VIAs- zunächst mal sehe ich da nette grüne = Beidseitige 
Restringe zum Löten. (die könnten aber größer sein. schau mal nach 
con-pinhead.lbr). Vielleicht hat sich Marcus nur verguckt oder er meint 
die recht dünnen Ringe.
2. dreh mal den MCP um 180Grad. Tausch die Positionen den beiden ULNs 
und belege CON1 um. Na?

3. Dabei kannst du gleich mal die Bahnen zwischen ULN und CON auch in 
den Raum zwischen die ChipPinReihen legen.

4. du hast mit Q1 und Q2 kleine SOT-23-FETs, aber Widerstände in 0207?
Wenn R1 und R4 in SMD 1206 benutzt werden, steht R1 nicht mehr über die 
Anschlußleiste links hinaus und die PWR-LED kann Richtung Süden ziehen. 
dabei gleich X2 und JP1 nach unten.

5. Druck dir das mal in Originalgröße auf Papier. Würdest du sicher 
genug mit dem Lötkolben sein um beispielsweise bei IC3 PIN 12 keinen 
kurzen mit Pin 11 zu machen wenn de Lötstoplack fehlt?

von Marcus W. (marcusaw)


Lesenswert?

Marcus hat sich verkuckt:) hab nicht gesehen, dass das beidseitig grün 
war :)

von Chris (Gast)


Lesenswert?

Das 16-fach Relais Modul sieht mir aus als würede es für jeden Kanal
einen Opto haben und dann auf zwei ULN2008 rausgeht.
Dies bedeutet, daß du nur einen expander brauchst und kein ULN

von Martin T. (martin5)


Lesenswert?

Vielen Dank, besonders an Andy. Das sind ja wirklich noch eine ganze 
Menge interessante Hinweise. Ich werde es diese Woche wohl nicht mehr 
schaffen, die Platinen zu überarbeiten, aber hier schon mal ein paar 
Antworten.

Andy P. schrieb:
> Die LED-Vorwiderstände in oberster Reihe (R9-R30) auf die andere
> Seite legen.
Das hatte ich mich bisher nicht so recht getraut. Ich werde es umsetzen, 
spart ja auch noch jede Menge Durchkontaktierungen.

> Das Via einfach direkt unter Pi 7 des TXS
Hatte ich mich auch nicht getraut. War mir nicht sicher, ob man direkt 
unter einem SMD-Pin ein Via setzen sollte/kann. Werde ich auch mal 
probieren.

> Schau mal nach IC2 Pin28 (mittelster MCP, Pin rechts oben). Du gehst
> aus dem Pad auf 11 Uhr raus um das letzlich in Richtung zwei Uhr
> wegzugehen. Und alle anderen Bahnen müssen rundherum.
Nur wegen der Schönheit. Die anderen Bahnen müssen aber trotzdem um den 
Pin herum, weil es sonst Kreuzungen geben würde.

> Ebenso IC1 Pin 10.
Die Bahn könnte ich wirklich links am Kondensator vorbeiführen.

> verwendeten Leiterbahnbreite (ich schätze mal 6-8mil)
Minimale Leiterbahnbreite ist 10 mil. Wäre das auch problematisch?

> Da du einen Raspi hast, kannst auch nach Lust und Laune (je nach
> KnowHow) die sendenden Bits so verwürfeln, daß du die auszugebenden Pins
> paarweise tauschen kannst. Hier steckt viel Potential!
Darüber hatte ich auch lange nachgedacht. Hier habe ich der 
verständlichen und wartbaren Software den Vorrang gegeben und dachte, 
ein mal richtig Grips ins Layout stecken und später Verwirrungen 
vermeiden. Vielleicht gibt es noch andere Interessenten für die 
Platinen, oder ich stelle irgendwann mal auf einen uC um oder, oder 
oder.

Andy P. schrieb:
> dreh mal den MCP um 180Grad. Tausch die Positionen den beiden ULNs
> und belege CON1 um. Na?
Also da fehlt mir echt die Vorstellungskraft. Würde ich damit die Relais 
schön geordnet von GPA0 bis GPB7 durchschalten können? Auch hier würde 
ich grundsätzlich der wartbaren Software den Vorrang geben, es sei denn, 
ich handele mir echte Probleme mit dem Routing ein.

> du hast mit Q1 und Q2 kleine SOT-23-FETs, aber Widerstände in 0207?
> Wenn R1 und R4 in SMD 1206 benutzt werden, steht R1 nicht mehr über die
> Anschlußleiste links hinaus und die PWR-LED kann Richtung Süden ziehen.
Korrekt. Das liegt einfach darin begründet, dass die Relaisplatine die 
erste war, die ich layoutet habe und ich mich wegen mangelnder 
SMD-Erfahrung von SMD fernhalten wollte. Als ich dann zum Interfaceboard 
kam, hatte ich ohne SMD mit der beschränkten Eagle-Free-Version keine 
Chance mehr und habe mich auf das Wagnis SMD eingelassen. Wenn ich jetzt 
auf SMD umstelle, dann kann ich meine frisch gelieferte 
Widerstandssammlung nicht mehr gebrauchen  Na, so teuer waren sie auch 
wieder nicht. Und ich könnte sie immerhin noch für's Prototyping 
verwenden...

> dabei gleich X2 und JP1 nach unten.
Durch verschieben der ICs nach oben könnte ich den nötigen Platz für
> Würdest du sicher genug mit dem Lötkolben sein um beispielsweise bei IC3
> PIN 12 keinen kurzen mit Pin 11 zu machen wenn de Lötstoplack fehlt?
schaffen.

Chris schrieb:
> Das 16-fach Relais Modul sieht mir aus als würede es für jeden Kanal
> einen Opto haben und dann auf zwei ULN2008 rausgeht.
> Dies bedeutet, daß du nur einen expander brauchst und kein ULN
Die Optos werden nach Masse geschaltet. Damit die Relais bei 
Stromlosigkeit des MCP nicht alle plötzlich schalten, muss ein NPN 
dazwischen. Der ULN hat sich da einfach angeboten.

Wenn ich die Platinen umgearbeitet habe, melde ich mich wieder.

VG, Martin

von Martin T. (martin5)



Lesenswert?

Hallo zusammen,

ich habe die beiden Platinen nochmal überarbeitet und viele von euren 
Vorschlägen übernommen und würde mich freuen, wenn ihr euch die Layouts 
nochmal anseht. Wenn ich ehrlich bin, kann ich nicht mehr.... Ich habe 
jedes Layout mehrfach teils erheblich überarbeitet. Ich will gar nicht 
wissen, wie viele Stunden dabei drauf gegangen sind. Schön ist anders, 
aber irgendwie sehe ich im Moment den Wald vor lauter Bäumen nicht mehr. 
Wenn ihr da noch Ideen habt, bitte her damit. Ich bau die Dinger auch 
nochmal um...

Aber jetzt mal zu den Änderungen.

RPi-Interfaceboard
==================
- Die Pullups R41-R48 konnte ich entfernen, da der MCP interne Pullups 
besitzt. Den neu gewonnenen Platz habe ich zwischen den MCPs aufgeteilt, 
um das Routing zu den LEDs vereinfachen zu können (Wellenmuster). Die 
weiteren Bauteile habe ich neu auf die frei gewordenen Flächen 
aufgeteilt.
- Die Vorwiderstände für die untere LED-Reihe habe ich auf die 
Unterseite gelegt.

Relaistreiber
=============
- Sollte der Treiber stromlos werden, trenne ich jetzt die Masse des MCP 
von der des Relaisboards mit einem P-Kanal-Mosfet. Damit haben sich die 
ULNs erübrigt und ich konnte jede Menge Bahnen einsparen sowie das Board 
verkleinern.
- Die 0207-Widerstände habe ich durch 1206 SMDs ersetzt.


Bei beiden Boards habe ich die Kupferflächen auf der Unterseite auf GND 
und auf der Oberseite auf Power gelegt. Ist das so sinnvoll?

VG, Martin

von Andy P. (Gast)


Lesenswert?

Also meine(!) größen Bedenken habe ich noch immer mit den schrägen 
Rausgehen aus den Kontakten + dem dadurch unweigerlich knappen 
Vorbeischrammen am Nachbarpin. Z.B. könntest du IC1-3 Pin 20-23 durch 
den Chip durch nach links raus und die dichten Bahnen unter dem Chip 
auflösen. Dadurch kannst du die LED-Phallax oben ca 5 mm runter nehmen 
und so Platinenplatz (=Fertigungskosten) sparen. Weiterhin können die 
Montagelöcher oben in Höhe zw. den beiden LED-Reihen rein.
Auch könntest du dich mit dem Konzept eines PullUp-Widerstands für A1-A3 
der MCPs erwärmen, das würde jeweils den Pin nach Plus aufheben (okay, 
dafür hättest du dann aber mehr Lötarbeit durch die SMD-Widerstände).
Auch ein schönes Lehrbeispiel: SCL und SDA laufen quer unter den Chips 
so unnötig dicht, daß zwischen ihnen keine Masseverbindung ist. Klar ist 
ein "wir kippen zum Schluß einfach eine Massefläche über den Rest der 
Platine" eine bequeme (und faule!) Methode, aber hier rächt sich das. 
Wenn du IC1-3 Pin 10 nach oben und ic1-3 nach unten zwischen den 
Chipbeinen durchführst, hat der I2C-Bus auch dort einen besseren Schirm. 
Das sollten auch andere beachten, die sorglos nach dem Motto "die 
Polygonfunktion wird's schon richten" layouten! Sowas führt z.B. zu 
solchen Schlampigkeiten wie Pin1 von JP1-3 nicht anzubinden.
Wenn dur R51 hochkant setzt, und Plus neben Pin20 langziehst, kannst du 
den kleinen C6 aus der Ecke rauskramen. Bei der Gelegenheit kannst du 
auch das Via vom Lötpad wegziehen, das 1.arbeitet sich nicht gut und 2. 
ist auch technisch nicht ganz sauber.
R55 kannst du auch umdrehen, und statt über die SDA-Klemme direkt mit 
dem PCA über Bottom verbinden. Dmit kann die Montagebohrung neben die 
Klemmleiste geauso wie die Bohrung links unten weiter nach innen kann.

Analog gilt das auch für die Relaisplatine. Die Leitung an Pin 7 des MCP 
durch den Chip bis auf die Seite des PCA gelegt, sollte dir genug Luft 
geben um die an Pin 2 (und Pin 4?) unter dem Chip statt neben R4 zu 
ziehen. Wenn du Q3 um 90grad nach links drehst, klappt das bestimmt. 
Dabei kannst du gleich die Leitung Pin10-Q3 aud dem Weg räumen für die 
blauen Leitungen unter dem Chip. In der Ecke haben wir noch R3 mit 
seinen zwei Layerwechsel. Stell ihn hochkant und näher an R2, dann 
"platzt der Knoten". Die Montagelöcher hben auch auf der "Innenseite" 
des CON1 Platz (neben PowerLED und Q3, ähnliches gilt für die Löcher 
links. Wenn du alles weiter zusammenrückst (X2, X3), sind bei der 
Platine nochmal 5mm Breite+Höhe wegkürzbar.
Und bitte auch auf der Platine die Vias neben die Pads.

Daß du oben +5V als Polygonfläche genommen hast, ist aus elektrischer 
Sicht weniger von Belang. Erst wenn die Unterlegscheibe der 
Befestigungsschraube den Lötstopplack zerkratzt, darfst du fluchen :)

von Andy P. (Gast)


Lesenswert?

kleine Nachbesserung: "...aber hier rächt sich das.
Wenn du IC1-3 Pin 10 nach oben und ic1-3 Pin13 nach unten zwischen den 
Chipbeinen durchführst, hat der I2C-Bus auch dort einen besseren 
Schirm...."

von Thomas T. (knibbel)


Lesenswert?

Hallo,

Du hast die 100nF-Abblockkondis an den ICs nicht korrekt angebunden. Du 
solltest mit der Versorgungsspannung erst zu dem Kondensator und von 
diesem dann ausschließlich an den VCC-Pin vom IC. Und die Leitung vom 
Kondensator zum VCC-Pin nicht noch für andere Sachen verwenden (z.B. als 
Versorgung für andere ICs, etc.)

Siehe auch hier:
http://www.lothar-miller.de/s9y/categories/14-Entkopplung

Gruß,
Thomas

von Martin T. (martin5)



Lesenswert?

So, hier die neuen Versionen. Ich habe soweit alles umgesetzt, was 
angesprochen wurde, bis auf die Pullups für die I2C-Adressierung.

Die beiden Kupferflächen liegen jetzt auf GND.

VG, Martin

von Andy P. (Gast)


Lesenswert?

Na bitte, passt doch schon.
Wenn du unbedingt nochwas ändern willst: Relaisplatine MCP Pin 21 und 
22: die blauen Leitungen unter dem Chip durch nach oben unter R4 lang, 
dann ist das Gedränge unter dem Chip weg. Dabei kannst du die recht nah 
beieinanderliegenden roten und blauen Leitungen unter dem Chip etwas 
mehr Abstand untereinander gönnen.
Wenn du da noch mehr Platz sparen möchtest(!): Den weißen 
Bestückungsdruck nach innen verschieben oder in Kupfer auf die 
Bottomseite schreiben. Die möglichen Grenzen sind die 
Konnektorengehäuse. Allerdings sind nur noch Einsparungen im Bereich 
ca.2mm drin, wenn du nicht völlig andere (teurere und schwer 
beschaffbare) Bauteile verwenden willst: z.B. Pinheader im 1,27mm-Raster 
nebst Stecker + Kabel o.ä. Das lohnt also kaum.

Sehr viel besser machen das langjährige Hobbyisten auch nicht. Die 
Platine kannst du also auch Profis zeigen, ohne verhauen zu werden.
Du hast jetzt eine Platine, die nicht unötig Platz verschwendet, dabei 
dennoch genug Raum für deinen Lötkolben lässt und die Signale relativ 
geschützt verteilt - mehr gibts nicht zu dem Preis.
Okay, Layoutperfektionisten werden noch 99 andere Schönheitsfehler 
finden,  aber das ist dann schon oftmals reine Geschmackssache.
Wenn du das mal mit den Bildern deiner ersten Version vergleichst...

von Techi (Gast)


Lesenswert?

Funktioniert der PCA auch über lange Leitungen in der Praxis?

von Martin T. (martin5)


Angehängte Dateien:

Lesenswert?

@Andy P.: Mensch Andy, da hast du mich gestern aber noch glücklich 
gemacht. Konnte wegen freudiger Erregung gar nicht schlafen :-). Deinen 
Vorschlag mit Pin 21 und 22 habe ich noch umgesetzt und mir gedacht, Pin 
23 wäre doch auch noch ein Kandidat.

@Techi: Keine Ahnung, ist mein erster Einsatz. Habe aber bisher nichts 
Negatives dazu gelesen/gehört.

VG, Martin

von ... (Gast)


Lesenswert?

wenn du jetzt noch die Säurefallen an X3 und Q2 weg machst, wird dich 
der Leiterplattenhersteller lieben.

von Arno (Gast)


Lesenswert?

Eins würde ich jetzt noch machen: Alle Leiterbahnen (bei denen es geht) 
noch etwas breiter.

Weniger wegen der Fertigung, sondern vielmehr, weil das ja ein Prototyp 
ist. Es kann also sein, dass du irgendwo noch mal schnell irgendwas mit 
anlöten willst - dann wirst du dich über breitere Bahnen freuen.

Speziell auf der Relais-Treiber-Platine ist da auch noch sehr viel Luft.

MfG, Arno

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

... schrieb:
> wenn du jetzt noch die Säurefallen an X3 und Q2 weg machst, wird dich
> der Leiterplattenhersteller lieben.

Was ist eine "Säurefalle"?

Edit: Danke, schon gefunden...

man lernt doch nie aus...

: Bearbeitet durch User
von Martin T. (martin5)


Angehängte Dateien:

Lesenswert?

Arno schrieb:
> Eins würde ich jetzt noch machen: Alle Leiterbahnen (bei denen es geht)
> noch etwas breiter.

So? Ist das ordentlich, wenn ich eine Bahn an den Stellen breiter mache, 
wo es geht und an anderen Stellen schmal lasse?

VG, Martin

von Martin T. (martin5)


Lesenswert?

Ich würde gern nochmal die Frage stellen, ob das noch gutes Layout ist, 
wenn eine Leiterbahn unterschiedliche Breiten aufweist, wie z. B. 
zwischen Pin 1 des PCA und Pin 12 des MCP?

VG, Martin

: Bearbeitet durch User
von Andy P. (Gast)


Lesenswert?

Naja, eine Schönheit ist es nicht, aber in diesem Fall spricht nicht 
viel dagegen: Hier geht es um I2C-Leitungen, das ist weder richtiges HF, 
noch ein impedanzkritischer Bus (verglichen zu anderen Bussen!). Einzig 
die fehlende Möglichkeit, etwas Masse zwischen beide Signale zu 
bekommen, indem die Leitungen dünner sind und dem Massepolygon mehr Raum 
gegeben wird, wäre ein zu bemängelnder Punkt.
Es gibt auch von Profis (sprich Auftragsarbeiten beim PCB-Design) solche 
Schnitzer und die wollen für ihre Leistung entlohnt werden.

Okay, lass uns mal übertrieben genau sein: Pin 1 und 2 mit dünneren 
Leitungen anzufahren wäre besser, aber das ist nicht 
funktionsentscheidend. Pin 5 und 6 des PCA ebenfalls dünn zu machen, 
wäre dann der logische Schritt, aber hier ist so viel Massenpolygon 
drum, daß man selbst dann keinen Unterschied in der Signalqualität 
sieht, wenn man mit einem Meßgerät nachmessen würde.
Wer natürlich ein Musterexemplar einer Platine abgeben möchte, bestimmt 
rechnerisch die notwendige Impedanz für den Bus und versucht dann, 
ausgehend, von PCB-Material, -Stärke etc die Leitungsbreite und den 
Abstand zur umfließenden Masse exakt so einzustellen, daß sich die 
entsprechende Impedanz ergibt - aber bei 'nem einfachen I2C klingt das 
eher wie "High End USB-Kabel für MP3-Player" :)

von Andy P. (Gast)


Lesenswert?

Nachtrag: Da du so allgemein fragst: Die dort fließende Stromstärke wäre 
ein zu bedenkender Punkt.
Bei obiger Platine sind es wenige Milliampere.
Das ist in etwa vergleichbar mit der Verkabelung eines PC-Lüfters - 
wahlweise mit 1,5mm² oder 2,5mm². in anderen Fällen musst du dann 
schauen, ob Stromstärke (=Leiterbahnquerschnitt), Spannung (Abstand zu 
anderen Potentialen) Kapazität und Induktivität eine Rolle spielen.

von Martin T. (martin5)


Lesenswert?

Hallo Andy,

vielen Dank für deine wie immer sehr hilfreichen Ausführungen.

VG, Martin

von Martin T. (martin5)


Angehängte Dateien:

Lesenswert?

Techi schrieb:
> Funktioniert der PCA auch über lange Leitungen in der Praxis?

Jawoll! Gerade mal getestet mit einem 100-Meter-Ring KNX-Kabel. Das 
kleinere von den beiden mittleren Boards ist das Remote-Board. Es wurde 
einwandfrei an Adresse 24 erkannt und tut, was es soll.

VG, Martin

von jibi (Gast)


Lesenswert?

Sauber!

von meilu (Gast)


Lesenswert?

interssiert mich auf alle fälle auch
ich bin mit der uvr1611 am limit


gruß
meilu

von ME" (Gast)


Lesenswert?

meilu schrieb:
> interssiert mich auf alle fälle auch
> ich bin mit der uvr1611 am limit

dANKE FÜR DIESE INTERESSANTE iNFORMATION - HAT MIR SEHR WEITER GEHOLFEN

von Mathias (Gast)


Lesenswert?

Hallo Martin,

als langjähriger UVR Benutzer finde ich Deine Idee+ Umsetzung super!
Gibt es schon Neuigkeiten Deines Projektes?

Gruß
Mathias

von Martin T. (martin5)


Lesenswert?

Hallo  Mathias,

das Projekt lebt :-) Es ist wie so oft nur viel aufwändiger, als 
ursprünglich geplant...

Ich hatte zunächst ein Proof of Concept für das Monitoring und die 
Steuerung über Smartphone gemacht. Dazu habe ich auf dem Raspi RESTful 
und Websockets Services für die Temperaturen implementiert und in einer 
Android-App verarbeitet.

Dann ging es an die Hardware. Mein Steuersignal 
(Beitrag "Verstehe meine Schaltung nicht.") funktioniert 
leider nicht. Ist aber nicht so schlimm, da es ohnehin nur die 
Luxusfunktion gewesen wäre. Alles andere funktioniert wunderbar.

Bei der Regelungssoftware wollte ich eigentlich sehr nah an der Hardware 
programmieren und habe deshalb nur das I2CDevice aus der PI4J-Bibliothek 
verwendet. Über die Zeit bin ich dann doch nicht um ein umfangreiches 
Objektmodell herum gekommen. Denn ohne Event-Listener-Konzept würde es 
sehr unübersichtlich werden. Mittlerweile bin ich bei über 5000 LOC und 
ich vermute, dass da noch einige dazukommen werden.

Mein Ziel ist es, wie von der UVR1611 gewohnt, so ziemlich alles 
konfigurieren zu können - ohne Neustart. Alle Aus- und Eingänge können 
bereits über Properties-Dateien konfiguriert werden. Alle möglichen 
Regelungsparameter sowieso. Was noch fehlt, ist die Einbindung der 
Temperatursensoren über 1-wire und der PT1000-Sensor für die 
Abgastemperatur. Dazu muss ich noch einen ADC einbinden. Aktuell lese 
ich zum Test einfach die Temperaturen aus der UVR1611.

Hier mal ein kleines http://youtu.be/iSdi9omyb_U. Die Schaltzyklen sind 
nur zur Demonstration sehr kurz gehalten. Die "Lichtshow" war eine 
kleine Fingerübung ;-)

Wenn die Regelung läuft, geht es mit RWE SmartHome weiter, was auch auf 
dem Raspi integriert wird 
(http://code.google.com/p/smarthome-java-library/). Das Ding nervt mich 
z. Z. so richtig, weil jede kleine Änderung über die RWE-Software so 
dermaßen lange dauert, dass ich vorher schon schlechte Laune bekomme. 
Ach ja, die Android-App muss ja auch noch...

Es bleibt spannend :-)

Viele Grüße

Martin

von Mathias (Gast)


Lesenswert?

Hallo Martin,

wow, Du bist ja schon einiges weiter!!
Habe meine UVR jetzt schon seit etwa 5 Jahren im Einsatz, war gleich im 
ersten Jahr am TAPPS-Limit und konnte noch nicht mal alle Ideen 
umsetzen.
Habe jetzt KNX im Haus und den RPI als (FHEM-)Server und da lässt sich 
die UVR nicht so toll integrieren.
Bei Dir gefällt mir die I²C Lösung sehr gut und Deine 
Relais-Treiber-Platine werde ich mal, mit den o.g. Tipps nachdesignen 
und als Platine fertigen lassen.
Wenn ich dann 1-Wire einlesen und Relais schalten kann, wäre ich erst 
einmal zufrieden.
Kennst Du FHEM?
Die Vorstellung die UVR ganz zu ersetzen, muss ich aus Zeitgründen 
streichen und Dein Satz mit den 5000LOC bestätigt das auch.
Ich bewundere also Dein Werk und würde mich freuen hier weiter davon zu 
hören!

Gruß,
Mathias

von Martin T. (martin5)



Lesenswert?

Hallo Mathias,

ja, FHEM kenne ich und ich war drauf und dran, ihn einzusetzen. Nur kann 
ich damit leider nicht meine RWE-SmartHome-Lösung betreiben. Ich wollte 
am Ende gern eine einzige Lösung haben. Alternativ hätte ich die 
Funk-Hardware gegen FS20 tauschen können, aber das war mir zu aufwändig. 
Die Smart-Friday-Angebote von RWE sind auch verführerisch günstig...

Ich denke auch, dass die Steuerung selbst einen eher kleinen Teil des 
Gesamtaufwandes ausmacht. Die großen Aufwände entstanden bisher durch 
die Hardware und werden für das User-Interface sowohl auf Server- als 
auch auf Clientseite benötigt werden. Für den Rest der Familie muss es 
einfach Idiotensicher sein und das leistet kein generischer Ansatz.

Die Schaltungen kann ich hier gern zur Verfügung stellen, dann brauchst 
du sie nicht nachzudesignen. Das Steuersignal müsste sich über weniger 
empfindliche Mosfets bzw. Transistoren richtig nutzen lassen. Vielleicht 
hat ja jemand Lust und entkoppelt noch das Relaisboard von der Platine 
z. B. über zwei ULN2803A oder optisch.

Ich habe auch noch diverse Platinen hier rumliegen, die ich selbst nie 
brauchen werde. Auch die kann ich für eine kleine Aufwandspauschale zur 
Verfügung stellen. Am besten kurze PN bei Interesse.

VG, Martin

von mat-body (Gast)


Lesenswert?

Hallo Martin,
ich hoffe ich habe jetzt nichts in diesem Thread überlesen, aber ich bin 
gerade auf der Suche nach einer geeigneten Heizungssteuerung. 
Unglaublich, aber so etwas gibt es wirklich nicht als fertige Raspberry 
Pi Lösung.
Eigentlich stelle ich mir vor, dass IPSYMCON auf dem Raspi läuft und 
Deine Interface Karten diesekt ansteuern kann, damit ich 5 Pumpen, 2 
Mischer, Aussentempertur, Raumtempereatur etc. direkt über Deine 
Interfacekarte steuern kann.
Was denkst Du darüber?
VG Mathias

von Mathias E. (mat-body)


Lesenswert?

Hallo Martin,
ich hoffe ich habe jetzt nichts in diesem Thread überlesen, aber ich bin
gerade auf der Suche nach einer geeigneten Heizungssteuerung.
Unglaublich, aber so etwas gibt es wirklich nicht als fertige Raspberry
Pi Lösung.
Eigentlich stelle ich mir vor, dass IPSYMCON auf dem Raspi läuft und
Deine Interface Karten diesekt ansteuern kann, damit ich 5 Pumpen, 2
Mischer, Aussentempertur, Raumtempereatur etc. direkt über Deine
Interfacekarte steuern kann.
Was denkst Du darüber?
VG Mathias

von Martin T. (martin5)



Lesenswert?

Hallo Mathias,

ich kenne mich leider nicht wirklich aus mit Automatisierungssoftware
wie  IPSYMCON oder FHEM aus. Ich gehe aber davon aus, dass sie alle eine
Programmierschnittstelle besitzen und darüber sollte sich spätestens,
wenn nicht direkt unterstützt, alles Mögliche steuern lassen. Aber ganz
ohne Programmierarbeit wird man nicht immer auskommen.

Die Relaistreiber lassen sich z. B. über die i2c-tools steuern. Wenn du
also in der Lage bist, Shell-Kommandos abzusetzen, kannst du alles damit
machen.

Wenn du aber wie ich auf einen analogen Sensor angewiesen bist, den du
über einen ADC einliest, könnte es schon wieder eng werden, zumindest
über i2c. Denn die i2c-tools lesen maximal 2 Byte aus und der MCP3424,
den ich einsetzen will/wollte, benötigt 3 Byte bei 18-Bit-Auflösung.

Falls es von Interesse ist, ich habe inzwischen eine zweite Variante
eines Interfaceboards entwurfen, welches direkt auf den Raspi
aufgesteckt wird. Na ja, aufgrund der Größe solte man eher sagen, der
Raspi wird untergeschnallt :-)

Im Laufe der Zeit hatte ich noch einige weitere Anforderungen an ein
Interfaceboard, so dass ich die Status-LEDs komplett weg gelassen habe
und den Platz für ein paar nützliche Dinge verwende. Relais für ein paar
zu schaltende Gerätschaften in unmittelbarer Nähe des Raspi, Gepufferter
und auch ungepufferter i2c-Bus, zwei 1-Wire-Busse etc.

Hier die wichtigsten Features:
- alle per Klemmen bereitgestellten Aus- und Eingänge arbeiten mit 5V
- i2c und 1-Wire arbeiten über bidirektionale Pegelwandler und sind
daher gefahrlos mit 5V zu betreiben
- ein ungepufferter und ein gepufferter i2c
- zwei getrennte 1-Wire, z. B. 1x für DS18B20 Temperatursensoren und 1x
für DHT22 kombinierte Feuchte- und Temperatursensoren
- 1 x DHT22 Feuchte-/Temperatursensor onboard
- 3 x 12V Relais über Optokoppler angesteuert
- 1 x Summer/Schallwandler
- 5 x I/O
- 4 x Taster
- 1 x 4-Kanal-ADC

Die Taster können per Jumperkabel parallel verlängert werden, z. B. für
den Schaltschrankeinbau. So kann z. B. der Schornsteinfeger eine
Schornsteinfegertaste bekommen.

Das Board ist inzwischen so vollgestopft, dass mir jede Änderung den
Schweiß auf die Stirn treibt...

Eine erste Version, die noch nicht alle Features an Board hatte, läuft
ganz gut. Nur leider hatte das Schaltsymbol der Optokoppler einen
Fehler, weshalb ich Emitter und Collector vertauscht hatte. Das Foto
zeigt den Work-around :-)

Das neue Board werde ich heute in die Bestellung geben. Leider hat mich
der Fehler um ein paar Wochen zurückgeworfen. Wie lange ich gebraucht
habe, die Verpolung der Optokoppler als Ursache für die Probleme zu
finden... Das hat nämlich ein sehr eigenartiges Verhalten zur Folge.

VG, Martin

von backbone10 (Gast)


Lesenswert?

Hi,
wenn ich fragen darf : gibts da ein Update ?

Danke

Tom

von Martin T. (martin5)


Lesenswert?

Ja! Ich hatte dann doch noch einige weitere Anpassungen und 
Optimierungen vorgenommen. Markanteste ist die Integration des 
Funkschaltmoduls von ELV 
http://www.elv.de/fs20-schaltmodul-8-kanal-fs20-sm8-komplettbausatz.html.

Heute sind alle meine neuen Platinen nach weniger als 2 Wochen 
Lieferzeit angekommen. Habe auch die Relaistreiberplatine optimiert, so 
dass die Relais bei fehlender Spannungsversorgung der Treiberplatine und 
bei fehlendem Steuersignal nicht mehr durchschalten. 17 EUR für das 
10er-Pack Platinen inkl. Versand. Unglaublich!

Am Wochenende werde ich eifrig löten und wenn ich es schaffe, stelle ich 
alles nochmal ausführlich vor.

VG, Martn

von Martin T. (martin5)



Lesenswert?

Ich mach es mal wie Philae. Irgendwie gelandet, nicht ganz da wo 
geplant, aber die Mission ist ein voller Erfolg :-)

Also ein paar Schönheitsfehler sind noch drin, aber ich denke, das Ganze 
kann sich schon sehen lassen.

Auf den Fotos könnt ihr das Resultat samt Erläuterungen zu den 
Funktionen sehen. Hier noch ein paar zusätzliche Infos dazu:

- An den gepufferten I2C können die Erweiterungsboards angeschlossen 
werden. Dank des Puffers können alle Entfernungen im Haus überbrückt 
werden.

- An den 1-Wire-Anschluss kommen DS18B20-Temperatursensoren, die an 
allen relevanten Stellen im Heizsystem verteilt werden. Derzeitig habe 
ich 15 geplant.

- Das Schaltsignal dient zum An- und Abschalten der Erweiterungsboards, 
damit z. B. die angeschlossenen Baugruppen wie Pumpen und Mischer nicht 
unkontrolliert weiterlaufen, falls der Raspi ausfällt oder gewartet 
wird.

- Über die Buchsenleisten kann das ELV-FS20-Schaltmodul SM8 mit 8 
Funkkanälen aufgesteckt werden. Einige Funktionen wie 
Warmwasserbereitung, -zirkulation oder ein vorzeitiges Einschalten des 
Heizsystems, falls man früher zu Hause ist als geplant, lassen sich 
manchmal schneller und praktikabler über physische Schalter schalten. 
Die Frauen freut's, denn es ist sehr einfach. Die Eingänge des MCP23017 
sind bis auf einen alle mehrfach belegt und man kann sich entscheiden, 
über welchen Weg man sie nutzt. Da das Schaltmodul selbst auch noch mit 
physischen Tastern ausgestattet ist, sollte ausreichend Flexibilität 
vorhanden sein. Reichen die I/O nicht, kann man ja leicht ein 
Erweiterungsmodul nutzen.

- Die Onboard-Mikrotaster können über die Jumper-Pins auch auf externe 
Schalter herausgeführt werden. Hier dachte ich z. B. an eine 
Schornsteinfegerfunktion oder andere Servicefunktionen.

- An den A/D-Wandler werde ich zunächst zwei PT1000-Temperatursensoren 
für die Abgastemperaturen meines Holzvergasers und den Gaskessel 
anschließen. Denen ist allerdings jeweils noch ein Messverstärker 
vorgeschaltet 
(http://www.pollin.de/shop/dt/NTU4OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_PT1000_Messwandler.html). 
Der A/D-Wandler wird auch über I2C angesprochen. Die roten DIP-Schalter 
dienen der Adressierung der I2C-Bausteine.

- An den ungepufferten I2C können Erweiterungen angeschlossen werden, 
die vielfach im Internet zu finden sind und in der Regel nicht gepuffert 
sind. Aktuell habe ich da nix geplant, aber wer weiß, was da noch 
kommt...

- Ein weiterer 1-Wire-Bus soll einen externen DHT22-Temperatur- und 
Luftfeuchtesensor aufnehmen, den ich als Außentemperaturfühler geplant 
habe. Dieser ergänzt den Onboard-DHT22. Leider kann man aktuell am Raspi 
jeweils nur einen DHT22 pro Port betreiben. Insgesamt werden so 3 
1-Wire-Busse am Raspi betrieben.

- Der Raspi wird bequem untergeschnallt und alle Pins des Raspi sind 
verlängert, so dass man auch hier flexibel bleibt und zukünftige 
Anforderungen abdecken kann. Hier können weitere Break-out-Boards 
aufgesteckt werden.

- Der Jumper daneben ermöglicht die Spannungsversorgung des Raspi über 
einen 5V-Pin. So kann man sich das zusätzliche Netzteil für den Raspi 
sparen. Der Onboard-Schaltregler ist ein TRACO POWER TSR-1 und liefert 
1A.

- Als Erweiterungsplatinen habe ich 2 Varianten vorgesehen. Die erste 
Variante ist speziell für ein 16-fach Relaisboard vorgesehen. Die 
Darlington-Arrays (ULN2803) wurden notwendig, um die Relais bei 
Stromausfall der Erweiterungsplatine sicher abzuschalten. Ohne diese 
würde der MCP23017 über die I/O-Pins rückversorgt werden und alle Pins 
gegen Masse schalten, womit alle Relais wieder anziehen würden. Einen 
weiteren Vorteil sehe ich darin, dass ich so wieder flexibler bin, da 
ich Relais auch ohne weitere Ansteuerelektronik, wie auf den 
Relaisboards üblicherweise untergebracht, oder andere Lasten direkt über 
die ULNs geschaltet bekomme.

- Die zweite Variante führt einfach die I/O des MCP23017 über Pin-Header 
nach außen. Durch die Paarung jeweils mit einem Masse-Pin ist die 
externe Beschaltung recht einfach. Z. B. internen Pull-up schalten, 
Schalter dran, fertig. Beide Boards sind mit einem I2C-Puffer 
ausgestattet und können sowohl extern als auch über den I2C-Bus mit 
Spannung versorgt werden.


Welche Schönheitsoperationen plane ich noch?

- Emitter und Kollektor der Optokoppler sind vertauscht. Ich hatte bei 
meinen Ersatz-Optokopplern nicht bemerkt, dass diese anders belegt waren 
als die geplanten Optokoppler. Pads auf dem Board getauscht und jetzt 
die geplanten Optokoppler eingesetzt --> Bingo :-(

- Den Schaltregler habe ich falsch gezeichnet, so dass er jetzt auf die 
Unterseite musste, möchte ich wieder oben haben.

- Die Spannungsversorgung des FS20-Schaltmoduls möchte ich sowohl per 
Jumper als auch per GPIO schalten können.

- Das Schaltsignal muss aktuell die LEDs und den RESET-Eingang des 
MCP23017 direkt beliefern, das möchte ich entkoppeln, so dass das 
Schaltsignal keine Leistung mehr abgeben muss. Bei zu vielen 
Erweiterungsboards könnte es sonst eng werden.


Die Qualität der Platinen ist übrigens durchaus ansprechend. Der 
Positionsdruck auf der Unterseite ist nicht ganz so kräftig wie auf der 
Oberseite, aber für 17 EUR pro 10er-Paket all inclusive top.

VG, Martin

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Wofür sollen eigentlich die Optokoppler in der Ansteuerung der 
Relaistreiber nützlich sein?

von Martin T. (martin5)


Lesenswert?

Hallo Wolfgang,

fürs gute Gefühl :-) Ich weiß, nicht wirklich notwendig, sieht aber gut 
aus, beruhigt und ich wollte sie einfach mal verbauen.

VG, Martin

von Harry (Gast)


Lesenswert?

Hi,
gibts da schon ein Update ??

lg

Harry

von Martin T. (martin5)


Angehängte Dateien:

Lesenswert?

Hallo,

ja. Die geplanten Änderungen sind umgesetzt und die Platinen damit 
fertig. An den letzten Wochenenden habe ich viel Zeit im Keller 
verbracht und die Regelung eingebaut. Schwierig war, dass ich sie 
parallel zur alten Regelung einbauen musste, da ich jetzt schlecht auf 
eine funktionierene Regelung verzichten kann :-) Dadurch war doch eine 
ganze Menge Verkabelungsarbeit notwendig. Ist noch nicht ganz fertig, 
auf den Bildern könnt ihr aber schon einen gut fortgeschrittenen Stand 
sehen (die ersten beiden sind eigentlich hochkant, keine Ahnung, warum 
die hier gedreht sind).

An der Software habe ich noch ein größeres Refactoring gestartet. Wenn 
man ohne viel Vorbereitung loslegt, dann schleicht sich doch die eine 
oder andere fragliche Designentscheidung ein. Es wird wohl noch ein paar 
Wochen dauern, bis sie wirklich in Betrieb geht.

VG, Martin

: Bearbeitet durch User
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.