Sebastian Deppisch

Ls-Mux

4x Lichtsensormultiplexer

Wenn man mehre Sensoren an einen NXT anschließen will, hat man das problem, dass der NXT nur 4 Sensor Ports hat. Mit dieser Schaltung kann man 4-Lichstsensoren an einen NXT Port anschliesen.
Der Mux ist Kaskadierbar.(Bis zu 8 Stück an einem Port, wenn man PCF8574P und PCF8574A benutzt, kann man 16 an einen Port anschließen.) Der PCF8574 kann die LEDs der LSs an und aus schalten. Beim lesen schaltet er per Transistor Pin1/ADA für den jeweiligen Sensor durch. Man kann naürlich auch NXT Lichtsensoren benutzen, dann muss man aber die Pinbelegung ändern. Die Lichtsensoren können auch ohne Mux direkt am NXT betrieben werden, dann muss man aber auch die Pinbelegung ändern. Mit dem Jumper (J3) kann man eine externe Spannungsquelle jumpern. Bei einem Muxer braucht man das aber nicht. Wenn man mehre Muxer an einem Port benutzen will muss man die I2C Adresse des ICs ändern, dazu empfihel sich Jumper und Pullups/downs zu nehmen.


Der Schaltplan


Der Schaltplan für die Lichtsensoren. Man kann auch NXT Lichsensoren benutzen.(Die sind aber viel teurer). Man muss dann aber die Steckerbelgung dementsprechend anpassen.


Hier ein Bild vom Muxer auf dem Steckboard. Die Flachbandkabel gehen zu den Sensoren.


Ein Bild der Sensoren, ich habe nur 3 aufgebaut.


Link zum Treiber
Programmbeschreibung:
SetSensorLSMux(SensorPort,char SensorNummer,I2CAdresse); Braucht man um den Sensor zu konfigurien./setzen. SensorPort erklärt sich von alleine. Mit SensorNummer kann man, wenn man mehrere Muxs am NXT betreiben will, die einzelnen Muxs durchnummeriren. Bei I2CAdresse muss man die I²C Adresse vom jeweiligen PCF8574 angeben.

LSMuxSetLightOn(char SensorPort,char LightNumber, char SensorNumber) Braucht man, um eine einzelne LED der Sensoren an zu machen. LightNumber Nummer der LED die man anmachen will (0-3)

LSMuxSetLightOff(char SensorPort,char LightNumber, char SensorNumber) Braucht man, um eine einzelne LED der Sensoren aus zu machen. LightNumber Nummer der LED die aus anmachen will (0-3)

LSMuxSetLights(char SensorPort,char Lights,char SensorNumber) Braucht man um alle (4) LEDs eines Muxs auf einmal an oder aus zu machen. Lights Hex-Code 0x0-0xF je nach Kombination. (4bit)

LSMuxReadSensor(char SensorPort,char Number,char SensorNumber) Braucht man zum Sensorauslesen. Man kann nur einen LS gleichzeitig auslesen. Number ist die Nummer des Sensors (0-3)

(C)Sebastian Deppisch 2008-2013