"Is there something I missed? "Nice explanation, but where is the Arduino problem? The blue and red traces obviously did not come from your Arduino.Paul
What is your sampling rate?
Looks like you might benefit from more low pass filtering - the datasheet mentioned this, thereare some unpopulated RC filter stages on the board apparently.
Are the resistors there? If not populate for your desired bandwidth...
[...]although an RC filter isn't constant-phase so you might get nicer waveform from digitally filtering what you have with a FIRfilter.
Abstract - Our main objective is to implement a monitoring system which monitors the heart pulse of a patient. This work presents a novel easy-to-use system intended for the fast and non invasive monitoring of the Lead I electrocardiogram (ECG) signal by using a wireless steering wheel. The steering wheel used here is a prototype model. A novel heart rate detection algorithm based on the continuous wavelet transform has been implemented, which is specially designed to be robust against the most common sources of noise and interference present when acquiring the ECG in the hands. Skin Electrodes were used to record the nerve voltages for monitoring the heart pulse. The voltages recorded will be sent to an instrumentation amplifier which amplifies the signal, and then to a filter which filters the noise. Thus, analog signal is given to Analog-to-Digital Convertor (ADC) of Arduino. There, analog voltages are been converted to digital and that digital values will be stored in the EEPROM of Arduino. The values stored in EEPROM will be sent to PC via XBEE (IEEE 802.15.4) wirelessly and a serial port will be opened in the MATLAB by using a serial object. GUI is programmed to make the user interface interactive and simple. Using the real time plot, I've plotted the values received by XBEE module and making a running waveform which displays when the MATLAB sent a query to Arduino.