3-Wire Ports - V5 System Architecture

The V5 system makes significant use of smart devices, however we still need to work with analog and digital devices. Additionally, the VEX EDR user base has switches, potentiometers, and sensors that are still perfectly good, thus we kept the function of 3-Wire devices in V5. Along the way, we made a few improvements.

V5 System

3-Wire ports are now multi-purpose. Any 3-Wire port can be a digital input, digital output, analog input, or PWM motor control. This improves flexibility and ensures that you can always use every port if needed.

The eight 3-Wire ports now make up a smart device. A dedicated Cortex M0 microcontroller has the sole responsibility of reading inputs and toggling outputs. The data is reported to the user the moment it is measured. This means digital input changes trigger an immediate interrupt-based message to the user sensor memory to minimize latency. Analog inputs are pre-filtered for 5 milliseconds and then moved to the user sensor memory on a continual basis.

 chrome_BTNG6QEpnm.png

The 3-Wire software also supports legacy sensors such as the Cortex-era Ultrasonic Range Finder, Optical Shaft Encoder, LED, Yaw Rate Gyroscope Sensor, and Analog Accelerometer. 3-Wire ports can also serve as a PWM motor port for driving the older servos and Motor Controller 29’s. When using servos and motors, the voltage is limited to 5V and 2A total for all eight ports, so these devices will have less power output than with the Cortex Microcontroller’s 7.2V battery.

The 3-Wire ports open up the possibility of using non-VEX sensors for classroom use, teaching, and experimenting. The analog input is now 0-5V compatible to expand the number of compatible sensors. Future enhancements to the 3-Wire ports are planned to allow I2C and UART communication to non-VEX sensors as well.

3-Wire Programming
Events
when(Bumper.pressed)
when(Bumper.released)
when(DigitalIn.high)
when(DigitalIn.low)
when(AnalogIn.changed)
Settings
Encoder.setRotation()

Actions
DigitalOut.set()
PWMout.state()
Sensing
Bumper.pressing()
DigitalIn.value()
Device.value()
Encoder.rotation()
Encoder.velocity()
Sonar.distance()
  V5 3-Wire Ports Cortex Microcontroller
Digital Ports Use any of the 8 built-in 3-Wire Ports 8
Analog Ports Use any of the 8 built-in 3-Wire Ports 12
3-Wire Expansion Add 8 more ports using a 3-Wire Expander.
The 3-Wire Expander uses one Smart Port.
 
Message rate - digital On Change up to 1 kHz Determined by user software
Message rate - analog 5 mSec Determined by user software
Digital Input High = 2.4 - 5.5 V
Low = 0.0 - 1.0 V
 
Digital Output High = 2.9 V min into a high impedance
Low = 0.4 V max into a high impedance
 
Analog Input 0 - 5 V 0 - 5 V
Analog Input Resolution 12-bit 12-bit
Power out 5v @ 2A total for all ports 5v @ 1A total for all ports