Motor Communication In Depth

Detailed explanation of our solution to motor communication conflicts.

Posted by Articul8 on February 15, 2019

What's new?

A lot has changed in terms of design between the initial and current prototypes. The biggest change being the modularization of the wearable bands. Haptic motors and the necessary drive circuitry have been removed from the main board and given their own daughterboards. This way, we were able to shrink the form factor for the motherboard down to approximately 25 x 50 mm.

Each band in the updated design consists of 1 motherboard which handles the bulk of the on-board processing, and up to 8 daughterboards each with a haptic motor. These boards are spaced evenly around the band to help provide directional haptic feedback. The biggest advantage of this approach is that the number of wires connecting each board has been reduced to a constant 4 (power, ground and the I2C bus). In the original design, each motor in the band required an additional 2 wires, therefore, there can be up to 18 wires in an 8-motor band.

Challenges of the New Approach

However, this design change did not come with significant challenges. The biggest challenge was that the haptic drivers used (DRV2604L) only have 1 slave address. This was handled using multiplexers in the previous design. However, in the updated design, maintaining modularity and the 4-wire interconnects required that a new design solution. The solution needs to provide the capability to adjust the I2C addresses for each of the daughterboards on the fly. The following schematic design was developed to help achieve this.

Board Schematic

Using Switches to control I2C addressing

The design makes use of a 3-bit adjustable switch that provides the developer with the ability to communicate with up to 8 different haptic modules by simply masking the upper 3 most significant bits of the I2C slave address. This is done in conjunction with the LTC4316 I2C address translator and SN74L 3:8 analog multiplexer. The 3 inputs of the switch are connected directly to the SN74L mux which then selects 1 of the 8 output channels accordingly.

These output channels are connected to resistors that have been carefully selected based on the datasheet of the LTC4316 address translator. The resistors form a voltage divider that is fed into the translator. The built-in ADC then measures the potential and masks the I2C address accordingly. Simply, the translator has an input and output I2C bus and addresses read on the SDA line are masked based on the inputs of the 3-bit switch.