mikrocontroller.net

Forum: Fahrzeugelektronik Geschwindigkeit Sensor Abtastfrequenz


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Ray M. (ray_m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich steh gerade ein wenig auf dem Schlauch,
eventuell kann mir ja jemand einen Denkanstoß geben.

Ich messe mit einem Sensor Radumdrehungen und will die
Geschwindigkeit berechnen.
signale_pro_radumdrehung    = 8
abrollumfang_in_m           = 1.7
meter_pro_km                = 1000
mess_intervall_in_ms        = 250
gemessene_impulse           = 1

( ( ( abrollumfang_in_m * ( gemessene_impulse * ( meter_pro_km / mess_intervall_in_ms ) ) / signale_pro_radumdrehung ) * 60 ) * 60 ) / 1000

Ein INT zählt, über einen Timer errechne ich die Geschwindigkeit.

Wenn ich in den 250ms nur ein Signal bekomme, sind das 3.06km/h.

Wenn ich den Timer auf 100ms stelle, sind das schon 7.65km/h

Das heist für mich, dass ich den Timer nicht kürzer als
250ms stellen kann, außer ich ignoriere alles unter 10km/h oder so ...

Ist das richtig oder hab ich einen Denk- und/oder Rechen-Fehler ???

: Bearbeitet durch User
Autor: Irgend W. (Firma: egal) (irgendwer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was willst du jetzt eigentlich genau messen?
Die Anzahl Impulse pro Zeitintervall?
Die Zeit zwischen zwei Impulsen?

Autor: Ray M. (ray_m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgend W. schrieb:
> Was willst du jetzt eigentlich genau messen?
> Die Anzahl Impulse pro Zeitintervall?
> Die Zeit zwischen zwei Impulsen?

Ob die Rechnung so stimmt. Das würde bedeuten, Geschwindigkeiten
unter 3km/h lassen sich nicht messen, außer man zieht den Messintervall
ewig in die länge.

Autor: Wolfgang (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Ray M. schrieb:
> Das heist für mich, dass ich den Timer nicht kürzer als
> 250ms stellen kann, außer ich ignoriere alles unter 10km/h oder so ...

Falscher Ansatz. Miss die Zeit zwischen zwei Sensorsignalen und fange 
dann noch mal an zu rechnen.
(Wenn es damit bei hohen Geschwindigkeiten eng wird: reziproker 
Frequenzähler)

Autor: Ray M. (ray_m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Ray M. schrieb:
>> Das heist für mich, dass ich den Timer nicht kürzer als
>> 250ms stellen kann, außer ich ignoriere alles unter 10km/h oder so ...
>
> Falscher Ansatz. Miss die Zeit zwischen zwei Sensorsignalen und fange
> dann noch mal an zu rechnen.
> (Wenn es damit bei hohen Geschwindigkeiten eng wird: reziproker
> Frequenzähler)

Danke für den Tip, schau ich mir mal an.

Autor: Ray M. (ray_m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin zu blöd, kann mit mal jemand auf die Sprünge helfen.

Ich versuche mit folgendem Code die Geschwindigkeit zu messen,
bei gegebenem Abrollumfang und 6 Signalen pro Radumdrehung.
float rad_abrollumfang          = 2.0;  // in meter
int   rad_signale_pro_umdrehung = 6;

volatile float rpm_time         = 0;
volatile float rpm_time_last    = 0;

void isrCount() {
  unsigned long m = micros();
  rpm_time        = (m - rpm_time_last);
  rpm_time_last   = m;
}

void setup() {
  attachInterrupt(4, isrCount, FALLING);
}

void loop() {
  // interrupts bei volatilen variable sperren !!!
  noInterrupts();
    int rpm = (int)((1000000/rpm_time)*60)/rad_signale_pro_umdrehung;
  interrupts();
  int kmh = (int)((rpm*60)*rad_abrollumfang)/1000;
  Serial.println(kmh);
}

Wenn ich das mal mit der Hand nachrechne kommt da irgendwie
ganz schön Unsinn raus ;(

Nehmen wir an wir haben rpm=10, das sind 60 Signale
Dann sind das also 10 U/min
Eine Stunde hat 60 Minuten, also 10*60=600U/h
Dann sind das 600*2=1200 Meter/h oder 1,2km/h

Das ist doch Schwachsinn ...

Ok, rpm ist nicht in min sondern in sec, dann feht einmal *60

Nehmen wir an wir haben rpm=10, das sind 60 Signale
Dann sind das also 10 U/sec = 60 U/min = 3600 U/h

3600 U/h * 2 Meter = 7200 meter/h = 7,2 kmh

Ich blick es gerade nicht ...

Autor: egberto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir doch einfach den Code von ergokey weiter oben an. Der macht 
das recht clever, in dem er die Anzahl der ms zwischen 2 Impulsen bei 
1kmh als REFERENZ angibt. 10 Kmh sind dann REFERENZ/10 usw.

Egberto

Autor: egberto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: m.n. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Arduino verwendest Du und an welchem Pin liegt der 
Eingangsimpuls?

Trenne die Erfassung der Impulse von deren Auswertung.

Autor: Ray M. (ray_m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
m.n. schrieb:
> Welchen Arduino verwendest

keinen ... teensy 3.2

> Du und an welchem Pin liegt der Eingangsimpuls?

4

> Trenne die Erfassung der Impulse von deren Auswertung.

Hää ?

Autor: m.n. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ray M. schrieb:
>> Trenne die Erfassung der Impulse von deren Auswertung.
>
> Hää ?

Ganz einfach: geschätzt wertest Du die Geschwindigkeit ca. 100000 Mal 
pro Sekunde aus. Ist das nicht ein bißchen zu viel?

Autor: Ray M. (ray_m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
m.n. schrieb:
> Ray M. schrieb:
>>> Trenne die Erfassung der Impulse von deren Auswertung.
>>
>> Hää ?
>
> Ganz einfach: geschätzt wertest Du die Geschwindigkeit ca. 100000 Mal
> pro Sekunde aus. Ist das nicht ein bißchen zu viel?

Ahh jetzt ;)

Eigentlich ist das in einer Funktion und die wird nur aller 250ms
aufgerufen ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.