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.
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.
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 |