Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Arduino » Колесный измеритель расстояния (курвиметр) на Ардуино своими руками

    Колесный измеритель расстояния (курвиметр) на Ардуино своими руками

    Всем привет! Сейчас я постараюсь подробно рассказать о том, как сделать самый простой и доступный курвиметр.

    Но для начала разберемся, что это такое и для чего он нужен. На самом деле о его предназначении нам говорит само его название. Оно образовано от латинского слова curvus, что значит изогнутый или волнистый. То есть курвиметр – это колесный или роликовый измеритель расстояния. Выделяют два типа курвиметров : маленькие (картографические) , которые обычно применяют для измерений на карте, и большие (дорожные), которые как правило применяют для измерения длинны изогнутых участков уже автомобильных дорог. Их можно применять везде, где обычной рулеткой измерять неудобно или невозможно, поэтому проект обещает быть интересным.

    Первое, о чем стоит позаботиться при постройке курвиметра – это колесо или ролик. Он должен быть достаточно маленьким, чтобы точность прибора была высокой, в то же время он должен быть достаточно большим, чтобы на величину показаний не сильно влияли неровности измеряемой поверхности. В моем случае колесо имеет диаметр 14 сантиметров.

    Теперь нужно определиться с материалом и размерами конструкции. Я использовал дерево.

    На брусках я сделал разметку и проделал необходимые вырезы и отверстия.

    Затем я собрал обработанные детали при помощи небольших саморезов.
    Теперь немного отвлечемся от самого курвиметра и подумаем, как эта штука вообще сможет определять расстояние? Все довольно просто. Нам всего лишь нужно посчитать количество оборотов колеса и умножить на длину его внешней окружности, а еще проще добавлять значение длины каждый раз , когда колесо совершает очередной оборот.

    Чтобы отсчитать каждый оборот в простейшем случае можно использовать «скользящий контакт». Однако я не рекомендую использовать такой механизм отсчета. Гораздо лучше будет применить геркон или датчик Холла.

    Пора примерить колесо. Я буду крепить его с помощью длинного болта. Находим место на раме, где обод колеса находится максимально к ней близко и отмечаем штрихами. Примерно в этой зоне мы и должны установить геркон.

    На колесе нужно установить небольшой магнит. Убедитесь, что его силы будет достаточно для смыкания контактов геркона.
    Теперь займемся «мозгами» системы. В моем случае это плата Arduino UNO. Она будет считывать состояние геркона и передавать данные по Bluetooth соединению, с помощью модуля HC-05, на телефон. Кстати, геркон подключается к плате как обычная кнопка. Думаю с подключением Bluetooth модуля проблем тоже возникнуть не должно.

    Что касается самого кода, то он очень простой. И я постарался его закомментировать, чтобы все было максимально понятно.

    int gercon = 12; //подключили геркон к 12 пину
    double distance = 0; //создали переменную типа double для хранения расстояния
    void setup(){
       Serial.begin(9600); //подключили Serial соединение
     }
      void loop(){
    /*Далее цикл if. Если геркон замкнут, то происходит очередной подсчет расстояния. Величина 0.46472-это уже подсчитанная длина одного оборота колеса. Чтобы избежать «лишних» данных добавляем задержку в 200 миллисекунд и выводим показания
    */
       if (digitalRead(gercon)==HIGH) 
       {
     distance = distance + 0.46472;
     delay(200);
     Serial.println(distance);
    }
      }    


    Вот наш курвиметр и готов!

    Сделаем парочку пробных заездов. Все замечательно работает!


    Вы можете посмотреть видео по сборке этого аппарата, возможно вы найдете там, что-то интересное.
    [media=https://youtu.be/kx_7ztPsLws]

    Удачного повторения проекта!
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
    7.5
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    7.5
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    8.5
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 7.83 из 10 (голосов: 2 / История оценок)

    Добавить комментарий

    1 комментарий
    Гость Сергей #39341
    Зачем UNO когда attiny13 за глаза хватит...
    Что касается кода, то, как минимум надо добавить проверку что магнит от геркона ушел, ибо в данной реализации при определенной скорости, а тем более если остановиться колесо, может успеть обработать не один раз или не обработать совсем. Для этого достаточно добавить глобальную переменную и проверять ее состояние перед расчетом длины, что то типа:
    int gercon = 12; //подключили геркон к 12 пину
    int i = true;
    double distance = 0; //создали переменную типа double для хранения расстояния
    void setup(){
    Serial.begin(9600); //подключили Serial соединение
    }
    void loop(){
    /*Далее цикл if. Если геркон замкнут, то происходит очередной подсчет расстояния. Величина 0.46472-это уже подсчитанная длина одного оборота колеса. Чтобы избежать «лишних» данных добавляем задержку в 200 миллисекунд и выводим показания
    */
    if (digitalRead(gercon)==HIGH)
    {
    if (i < 1)
    {
    distance = distance + 0.46472;
    i = 1;
    //delay(200);
    Serial.println(distance);
    }
    }
    if (i>0)
    {
    i++;
    delay(1);
    }
    if (digitalRead(gercon)==LOW)
    {
    if (i>30) //позволяет избежать ложных срабатываний из-за дребезга контактов
    {
    i=0;
    }
    }
    }

    А еще лучше поставить два геркона, это позволит определять направление вращения (не туда измерять пошел - вернулся назад, а не начинать с начала или покачал на месте вперед назад разговаривая с соседом и тп). Так же можно добавить магнитов изменить дискретность.
    З.Ы.Изменения в коде не проверял, могут быть ошибки.

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии