Hi! :) Ich bräuchte ein wenig Denkunterstützung bei folgender Aufgabe: Ziel ist es, wie in der Skizze zu sehen, ein System zu realisieren welches verschieden Zustände auf der jeweiligen Ampel anzeigt. Die Eingabe erfolgt mittels PC. Die eingegebenen Daten werden von der Hauptplatine ausgewertet und über I2C werden die einzelnen Ampeln angesprochen. Ein 2,5m langes, 6 adriges Twisted Pair (1Paar VCC, 1Paar GND, 1PaarI2C) Kabel führt von der µC Hauptplatine zur einer Signal-Ampel. Von einer Signal-Ampel führt ein weiteres 2,5m langes Kabel zur nächste Ampel etc. Das geht so weiter bis zur Ampel Nummero 20. (50m bis Ampel Nr.20) In Jeder Ampel hängt ein Attiny an VCC und GND des Twisted Pair und an den TWI Leitungen. Die Spannungversorgung erfolgt mit einem 5V 1,5A DC Netzeil das an der µC Hauptplatine eingesteckt wird. (Ein 3,3V Spannungregler für den Ethernet IC auf der Platine) Das Projekt ist von einem ehemaligen technischen Informatik Studenten und die Software funktioniert soweit auch. Es gibt nur folgendes Problem: Wenn man mehr als 7 Ampeln anschließt und diese Gleichzeitig in Betrieb nehmen will, so funktioniert dass nicht. wenn man die restlichen Ampeln im eingeschalteten Zustand nach einander anschließt so funktioniert das ohne Probleme. Das allerdings auch nur bis man max 12 Ampeln angeschlossen hat. Ebenso ist es ein Problem bei ca. 10 Ampeln, wenn man diese angeschlossen hat und alle 3 LEDs (R,Gr,Ge) jeder Ampel blinken lässt oder dauerhaft einschaltet, so hält dieser Zustand nicht lange an und die Ampeln wechseln in den Fehler Modus. (Testweise habe ich 5 Ampeln angeschlossen und diese liefen stabil zumindest über 24h) Mein Denk Ansatz: Nach dem Die Spannungsversorgung nur über ein 5V Netzteil realisiert ist, bricht die Spannung auf der langen Strecke zu sehr ein, so das die Ampeln nicht mehr genug Spannung abbekommen. Ausserdem, werden die LEDs der Dauerhaft leuchtenden Ampeln dunkler wenn die LEDs der blinkenden Ampeln an gehen. Meine Lösung: Ein 15V(19V) Netzteil Als Spannungsquelle verwenden und diese an die Platine anschließen. Mit einem 7805 (oder Schaltnetzteil-IC) auf 5V für die Platine zu regeln. Die 19 Volt werden auf die Leitung gelegt und damit zu den Ampeln. Dann in jede Ampel einen 78L05 einsetzten. Den 78L05 muss ich nehemen da kein größeres Bauteilform in das Gehäuse passt und die 100mA sind ja für die drei LEDs (à 20mA) und den Attiny aussreichend. Nun Zur Frage(n): Ist das ein guter Lösungsansatz bzw. gibt es etwas das geschickter wäre? Sollte ich für die Leitungslänge das I2C Signal Verstärken. Wenn ja, wie mach ich das am besten? bzw. mit welchem Bauteil. Ich hab den Eintrag hier schon gelesen "I2C als Hausbau", aber bin daraus nicht wirklich schlauer geworden. In der Doku von dem ehemaligen Studenten habe ich etwas über: " [...] da deshalb keine Hohe Datenrate erforderlich ist, kann eine Geschwindigkeit von unter 10 kHz gewählt werden." (Den genauen Wortlaut weiß ich jetzt nicht) Da ich mich noch nicht wirklich sehr lange mit der Mikrocontroller Thematik befasse wäre ich über die Hilfe, vor allem mit dem I2C sehr Dankbar.
Rene schrieb: > Die 19 Volt werden auf die Leitung gelegt und damit zu den Ampeln. Dann > in jede Ampel einen 78L05 einsetzten. Den 78L05 muss ich nehemen da kein > größeres Bauteilform in das Gehäuse passt und die 100mA sind ja für die > drei LEDs (à 20mA) und den Attiny aussreichend. > > Nun Zur Frage(n): > Ist das ein guter Lösungsansatz 15V bzw. 19V sind zu hoch! Auf 20 Meter hast du bei eingermassen normalen Kabeln keine derartig hohen Spannunsverluste. 9V oder 12V tuns auch! Du verbrutzelst ja sonst eine Menge Energie in Form von Wärme, wenn du dem 7805 19V anbietest. Ganz ehrlich denke ich, dass wir wieder mal das Standardproblem haben: Nirgends sind Blockkondensatoren verbaut und dann wundert man sich, warum bei ausreichend schnell schaltender Last an der Versorgung alles zusammenbricht.
Danke für die Antwort :) Dann werd' ich ein 12 Volt Netzteil Hm... jetzt wo ich drüber nach denke, stimmt. Ich hab keine Kondensatoren auf der Platine gesehen.( hätte ich ja auch selbst sehen müssen facepalm)
Eine Messung erspart viel Raterei Mein Rateansatz. Der Spannungsabfall auf der GND Leitung versaut die Pegel. Dafür ist IIC ja auch nicht gedacht. Da nimmt man Feldbusse mit differentieller Übertragung wie z.B. RS485. Zur Not Pegelumsetzer um den SNR zu erhöhen.
Bei der 5-Ampel-Test-Variante habe ich eine Spannung von 5,9V auf der µC Hauptplatine gemessen. (Was ich verwunderlich bei einem 5V Netzteil finde. Und Ja! ich bin mir sicher das es ein 5V Netzteil ist) und ca 5,2V an der 5. Ampel. (ca. weil die Ampeln geblinkt haben und es geschwankt hat) Mir steht dort leider kein Oszi zu Verfügung sonst hätte ich die Signale auch angeschaut
Hi >Ein 2,5m langes, 6 adriges Twisted Pair (1Paar VCC, 1Paar GND, 1PaarI2C) >Kabel führt von der µC Hauptplatine zur einer Signal-Ampel. Dir ist aber bekannt, das I2C zur Kommunikation zwischen ICs auf einer Leiterplatte entwickelt wurde? MfG Spess
Ich hab ja auch gesagt, das dass Projekt auch nicht von mir ist. In der Doku des Stundenten der das Projekt entwickelt hat, steht es aber ebenfalls noch drin " Da der I2C eigentlich für die Kommunikation auf der selben Platine gedacht ist [...] Ich aber aus einschlägigen Foren nachgelesen habe dass es ohne Probleme auch bist zu 100m funktioniert [...]"
Rene schrieb: > Sollte ich für die Leitungslänge das I2C Signal Verstärken. Wenn ja, wie > mach ich das am besten? bzw. mit welchem Bauteil. Mit jeweils einem P82B715 und 330 Ohm PullUps hab ich gute Erfahrungen gemacht bis ca 100m. Ich hatte allerdings Telefonflachbandkabel genommen, kann sein, dass bei Twisted Pair die Kapazitäten zwischen den Leitungen größer sind. Mit CAN-Treibern (PCA82C250) kann man I2C sogar kilometerweit übertragen.
>Ich aber aus einschlägigen Foren >nachgelesen habe dass es ohne Probleme auch bist zu 100m funktioniert http://www.mikrocontroller.net/articles/I2C_als_Hausbus#Kabell.C3.A4nge
Jobst Quis schrieb: > Mit jeweils einem P82B715 und 330 Ohm PullUps hab ich gute Erfahrungen > gemacht bis ca 100m Wenn ich das richtig verstanden hab funktioniert das mit dem P82B715 doch nur in eine Richtung. Also vom Master zum Slave und nicht umgekehrt.? Ich hab mir den Code jetzt nicht angeschaut und weiß nicht ob die Ampel ein Signal zurück sendet.
holger schrieb: >>Ich aber aus einschlägigen Foren >>nachgelesen habe dass es ohne Probleme auch bist zu 100m funktioniert > > http://www.mikrocontroller.net/articles/I2C_als_Hausbus#Kabell.C3.A4nge Höchst wahrscheinlich ja :D
Hi >Ich aber aus einschlägigen Foren >nachgelesen habe dass es ohne Probleme auch bist zu 100m funktioniert Ja. Aber nicht mit Feld-, Wald- und Wiesen-I2C: http://www.nxp.com/documents/application_note/AN10658.pdf MfG Spess
Hallo spess53 Ja, mir ist die Funktion des I2C durch aus bekannt und auch das Anwendungsgebiet. Und wie gesagt, ich hab das Projekt nicht entworfen. Ich bin lediglich der Arsch der es zu ende bringen bzw. einsatzfähig machen soll. Deswegen war meine Frage ja auch ob ich dafür einen Verstärker o.Ä brauche. Weil ich den I2C noch nie praktisch verwendet habe. Zudem wäre es einfacher, kostengünstiger und auch schneller einen I2C Verstäker zwischenzuschalten als komplett auf Feldbus zu switchen. Vor allem weil der Code schon geschrieben wurde und auch funktionsfähig ist. Es scheitert (vermutlich) lediglich an der Hardware. Mfg Rene
Rene schrieb: > Wenn ich das richtig verstanden hab funktioniert das mit dem P82B715 > doch nur in eine Richtung. Also vom Master zum Slave und nicht > umgekehrt.? Das ist ein Gerücht. Mit dem P82B715 ist es ein ganz normaler I2C-Bus, der nur auf einem 10 mal höheren Stromlevel und entsprechend mit 10 mal niedrigeren PullUps arbeitet. Auf der einen Seite hast du einen normalen I2c-Bus (SCL,SDA) auf der anderen den Long-Distance Bus (LCL,LDA).Für jede Station brauchst du einen P82B715 Umsetzer, innerhalb einer Station kannst du mehrere I2C-Bausteine anschließen. Ein PullUp-Widerstand von 330 Ohm an LCL und LDA erscheint auf SCL/SDA-Seite als 3,3k Widerstand, also sind hier keine weiteren PullUps nötig.
Jobst Quis schrieb: > Das ist ein Gerücht. Mit dem P82B715 ist es ein ganz normaler I2C-Bus, > der nur auf einem 10 mal höheren Stromlevel und entsprechend mit 10 mal > niedrigeren PullUps arbeitet. Auf der einen Seite hast du einen normalen > I2c-Bus (SCL,SDA) auf der anderen den Long-Distance Bus (LCL,LDA).Für > jede Station brauchst du einen P82B715 Umsetzer, innerhalb einer Station > kannst du mehrere I2C-Bausteine anschließen. Ein PullUp-Widerstand von > 330 Ohm an LCL und LDA erscheint auf SCL/SDA-Seite als 3,3k Widerstand, > also sind hier keine weiteren PullUps nötig. Erst einmal vielen Dank für deine Aufklärung :D Dann ist es also generell unmöglich auf der µC Hauptplatine einen I2C Verstärker unterzubringen so, dass ich eine Längere Strecke bewältigen kann, ohne auf jeder Signal Ampel, einen weiter IC zu installieren. Aber dann müsste es doch funktionierten, wenn ich z.B. auf der halben Strecke eine kleine zwischen Station habe, mit genau dem Schema welches du gepostet hast. Quasi als Signal aufbereitung. Oder ist das jetzt ein Grundsätzlich falsches denken. (Es wäre eine erhebliche Kostenersparnis ob ich für jede Platine ein IC kaufe 21 * 2,95 oder ob ich 2 ICs kaufe)
>Ausserdem, werden die LEDs der Dauerhaft leuchtenden Ampeln dunkler wenn >die LEDs der blinkenden Ampeln an gehen. > >Meine Lösung: >Ein 15V(19V) Netzteil Als Spannungsquelle verwenden und diese an die >Platine anschließen. Mit einem 7805 (oder Schaltnetzteil-IC) auf 5V für >die Platine zu regeln. Du vergisst das Strom über VCC UND GND fliesst. Einfach nur mehr Spannung reingeben bringt nichts. Den Spannungsabfall auf der GND Leitung wirst du dadurch nicht los. Mach die Kabel dicker.
Rene schrieb: > Aber dann müsste es doch funktionierten, wenn ich z.B. auf der halben > Strecke eine kleine zwischen Station habe, mit genau dem Schema welches > du gepostet hast. Quasi als Signal aufbereitung. Oder ist das jetzt ein > Grundsätzlich falsches denken. Das geht leider nicht, denn es ist ein Bus,auf den alle zugreifen. Wenn, dann bräuchtest du zwei Busse und in der Mitte eine Art Repeater, der vom einen auf den anderen überträgt. Ob und wie das möglich ist, kann ich dir noch nicht sagen. Was du versuchen könntest, wäre : 1. Die PullUp-Widerstände verringern und evt verteilen auf die einzelnen Stationen. Da du überall nur ATtinys als Station hast und die Pins möglicherweise stärker belastbar sind als der I2C-Standard, könnte das etwas bringen. 2. Falls möglich, trenne LED-GND von I2C-GND, dann hat der Spannungsabfall durch die LED-Ströme keine Auswirkungen auf die Signale. Wenn es nicht möglich ist, nimm wenigstens 3 der 6 Leitungen für GND und nur eine für die Spannungsversorgung. 3. Da SCL eigentlich nur vom Master gesendet wird, kannst du dafür einen stärkeren Schalter (MOSFET) und einen niedrigen Pullup einsetzen. PS: Die Blockkondensatoren nicht vergessen!
holger schrieb: > Den Spannungsabfall auf der GND Leitung wirst du dadurch nicht los. Aber mit einem Schaltwandler von 19V auf 5V wird er rund einen Faktor 3 kleiner.
Jobst Quis schrieb: > Das geht leider nicht, denn es ist ein Bus,auf den alle zugreifen. Wenn, > dann bräuchtest du zwei Busse und in der Mitte eine Art Repeater, der > vom einen auf den anderen überträgt. Ob und wie das möglich ist, kann > ich dir noch nicht sagen. Danke für deine Antwort. Schade dass es so nicht funktionieren wird, aber erst einmal muss ich mich sowieso an die Stromversorgung machen, damit ich überhaut weiss ob ich an dem I2C System etwas ändern muss. Mike A. schrieb: > Aber mit einem Schaltwandler von 19V auf 5V wird er rund einen Faktor 3 > kleiner. Genau das meine ich. Karl Heinz schrieb: > 15V bzw. 19V sind zu hoch! > Auf 20 Meter hast du bei eingermassen normalen Kabeln keine derartig > hohen Spannunsverluste. Ich hab es heute noch einmal nachgemessen: Ein Spannungsabfall von rund 27% (5,9V -> 4,3V) auf 10m. Die Übertragung erfolgt momentan mit einem RJ12 Kabel, dessen Adernquerschnitt ich leider nicht rausbekommen habe. Ist aber definitiv zu wenig. ( http://www.reichelt.de/Modularkabel-stecker-etc-/WK-6-6-2-5M/3/index.html?&ACTION=3&LA=2&ARTICLE=68018&GROUPID=848&artnr=WK+6-6+2%2C5M ) Ich werde das Kabel durch ein anderes ersetzten Die Leitung werde ich durch eine geschirmte 2x2x0,6 Fernmeldeleitung ersetzten. Damit sollte es etwas besser funktionieren. Die Kabelänge kann ebenfalls von 2,5m auf 2m gekürtzt werden, was in Summe auch eine Verkürzung um 10m bringt. Falls es trotz Querschnitts- und Spannungserhöhung nicht funktioniert, werde ich es mit einem Y- Kabel nicht 1 x 20 Ampeln ansteuern sondern 2 x 10 Amppeln. Oder, ein 3x2x0,6 Kabel nehmen und jeweils 2 Adern für VCC und GND nehmen. Evtl auch diesen Vorschlag dann in die tat umsetzten: Jobst Quis schrieb: > 2. Falls möglich, trenne LED-GND von I2C-GND, dann hat der > Spannungsabfall durch die LED-Ströme keine Auswirkungen auf die Signale. > Wenn es nicht möglich ist, nimm wenigstens 3 der 6 Leitungen für GND und > nur eine für die Spannungsversorgung.
Rene schrieb: > Mike A. schrieb: >> Aber mit einem Schaltwandler von 19V auf 5V wird er rund einen Faktor 3 >> kleiner. > > Genau das meine ich. > > Karl Heinz schrieb: >> 15V bzw. 19V sind zu hoch! >> Auf 20 Meter hast du bei eingermassen normalen Kabeln keine derartig >> hohen Spannunsverluste. Gemeint war ein Abfall von 19V auf eine für einen 7805 vernünftige Eingangsspannung. 7805 ist kein Schaltwandler!
Jobst Quis schrieb: > Das geht leider nicht, denn es ist ein Bus,auf den alle zugreifen. Wenn, > dann bräuchtest du zwei Busse und in der Mitte eine Art Repeater, der > vom einen auf den anderen überträgt. Ob und wie das möglich ist, kann > ich dir noch nicht sagen. Ich weiß nicht ob wir und das wirklich verstanden haben: Ich würde ja nicht nur einen P82B715 verwenden sonder zwei stück. Bloß dass nicht wo wie auf dem Schema ein "Long Cable" dazwischen hängt sondern das auf einer Platine ist. Der Erste wertet das Signal für das Long Cable auf, der 2, setzt es gleich wieder herunter. Ich weiß, ist wahrscheinlich nicht so effizient, aber günstiger als auf jede Baugruppe ein einzelnen IC zu setzten: | | µC--A--A--A--A--A--| P82B715 ["long Cable"] P82B715 |--A--A--A--A | | µC = Hauptplatine A = Ampel
Karl Heinz schrieb: > Gemeint war ein Abfall von 19V auf eine für einen 7805 vernünftige > Eingangsspannung. Dann habe ich das Falsch verstanden, tut mir leid. Aber wenn ich werde ja sowieso den Querschnitt erhöhen, deswegen geh ich ja auch nur auf 12V.
Karl Heinz schrieb: > Gemeint war ein Abfall von 19V auf eine für einen 7805 vernünftige > Eingangsspannung. Mit einem Linearregler würde man aber den Strom auf der Gnd-Leitung nicht verringern. Ein kleiner Schaltwandler an der "Straßenkreuzung" hat zwei Vorteile: 1. Verringerter Spannungsabfall auf der Gnd-Leitung 2. stabilere Versorgungsspannung.
Rene schrieb: > Ich weiß nicht ob wir und das wirklich verstanden haben: > Ich würde ja nicht nur einen P82B715 verwenden sonder zwei stück. > Bloß dass nicht wo wie auf dem Schema ein "Long Cable" dazwischen hängt > sondern das auf einer Platine ist. Der Erste wertet das Signal für das > Long Cable auf, der 2, setzt es gleich wieder herunter. Ich weiß, ist > wahrscheinlich nicht so effizient, aber günstiger als auf jede Baugruppe > ein einzelnen IC zu setzten: Das bringt garnichts, wenn mit dem "Long Cable" nicht wirklich eine Entfernung überbrückt wird. Also wenn, dann so: µC--A--A--A--A--A-- (Ampel 1-10) | -|P82B715 ["long Cable"] P82B715 |--A--A--A--A (Ampel 11-20) Lies dir mal das Funktionsprinzip des P82B715 im Datenblatt durch, dann verstehst du, warum.
Rene schrieb: > Die Übertragung erfolgt momentan mit einem RJ12 Kabel, dessen > Adernquerschnitt ich leider nicht rausbekommen habe. Ist aber definitiv > zu wenig. ( > http://www.reichelt.de/Modularkabel-stecker-etc-/WK-6-6-2-5M/3/index.html?&ACTION=3&LA=2&ARTICLE=68018&GROUPID=848&artnr=WK+6-6+2%2C5M Solche Kabel hatte ich auch für meinen I2C-Mittelstreckenbus eingesetzt. Allerdings hatten die Module eine eigene Stromversorgung. Sie haben den Vorteil einer kleinen Kapazität zwischen den Leitern, was bei I2C ein wichtiger Punkt ist. Ich würde sie beibehalten und für die Stromversorgung ein dickeres Extrakabel legen.
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.