Как сделать стрелочный спидометр

Обновлено: 08.07.2024

Регистрируясь на данном ресурсе Вы соглашаетесь с действующими Правилами форума и обязуетесь их соблюдать.
Незнание правил не освобождает Вас от наказания за их нарушение!

Для участников клуба доступна различная клубная атрибутика: рамки, наклейки, футболки, толстовки, кружки, карты и т.д. Причем некоторые виды атрибутики распространяются бесплатно на встречах. Более подробную информацию узнавайте в своем региональном разделе или теме. Также если Вы хотите заниматься клубной атрибутикой в своем городе, то напишите об этом администрации.

Измерение скорости движущегося транспортного средства всегда было интересной задачей для любителей электроники. Сейчас, в эпоху почти тотального перехода на цифровую технику, наиболее просто сделать цифровой спидометр и подобный спидометр для велосипеда на основе платы Arduino мы уже рассматривали на нашем сайте. Но для многих людей визуально более удобен аналоговый спидометр, поэтому в данной статье мы рассмотрим создание аналогового спидометра на основе платы Arduino и инфракрасного датчика. В данном проекте инфракрасный датчик будет использоваться для измерения скорости. Во многих других проектах для измерения скорости используется датчик Холла, но в этом проекте мы применим инфракрасный датчик – его достаточно легко купить и его можно использовать практически в любом типе транспортного средства.

Внешний вид аналогового спидометра на основе Arduino и инфракрасного датчика

В рассматриваемом проекте мы будем показывать скорость как в аналоговой, так и в цифровой форме. Также в данной статье мы можем улучшить свои познания в области шаговых двигателей и использования прерываний и таймеров в Arduino. В результате реализации данного проекта мы сможем измерять скорость любого вращающегося объекта, отображать ее в цифровой форме на экране ЖК дисплея 16x2 и в аналоговой форме на соответствующем указателе.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Биполярный (двухполюсный) шаговый двигатель (4 провода) (bipolar stepper motor).
  3. Драйвер шагового двигателя L298n (Stepper motor driver) (купить на AliExpress).
  4. Модуль инфракрасного датчика (IR sensor module) (купить на AliExpress).
  5. ЖК дисплей 16х2 (16*2 LCD display) (купить на AliExpress).
  6. Резистор 2,2 кОм (купить на AliExpress).
  7. Соединительные провода.
  8. Макетная плата.
  9. Источник питания.
  10. Напечатанная на принтере картинка спидометра.

Внешний вид компонентов для проекта

Расчет скорости и ее отображение на аналоговом спидометре

Инфракрасный (ИК) датчик представляет собой устройство которое может обнаруживать присутствие объекта перед собой. Для тестирования работы проекта мы использовали двухлопастной вентилятор, который поместили перед инфракрасным датчиком, поэтому всегда когда лопасть вентилятора будет проходить над датчиком ИК датчик будет обнаруживать это. Для расчета времени одного оборота вентилятора мы задействуем таймеры и прерывания платы Arduino. В определенной степени данная часть проекта похожа на тахометр на основе платы Arduino, ранее рассматривавшийся на нашем сайте.

Внешний вид инфракрасного датчика

В этом проекте мы будем использовать прерывание самого высокого приоритета для определения числа оборотов вентилятора в минуту (rpm - revolutions per minute). Мы будем применять это прерывание в нарастающем режиме. То есть всегда когда выход датчика будет изменять свое состояние с LOW на High будет вызываться на выполнение функция RPMCount(). А поскольку в проекте мы использовали двухлопастной вентилятор это значит что данная функция будет вызываться 4 раза за один оборот.

Когда мы определим время одного оборота мы можем рассчитать по ниже приведенной формуле число оборотов в минуту (RPM). В этой формуле 1000/time позволит определить нам число оборотов в секунду (RPS - revolution per second), а умножив полученное значение на 60 мы получим число оборотов в минуту.



У собранного своими руками электронного спидометра будет три режима:

  • Спидометр (определение скорости) и одометр (пройденная дистанция)
  • Задача 1 – проехать 32 км (20 миль)
  • Задача 2 – достичь скорости 30 км\ч

Спидометр собран на Ардуино, так что нет предела вашему воображению.

Шаг 1: Как всё работает

Принцип работы проекта прост, но для сборки его нужно понимать. В самом простом понимании, он состоит из Геркона или магнитного выключателя, установленного на раму велосипеда и еще одного магнита, установленного на спицу колеса.

Так как колесо вращается, то магнит активизирует выключатель при каждом обороте. Сигнал поступает на Ардуино, который считает количество оборотов и по ним определяет покрытую дистанцию (нужно будет сначала указать диаметр вашего колеса). Также Ардуино следит за временем и вычисляет скорость. Данные выводятся на дисплей, где они отображаются в милях в час (или в километрах, если доработать формулу).

Шаг 2: Необходимые материалы

Проект недорогой и может обойтись вам в 300-700 рублей. Сборка потребует от вас некоторые умения в пайке.
Материалы для сборки:

  1. Плата Ардуино – если вы возьмёте Ардуино Про Мини, то для программирования вам также понадобятся Ардуино Уно или адаптер usb-ttl (как программировать Ардуино Про Мини через Ардуино Уно) или используйте Ардуино Микро или Ардуино Уно.
  2. Дисплей Ардуино 16×2
  3. 3.7805 voltage regulator (increases the control over the contrast no major difference -optional)
  4. 2x выключателя для задней подсветки (опционально)
  5. Резистор на 220 Ом
  6. Потенциометр на 10k Ом
  7. Джамперы мамы и папы, если вы хотите, чтобы Геркон был съемным
  8. Геркон
  9. Провода
  10. Мгновенный переключатель, чтобы менять режимы
  11. Конденсатор 0.1uf чтобы уменьшить дибаунс кнопки
  12. Резистор 10k Ом

Список необходимого инструмента:

  1. Паяльник
  2. Припой
  3. Корпус
  4. Что-то наподобие дремеля, чтобы прорезать в корпусе отверстия для установки электроники и дисплея
  5. Горячий клей или что-то подобное для закрепления компонентов на местах.

Шаг 3: Код

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

Шаг 4: Электроника







Схема соединения компонентов приложена выше, но я также напишу её отдельно.

  • 1 — GND
  • 2 VCC
  • 3 VIPER PIN на потенциометре (концы на vcc и gnd, а центр на пин 3 дисплея)
  • 4 13
  • 5 gnd
  • 6 12
  • 7 —
  • 8 —
  • 9 —
  • 10 —
  • 11 11
  • 12 10
  • 13 9
  • 14 8
  • 15 VCC
  • 16 GND
  • Резистор на 220 Ом соединяем между пином 2 Ардуино и землёй
  • Мгновенный переключатель соединяется с пином 2 и vcc
  • Конденсатор на 0.1 uf помещаем между двумя клемами выключателя, чтобы уменьшить дибаунс
  • Геркон на vcc и A0
  • Резистор между A0 и gnd

После соединения всех компонентов можно запитать девайс и проверить, что всё работает.

Шаг 5: Корпус


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

Шаг 6: Тестирование и устранение неполадок

Запитайте устройство от батарейки 9V и проверьте все три режима. Поднесите магнит близко к Геркону и скорость с дистанцией должны начать увеличиваться.

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.


СОВРЕМЕННЫЕ ПРОБЛЕМЫ ШКОЛЬНОГО ОБРАЗОВАНИЯ





Автор работы награжден дипломом победителя I степени

Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

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

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

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

Темой моего исследования стал вопрос: Как сделать прибор, которым управляет программа?

Я поставил себе цель: Понять, что такое программа, научиться писать программы и разобраться как программы могут управлять полезными устройствами.

Для достижения цели необходимо ответить на следующие вопросы (задачи исследования):

Где может работать программа?

Что такое программа, как написать программу для небольшого устройства?

Как программы могут управлять устройствами и механизмами?

Как программа может получать информацию из внешнего мира?

Как написать программу и заставить ее выполнять полезную работу?

В ходе рассуждений на тему исследования мной были выдвинуты предположения:

Для работы программы необходим компьютер, а для небольшого устройства нужен специальный микрокомпьютер или микроконтроллер.

Для получения программой информации из внешнего мира необходимо использовать специальные устройства для ввода данных или сенсоры, подключенные к компьютеру.

Для отображения информации или воздействия на внешнюю среду необходимы устройства вывода или исполнительные механизмы.

Для самостоятельного создания полезного прибора, управляемого программой необходим компьютер, устройства ввода и устройства вывода.

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

Закрепить компьютер на велосипеде – задача трудоемкая и выглядеть такой спидометр будет очень смешно и возить его с собой будет тяжело и неудобно.

Как подключить электропитание? Ведь обычный компьютер потребляет очень много электроэнергии, не вести же за собой многокилометровый электро-удлинитель?

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

На сегодняшний день самый популярный и недорогой микроконтроллер для самостоятельного создания полезных вещей является контроллер под названием Arduino UNO (рис. 1.)

Рисунок 1. Микроконтроллер Arduino UNO.

Микроконтроллер Arduino UNO может хранить программу внутри главной микросхемы, и выполнять ее автономно.

Записать программу в микроконтроллер можно при помощи специальной программы для обычного компьютера, подключив микроконтроллер к компьютеру при помощи интерфейса USB.

Вывод: Изучив возможные устройства, которые могут выполнять программы, я пришел к выводу, что для создания небольшого прибора, управляемого программой необходимо использовать микроконтроллер. Чтобы создать спидометр для моего велосипеда, я решил воспользоваться микроконтроллером ArduinoUNO.

    Что такое программа, как написать программу для небольшого устройства?

Рисунок 2 Среда программирования для Arduino

В этой среде, используя специальный язык программирования, можно писать последовательность действий который должен совершать контроллер. Эта последовательность действий и называется программой. Программу для контроллера Arduino еще называют скетчем (sketch).

Контроллер будет в точности следовать написанному скетчу, если загрузить его при помощи USB-кабеля.

Для того чтобы начать писать cскетчи для микроконтроллера Arduino я разобрался со следующими основными элементами программ: функции; переменные; математические операторы; операторы ветвления; циклы.

Вывод: Программа - это последовательность действий, описанных на специальном языке программирования, которые в точности будет выполнять компьютер или контроллер. Для создания простой программы для контроллера Arduino необходимо знать, что такое функции, переменные, операторы, команды ветвления и циклы.

    Как программа может управлять устройствами и механизмами?

На рисунке 3 изображен контроллер Arduino, на котором можно увидеть 13 цифровых входов-выходов.

Рисунок 3 Цифровые входы и выходы и аналоговые входы Arduino

Цифровые входы-выходы - это контакты которые можно использовать и как входы, и как выходы. Как будет работать каждый контакт можно задать в скетче, разместив специальную команду в функции setup().

Когда, цифровые контакты используются в качестве выходов, они действуют подобно маломощным источникам электропитания, которые при помощи специальных команд можно включать или выключать. Таким образом, подавая и отключая электропитания на контакты мы можем управлять разными устройствами.

Я, изучая Arduino подключал к нему и мог управлять следующими устройствами: светодиоды; Электромотор; сервопривод;

Автомат для запуска мыльных пузырей:

Воспользовавшись полученными знаниями по управлению электродвигателем и сервоприводом, я создал автомат для запуска мыльных пузырей и написал программу, которая заставляет его работать (Рис.4, приложение 1). Сделанный мной автомат очень весело работал, самостоятельно пуская мыльные пузыри, что очень нравилось моему маленькому двоюродному братику Платону.

Рисунок 4 Автомат для мыльных пузырей.

Вывод: Контроллер Arduino может управлять различными устройствами при помощи цифровых выходов, такими как светодиодами, моторами и сервоприводами. Указанные механизмы можно использовать для создания различных полезных вещей и роботов.

    Как программа может получать информацию из внешнего мира?

На рисунке 3 можно увидеть, что у контроллера Arduino кроме 13 цифровых входов-выходов есть еще 6 аналоговых входов, которые отмечены как входы А0, А1, А2, А3, А4, А5, А6.

Цифровые и аналоговые входы, могут быть использованы для получения разнообразной информации из внешнего мира при помощи специальных устройств, которые называются сенсоры.

Цифровые входы могут сообщить нам о наступлении какого-либо события, измеренного подключенным сенсором (например, нажата кнопка или нет, сработал датчик присутствия или нет). Аналоговые входы могут дать более расширенную числовую информацию от разных сенсоров (например, температуру, положение вала потенциометра или расстояние до препятствия от дальномера)

Изучая цифровые и аналоговые входы Arduino, я подключал к нему и мог получать информацию со следующих сенсоров: кнопка или геркон; датчик присутствия; потенциометр; датчик температуры и датчик освещения; ультразвуковой дальномер.

    Создание стрелочного спидометра для велосипеда.

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

Для изготовления такого прибора мне понадобилось минимальное количество материалов, это: контроллер Arduino;магнит; геркон; светодиод; сервопривод; два резистора. Устройство было собрано как изображено на рисунке 5.

Рисунок 5. Электрическая схема стрелочного спидометра.

Подключение светодиода.

Подключение геркона.

Геркон мы подключим одним контактом к выводу питания 5Вольт, а другим контактом к аналоговому входу А1. В результате, когда геркон будет замкнут на вход А1 потечет электрический ток от вывода питания и мы сможем замерить появление тока командой analogRead.

Чтобы при размыкании геркона, команда analogRead выдавала нам нулевое напряжение соединим контакт геркона, соединенный с выходом A1 еще из контактом GND (земля) на контроллере при помощи резистора.

Таким образом, при размыкании геркона выход A1 будет соединен через резистор с землей и analogRead должно на выдать значение равное 0.

Но, проверяя работу Геркона с магнитом я выяснил, что с имеющимся у меня резистором при замкнутом герконе при помощи функции analogRead мы получаем значение около 1000 (однозначно больше, чем 100). А при разомкнутом герконе, полученное значение лежит в промежутке от 0 до 6 (однозначно меньше чем 100).

Поэтому, при написании программы мы будем считать геркон разомкнутым, если полученное при помощи analogRead значение меньше чем 100, и замкнутым если это значение больше, чем 100.

На рисунках 6-8 видно, как я закрепил на колесе велосипеда магнит и геркон, чтобы обеспечить замыкание геркона при каждом повороте колеса.

Рисунки 6-8. Подключение геркона.

Подключение сервопривода.

Сервопривод я подключил к контактам питания и GND, а также к цифровому выходу 9, при помощи которого мы будем задавать положение сервопривода.

На рисунке 9 видно какое табло спидометра мы сделали, чтобы показывать скорость передвижения велосипеда. На вал сервопривода я прикрепил красную стрелку, которая будет указывать на скорость передвижения велосипеда.

Рисунок 9. Спидометр.

Проверив работу сервопривода оказалось, что при скорости равной 0, угол отклонения вала сервопривода должен быть равен 180 0 .

Таким образом при изменении скорости от 0 до 20 км/час мне будет необходимо изменять положение угла стрелки от 180 до 0 градусов.

Вычисления скорости.

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

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

Расстояние величина, постоянная и просто равна длине колеса, которое я измерил, как показано на рисунках 10-11.

Расстояние оказалось равным 1,43 метрам. Но так как мы считаем скорость в километрах в час, то переведем это расстояние в километры:

Рисунки 10-11. Измерение длины окружности колеса.

Время, за которое, выполняется один оборот колеса я вычислил внутри моей программы по формуле:

t_ms = millis() -ms

где millis() – функция, которое выдает нам текущее время (т.е. когда было замыкание контакта геркона), а ms – это время когда было предыдущее срабатывание геркона. Значение ms мы каждый раз запоминаем при срабатывании геркона и используем его, при следующем замыкании.

Но, t_ms – это время поворота колеса в миллисекундах, а нам нужно в часах, поэтому переведем это время сначала в секунды tсек, затем в минуты tмин и потом в часы tчас, итак:

Ну и скорость в километрах в час будет равна:

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

speedometr = wheel_m*3600/t_ms;

Вычисление угла поворота вала сервопривода.

Так как я решил измерять скорость от 0 до 40 километров в час (быстрее велосипед не разгонится), то если бы 0км час соответствовал угол отклонения стрелки 0 градусов, а скорости 40 км/час угол 180 градусов, то скорости 1 км/час соответствовал бы угол равный градусов.

Поэтому, произвольной скорости Vкм/час, соответствовал бы угол, равный градусов. Значит в программе угол отклонения стрелки мы вычисляем как:

angle = speedometer * 180 /40;

Но, так как у нашего сервопривода крайнее левое положение вала соответствует 180 градусам, а крайнее правое 0 градусам, то мне пришлось вычислить правильное значение для вала по следующей формуле: 180 - angle

Программа спидометр.

В результате моих размышлений я написал программу (приложение 2), которая показывает правильную скорость движения велосипеда на основании измеренных данных (длины колеса и времени одного его поворота).

Проверка точности показаний изготовленного спидометра.

Для проверки точности показаний созданного мной спидометра был приобретен велокомпьютер Cyclotechi6 промышленного производства и также установлен на велосипед.

Рисунок 12 Сравнение работы спидометра с эталоном.

Во время движения колеса показания двух спидометров, работающих одновременно совпадали, что подтверждает правильность работы программы и моего устройства (рис. 12).

Вывод: Используя полученные во время исследования знания у меня получилось создать полезное устройство, которое управляется программой. Я понял, что такое программа и создал много программ-скетчей, которые обеспечивали работу автоматических устройств.

Для создания небольшого прибора, управляемого программой необходимо использовать микроконтроллер, например, Arduino UNO.

Программа - это последовательность действий, описанных на специальном языке программирования, которые в точности будет выполнять компьютер или контроллер. Для создания простой программы необходимо знать, что такое функции, переменные, операторы, команды ветвления и циклы.

Контроллеры могут управлять различными устройствами при помощи цифровых выходов, такими как светодиодами, моторами и сервоприводами и т.д. Указанные механизмы можно использовать для создания различных полезных вещей и роботов.

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

Читайте также: