For your NXT or EV3
Sensors
Accelerometer, Compass & Gyro
Motor Multiplexers & Controllers
Wireless Control
Sensor Adapters & Multiplexers
RC Servos, Mountings & Pneumatics

Sensor Kits
Flexi-Cables & Cable Extenders
Classroom packs of Flexi-Cables
Plugs and Connectors
Power Options
Other Robotics accessories

EV3 Console Adapter
EV3 Sensor Adapter for NXT or Arduino
EV3 Compatibility Info

Android App for NXT/EV3

Arduino Products
Shields and Controllers

Raspberry Pi Products
For your Raspberry Pi

Connect with us
Google+
Shopping Cart
Your cart is empty.

Ordering Information
Our Distributors
World Wide Shipping
How to Order and Pay
Paying by Credit Card
Your satisfaction is important to us
About mindsensors.com
Site Map

Yondering ...
Forums
FAQ
Videos
Coming Soon ...
End of Life Products
Robotics related Links

Downloads
NXT Product Docs and Software
User Guides
EV3 Blocks
API's and Sample Programs
NXT-G Blocks
All Downloads

EV3 Programming Environment
Which Programming Environment do you prefer for EV3?
EV3 Home Edition
EV3 Edu Edition
LeJOS
MonoBrick
RobotC
ev3dev
Other



[View Result]

Votes: 1234
Translate this site
Translate this site: (Courtesy of Google™)
Search Web Pages



Need Quote for your School?
Write e-mail to:
info
Need Technical Support?
Write e-mail to:
support
Note your order number in the support request.
You can find order number on your Packing-slip or Order confirmation e-mail.


Proud Supporter of:
Robofest


Trinity College Fire Fighting Robot Contest.

Contact:
E-mail:
info
Address:
mindsensors.com

8623 Mayland Drive
Henrico, VA 23294-4703 USA.
Phone: (804) 767-8116
Fax: (804) 747-5303
Official PayPal Seal
Active Sensor Multiplexer v2
Features
AMUX

Active Sensor Multiplexer - The RCX has only 3 sensor input connectors. Most of the sophisticated robot designs need more than three sensors. Active Sensor Multiplexer lets you connect extra 3 Actively Powered sensors to single input port. Thus giving designer the power of total 9 sensors for each RCX. This permits you to connect Light, Angle or any other custom sensor at the same time to single RCX sensor input port.
RCX sensor port has just enough power to drive single sensor, hence this multiplexer not only switches signal, but also switches the power to sensor ON and OFF, while giving you the flexibility of three extra sensors and still conserving the battery. You can change from one sensor to another sensor by changing the sensor type momentarily, say from light sensor to touch sensor. Example of NQC program is included at the bottom of this page.

Also works with Mindstorms NXT.
Technical Specifications
  • Total power consumption: 4mW (less than 3% of total available power)
  • Current consumption: 500uA with no sensor attached.
  • Voltage drop: 50mV with Light sensor attached.
  • Channel selection time: 75 ms
  • Channel access logic: Random access to any channel.
  • Size: 5 studs by 4 studs.
  • Connector: Standard Mindstorms electric wires can be connected at the bottom or simple wire with two-pin female connectors can be connected at the top.
  • Devices used: High Reliability solid state SMT and Low power Microcontroller.

ROBOLAB Example -
AMUX ROBOLAB example

Visit the download section of website to download the vi library.
You can also get it from here
NQC Functions and Usage Example
NQC
#define THRESHOLD 40
task main()
{

  //AMUX is connected to port 2
  SetSensorType(SENSOR_2,SENSOR_TYPE_LIGHT);
  Wait (10);
  // set full power to motors
  SetPower(OUT_A+OUT_C,OUT_FULL);
  // drive the robot forward
  OnFwd(OUT_A+OUT_C);   
  Ch2();
// keep going forward until value of light sensor
//connected at channel2 of AMUX is <= predefined value
  while (SENSOR_2 <= THRESHOLD) {
    /* keep going */                         
    ;
  }
  Off(OUT_A+OUT_C);   // then stop
}

/* --------------------------------------
** use this function to select channel 1
** (assuming that AMUX is connected to port 2 on RCX)
** -------------------------------------- */
void Ch1(void)
{
  SetSensorType(SENSOR_2,SENSOR_TYPE_TOUCH);
  Wait(1);
  SetSensorType(SENSOR_2,SENSOR_TYPE_LIGHT);
}

/* --------------------------------------
** use this function to select channel 2
** -------------------------------------- */
void Ch2(void)
{
  SetSensorType(SENSOR_2,SENSOR_TYPE_TOUCH);
  Wait(1);
  SetSensorType(SENSOR_2,SENSOR_TYPE_LIGHT);
  Wait(1);
  SetSensorType(SENSOR_2,SENSOR_TYPE_TOUCH);
  Wait(1);
  SetSensorType(SENSOR_2,SENSOR_TYPE_LIGHT);
}

/* --------------------------------------
** use this function to select channel 3
** -------------------------------------- */
void Ch3(void)
{
  SetSensorType(SENSOR_2,SENSOR_TYPE_TOUCH);
  Wait(1);
  SetSensorType(SENSOR_2,SENSOR_TYPE_LIGHT);
  Wait(1);
  SetSensorType(SENSOR_2,SENSOR_TYPE_TOUCH);
  Wait(1);
  SetSensorType(SENSOR_2,SENSOR_TYPE_LIGHT);
  Wait(1);
  SetSensorType(SENSOR_2,SENSOR_TYPE_TOUCH);
  Wait(1);
  SetSensorType(SENSOR_2,SENSOR_TYPE_LIGHT);
}


Lejos driver for Active Sensor Multiplexer
lejos
import josx.platform.rcx.*;
/**
* Simple test class for active sensor multiplexer with lejos.
* It has been tested with lejos 2.1.0 
* (should work with earlier versions since 1.4.0).
*
* @author Jean-Michel Gaudin
* @version 26-January-2004
*
* @see josx.platform.rcx.Sensor
*/

public class ActiveMpxTest implements SensorConstants
{
  // Connect the active multiplexor output to rcx input 2
  private static Sensor rcxInput = Sensor.S2;

  public static void main(String [] args)
  {
    int i; //loops
    int chValue; // active multiplexer ch values

    // select active multiplexer ch1 input
    selectCh1();
    // display ch label
    displayChlabel("ch1");
    // read and display ch1 value
    for (i=0;i<10;i++)
    {
      // read active multiplexer ch1 values
      chValue = rcxInput.readValue();
      // display it
      displayChValue(chValue);
    }

    // select active multiplexer ch2 input
    selectCh2();
    // display ch label
    displayChlabel("ch2");
    // read and display ch2 values
    for (i=0;i<10;i++)
    {
      // read active multiplexer ch2 value
      chValue = rcxInput.readValue();
      // display it
      displayChValue(chValue);
    }

    // select active multiplexer ch3 input
    selectCh3();
    // display ch label
    displayChlabel("ch3");
    // read and display ch3 value
    for (i=0;i<10;i++)
    {
      // read active multiplexer ch3 value
      chValue = rcxInput.readValue();
      // display it
      displayChValue(chValue);
    }

  }

  // Select the ch1 input of the active multiplexer
  private static void selectCh1()
  {
    rcxInput.passivate();
    rcxInput.setTypeAndMode(SENSOR_TYPE_TOUCH,SENSOR_MODE_BOOL);
    sleep10ms();

    rcxInput.activate();
    rcxInput.setTypeAndMode(SENSOR_TYPE_LIGHT,SENSOR_MODE_PCT);
  }

  // Select the ch2 input of the active multiplexer
  private static void selectCh2()
  {
    rcxInput.passivate();
    rcxInput.setTypeAndMode(SENSOR_TYPE_TOUCH,SENSOR_MODE_BOOL);
    sleep10ms();

    rcxInput.activate();
    rcxInput.setTypeAndMode(SENSOR_TYPE_LIGHT,SENSOR_MODE_PCT);
    sleep10ms();

    rcxInput.passivate();
    rcxInput.setTypeAndMode(SENSOR_TYPE_TOUCH,SENSOR_MODE_BOOL);
    sleep10ms();

    rcxInput.activate();
    rcxInput.setTypeAndMode(SENSOR_TYPE_LIGHT,SENSOR_MODE_PCT);
  }


  // Select the ch3 input of the active multiplexer
  private static void selectCh3()
  {
    rcxInput.passivate();
    rcxInput.setTypeAndMode(SENSOR_TYPE_TOUCH,SENSOR_MODE_BOOL);
    sleep10ms();

    rcxInput.activate();
    rcxInput.setTypeAndMode(SENSOR_TYPE_LIGHT,SENSOR_MODE_PCT);
    sleep10ms();

    rcxInput.passivate();
    rcxInput.setTypeAndMode(SENSOR_TYPE_TOUCH,SENSOR_MODE_BOOL);
    sleep10ms();

    rcxInput.activate();
    rcxInput.setTypeAndMode(SENSOR_TYPE_LIGHT,SENSOR_MODE_PCT);
    sleep10ms();

    rcxInput.passivate();
    rcxInput.setTypeAndMode(SENSOR_TYPE_TOUCH,SENSOR_MODE_BOOL);
    sleep10ms();

    rcxInput.activate();
    rcxInput.setTypeAndMode(SENSOR_TYPE_LIGHT,SENSOR_MODE_PCT);
  }

  // Current thread sleeps for 10 ms
  private static void sleep10ms()
  {
    try {Thread.sleep(10);}
    catch(InterruptedException ie){}
  }

  // Display the ch label on the rcx LCD for 0.5 s
  private static void displayChlabel(String chLabel)
  {
    LCD.clear();
    TextLCD.print (chLabel);
    try{Thread.sleep(500);}
    catch(InterruptedException ie){}
  }

  // Display the ch value on the rcx LCD for 250 ms
  private static void displayChValue(int chValue)
  {
    LCD.clear();
    LCD.showNumber(chValue);
    try{Thread.sleep(250);}
    catch(InterruptedException ie){}
  }
}
How to connect Active Sensor Multiplexer to RCX and sensors
How to connect AMUX

If you are using standard lego wires, use the connector orientations as shown in this pitcure.

Note:
Active sensor Multiplexer needs to be connected to your Lego RCX only in one polarity way. Reversing this will cause the malfunction of multiplexer (This does not damage Multiplexer). To determine the correct polarity follow these steps:
  1. Connect the multiplexer to your RCX.
  2. Connect light sensor to Ch2.
  3. Switch on your RCX.
  4. If Light sensor is ON, reverse the polarity of RCX connection by rotating connecting wire by 180 degree.