PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : i2c bus



AndreasF85
09.05.2010, 11:11
Hallo,

ich möchte mehrere Ultraschallsensoren über den I2C-Bus anschließen. Reicht dafür eine 4x0,14 Telefonleitung aus? Darf diese dann etwa 2m bis 2,5m lang sein?

Danke für die Hilfe!

Kampi
09.05.2010, 11:30
Du brauchst für den I²C Bus eigentlich nur 2 Leitungen (SCL und SDA). Wenn du die Sensoren dann aber über die Leitung mit Strom versorgen wollst reichen die 4 Adern. Ob die Dicke reicht musst du schauen. Aber dürfte eigentlich kein Problem sein, da die Sensoren nicht so viel Strom ziehen (würd ich vermuten). Wenn du jetzt paar 50 oder so mit den zwei Adern versorgen willst kann es von der dicke her etwas eng werden. Bei der Länge musst du mal nachgooglen, wie weit die Leitungen für I²C sein dürfen bevor die Pegel nicht mehr richtig erkannt werden.

Jaecko
09.05.2010, 12:21
Fast... 3 Leitungen Minimum, da eine gemeinsame Masse auch noch gebraucht wird, auch wenn die Sensoren ihre eigene Stromquelle haben. (Ist leider nicht differentiell wie beim CAN, wo tatsächlich CAN-H und CAN-L reichen)
Bei der Länge können 2m auch noch gehen, wenn man nicht unbedingt mit Vollgas fährt, d.h. wenns Probleme gibt, einfach die Geschwindigkeit etwas senken; also z.B: 100 statt 400 kHz.

Kampi
09.05.2010, 12:36
mmmh das mit den 3 Leitungen ist mir auch neu. Ich hab bisher immer nur gelesen das 2 Signalleitungen gebraucht werden, die über Pull-Ups an 5V gelegt werden.

Jaecko
09.05.2010, 12:51
Naja schon; solche Erklärungen gibts viele, da wird aber dann vorausgesetzt (bzw. gern auch mal verschwiegen), dass alle Bus-Teilnehmer an der gleichen Versorgungsspannung hängen.
(Was auf ner Platine bzw. in einem Gerät, dem Haupteinsatzgebiet des I2C, eigentlich immer der Fall ist).

Beim I2C ist das Potential auf den Leitungen wichtig; und um das zu messen braucht man noch nen gemeinsamen Bezugspunkt.
Ok, wenn SCL 5V mehr hat als SDA bzw. andersrum, dann isses ja klar. Nur wenn SCL = SDA ist... sind dann beide High oder beide Low?

AndreasF85
10.05.2010, 09:23
Erstmal danke für die Antworten. Ich habe allerdings keine Ahnung, wie ich die Geschwindigkeit vom I2C Bus senken kann. Ich steuere meinen US-Sensor über einen USB/I2C Adapter vom PC aus an. Kann mir da jemand weiterhelfen?

Jaecko
10.05.2010, 10:09
Hm... bei nem AVR wärs ein Wert in nem Register.
Wenn die PC-Software aber einigermassen anständig geschrieben ist, müsste es da die Möglichkeit geben, den Wert zu ändern.

AndreasF85
10.05.2010, 12:53
also die Software habe ich mit C geschrieben. Auf eine Distanz von 25cm funktioniert das auch einwandfrei. Jetzt versuche ich 4,5m und da kommt kein Signal am Sensor an. Und in meinem C-Programm weiß ich nicht, wie die Clock-Time zu berücksichtigen ist.

Jaecko
10.05.2010, 14:06
Häng mal am Kabel testweise an einem Ende 5V und GND an und miss mal, was davon am anderen Ende noch rauskommt. Auf >4m dürfte der Widerstand des Kabels dann doch zu gross sein.

Aber irgendwie musst du in dem Programm ja vorgegeben haben, welchen Takt du verwendest. Du bist ja mit dem USB-Adapter ja vermutlich der Master, d.h. es muss irgendwo ne Stelle geben, wo du den Takt für die SCL-Leitung (100kHz, 400kHz) erzeugst.
Oder ist nur die Bediensoftware von dir, die den Adapter nur abfragt?
(Bzw. welcher Adapter isses denn eigentlich?)

AndreasF85
10.05.2010, 14:21
Der USB/I2C Adapter ist von Devantech. Und soeben habe ich erfahren, dass bei diesem Adapter die SCL Frequenz auf 100kHz FEST eingestellt ist. Das heißt, bei diesem Adapter kann man die nicht ändern :-(
Trotzdem Danke für die Hilfe!

Schottky
12.05.2010, 11:37
Ich hätte da auch eine Frage zu I2C. Wollte gerade einen neuen Thread aufmachen da habe diesen noch gesehen.

Wenn ich auf den gleichen I2C Leitungen 4 Teilnehmer mit 3,4MHz und 1 Teilnehmer mit 0,4MHz habe (also Maximalgeschwindigkeit) kann ich dann mit den 4 Teilnehmern mit 3,4MHz sprechen und mit dem einen 0,4MHz oder muss ich mit allen 5 mit 0,4 MHz sprechen?

Kampi
12.05.2010, 18:56
Ich weiß jetzt nicht ob man im Programm die Frequenz des I²C Bus ändern kann. Wenn ja kannste das so machen das du die 4 mit 3,4 MHz ansprichst und dann die Frequenz änderst und dann den einen "langsamen".
Wenn nicht musst du dich immer nach den langsamsten Bus-Teilnehmer richten.