Stuart Schmitt, 28 April 2016
← E&C bus table of contents
The interface at right is a simple way to connect the E&C bus to a microcontroller. The transistors invert the signal and limits it to TTL voltage levels. Any small NPN transistor is acceptable; BC337 and 2N3904 transistors have been proven to work. The single-wire E&C bus is separated into receive and transmit signals for the microcontroller. The supply voltage could be 5 V or 3.3 V, depending on the preferred operating voltage of the microcontroller.
On the receiver side, transistor Q1 pulls the RX signal LOW when E&C voltage is high (idle) and lets it go HIGH when E&C voltage is low (active).
The transmit signal drives pulldown transistor Q2. Thus, the transmit pin of the microcontroller must idle LOW and go HIGH to send a pulse.
Resistor R2 serves to protect the circuit in case of a short to battery voltage. The pullup resistor R1 should be included if a GM radio is not on the serial bus; typically the radio contains the bus’s only pullup resistor, so the bus is dead without it.
This interface is designed so that both transmit and receive signals at the microcontroller are electrically similar (idle LOW and active HIGH) and inverted from the E&C bus voltages. However, an even simpler non-inverting receiver circuit with just a diode (anode pointing away from microcontroller) and pulldown resistor would be effective. The microcontroller will need to be programmed accordingly.
The Arduino platform provides a convenient way to obtain an easy-to-use microcontroller. For a compact, dedicated interface, SparkFun’s Arduino Pro Mini works well (a USB interface will also be necessary). A compact mating printed circuit board can be ordered from OSH Park. On the PCB, the transistor orientation is not marked in order to accommodate either EBC or CBE pin arrangements. For both transistors, the emitter is the pin closest to the E&C bus header. EAGLE PCB schematics are also available for modification.
Arduino code to install on the microcontroller is available on GitHub, as well as Linux software to communicate with it.