EX‑MotorShield8874¶
Designed in conjunction with the DCC-EX development team, the EX‑MotorShield8874 is extremely simple to use with all current and future generations of EX‑CommandStation hardware.
This board is the new standard by which we compare other boards.
Features¶
- Pin compatible with the original Arduino Motor Shield Rev3 but provides significantly improved electrical performance for driving higher loads, and improved usability.
- Rated for 5 Amps of continuous output current.
- No need to cut traces or bend out pins for stacking on the EX-CommandStation.
- 2 outputs (Main and Programming Track or 2 Mains).
- Single power supply input powers the shield, the Arduino, and the track (motor output). Powering of Arduino boards is possible due to the onboard DC/DC buck converter, supporting a wide input supply range from 9 to 30V. The reverse polarity protection prevents damage to the circuit and its components in case the power supply is accidentally connected backwards.
- Wide input voltage range from 9V to 30V DC.
- 5V and 3.3V compatible.
- Virtually no voltage drop, even at high currents.
- I2C header and STEMMA Qwiic connector for accessories (displays, port expanders, servo boards, etc.).
- Reverse polarity protection.
- Fault detection in addition to overcurrent reporting for extra safety.
- Alternative power in and out solder pads for different connector types.
- Stackable (Support Multiple Power Districts).
- Optional OLED header to connect a display directly to the shield.
- Based on two DRV8874 H-bridge motor drivers with integrated current sensing from Texas Instruments (TI). It is used to drive inductive loads like relays, solenoids, DC, stepping motors, as well as provide the DCC signal, and power to the model railroad tracks. Status LED for supply, which provides a visual indication of the power supply status in addition to LEDs to show each side of the A and B power outputs.
The boards 5V and 3V friendly design makes it suitable for a broad range of Arduino compatible platforms, with an override that compensates for designs with incomplete support (such as an incorrect IORef voltage).
Why did we make it¶
EX‑MotorShield8874 is specifically designed for use with DCC-EX Command Station for controlling model railroads, but can also be used as generally better replacement for Arduino Motor Shield R3 in any device that needs to control a motor. We needed higher current capacity to power more motors/trains and have little to no voltage drop due to advanced MOSFET driver technology.
Purchase¶
The EX‑MotorShield8874 is available from many suppliers.
Licensing¶
The EX‑MotorShield8874 was created through the gracious support and design facilities of Semify, who, along with DCC-EX, license it to manufacturers. The hardware design has been made open source for individual users and the schematics are available on the DCC-EX GitHub repository.
For quantities of 10 or less per annum, you may utilise a PCB manufacturing and assembly service such as JLCPCB without licensing fees. A donation to DCC-EX would be appreciated, so click the donate button. The production files are available on the DCC-EX GitHub.
Entrepreneurs wanting to use the design to offer commercial quantities to their local communities should contact Semify (service @ semify-eda.com) to arrange a bulk purchase or DCC-EX (support @ dcc-ex.com) for a license to manufacture. Licensing includes donating a royalty to DCC-EX per board sold.
Assembly with EX-MotorShield8874¶
The shield stacks onto a CSB1 without modification. The CSB1 firmware must be configured with the EX-Installer to recognise the additional two tracks.
For self-built command station, please consult the relevant build instructions.
DO NOT connect power to BOTH the EX-MotorShield8874 barrel jack and the underlying Arduino motherboard via its DC barrel jack as you may damage your Arduino and/or EX-MotorShield8874.
Engineering notes¶
The EX-MotorShield8874 DC barrel jack is the only power source required to power both the tracks and the EX‑CommandStation into which it is plugged into. It supplies carefully regulated 7.2V DC power to the underlying Arduino R3 compatible motherboard via the VIN pin. This voltage is safely regulated down from the track power input to ensure Command Station motherboards will stay cool and work well. There is no need to power the Command Station via its barrel jack, or USB power. It is safe, however, to connect the USB cable as it will not create a conflict.
Applying a voltage above what a decoder was designed for, may permanently damage it, because the EX-MotorShield8874 does not drop voltage like the standard L298 based motor shields take care over track voltage selection.
NOTE: The EX-MotorShield8874 can supply up to 5A of track power per channel, a power supply of more than 10A peak capacity is required to run both channels at full peak current and have power left for the Command Station. A power supply that is unable to provide the current at which the software detects a short-circuit will not be safe as the Command Station will not be able to detect the short.
If the track power supply is not plugged in, the Command Station will report track faults.
Stacking two motor shields¶
Stacking an EX-8874 and another motor shield type is not recommended. There are complex pin conflicts and software configuration requirements.
The CSB1 can only have a single EX8874 stacked on it, unmodified. There are insufficient pins available on the internal ESP32 processor to handle more.
Steps to Stack¶
- Leave the first EX-MotorShield8874 in the stack entirely unmodified.
NOTE: If you are using an Ethernet shield, it must be the very first board in the stack, with the unmodified EX-MotorShield8874 next immediately on top of that. Test this first before proceeding to modifying the second EX-MotorShield8874 and adding it on.
- You must CUT the regulator to VIN pin on the top of the PCB which is not labelled on the original version, but has been labelled on later versions
- Cut the “Regulator Enable” trace on the bottom of the board
- Cut the jumper pads for both Driver A and Driver B
- Solder bridge the right hand ALT pads but NOT the FAULT pins
The reason we did not solder the FAULT pins to their righthand ALT pads is that this would connect the FAULT pins to D0/D1 on the Arduino R3 headers which is not ideal because D0/D1 typically carry the serial port. You can of course bend those pins out if you wish to use them, and simply jumper them that way. Please refer to the self-build instructions for your processor type.
After hardware installation, you will need to re-run the EX-Installer to configure the Command Station code to recognize the new board and allow you to control the third and fourth tracks.