Kann man echte I2C-Sensoren an den EV3 anschließen?

I2C-Protokoll - (Computer, ev3, I2C) Startsequenz?! - (Computer, ev3, I2C) Zyklus?! - (Computer, ev3, I2C)

3 Antworten

Hallo

Ich werde hier noch einmal mir selbst antworten um meine Ergebnisse zum Thema zusammenzufassen.

  • Der Ev3 kann mit dem I2C-Protokoll arbeiten.
  • Der Sensor, der über das I2C-Protokoll angeschlossen ist, wird vom EV3 in der Regel im Abstand von 100 Millisekunden bei 4000 Baud abgefragt (10 mal je Sekunde im 1/4 Millisekunden-Takt). Das gilt aber nur für LEGO-Sensoren.
  • LEGO hat klare Vorstellungen davon, dass bestimmte Informationen an vorbestimmten Adressen vorliegen.
  • Das I2C-Protokoll kann für "unverarbeiteter Sensorwert" (nur LEGO-Sensoren), Small-Basic (Sensoren die ausschließlich über Register), oder eine andere Programmiersprache, die auch Befehle verarbeiten kann (alle I2C-Slaves = Sensoren und anderes), verwendet werden. Die Abfragegeschwindigkeit ist hier vom Programm abhängig.
  • Für das I2C-Protokoll benötigt der EV3 die bereits bekannten 82kOhm-Widerstände am SDA- und SCL-Anschluss. Der Sensor wird mit 5V versorgt, aber mit 3,3V-Pegeln an den Anschlüssen betrieben.
  • LEGO verwendet beim EV3 den Analogzugang, bzw. das LIN-Protokoll. Hier fragt der EV3 nach Aussage von LEGO, im Abstand von einer Millisekunde bei 30000 Baud ab (1000 mal je Sekunde).

Ich hoffe hiermit alle Fragen beantwortet zu haben, die jemand benötigt der auch einmal das I2C-Protokoll anwenden möchte.

Liebe Grüße an alle Bastler - citkid

Deine Aufgabe sollte mit der erweiterten LEGO Education Software funktionieren. Ich könnte ein paar Sachen darüber schreiben allerdings sind die wahren Spezialisten im Spezialforum aktiv:

www.mindstormsforum.de

Außerdem gibt es einige UNIs, die speziell mit LEGO Sensoren I2C experimentieren allerdings dann auch mit alternativen Programmiersprachen.

Hallo

gerade eingestellt und schon selbst eine Antwort auf eine meiner Fragen gefunden.

Der LEGO-Color-Sensor verwendet den STM8S103F3. Die Übertragung läuft dabei nicht über die SCL/SDA-Leitungen, die sind nicht einmal bestückt, sondern über UART1 RX/TX. Darüber läuft laut Datenblatt wohl eher das LIN-Protokoll. Dieses Protokoll ist ein One-Wire-Protokoll. Damit ist Zyklus falsch, die untere "Kurve" im Oszillogramm nicht zu verwenden. Die SCL-Leitung wird für die Übertragung möglicher weise nicht benötigt.

Es lässt sich also kein Sensor an den NXT/EV3 mit I2C-Protokoll übertragen.

Es bleibt die Frage wie man mit 58 Baud 1000 Messwerte / Sekunde hinbekommt? Bei 1000 Messwerten und 8 Bit-Daten sowie Start und Stop benötigt man 1000 Werte * 10 Bit = 10000 Baud. Entspricht 1 / 1000 Baud = 0,0001 Sek. (100nS) für ein Bit. - Hier habe ich mich vertan. Siehe Bild: ( 5 * 0,1mS )  / 15 Bit = 30000 Baud und damit 3 mal so schnell wie mindestens erforderlich.

Frage 3 u. 4 bleibt somit noch offen. Bei Frage 3 ist es wohl eher, welcher Sensor ist hierfür geeignet?

citkid

Baudermittlung - (Computer, ev3, I2C)

Was möchtest Du wissen?