Як виміряти обороти колеса?


15

Я намагаюся зробити бортову систему для свого велосипеда за допомогою дощок Arduino або, можливо, дощок Lilypad.

Я думаю, я повинен використовувати датчик ефекту Холла, але будь-яка альтернатива також хороша.

Я хочу вивести свою швидкість на РК-дисплей, і мені цікаво найкращий спосіб зробити це.

Відповіді:


12

Використання датчика ефекту Холла, як запропонував Starliner, буде одним із способів взаємодії з колесом. Пропозиція Ахіма і Шуттердрона про використання перемикача очерету має більше сенсу, хоча, враховуючи підтримуючу техніку, датчик ефекту Холла вимагає отримання чистого цифрового сигналу.

Можливо, ви зможете забрати магніт і датчик з розбитого велосипедного комп'ютера, але якщо ви не можете, місцевий магазин компонентів повинен мати по одному з них. Перевага переробленого датчика і магніту полягає в тому, що ви вже будете мати обладнання для кріплення.

На вікі arduino є сторінка на сигналах ReadingRPM . Для обчислення швидкості помножте значення RPM на окружність колеса (радіус 2 * pi * [у метрах]). Результат буде в метрах на хвилину.

Редагувати: Я помітив, що зв'язаний код призначений для систем з двома імпульсами за оборот. Одного магніту достатньо для вашого завдання. Крім того, для велосипедного комп’ютера ви, ймовірно, хочете, щоб результат був у KPH (або у MPH, якщо ви живете десь, що все ще вважає, що це цивілізовано). Я зробив кілька (неперевірених) модів до коду на вікі, щоб роздрукувати 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++;
}

Крім того, я включив "Вікі спільноти" для цього, що, на мою думку, означає, що інші користувачі можуть його редагувати. Якщо моя математика помилкова (і ви можете це довести!), Заскочіть і виправте це для мене. :)


10

Насправді тут Ахім зробив дуже хороший момент.

Існує велика різниця між Reed (магнітним) реле (комутатором) і датчиком ефекту Холла.

Перш за все, реле Reed підключатиме комутатор, коли на нього діє достатня магнітна сила, подаючи сигнал увімкнення / вимкнення. Датчик ефекту Холла забезпечує рівень напруги, що вказує, яка магнітна сила прикладається до нього.

Код, показаний вище, буде "безпосередньо" працювати тільки з реле Рида, що не означає, що він взагалі не буде працювати для датчика ефекту Холла, але і створюватиме додаткові проблеми за допомогою датчика ефекту Холла.

Першочерговим завданням буде те, що ви ставитесь до аналогового пристрою як до цифрового - очікуючи, що він запустить пульс. Тепер сигнал не буде імпульсувати - він буде, як правило, як крива дзвіночка, зі всілякими коливаннями. Ви можете відключитися від мінімальної напруги для високого сигналу (близько 3,5 В, IIRC?) Кілька разів, коли магніт передає датчик ефекту Холла.

Звичайно, наш перший інстинкт при використанні чогось подібного датчика ефекту Холла - це використання АЦП та зчитування рівня напруги на аналоговому штирі. Тим не менш, ви обмежені 10000 прочитаних, приблизно, в секунду на аналоговому штифті (кожне читання займає 100uS). Це також передбачає, що все, що ви робите, - це циклічне читання читання - не залишає у вас багато іншого часу для оновлення дисплея, обчислення тощо. Не кажучи вже про те, що ви читали в неправильний час, ви пропустили сигнал!

Я впевнений, що можна використовувати переривання, якимось чином пов’язані з АЦП, але я не знаю таких знань.

Натомість, якщо ви хочете використовувати фактичний датчик ефекту Холла, я б запропонував подати його в тригер Шмітта, щоб перетворити його на цифровий (увімкнено / вимкнено) сигнал на каліброваному рівні, який вказує "безпосередньо під магнітом". Крім того, залежно від рівня гістерезису, що реалізується в триггері Шмітта, вам може знадобитися зробити деякий відскок, який міняв би швидкість відхилення залежно від поточної швидкості. Тоді ви могли б ставитися до цього, як до звичайної естафети Рида.

! c


1
Ви можете отримати найкраще з обох світів. Компоненти ATMega8 можна налаштувати для забезпечення доступу до внутрішнього компаратора. Маючи відповідну опорну напругу (регульовану, скажімо, нарізку), ви можете мати перерви на зростаючому (або падаючому або обох) краю аналогового сигналу. посилання на тему форуму, пояснюючи лише це: arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1163394545
SingleNegationElimination

Існують пристрої з ефектом Холла з пороговим виходом із замикання на шмітти. Вони досить поширені. Крім того, за допомогою перемикача очерету вам все одно доведеться знімати вихід.
Вонор Коннор

7

Тут найбільше згадуються датчики ефекту Холла та вимикачі очерету, і вони найкраще рішення.

Геркон буде дешевше, але може дати вам помилкові імпульси , коли велосипед отримує шок. Якщо це лише одне з виїзду з бордюру, програмне забезпечення може легко відфільтрувати його, але це інше, коли ви їдете по бруківці, що може весь час видавати помилкові імпульси. Більш ударостійкі очеретяні вимикачі потребують більш сильного магнітного поля для активації, але неодимовий магніт це виправить.



77

Перемикач ефекту Холла не має цих недоліків, але трохи дорожче.


T

v=πDT

DT

s=pulse count×π×D

D


5

Магніт можна встановити на краю обода колеса, а датчик ефекту Холла встановити дуже близько (але не контактуючи) з магнітом. Коли колесо крутиться і магніт передає датчик, датчик підбере зміни в магнітному полі.


3

Якщо ви все ще хочете перейти в твердотільний стан, це багато "перемикачів ефектів Холла", які включають датчик ефекту Холла і тригер Шмітта з гістерезисом, щоб забезпечити чистий цифровий вихід без відмов. Вони перемикаються щоразу, коли буде досягнута деяка порогова щільність потоку (надана у таблиці). Ви можете обчислити вдалу комбінацію магніту і перемикача або просто експериментувати.

Цей сайт розповість вам набагато більше.


2

Запчастини у велосипедних комп'ютерах є очеретяними контактами, а не датчиками ефекту Холла. Вони абсолютно різні. Але я думаю, ви всі говорите про тростинні контакти.


1

Магніт можна встановити на спиці, а датчик на одному з ваших вил або на ланцюжку.

Замість того, щоб перемножувати на pi і т. Д., Запропонований моїм останнім велосипедним комп'ютером метод вимірювання лінійної відстані однієї революції (крейда на шині, вимірювання між двома крейдовими позначками), тоді ви можете просто помножити обороти на пряму окружність.

[EDIT] Я щойно знайшов цей посібник на веб-сайті для перегляду велосипедних комп'ютерів за допомогою PIC, можливо, якась інформація може бути корисною для вас.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.