I would like to understand why did Arduino clipped the input signal as shown in the attached diagram? As far as I know, Arduinos are able to read analogue voltages up to 5v, that is 1023. But for some reason my signal got clipped at 390 which is about 1.90V. What may be the reason behind this? The schematic is also attached. The low voltage input signal (mV range) is passed through a Band pass filter with a gain of 143. The signal is then DC shifted by +3.3/2=1.65V by using a capacitor coupled voltage divider offset. The opamp LM358 (not LT1215 shown in the schematic) and everything else is powered from Arduino's built in 3.3V regulator. One reason might be that the opamp can't spit out anything more than its supply voltage, that is 3.3V, but even then the clipping should take place at 675 (1023*3.3/5), not 390. Am I missing something??

Thank you for reading my question. Any help is highly appreciated ^_^.

Serial Plotter: enter image description here

Schematic: enter image description here

  • LM358 is not rail-to-rail IO. You will never be able to get anything even close to 3.3V out of it.
    – Majenko
    Aug 8, 2021 at 15:59
  • So this is an opamp issue correct?? When 5V was supplied, clipping occurred at 600. Might have to change the opamp then, or decrease the gain of my signal??
    – Nawaz
    Aug 8, 2021 at 16:04
  • 2
    Yep. Choose something that was designed sometime in the last 30 years.
    – Majenko
    Aug 8, 2021 at 16:24
  • The OPA342 or one of its derivatives might do what you want. You should read the data sheet to be sure it will do what you want.
    – Gil
    Aug 9, 2021 at 23:33


Your Answer

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

Browse other questions tagged or ask your own question.