How to filter real time data I received from Arduino?

5 vues (au cours des 30 derniers jours)
up_pro
up_pro le 31 Mai 2019
I am using Arduino Mini to receive real time data. I was able to receive real time data (got help from MATLAB answers) but after I filtered the data the plotting stopped. How can I correct this (I also want the sampling rate of my input signal to be 5000 samples per second):
a = arduino;
% I also want the BaudRate of my signal to be 5000. How do I do that.
writeDigitalPin(a, 'D10', 1);
%% Receiving signal from Arduino and plotting the live data:
figure
al = animatedline;
ax1 = gca;
ax1.YGrid = 'on';
ax1.YLim = [-5 5];
stop = false;
startTime = datetime('now');
while ~stop
% Read current voltage value
v = readVoltage(a,'A0');
% Get current time
t = datetime('now') - startTime;
% Add points to animation
addpoints(al,datenum(t),v)
% Update axes
ax1.XLim = datenum([t-seconds(10) t]);
datetick('x','keeplimits')
drawnow
% Check stop condition
stop = readDigitalPin(a,'D12');
end
%receiving the coordinates from the signal.
[timeLogs,raw_Voltage_Logs] = getpoints(al);
timeSecs = (timeLogs-timeLogs(1))*24*3600;
%% Filtering the raw voltage logs.
%signal_bandpassed = bandpass(raw_Voltage_Logs,[10 500],5000);
transformed_signal = fft(raw_Voltage_Logs);
signal_down_sampled = downsample(transformed_signal,1000);
inverse_transformed = ifft(signal_down_sampled);
signal_highpassed = highpass(inverse_transformed,20,1000);
signal_lowpassed = lowpass(signal_highpassed,300,1000);
final_signal = rms(signal_lowpassed);
%% Plots
figure
ax1 = subplot(2,1,1);
plot(ax1,timeSecs,raw_Voltage_Logs)
title(ax1,'Raw Signal')
ylabel(ax1, 'Voltage(micro-V)')
ax2 = subplot(2,1,2);
plot(ax2,timeSecs,signal_lowpassed)
title(ax2,'Filtered Signal')
ylabel(ax2, 'Voltage(micro-V)')
xlabel('Elapsed time (sec)')

Réponses (0)

Catégories

En savoir plus sur Arduino Hardware dans Help Center et File Exchange

Produits


Version

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by