I am using a non-inverting op-amp circuit (shown below) to linearize the output of multiple analogue force sensors. This is the circuit recommended by the manufacturer in their electrical integration document.The circuit is working and I am able Toggle between sensors by driving GPIO low for active sensors and high impedance for disabled sensors. However I have observed a larger amount of noise and oscillation in the output of the opamp when I apply force to the sensor with my bare hands. This noise is almost negligible when I apply force to the sensor whist covering the sensor with an insulative material.

I have found by increasing the capacitance of C1 to from 47pF to 1uF I have been able to eliminate the noise and oscillation. (Why is this?) however this is at the cost of having to increase the time between sensor readings to the point where it is not feasible for my application. The reason I must wait between sensor readings is the large capacitor will hold the voltage of the previous sensor for some time when I toggle between sensors.I have the following questions:

  1. What is the likey cause of the noise/oscillation (image show below)
  2. How can I eliminate this noise?
  3. What is the purpose of C1 and why does increasing C1 remove the noise/oscillation.

Circuit used. Toggle between sensors by GPIO low for active sensors and high impedance for disabled sensors enter image description here


As with all noise problems your BEST solution is to prevent the noise from getting picked up by the circuit in the first place. As such you already have a solution, which is to electrically isolate the sensor from prying fingers.

As the doctor said when I told him.. "It hurts when I do this!"

"Well then, don't do that!"

C1 in this circuit turns it into a low pass filter. The feedback impedance will be significantly reduced for higher frequencies on the signal. As such, the larger the capacitance the less "noise" will make it through. At very high frequencies \$R_{FEEDBACK}\$ --> 0.

However, for a circuit like this, finger interference means you will be injecting a significant amount of low frequency, mains hum, noise. As such, the capacitor would need to be quite large to remove it.

Since you are planning on multiplexing the signal from various sensors, the effect of a large capacitance here is problematic for settling time delay as you have intimated.

As such, and if it is not possible to properly insulate and isolate the sensor from fingers and local RF noise, this is really not a good circuit to use for this application.

Moreover, using the GPIO pins directly to switch between sensors also adds an issue of inter-channel interference and a general inability to REALLY get the bottom end of the sensor hard to ground. Further, switching like that creates what can be problematic transient response issues in the op-amp.

It would be better to receive each sensor value individually, with appropriate noise filtering, and then select the appropriate output to feed to wherever the signal is intended to go.

| improve this answer | |

I made a quick simulation of your system using a different opamp in LTSpice, and adding some capacitance in parallel with the FlexiForce definitely makes the system unstable. This makes sense, because the capacitance shorts the inverting input out for certain frequencies, and makes it tough for the feedback to find the right level such that the negative and positive inputs match.

The way I'd solve this is to simulate the circuit, make sure that the simulation and actual device match relatively well, and then look for a solution. The good news is that your system has a roll off around 1 kHz, which is a pretty low frequency, and the noise tends to be high frequencies (I'm seeing 100 kHz with a 1u touch cap), so I would think you could add extra filtering to get rid of the high frequency noise.

You may can raising the feedback cap and lower the resistor, to increase the stability and keep the bandwidth the same. This will reduce the gain, but you can boost it back with a second stage. You may just want to start with a very stable unity gain buffer, then add gain. This is slightly noisier, but very robust.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.