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.
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.
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.