2017-03-09 2 views
0

J'ai des données provenant d'un capteur de 'dents manquantes' pour les mesures de vitesse. Y at-il un moyen que je peux obtenir un graphique transitoire de la vitesse en fonction du temps? Je peux obtenir la vitesse moyenne d'une mesure en comptant le nombre de passages à zéro qui indiquent la «dent manquante» dans l'engrenage du capteur, mais je suis plus intéressé par un tracé de l'histoire du temps. Merci d'avance.Comment calculer la vitesse à partir des données du capteur?

+0

Bienvenue à SO! Veuillez jeter un coup d'œil à [ask], car votre question est trop large. S'il vous plaît nous montrer les données que vous avez (y compris éventuellement les parcelles), du code que vous utilisez, et le problème exact avec lequel vous rencontrez des difficultés. Est-ce que vous complotez le problème? Traitement de l'information? Estimation? –

Répondre

0
% I will first generate a example sensor output 
Ts = 0.001; 
t = 0:Ts:10; 
freq = linspace(2, 5, length(t)); % increase the tooth frequency from 2Hz to 5Hz. 
theta = cumsum(freq*2*pi*Ts); 
x = sin(theta); 
figure('Name', 'missing tooth sensor') % plot the sensor output 
plot(x) 

% Now, I will perform the actual calculations. 
iCrossings = find(sign(x(1:end-1)) ~= sign(x(2:end))); % finds the crossings 
dtCrossing = diff(t(iCrossings)); % calculate the time between the crossings 
figure('Name', 'tooth frequency') 
hold on 
plot(t, freq, 'g'); % plot the real frequency in green 
plot(t(iCrossings(1:end-1)), 1./(2*dtCrossing), 'b'); % plot the measured frequency in blue. 

Le code produit les chiffres suivants: enter image description here

enter image description here

Vous pouvez convertir la fréquence des dents à la vitesse en multipliant la fréquence avec la distance entre les tooths. Un filtre peut être utile pour annuler le bruit (d'échantillonnage).

+0

Cela fonctionne. J'ai les données filtrées et un graphique de l'histoire du temps qui ressemble à ce que je l'espère. Merci. Pourriez-vous s'il vous plaît me dire pourquoi il y a un 2 dans le 1./(2*dtCrossing)? – Siva

+0

Parce qu'une vague de signe croise deux fois zéro dans une période. – m7913d