フィルターのクリア

Determining time elapsed in between two successive pulses of a signal

2 ビュー (過去 30 日間)
Senal Perera
Senal Perera 2021 年 3 月 26 日
コメント済み: Pat Gipper 2021 年 3 月 29 日
I have a voltage signal from a rotary encoder which gives 1 pulse (4.5v) per revolution. I need to calculate the time elapsed between two successive peaks to get the speed of rotation. Can someone guide me please. My code is attached below. Thanks in advance.
a = arduino;
for i=1:inf
tic;
encoder_signal(i)= readVoltage(a, 'A2');
figure(1);
plot(encoder_signal);
ylabel('Encoder signal');
hold on;
pause(0.001);
if encoder_signal == 4.5;
x(i) = toc;
Engine_RPM (i) = (1/x)*60 ;
end
end
  1 件のコメント
Pat Gipper
Pat Gipper 2021 年 3 月 26 日
How likely is it that the voltage is going to be exactly 4.5 Volts? I would think that you should trigger on the value exceeding a good threshold value (e.g. encoder_signal > 4).

サインインしてコメントする。

採用された回答

Pat Gipper
Pat Gipper 2021 年 3 月 27 日
I updated your code a bit and fed in an artificial signal. It works but has a slight error due to loop delays running on my computer. You may need to adjust the threshold from 4.5 V depending on your actual encoder signal. If there is a lot of noise then the edge trigger would need hysteresis added to prevent double triggering.
  2 件のコメント
Senal Perera
Senal Perera 2021 年 3 月 29 日
Thank you so much Pat!!! It works.
Pat Gipper
Pat Gipper 2021 年 3 月 29 日
No problem Senal. I hadn't tried TicToc before, so it was a good learning experience.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangePulse and Transition Metrics についてさらに検索

製品


リリース

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by