- Change Baud rate to 115200
- Send data as bytes (Serial.write instead of Serial.print, depending on your data on the Ardiuno side you might need to cast the values)
- Try sampling 100 or 1000 values and calculate the average sample rate. Sometimes acquiring the first data point is slower then the rest espcially if you have anything in your void setup.
- Have you installed the hardware support packages for MATLAB or Simulink?
Matlab Serial using wrong frequency?
2 views (last 30 days)
Show older comments
Hello there.
So im using matlab for reading an Arduino, which I have programmed for sending data at 50Hz (1 sample per 0.02 sec).
And the problem Im facing is that matlab is reading those samples too slow.
I made a simple script to check the time it takes to read one sample:
s = serial(seriallist,'BaudRate',9600,'Terminator','CR');
fopen(s);
% s.ReadAsyncMode = 'manual';
% readasync(s)
tic
linea = fscanf(s);
toc
It takes 1,98 seconds for reading and I dont really understand why.
I really want it to go at 50Hz since what Im attempting to do is to plot the data on real time using a while (1) loop, and the latency right now is too high for the application to run smoothly.
Thanks in advance.
0 Comments
Answers (1)
Mark Sherstan
on 22 Mar 2019
MATLAB is not great for communicating with Ardiuno real time, if I remember 50 Hz is pushing the bounderies. A couple things you can try to speed up your program:
Not sure if you have written a real time plotting function so thought I would also include this for you:
function [] = realTimePlotter()
% Set up figure, get properties, and label
figure
h = animatedline;
ax = gca;
ax.YLim = [0 5];
xlabel('Time (s)')
ylabel('Output Y [units]')
% Start a timer
tic
startTime = toc;
% Loop for 20 secounds
while toc < 20
% Random data
v = randi(4);
% Get current time and add to animation
t = toc - startTime;
addpoints(h,t,v)
% Update axes
if t < 5
ax.XLim = [0 10];
drawnow
else
ax.XLim = [t-5 t+5];
drawnow
end
end
See Also
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!