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
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
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
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
Auweia, das hab ich übersehen ;)
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?
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.
... 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
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.
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.
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
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!
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?
Marcus hat sich verkuckt:) hab nicht gesehen, dass das beidseitig grün war :)
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
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
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
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 :)
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...."
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
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
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...
Funktioniert der PCA auch über lange Leitungen in der Praxis?
@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
wenn du jetzt noch die Säurefallen an X3 und Q2 weg machst, wird dich der Leiterplattenhersteller lieben.
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
... 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
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
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
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" :)
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.
Hallo Andy, vielen Dank für deine wie immer sehr hilfreichen Ausführungen. VG, Martin
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
interssiert mich auf alle fälle auch ich bin mit der uvr1611 am limit gruß meilu
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
Hallo Martin, als langjähriger UVR Benutzer finde ich Deine Idee+ Umsetzung super! Gibt es schon Neuigkeiten Deines Projektes? Gruß Mathias
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
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
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
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
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
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
Hi, wenn ich fragen darf : gibts da ein Update ? Danke Tom
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
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
Wofür sollen eigentlich die Optokoppler in der Ansteuerung der Relaistreiber nützlich sein?
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
Hi, gibts da schon ein Update ?? lg Harry
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.