I am working on developing a PID controller designed to hold a levered arm level by controlling an EFlite outrunner motor. The idea being if I can hold one hinged arm level than with 4x the hardware I could make a platform fly. I am using some OSEPP sensors I purchased from Frys: a gyroscope and accelerometer. I am controlling the thing with the Arduino Wire library. However, when I run the motor my sensor values go berserk, making all subsequent PID control meaningless.
How can I clean up the noise?
From what I have learned, using I2C is not ideal in noisy environments. I have already added two 1.5k pull-up resistors. I heard using a low-pass filter might help, based off an RC circuit, but I don't want to filter my sensor values.
Since I have an Arduino Mega, I was wondering if dedicating one board for the sensor reading, and another to the motor control would clear up my values. However, since it seems like the most intuitive to communicate between the boards would also be using the Wire library, I wonder if I would just be extending the problem.
Maybe I should just buy new sensors?
Any help would be much appreciated :)