PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : zeitmessung über I2C Bus



auto-eng
12.09.2007, 10:56
Hallo,
um einmal die Möglichkeiten zu checken, folgende Frage:

Als Zeitmesssystem für eine Slotcar-Bahn möchte ich einige Lichtschranken (ca. 15 - 20) vom PC aus auslesen können.
Mein Plan: Fototransistoren an -> [????] -> I2C bus Nachricht mit ID und Zeitstempel (ms genau!)

Frage: was muss hinter [????] stecken? Gibt es spezielle I2C Chips? Muss man Mikrocontroller programmieren (was ist die einfachste / billigste Lösung?)

Ich plane I2C auch noch für andere Aufgaben einzusetzen, z.B. Bahnspannung, Ample LEDs, etc.

Vielen Dank für Hilfe!

Hubert.G
12.09.2007, 11:24
Wie groß sind die Entfernungen, I2C ist nur für kurze Distanzen geeignet.

auto-eng
12.09.2007, 12:18
bis zu 4 - 5 m.
Ich finde nur: "In typical applications, the length is a few meters (9-12ft)."
Hat jemand praktische Erfahrung bzgl. der Länge / kann Empfehlungen für die Verkabelung und max. Übertragungsrate geben?
Gibt es Alternativen? One-Wire Bus, CAN Bus z.B.?

Danke, Dirk

Hubert.G
12.09.2007, 13:55
Ich bin über 50cm noch nicht hinausgekommen. Es wurde aber hier und auch in anderen Foren diskutiert und der Schluß daraus war immer, wenn man das geschlossene Gerät, Gehäuse, verlassen muss ist I2C ungeeignet. Ich kenne sonst nur RS485, vieleicht findet sich hier jemand der zum Thema CAN-Bus etwas sagen kann.

Crazy Harry
12.09.2007, 14:48
Ich habe einige LCDs über I²C (PCA9555D) laufen mit 400 kBit und Längen bis 2.3m. Geschirmtes Kabel und Abschlußwiderstände 1 kOhm.

Es gibt auch Repeater die Kabellängen bis in den km-Bereich erlauben.

nikolaus10
12.09.2007, 15:00
Hallo
Wieso willst du denn unbedingt I2C ?
Sind die Lichtschranken so inteligent?
Oder nuzt du zusaetzlich noch RFID oder aehnliches zum erkennen deines Autos?
Wenn es nur die Lichtschranken sind wuerde das vielleicht auch ueber den kaskadierten Lpt-Port des PC's gehen.
MFG

auto-eng
12.09.2007, 22:32
Moment - jetzt mal logisch: wenn ich die LS über Treiber und 4m an den Lpt anschließen kann, warum dann nicht auch an einen I2C Chip ???
I2C zur Überbrückung der Distanz war wohl ein Denkfehler meinerseits.

Mir gefiele das Design wesentlich besser, als etliche Par.Port Karten in den PC einzubauen (und die ganzen dicken Kabel ;-) / außerdem geht in den alten Aldi-Rechner eh nur noch eine PCI Karte rein, womit ich kaum auskomme, wenn ich auch noch Augänge für Startampel, Weichen, etc. brauche.)

Zum anderen erwarte ich mir erheblich einfachere Software PC-seitig, um die notwendige Genauigkeit und Zuverlässigkeit hin zu bekommen (müsste sonst soetwas wie RealTime-Linux machen, denke ich.) Dazu benötige ich eben die [????] Lösung (s.o.).

Drittens habe ich bereits Schaltung und Software, die mittels I2C die Bahnspannung steuert.

Gruß Dirk

auto-eng
13.09.2007, 20:48
Muss ich aus dem Fehlen von Antworten auf meine eigentliche Frage schließen, dass es keine integrierte Schaltung gibt, die auf ein Signal an einem Input eine I2C Nachricht mit einem Zeitstempel absetzt?

Na gut, programmiere ich halt einen µC. Ich würfele mal zwischen PIC und AVM.

Falls noch jemand einen Tipp hat - immer sehr gern !!!

Gruß Dirk

BASTIUniversal
14.09.2007, 15:48
Hi!
Also wie schon geschrieben würde ich auf CAN-Bus oder RS-485 setzten und nicht auf I²C.
Die Nachricht zum Start des Timers muss auch recht zügig gesendet werden, und zwar am besten gleichzeitig an alle (vllt. gibt's da so eine Art Broadcast-Befehl der an alle geht). Bei der Zeitmessung müssen auch relativ genaue Taktquellen verwendet werden, die max. 1ms pro Zyklus falsch gehen. Nimmt man jetzt an, dass die max. Zeit 1000s (16 Minuten) beträgt, muss der Takt eine Abweichung von unter 1 ppm haben (hab mich hoffentlich nicht verrechnet). Ein normaler Grundton-Quarz von Reichelt hat ca. 30ppm Abweichung.

Falls du dich doch für I²C entschieden hast, dann kannst du das Signal von der Lichtschranke (wenn es Logik-Kompatibel ist) mit einem PCF8574 oder PCA9557 erfassen. Bei den Bausteinen handelt es sich um 8-I/O-zu-I²C Konverter über den du die Pins lesen und schreiben kannst. Der PCF kostet bei Reichelt 1,75€ und der PCA 1,45€ (den Unterschied weiß ich nicht, der PCA ist aber SMD).
Um die lange Kabelstrecke zu schaffen brauchst du wie schon gesagt ggf. einen Repeater. Bei Reichelt gibt es z.B. den PCA9517 und PCA9515 (1,75 bzw. 1,55€).
Bei Reichelt gibt es auch noch mehr interessantes I²C "Zubehör"...einfach mal reinschauen.

Um die Auswertung vom PC und Betriebssystem unabhängig zu machen, würde ich einen µC verwenden, der dir die Bus-Signale der Lichtschranken in ein passendes Format wandelt (z.B. als .csv) und über USB an den PC sendet. Da jeder halbwegs aktuelle PC (und Notebooks fast nur noch) einen oder mehrere USB-Anschlüsse hat, dürfte das das Sinnvollste Interface sein.

MfG
Basti

beppo
14.09.2007, 17:43
Es gibt jede Menge I2C Bausteine, die in Frage kommen. Ich selbst hab mit dem PCF8574 von Philips schon gute Erfahrungen gemacht. Das ist allerdings nur ein "einfacher" IO Baustein. Die Lichtschranke musst noch extra aufbauen.
beppo