top of page

Force Sensor System Design

BioRobotics Lab, University of Washington

Background

Originating from the Sensorless Contact Force Estimation project on the Raven-II Surgical Robot, the "Force Units" require a data acquisition system capable of reading 6 load cells and transmitting the data to a PC as feedback for the low-level PID controller.

An external analog-to-digital converter (ADC) is necessary to amplify and convert the analog load cell signals into digital format. The chosen ADC chip, the NAU7802, offers a universal I2C interface, a relatively high sampling rate of 320Hz compared to other load cell ADCs, and is both accessible and well-supported.

Contribution

  • Designed the firmware using Arduino, achieving a stable data transfer rate with a hardware timer.

  • Developed and built a PCB module for long-distance I2C communication (over 10 ft) at a 400kHz bitrate.

  • Integrated shielded Ethernet cables and connectors to enhance EMI resistance and simplify wiring.

Objectives

The system shall meet the following requirements:

  • Read 6 loadcells at 320Hz.

  • ​Transfer the readings to PC at the same rate.

  • The ADC chip will be located close to the load cell, but far from the microcontroller. Signal integrity must be maintained over long cables connecting the two.

  • The system should be resistant to electromagnetic interference (EMI) present in the lab environment, particularly near motors and power cables.




     

Skills

  • PCB Design(Flux)

  • I2C Communication

  • Serial Communication

  • Signal Integrity

  • Arduino

  • Oscilloscope

ForceUnitShield_top_edited_edited.jpg
ForceUnitBreakotu_withADC_edited.jpg

Components Diagram

The system consists of two main parts: a microcontroller and a sensor module. The microcontroller side includes an Arduino Mega board with an Ethernet shield and an I2C multiplexer (since the NAU7802 chips have a fixed device address). The sensor module features a NAU7802 breakout board and a custom PCB that receives power and I2C signals via an ethernet port. It also includes an LTC4311 bus accelerator to maintain signal integrity.

​

A hardware timer triggers the system to read data from six load cells every 1/320 of a second. Subsequently, the system transmits these six readings to a PC via the serial port.

component_diagram.png

Sensor-side module

The analog signal from the load cell is prone to noise and attenuation over long cables. To mitigate this, I placed the ADC chip near the sensor to send the digital signal over the longer cable.

S__37150723_0.jpg

Microcontroller module

The newly designed Arduino shield organizes power and signal traces for each load cell using Ethernet cables, making the system's wiring simpler and more robust.

The Original I2C Signal

When I first built the prototype using unshielded cables and without a bus accelerator, the device frequently failed to initialize either the multiplexer (MUX) or the analog-to-digital converter (ADC). Additionally, the I2C bus would often lock up while the robot was in operation.

Upon investigating the issue, I determined that the problem stemmed from poor signal integrity. The oscilloscope revealed two main issues with the I2C signal:

  1. Slow rise times due to the capacitance of long cables.

  2. Cross-talk between the clock and data lines.
     

The exact cause of the I2C bus lockup was difficult to pinpoint, but the failure consistently occurred when the signal cable was near any powered motor. The unshielded signal cable acted as an antenna, picking up electromagnetic interference (EMI), which could lead to bit-flips and cause the I2C controller to enter an incorrect state.

Improve the signal rise time with LTC4311

To address the slow rise time issue, I first evaluated the I2C pull-up resistors on my system. With three sets of 10k ohm resistors in parallel (on the Arduino board, TCA9548 breakout, and NAU7802 breakout), the effective resistance was 3.3k ohm. Any attempt to further decrease the resistance caused the bus to fail.

To improve performance, we opted to use the LTC4311 from Analog Devices to actively pull up the I2C bus near the ADC chip. The available LTC4311 breakout boards require extensive jump-wiring, adding to cable length and complexity. Therefore, I designed a custom PCB to integrate the NAU7802 breakout, LTC4311, and cable connections seamlessly.

ForceUnitBreakout_CAD.PNG
I2C_crosstalk.jpg

I2C signal with LTC4311

The implementation of the LTC4311 has significantly improved the signal rise time compared to the original I2C signal. However, the crosstalk issue between the clock and data lines persists.

Eliminate crosstalk and EMI using SSTP RJ45 cable

Each sensor-side module requires six wires: two power lines, a clock line, a data line, a DRDY trigger line, and a ground line. To minimize noise and crosstalk, the power lines should be isolated from the signal lines, and each signal line should be properly shielded. Additionally, the entire cable should be shielded from environmental EMI.

A Screened Shielded Twisted Pair (SSTP) cable is ideal for this application. Each twisted pair is individually shielded with metal foil, allowing power lines to run without affecting the signal lines. Each signal line can use its own twisted pair along with a ground line. An additional shield over the entire cable further reduces environmental EMI.

cable_pair_config_edited.png
I2C_ShieldedPair.jpg

Final I2C signal

With the LTC4311 bus accelerator and SSTP cable, the I2C signal integrity is significantly enhanced, providing ideal rise times and minimizing crosstalk. Additionally, the proper shielding around the cables ensures that the system can reliably operate in proximity to the robot.

©Copyright, Tin Chiang 2024

bottom of page