2017-03-09 1 views
0

Ich habe Daten von einem "fehlenden Zahn" -Sensor für Geschwindigkeitsmessungen. Gibt es eine Möglichkeit, eine flüchtige Darstellung der Geschwindigkeit gegen die Zeit zu erhalten? Ich kann die Durchschnittsgeschwindigkeit für eine Messung erhalten, indem ich die Anzahl der Nulldurchgänge zähle, die den "fehlenden Zahn" im Sensorzahnrad anzeigen, aber ich bin mehr daran interessiert, ein Zeitverlaufsdiagramm zu sehen. Vielen Dank im Voraus.Wie kann die Geschwindigkeit aus Sensordaten berechnet werden?

+0

Willkommen bei SO! Bitte werfen Sie einen Blick auf [fragen], da Ihre Frage viel zu weit gefasst ist. Bitte zeigen Sie uns die Daten, die Sie haben (möglicherweise einschließlich Plots), einige Code, den Sie verwenden, und das genaue Problem, mit dem Sie Schwierigkeiten haben. Hast du Probleme beim Plotten? Datenverarbeitung? Einschätzung? –

Antwort

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. 

Der Code erzeugt die folgenden Zahlen: enter image description here

enter image description here

Sie die Zahnfrequenz Geschwindigkeit durch Multiplizieren der Frequenz mit dem Abstand zwischen den tooths umwandeln kann. Ein Filter kann nützlich sein, um das (Sampling-) Rauschen auszulöschen.

+0

Das funktioniert. Ich habe die gefilterten Daten und einen Zeitverlauf, der aussieht, wie ich es mir vorstelle. Vielen Dank. Könnten Sie mir bitte sagen, warum es eine 2 im 1./(2*dtCrossing) gibt? – Siva

+0

Da eine Zeichenwelle in einer Periode zweimal Null kreuzt. – m7913d

Verwandte Themen