Wie messe ich die Drehzahl eines Rades?


15

Ich versuche, ein Onboard-System für mein Fahrrad mit einem Arduino oder vielleicht die Lilypad Bretter zu machen.

Ich glaube, ich soll einen Hall-Effekt-Sensor verwenden, aber jede Alternative ist auch gut.

Ich mag, dass meine Geschwindigkeit auf eine LCD-Display zur Ausgabe und ich frage mich, den besten Weg, um dies zu realisieren.

Antworten:


12

Mit einem Hall-Effekt-Sensor als Starliner wird einen Weg mit dem Rad zu verbinden sein vorgeschlagen. Der Vorschlag von Achim und Shutterdrone, einen Reed-Schalter zu verwenden, ist jedoch sinnvoller, da ein Hall-Effekt-Sensor aufgrund der unterstützenden Hardware ein sauberes digitales Signal erhalten muss.

Möglicherweise können Sie einen Magneten und einen Sensor von einem kaputten Fahrradcomputer abholen. Wenn dies nicht möglich ist, sollte in einem örtlichen Komponentengeschäft jeweils einer auf Lager sein. Der Vorteil eines recycelten Sensor und Magnet ist die Sie bereits die Montage-Hardware haben.

Es gibt eine Seite auf dem Arduino Wiki auf ReadingRPM Signale. Zur Berechnung der Geschwindigkeit multiplizieren den RPM - Wert durch den Umfang des Rades (2 * pi * Radius [in m]). Das Ergebnis wird in Meter pro Minute betragen.

Edit: Ich habe bemerkt, dass der verknüpfte Code für Systeme mit zwei Impulsen pro Umdrehung ist. Ein Magnet ist für die Aufgabe ausreichend. Zusätzlich wird für einen Fahrradcomputer wollen Sie wahrscheinlich das Ergebnis in KPH sein (oder MPH, wenn Sie leben irgendwo, dass immer noch denken, das ist zivilisiert). Ich habe einige (ungetestete) Modifikationen am Code im Wiki vorgenommen, um KPH auszudrucken und sie unten einzufügen.

volatile byte revolutions;

unsigned int rpmilli;
float speed;


unsigned long timeold;

void setup()
{
  Serial.begin(9600);
  attachInterrupt(0, rpm_fun, RISING);

  revolutions = 0;
  rpmilli = 0;
  timeold = 0;
}

void loop()
{
  if (revolutions >= 20) { 
    //Update RPM every 20 counts, increase this for better RPM resolution,
    //decrease for faster update

    // calculate the revolutions per milli(second)
    **rpmilli = (millis() - timeold)/revolutions;** EDIT: it should be revolutions/(millis()-timeold)

    timeold = millis();
    **rpmcount = 0;** (EDIT: revolutions = 0;)

    // WHEELCIRC = 2 * PI * radius (in meters)
    // speed = rpmilli * WHEELCIRC * "milliseconds per hour" / "meters per kilometer"

    // simplify the equation to reduce the number of floating point operations
    // speed = rpmilli * WHEELCIRC * 3600000 / 1000
    // speed = rpmilli * WHEELCIRC * 3600

    speed = rpmilli * WHEELCIRC * 3600;

    Serial.print("RPM:");
    Serial.print(rpmilli * 60000,DEC);
    Serial.print(" Speed:");
    Serial.print(speed,DEC);
    Serial.println(" kph");
  }
}

void rpm_fun()
{
  revolutions++;
}

Außerdem habe ich ‚Community Wiki‘ auf diese Option aktiviert ist, was ich denke, Mittel anderen Benutzern bearbeitet werden kann. Wenn meine Mathe ist falsch (und man kann es beweisen!) Springen und reparieren es für mich. :)


10

Eigentlich hat Achim einen sehr guten Punkt hier gemacht.

Es gibt einen großen Unterschied zwischen einem Reed (magnetisch) Relais (Schalter) und einem Hall-Effekt-Sensor.

In erster Linie wird ein Reed-Relais einen Schalter anschließen, wenn genügend Magnetkraft auf sie wirken, so dass Sie einen Ein / Aus-Signal. Ein Hall-Effekt-Sensor liefert einen Spannungspegel, der anzeigt, wie viel Magnetkraft auf ihn ausgeübt wird.

Der oben gezeigte Code würde nur "direkt" mit einem Reed-Relais funktionieren, was nicht heißt, dass er für einen Hall-Effekt-Sensor überhaupt nicht funktioniert, sondern zusätzliche Herausforderungen mit einem Hall-Effekt-Sensor bietet.

Die größte Herausforderung wird sein, dass Sie ein analoges Gerät als digitales sind Behandlung - erwarten zu Trigger auf Aufstieg eines Impulses. Nun wird das Signal nicht gepulst werden - es wird im Allgemeinen wie eine Glocke-Kurve, mit allen möglichen Schwankungen. Sie könnten die minimale Spannung für eine hohe Signalfahrt vorbei (etwa 3,5 V, IIRC?) Mehrmals als der Magnet den Hall-Effekt-Sensor passiert.

Natürlich ist unser erster Instinkt, wenn so etwas wie ein Hall-Effekt-Sensor ist den ADC zu verwenden und die Spannungspegel auf einem analogen Stift zu lesen. Sie sind jedoch beschränkt auf 10.000 liest, etwa pro Sekunde auf einem analogen Stift (jede Lese nimmt 100US). Das setzt auch voraus, dass Sie nur die Werte schleifen und lesen - Sie haben nicht viel Zeit, um eine Anzeige zu aktualisieren, zu berechnen usw. Ganz zu schweigen davon, dass Sie Ihr Signal verpasst haben, wenn Sie zur falschen Zeit gelesen haben!

Ich bin sicher, ist es möglich, Unterbrechungen irgendwie mit dem ADC verbunden zu verwenden, aber ich habe nicht diese Kenntnisse praktisch.

Wenn Sie stattdessen einen tatsächlichen Hall-Effekt-Sensor verwenden möchten , würde ich empfehlen, ihn in einen Schmitt-Trigger einzuspeisen, um ihn in ein digitales (Ein / Aus) Signal mit einem kalibrierten Pegel umzuwandeln, der "direkt unter dem Magneten" anzeigt. Abhängig von der im Schmitt-Trigger implementierten Hysterese müssen Sie möglicherweise auch ein De-Bouncing durchführen, um die De-Bounce-Rate basierend auf der aktuellen Geschwindigkeit zu ändern. Dann könnten Sie es wie ein normales Reed-Relais behandeln.

! c


1
Sie können das Beste aus beiden Welten bekommen. ATMega8-Komponenten können für den Zugriff auf den internen Komparator konfiguriert werden. Mit einer geeigneten Spannungsreferenz (einstellbar mit sagen wir, ein trimpot) können Interrupts bei steigender (oder fallende oder beide) Flanke des analogen Signals. Link zum Forum Thema zu erklären genau das: arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1163394545
SingleNegationElimination

Es gibt Hall-Effekt-Geräte mit einem Schwellwertausgang mit Schmitt-Trigger. Sie sind durchaus üblich. Auch mit einem Reed - Schalter, Sie gehen zu haben , den Ausgang sowieso entprellt.
Connor Wolf

7

Hall-Effekt-Sensoren und Reed-Schalter werden hier am häufigsten genannt und sind die beste Lösung.

Der Reed - Schalter wird billiger sein, aber möglicherweise falsche Impulse geben , wenn das Fahrrad einen Schock bekommt. Wenn dies nur eine der Ursachen ist, kann die Software dies leicht herausfiltern, aber es ist anders, wenn Sie über Kopfsteinpflaster fahren, das Ihnen die ganze Zeit falsche Impulse geben kann. Schockresistenter Reed - Schalter wird ein stärkeres Magnetfeld zur Aktivierung erfordern, aber ein Neodym - Magnet wird beheben , dass.



77

Der Hall-Effekt-Schalter hat diese Nachteile nicht, ist aber etwas teurer.


T

v=πDT

DT

s=Pulszahl×π×D

D


5

Ein Magnet kann an der Kante der Felge angebracht werden, und der Hall-Effekt-Sensor kann sehr nahe am Magneten angebracht werden (diesen jedoch nicht berühren). Wenn sich das Rad dreht und der Magnet den Sensor passiert, nimmt der Sensor die Änderung des Magnetfelds auf.


3

Wenn Sie noch Festkörper- gehen wollen, sind sie viele „Hall-Effekt-Schalter“, die den Hall-Effekt-Sensor und Schmitt-Trigger mit Hysterese umfassen saubere Digitalausgang ohne Prellen zu liefern. Sie schalten, wenn ein gewisser Schwellwert Flussdichte (in Datenblatt bereitgestellt) erreicht ist. Sie können eine gute Kombination aus Magnet und Schalter oder einfach experimentieren berechnen.

Diese Seite wird Ihnen viel mehr erzählen.


2

Die Teile in Fahrradcomputern sind Reed-Kontakte, keine Hall-Effekt-Sensoren. Sie sind völlig verschieden. Aber ich denke, Sie sprechen alle über die Reedkontakte.


1

Der Magnet kann auf einer Speiche und der Sensor auf einer Ihrer Gabeln oder der Kettenstrebe montiert werden.

Anstatt mit Pi usw. zu multiplizieren, bestand die von meinem letzten Fahrradcomputer vorgeschlagene Methode darin, den linearen Abstand einer Umdrehung zu messen (Kreide auf dem Reifen, Maß zwischen den beiden Kreidemarkierungen). Dann können Sie die Umdrehungen direkt mit dem Umfang multiplizieren.

[EDIT] Ich habe gerade diese Anleitung auf der piclist Website für einen Fahrradcomputer Implementierung eines PIC, vielleicht einige der Informationen könnten von Ihnen Nutzen sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.