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?
Répondre
% 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:
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).
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
Parce qu'une vague de signe croise deux fois zéro dans une période. – m7913d
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? –