The Digital Sidecar is the most complex FIRST-supplied breakout in the control system, providing the following functions:
- power input reverse voltage protection with circuit breaker
- power input indicator light
- 5 and 6 volt power supplies
- FRC friendly physical connections
- NXT port to enable use of Mindstorms components
- serial to parallel conversion for driving relays (spike)
- general purpose digital IO with pullups for digital inputs.
- buffered PWM outputs for motor controllers (victor and jaguar) and servos
- optional 6v power for servos
The block diagram below shows all of the circuits and their connections to the battery and the cRIO NI9403 32 channel digital interface module. The software components for motor controls, etc, interface with most digital components, relays and motor controllers utilize this module. The detailed schematic of the digital sidecar from Worcester Tech is available here.
This block diagram is a simplified version of the detailed schematics, including only enough detail to show the key circuit blocks, but also with details like pullup and limiting resistors to guide design of robot components that utilize the digital sidecar.
Starting at the top of the block diagram:
- I2C circuits: These provide an interface for NXT (Lego Mindstorms) components. This enables using FTC and FLL sensors.
- The 14 general purpose digital input/output (GPIO) channels: These connect directly to the NI9403 module. There is a 10K pullup resistor on each line, so an unconnected pin acting as an input will read as a "1" level. For the same reason, a limit switch that uses one of these inputs should be connected between the signal pin and GND, so that when the switch is open, it reads a "1".
- Each GPIO channel can be configured as an input or an output by the robot software. Creating an instance of the DigitalInput class or VI sets the corresponding channel to input mode, and creating an instance of DigitalOutput sets the corresponding channel to output mode.
- The Output_enable signal is "active low," meaning that outputs are enabled when it drives a "0". When this signal is a "1", the PWM (Victor, Jaguar, servo) and relay (spike) controls turn these devices off.
- There are 10 PWM signals, each driven through a buffer than can be disabled. There is a 330 ohm resistor in series with each line, effectively providing isolation from short circuits and other bad connections on the electrical board. The pulse width modulated waveform is generated by the cRIO FPGA controlled by the PWM class in the software. Click here for details on the PWM control signal
- The PWM outputs are designed to drive motor controllers like Victors or Jaguars, or standard RC servos. The servos require a 6 volt power supply, which is provided by the middle wire of the PWM cable if the power jumper is in place for that channel. This jumper should be in place only for servos.
- The relay outputs are for controlling switches like Spike relays. The digital sidecar creates these signals using only three signals from the NI9403 digital interface module by serially shifting the desired values into holding location and then transferring them all at once to the relay output pins. This approach is not blindingly fast, but it is fine for this purpose, and allows us to have more output signals. Each relay gets two control signals: one to drive forward current and one to drive reverse current. If both are off, then no current is driven. Each channel has an indicator light for each of these two control signals. For safety, there are 680 ohm resistors in series with each control signal. There is also a 10K pulldown resistor that turns off all of the relays if the output_enable signal is inactive. The three signals that control the serial to parallel conversion are:
- RELAY_SERIAL_DATA - the current value being sent to the serial to parallel circuit
- RELAY_SHIFT_CLK - shifts the serial data into the serial to parallel circuit, pushing the data already added down the line
- RELAY_OUTPUT_CLK - copies the shifted data to the outputs of the serial to parallel circuit.
- In addition to the relay outputs, this serial to parallel circuit generates four spare outputs, available on a connector adjacent to the NXT port. These signals have no pullups, pulldowns or isolating resistors, so they must be used with great care to avoid damaging the digital sidecar.
- Robot signal light control (BFL, or "Big Flashing Light"): This is another output of the serial to parallel circuit. It drives the Robot Signal Light circuit, which supplies the power for the signal light. The indicator light associated with this circuit flashes the same as the main signal light.
- Battery input connector and reverse voltage protection circuit: The digital sidecar circuits run mostly on 5 volts. This is derived from the 12 volt battery voltage through a DC to DC converter marked in the block diagram as "5 volt power supply." All wires labeled +5 connect to this. In addition, there is a 6 volt power supply for use by servos connected to the PWM pins. If the battery is accidentally connected in reverse, the digital sidecar is protected by the reverse voltage protection circuit, which prevents harmful currents by disconnecting the ground line.