ホイールのRPMを測定するにはどうすればよいですか?


15

ArduinoまたはLilypadボードを使用して、自転車用のオンボードシステムを作成しようとしています。

ホール効果センサーを使用する必要があると思いますが、他の方法も有効です。

私は自分の速度をLCDディスプレイに出力したいと思っています。

回答:


12

Starlinerが提案したようにホール効果センサーを使用することは、ホイールと連動する1つの方法になります。リードスイッチを使用するというAchimとShutterdroneの提案は、ホール効果センサーがクリーンなデジタル信号を取得するために必要なサポートハードウェアを考えると、より理にかなっています。

壊れた自転車のコンピューターから磁石とセンサーを拾うことができるかもしれませんが、もしできなければ、地元のコンポーネントストアにはそれぞれ在庫が必要です。リサイクルされたセンサーと磁石の利点は、取り付け金具がすでにあることです。

ReadingRPMシグナルに関するページがarduino wikiにあります。速度を計算するには、RPM値にホイールの円周(2 * pi *半径[メートル])を掛けます。結果はメートル/分になります。

編集:リンクされたコードは、1回転あたり2パルスのシステム用であることに気付きました。1つの磁石で十分です。さらに、自転車のコンピューターでは、おそらくKPH(または、文明化されていると思われる場所に住んでいる場合はMPH)で結果を取得する必要があります。Wikiのコードに(テストされていない)MODをいくつか作成してKPHを印刷し、以下に貼り付けました。

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++;
}

また、これで「コミュニティwiki」を有効にしました。これは、他のユーザーが編集できることを意味すると思います。私の数学が間違っている場合(そして、あなたはそれを証明することができます!)飛び込み、私のためにそれを修正します。:)


10

実際、Achimはここで非常に良い点を指摘しています。

リード(磁気)リレー(スイッチ)とホール効果センサーには大きな違いがあります。

主に、リードリレーは、十分な磁力が作用するたびにスイッチを接続し、オン/オフ信号を出します。ホール効果センサーは、印加される磁力の量を示す電圧レベルを提供します。

上記のコードは、リードリレーでのみ「直接」動作します。これは、ホール効果センサーではまったく機能しないということではなく、ホール効果センサーを使用すると追加の課題が発生します。

主な課題は、アナログデバイスをデジタルデバイスとして扱うことです。パルスの立ち上がりでトリガーされることを期待しています。これで、信号はパルス化されなくなります。一般的に、あらゆる種類の変動を伴うベル曲線のようになります。磁石がホール効果センサーを通過するときに、高信号の最小電圧(約3.5v、IIRC?)を数回通過する可能性があります。

もちろん、ホール効果センサーのようなものを使用するときの最初の本能は、ADCを使用してアナログピンの電圧レベルを読み取ることです。ただし、アナログピンでの読み取りはおおよそ1秒あたり10,000回に制限されています(各読み取りには100uSかかります)。また、ループと値の読み取りのみを行うことを前提としています。表示の更新や計算など、他の時間をあまり残さないでください。言うまでもなく、間違った時間に読むと、信号を見逃してしまいます。

どういうわけかADCにリンクされた割り込みを使用することは可能ですが、そのような知識はありません。

代わりに、実際のホール効果センサーを使用する場合は、シュミットトリガーに入力して、「磁石の真下」を示す較正レベルでデジタル(オン/オフ)信号に変換することをお勧めします。さらに、シュミットトリガーに実装されているヒステリシスのレベルに応じて、現在の速度に基づいてデバウンスのレートを変更するデバウンスを行う必要がある場合があります。その後、通常のリードリレーのように扱うことができます。

!c


1
両方の長所を活用できます。ATMega8コンポーネントは、内部コンパレータへのアクセスを提供するように構成できます。適切な電圧リファレンス(トリムポットなどで調整可能)を使用すると、アナログ信号の立ち上がりエッジ(または立ち下がりエッジまたは両方)で割り込みを発生させることができます。それを説明するフォーラムのトピックへのリンク:arduino.cc/cgi-bin/yabb2/YaBB.pl
num=

シュミットトリガーのしきい値出力を備えたホール効果デバイスがあります。彼らは非常に一般的です。また、リードスイッチを使用すると、出力をデバウンスする必要があります。
コナーウルフ

7

ここでは、ホール効果センサーとリードスイッチが最も言及されており、それらが最良のソリューションです。

リードスイッチは安くなりますが、自転車が衝撃を取得するときに、あなたに偽のパルスを与えることができます。それが縁石に乗っているだけの場合、ソフトウェアはそれを簡単に除外することができますが、玉石の上に乗っているときは異なります。耐衝撃性の高いリードスイッチを使用するには、強力な磁場が必要になりますが、ネオジム磁石がそれを修正します。



77

ホール効果スイッチは、これらの欠点を持っていますが、やや高価ではありません。


T

v=πDT

DT

s=pulse count×π×D

D


5

磁石をホイールのリムの端に取り付け、ホール効果センサーを磁石に非常に近接して(ただし接触しないで)取り付けることができます。ホイールが回転し、磁石がセンサーを通過すると、センサーは磁場の変動を検出します。


3

それでもソリッドステートにしたい場合、それらは多くの「ホール効果スイッチ」であり、ホール効果センサーとヒステリシスのあるシュミットトリガーを含み、バウンスのないクリーンなデジタル出力を提供します。これらは、(データシートで提供されている)限界磁束密度に達すると切り替わります。磁石とスイッチの適切な組み合わせを計算するか、単に実験することができます。

このサイトはあなたにもっと多くを教えてくれます。


2

自転車のコンピューターの部品は、ホール効果センサーではなくリード接点です。それらは完全に異なっています。しかし、皆さんはリードコンタクトについて話していると思います。


1

マグネットはスポークに、センサーはフォークの1つ、またはチェーンステーに取り付けることができます。

私の最後の自転車コンピューターで提案された方法は、piなどで乗算するのではなく、1回転の直線距離を測定することでした(タイヤをチョーク、2つのチョークマークの間を測定)。その後、回転に円周を直接掛けることができます。

[編集] PICを使用して自転車コンピューターを実装するための写真リストサイトでこのガイドを見つけました。おそらく、いくつかの情報が役に立つかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.