Go Down

Topic: PWM Output Causes ADC Spikes (Read 403 times) previous topic - next topic


Jul 07, 2015, 07:59 pm Last Edit: Jul 07, 2015, 08:00 pm by randomvibe
My project uses ADCs at 12bit resolution to sense accels and rate gyros, and also uses hardware PWM to control a motor driver.  PWM uses: pins 6 & 7 at 10khz, 16 bit resolution.  An optoisolator is put in between the Arduino Due and motor driver.

The problem is that the PWM causes voltage spikes in the ADC readings.  At first, I suspected the rate gyros themselves.   But it turned out to be the PWM signal.  When I comment out the PWM calls, the spikes disappear.  What can be done about this?  I read about decoupling capacitors, but not sure where they need to be and what values to use. 


Optocoupler may take 10-20 mA, post your drawings.


It's definitely the optoisolator.  I put in the PWM calls back in the program, and disconnected the optoisolator, and the ADC spikes disappear.

Shortening the PWM wires from 3 feet to 12 inches did not fix the issue.  Adding decoupling capacitors (47 nf per the specs) did not fix the issue.

Putting in a 220 ohm resistor between the PWM pin and the optoisolator input seems to help.  I also tried using other Arduino Due ADC pins, and that also seems to help.  Unfortunately, my project uses 7 ADCs, so a few a them inherit the spikes.

I use the HCPL9030 optoisolator for it's speed.  I tried another version (HCPL2631), but that makes the problem worse.  See attachment.

Has anyone seen similar issues regarding ADC spiking with hardware PWM connected to a load?


You don't already have a resistor? That could be a problem. Show your schematic. A photo of a hand drawing is OK.
GoForSmoke: "What GShield? You never mentioned a shield."

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131