-
-
Neuer Benutzer
Öfters hier
i2c bus
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!
-
Moderator
Robotik Einstein
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.
-
Erfahrener Benutzer
Robotik Einstein
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.
-
Moderator
Robotik Einstein
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.
-
Erfahrener Benutzer
Robotik Einstein
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?
-
Neuer Benutzer
Öfters hier
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?
-
Erfahrener Benutzer
Robotik Einstein
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.
-
Neuer Benutzer
Öfters hier
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.
-
Erfahrener Benutzer
Robotik Einstein
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?)
-
Neuer Benutzer
Öfters hier
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!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen