Sensor-Hardware

Generationen

Es gibt derzeit drei Generationen (siehe auch lego_mindstorms):

  1. RCX mit 2-Draht Anschlüssen (2 Aktoren, 3 Sensoren)
  2. NXT mit 6-Draht Anschlüssen (3 Aktoren, 4 Sensoren)
  3. EV3 mit kompatiblen Anschlüssen (4 Aktoren, 4 Sensoren)

Alle können mit 6 Batterien à 1.5V, also nominell 9V, betrieben werden. Dies ergibt als Maximalspannung bei frischen Batterien 9.6V. Bei Verwendung von Ni-Akkumulatoren ist die Minimalspannung pro Zelle 1.2V, also zusammen 7.2V. Am häufigsten werden Li-Akkumulatoren verwendet, deren Nominalspannung 8.4V beträgt.

Sensor-Interface

Das Sensor-Interface von NXT und EV3 verwendet 6 Leitungen:

  1. RCX kompatibler Analog-Eingang (s.u.)
  2. Masse (GND) bei NXT, Auto-ID Eingang beim EV3
  3. GND
  4. +5V, max. 20mA (+4.3V bei NXT lt. Manual, gemessen 4.75V)
  5. SCL für I²C, Digital Ein-/Ausgang
  6. SDA für I²C, Digital Ein-/Ausgang, Analogeingang beim EV3

Dabei sollte der RCX-Analogeingang auf Pin 1 lt. Hardware-Beschreibung bei beiden die nachfolgend für den RCX dargestellte Schaltung verwenden, bei der die Batteriespannung über eine 20mA-Strombegrenzung angeschaltet wird. Messungen ergaben jedoch, dass dies nicht der Fall ist. Da nur der Ultraschall-Sensor diese Versorgung benutzt und seine Resultat über I²C übergibt, wird die Stromquelle offenbar nur hier eigeschaltet.

Sensor-Erkennung und -Einstellung

Während für den NXT der Typ des Sensors manuell eingestellt werden muss, enthält der EV3 enthält eine Sensor-Erkennung nach folgender Tabelle in der notierten Reihenfolge (s. S. 7 des Handbuchs). Ob dies auch bei neueren Ständen der NXT-Firmware erfolgt, ist unbekannt.

1 2 3 4 5 6
L H H I²C Sensor
L L NXT Helligkeitssensor
<0.1V L NXT Farbsensor
L NXT Schalter (Touch)
<0.1V H EV3 Digitalsensor
<3.1V H EV3 Einfachsensor
>4.8V H H EV3 Farbsensor

Das Prinzip scheint recht einfach zu sein:

  • Wenn der Sensor I²C verwendet, sind durch 82kΩ-Pullups die Pins 5 und 6 auf High. Sodann muss eine I²C Kommunikation erfolgreich sein.
  • Da beim NXT die Pins 2 und 3 beide GND sind und in den Sensoren verbunden sind, zeigt Pin 2 Low einen NXT-Sensor an.
  • Ist Pin 2 nicht verbunden, was bei allen verfügbaren Sensor-Schaltplänen der Fall ist, und somit nicht Low, dann handelt es sich um einen EV3-Sensor.
  • Innerhalb der EV3-Familie entscheidet Pin 1 über den Sensor.

Allerdings passt der Schaltplan des EV3 nicht ganz hierzu. Dort wird Pin 2 durch einen Spannungsteiler von 10kΩ/18kΩ an 5V im unbeschalteten Zustand auf 3.2V eingestellt; dies wäre sinnvoll, wenn die Sensoren drei Fälle durch offenlassen, Verbinden mit Masse und Verbinden mit +5V codieren würden. In allen veröffentlichen Schaltplänen für EV3-Sensoren ist jedoch Pin 2 offen, und Pin 1 an Masse, mit der Ausnahme des Schalters (Touch), der Pin 1 über 910Ω an Masse legt.

Ferner sind die 82kΩ-Pullups für den I²C bereits in der Steuerung vorhanden und nicht auf den Sensoren.

Zudem sind in der Tabelle zwei Zeilen als redundant wegelassen worden; und der EV3-Farbsensor ist ein I²C-Sensor, der Pin 1 auf Low legt.

Damit der NXT-Helligkeitssensor im EV3 richtig erkannt wird, muss lt. Tabelle Pin 5 auf digital Low liegen. Er ist jedoch über 10kΩ mit der Basis eines Transistors verbunden, der weitere 10kΩ parallel liegen. Damit ist die Spannung an Pin 5 ca. 2.2V, also digital unbestimmt und nicht Low. Somit ist es nicht verwunderlich, dass der EV3 den NXT-Helligkeitssensor nicht erkennt.

RCX-Sensoren

Das Sensor-Interface des RCX kann mit einer 2-Draht Verbindung sowohl passive als auch aktive Sensoren betreiben. Diese Schnittstelle ist auch in den Nachfolgern noch auf Pin 1 und 2 verfügbar und erlaubt sehr einfache Sensoren. Aktoren (Motoren) wurden gleichfalls über 2-Draht-Verbindungen angeschlossen.

Aus den Unterlagen zum NXT geht hervor, dass die Verbindung auch die Betriebsspannung für aktive Sensoren bereitstellt, indem über einen schaltbaren Strombegrenzer für 20mA die Batteriespannung verfügbar ist. Diese wird für 0.1ms unterbrochen; ein aktiver Sensor muss die Spannungsversorgung entsprechend puffern (10µF). Während der Unterbrechung liegt die Betriebsspannung über 10kΩ an der Batteriespannung, und es wird die analoge Spannung mit dem Maximalwert von 5V mit 10 Bit Auflösung, also ca. 5mV, gemessen. Durch eine passende Belastung wird die Spannung geringer, und der Messwert ist das analoge Eingangssignal.

Lt. Schaltplan des NXT sollte die Spannung über 1kΩ mit einer Si-Doppeldiode (1PS226) geklemmt werden, also ca. 5.7V betragen; dies ist jedoch nicht der Fall, s.u.

Schalter- (Touch-) Sensor

Der einfachste Sensor ist ein Schalter, der im eingeschalteten Zustand einen Widerstand von 2,2kΩ zwischen beide Pole legt, die ansonsten offen sind. Dann liegt die gemessene Spannung zwischen 1,3V und 1,8V (266..368, bei einem Strom von 0,6mA und 0.8mA), sonst auf Maximalwert 5V (1024).

Offensichtlich kann auch ein Optokoppler verwendet werden, wenn eine galvanische Trennung benötigt wird. In der Regel reicht dafür ein Strom von 1mA im Eingangskreis aus.

Analoge Sensoren

Durch entsprechende Belastung des 10kΩ-Widerstands in den Messpausen können analoge Spannungen eingestellt und an den Brick übertragen werden.

Im einfachsten Fall ist das ein Widerstand, dessen Wert aus der Batteriespannung und der gemessenen Spannung bestimmt werden kann. Durch die wenig genaue bekannte Betriebsspannung (bis zu 20% unter dem Nominalwert von 9V) sind die Messwerte gleichfalls recht ungenau, so dass Relativwerte bevorzugt werden sollten.

Im einfachsten Fall ist das ein Fotowiderstand mit 10kΩ Normalwert, dessen Dunkelwiderstand ca. 1MΩ beträgt und bei hellem Licht auf ca. 1kΩ sinkt.

Da die Pausen, in denen gemessen wird, vom Sensor schlecht erkennbar sind, versucht der Sensor kontinuierlich, sein Messergebnis einzustellen. Hierzu sind mindestens (9.6V-5V)/10kΩ = 0.46mA und höchstens 1mA notwendig. Eine Begrenzung ist notwendig, um den Stromverbrauch nicht unnötig groß zu machen; dies kann durch einen 1kΩ-Widerstand erfolgen; dann liegt die kleinste Messpannung bei ca. 1V, also bei 20% vom Endwert. Mit erheblichem Schaltungsaufwand kann dieser Wert auf vielleicht 0.25V, also 10% vom Endwert, verbessert werden, was wohl meistens nicht sinnvoll ist.

Allerdings wird weder vom NXT noch vom EV3 normalerweise die Stromquelle von 20mA zur Batterie eingeschaltet, so dass, wie im folgenden dargestellt, die Verwendung wesentlich einfacher ist.

NXT Sensoren

Messungen ergaben, dass an Pin 1 statisch 4.96V im Leerlauf und 1.24V bei Anschluss von 3.3kΩ gegen Massse vorliegen, was auf einen Widerstand von 10kΩ gegen +5V schließen läßt. Da zudem von den veröffentlichten Schaltungen nur der NXT Ultraschall-Sensor die Versorgung über Pin 1 wegen der höheren Spannung verwendet, könnte es sein, dass diese Feature gar nicht mehr vorhanden ist. Es konnte auch im eingebauten Sequenzer, bei dem auf Port 4 der Ultraschallsensor liegt, keine höhere Spannung als 5V beobachtet werden.

Daher wird angenommen, dass dieses Feature gar nicht (mehr) bestückt ist und Pin 1 immer mit 10kΩ statisch gegen 5V angeschlossen ist. Das vereinfacht die Erstellung eigener Sensoren erheblich.

Beispielsweise kann mit einem LM335 eine Ausgangsspannung von 10mV/K, also von 2.93V für 20°C, erzeugt werden; das entspricht einem Messwert von 600. Die Auflösung ist recht genau 0.5°C.

Erweitert man einen Operationsverstärker wie den LM324 mit einem Feldeffekttransistor wie dem BS170 oder 2N7000, dann kann der gesamte Spannungbereich von 0 bis 5V verwendet werden.

Widerstandsmessung

Legt man eine Widerstand R an, dann ist die Spannung `U_x=U_v*(R_x/(R_x+R_v))`. Ist, wie beim NXT experimentiell ermittelt, `U_v=5V` und damit gleich der Referenzspannung des A/D-Wandlers, dann ist der angezeigte Wert `alpha = 1024*R_x/(R_x+R_v)` mit `R_v`=10kΩ.


Log In