Велокомпьютер для велостанка
- Войдите на сайт для отправки комментариев
Здравствуйте!
Желание создать велокомпьютер для велостанка и автоматизировать переключение режимов тренировок живет в нашем велоклубе "Титан" (http://veloclub-titan.ru) уже много лет.
Нагрузку на станке создает генератор постоянного тока.
При нагрузке генератор использует 3 режима:
– «легкий» (режим по умолчанию);
– «равнина»;
– «гора».
Режимы переключаются тумблером вручную.
Необходимо сделать велокомпьютер в котором будет реализовано:
1. Автоматическое переключение режимов в соответствии с планом тренировки.
Пример:
– на отрезке 0-300 м – режим «легкий»;
– на отрезке 300-500 м – режим «равнина»;
– на отрезке 500-600 м – режим «легкий»;
– на отрезке 600-700 м – режим «гора»;
– на отрезке 700-1000 м – режим «легкий».
2. Возможность программирования тренировки или поместить в память готовые планы тренировок (около 50). В идеале и то и другое одновременно.
3. Запоминание времени прохождения отрезков (до сотых долей секунды).
4. Функцию измерения текущей скорости (до десятых).
5. … другие функции – будут определены.
Подскажите пожалуйста:
1. С чего начинать?
2. Как правильно подобрать элементы Arduino?
Подскажите пожалуйста:
1. С чего начинать?
2. Как правильно подобрать элементы Arduino?
1. Прежде всего - определиться с максимальной скоростью вашего велосипедиста. На треке за лидером это - по утверждениям некоторых товарсчей - до 100 км/ч. У вас судя по предполагаемым режимам - езда по пересеченной местности. То есть - до 50-60 км/ч. Ну, пусть с запасом 72 (на 3,6 хорошо делится). Делим на 3,6 - получаем 20 м/с или 20 см за одну сотую секунды. Ищите в конструкции своего велотренажера вращающийся элемент диаметром менее 3 см - с него можно будет снимать импульсы с нужной вам частотой (более 100 импульсов в сек на максимальной скорости). Такого элемента, скорее всего, нет - шкив э/двигателя поболе диаметром будет (вал не подходит, т.к. он вращается со скоростью шкива). В таком случае установите несколько источников импульсов (2-4 - с равным шагом) на элемент большего диаметра. Основное требование тут - расстояние между источниками импульсов должно соответствовать (или быть меньшим) 20 см на "колесе велосипеда".
Все вышесказанное, если вы будете определять пройденный путь по импульсам от тренажера. Можно и генерируемый ток измерять, но тут лишние преобразования добавляются (механическое движение в ток, ток в цифровую информацию для МК), каждое из которых вносит свою погрешность...
Далее, определитесь, как вы будете задавать профили (="планы тренировок") - непосредственно на экранчике велокомпьютера, либо на ПК/ноутбуке и оттуда будете заливать в велокомпьютер. В первом случае к велокомпьютеру придется добавить дисплей минимум на пару строчек и минимум пяток кнопочек для редактирования профилей. И то гемморой будет приличный. Во втором - решать проблему связи с ПК. В большинстве Ардуин уже есть встроенное решение - последовательный порт через USB-разъем.
2. С предполагаемой задачей справится любая Ардуина. По большому счету они отличаются лишь размерами и обвеской (у некоторых самых компактных нет USB и стабилизатора питания). Выбирайте в зависимости от ответа на предыдущий вопрос. Но имея в виду полное отсутствие в вашем случае требований к компактности и необходимость более-менее комфортно заливать скетчи "на борт", берите что-нибудь не менее nano.
Благодарю за проявленный интерес к нашей задаче.
Скажите еще можно ли использовать геркон для снятия импульсов.
http://radioded.ru/shema/velospidometr-na-mikrokontrollere-attiny2313
И еще вот здесь пишут про реализацию нашей задачи:
http://velo.nsk.ru/forumdn.php?forum=forum1&topic=1322021751&messid=1
http://velo.nsk.ru/forumdn.php?forum=forum1&topic=1322021751&messid=46
http://velo.nsk.ru/forumdn.php?forum=forum1&topic=1322021751&messid=53
Скажите еще можно ли использовать геркон для снятия импульсов.
для требуемой точности едва ли - смотрим вторую колонку:
http://radioparts.ru/gerkons/general.html
Рабочими альтернативами могут быть:
- датчик Холла
- фотосопротивление/-диод/-транзистор/...
- ...
Главный вопрос: по чем считать пройденное расстояние и скорость? По оборотам маховика? Один оборот маховика=одному обороту 29" колеса? Или считать по длине окружности исходя из диаметра маховика?
Я бы предложил считать что 1 оборот маховика=1 обороту 29"(шоссейный же велик, поэтому 29 дюймов). За один оборот колесо проходит ~2250мм.
100км/час это 100 000/3600= 27.7м/с.
27 777/2250= 12.3 оборота в секунду - немало епт. Но это на скорости в 100км/час!
Если же взять 72 км/час, то получится:
72 000/3600=20м/с
20 000/2250= 8.8 оборота в секунду. Если округлить, то 10 Герц(раз в секунду) должен срабатывать наш геркон. Исходя из таблицы, которая по ссылке в посте выше, то я думаю геркон вполне можно брать.(только не с китайского спидометра :-))
Хочу отметить что это расчеты с условием, что 1 оборот маховика=1обороту колеса в реальности. То есть нужно будет поднастроить нагрузку/подобрать передачу, чтобы соответствовало.
По программе не подскажу, потому как мой ардуино только ко мне едет.(А сам я тоже велосипедист)
Благодарю за участие.
В основном клуб катается на МТВ с колесами 26 дюймов - мы любим поля и леса :)
По длине колеса 26" можно не задуряться и взять 2000 мм (2 метра) - среднестатистическое колесо МТВ.
Тоже была мысль использовать геркон - на велокомпьютере же справляется.
Можно подавать сигнал на соответствующий режим по количеству импульсов.
Например: если нужно включить соответствующий режим через 100 метров то отсчитаем количество импульсов равное 50. 50Х2м=100м
Передачи уже подобраны и имитирует реальную нагрузку.
Нужно определиться по максимальной скорости, будем собираться в субботу обсуждать разработку велокомпьютера. Напишу потом, что нарешали.
а что максимальная. Я у себя в городе на набережной, вплотную за грузовиком максимум мог держать постоянную в 60 км/час(Author Solution Disk, 26"). Я думаю макс скорость будет недалеко от этой. Думаю больше зависит от макс частоты переключения геркона.
2й раз нечаянно сообщение запостил.
а что максимальная. Я у себя в городе на набережной, вплотную за грузовиком максимум мог держать постоянную в 60 км/час(Author Solution Disk, 26"). Я думаю макс скорость будет недалеко от этой. Думаю больше зависит от макс частоты переключения геркона.
Тоже думаю, что в районе 60 км/ч будет достаточно.
Посчитал, если окружность колеса у нас 2 метра, а передача 44Х11.
За один оборот педалей колесо "проедет" 8 метров.
При каденсе 90 оборотов в минуту скорость получилась 43,2 км/ч.
Скорость 60 км/ч получится при каденсе 125.
Когда я отрабатываю на роллерном станке ускорения, то мой каденс близится к 180, а при таком каденсе скорость будет равна 86,4 км/ч (в реальном катании так конечно не сможешь).
Вот и думаю какую максимальную скорость закладывать?
Подойдем с другой стороны: а зачем закладывать вообще максимальную скорость? Я думаю не стоит. Все будет ограничиваться быстродействием геркона+ардуино. Написать тестовую прогу по подсчету оборотов колеса в единицу времени и на станке попробовать при каденсе 180: будет ли успевать программа подсчитывать импульсы. А там уже видно будет.
Подойдем с другой стороны: а зачем закладывать вообще максимальную скорость? Я думаю не стоит. Все будет ограничиваться быстродействием геркона+ардуино. Написать тестовую прогу по подсчету оборотов колеса в единицу времени и на станке попробовать при каденсе 180: будет ли успевать программа подсчитывать импульсы. А там уже видно будет.
Хорошая мысль. Опытным путем выясним.
Если же взять 72 км/час, то получится:
72 000/3600=20м/с
20 000/2250= 8.8 оборота в секунду. Если округлить, то 10 Герц(раз в секунду) должен срабатывать наш геркон.
Об этом придется забыть:
3. Запоминание времени прохождения отрезков (до сотых долей секунды).
Точность измерения будет примерно пять сотых, то есть "до десятых долей секунды".
Вчера перед сном мерил возможность геркона велокомпьютера Polar CS200. Велосипед перевернул вверх колесами.
Использовал передачу 42Х12 (укладка 3.5) - за один оборот педалей колесо проходит 3.5 оборота каденс был около 200 оборотов в минуту (крутил руками), колесо вращалось со скоростью около 12 оборотов в секунду 200/60=3,33*3.5=11,65 (12) оборотов.
Скорость же при всех перечисленных показателях была около 84 км/ч
Текущую скорость можно расчитывать он количества оборотов колеса (импульсов) в минуту или 10 секунд.
Если колесо за 10 секунд пройдет 70 оборотов (импульсов), то
70*6=420 оборотов в минуту или 420*60=25200 оборотов в час
колесо у нас 2 метра значит 25200*2=50400 метров в час или 50.4 км/ч
Правильно ли будет если по такому алгоритму пересчитывать текущую скорость каждые 10 секунд и выводить показания на дисплей или это нагрузит микропроцессор?
Как правильно сделать?
Думаю, здесь вполне можно "смимикрировать" стандартный алгоритм велокомпьютера.
Т.е. - один оборот маховика = 1 импульс датчика. Сам датчик - от того же велокомпьютера (что там внутри - геркон или что-то иное - не столь важно, главное - что в реальных условиях работает).
Расстояние - просто количество импульсов * длину колеса. Между импульсами во времени можно интерполировать линейно или квадратично (хотя последнее вряд ли нужно). Т.е. если длина колеса = 2м, и ты получил два импульса - один в 1сек, второй в 3сек. - то можно добавить виртуальных "точек" ещё так, чтобы в 2 сек (ровно между импульсами) считалось, что ты проехал 1 метр.
Скорость - так же просто. Возьми расстояние, пройденное за последнюю секунду. Вот тебе и "производная" :). С учётом инерционности маховика - вполне уместная.
А что касается скорости... Тут соображение простое. Если велокомп с маленькой схемкой на 1 "таблеточной" батарейке вполне успевает всё складывать/перемножать/усреднять - то неужто ардуин с 16МгЦ процессором не справится? :). Даже если ему подавать сигнал с частотой 100Гц, то между импульсами у него будет по 160.000 тактов, чтобы обработать результат.
Алексей!
А как сделать часы - нужен модуль RTC?
Вроде такого http://devicter.ru/goods/modul-rtc?from=ZWM2
Если тебе нужны именно часы (которые показывают время и не зависят от питания) - то да, пожалуй, без RTC не обойдёшься.
А просто считать период между импульсами можно и с помощью встроенного в контроллер таймера. Иными словами - обеспечить функционал велокомпьютера можно и без RTC. Но если хочется ещё и чтобы он сам фиксировал абсолютное время (начала/конца тренировки) - то для этого нужны часы.
... Но если хочется ещё и чтобы он сам фиксировал абсолютное время (начала/конца тренировки) - то для этого нужны часы.
Именно это и хочется.
По поводу сенсора-счетчика - он есть в старых мышках, фотодиод и светодиод :) можно куда нить пристроить на станок.
компоненты будут стоять 50-100евро. и много работы если раньше не программировал Arduino..
На сегодняшний день протатип устройства почти готов.
Он умеет:
- автоматически переключать режимы работы генератора по пройденному расстоянию указанному в файле, который считвается с SD карты;
- считать скорости среднюю и максимальную поездки и отрезков (между переключениями режимов генератора);
- считать время прохождения тренировки и отрезков;
- считать пройденные дистанции поездки и отрезков;
- записывать все выше перечисленное на SD карту.
В настоящий момент протатип дорабатывается для использования в ручном режиме (кнопки режимов и секундомера).
После реализации ручного режима протатип будет помещен в корпус и будет проведена его опытная эксплуатация.
Наверно вопрос наивный для знающих людей. Но как "Нагрузку на станке создает генератор постоянного тока", точнее как заставить его создавать разную нагрузку? Наверно конечно совсем ламерский вопрос, извините, я из мира программирования.
Нагрузку на станке создает генератор постоянного тока", точнее как заставить его создавать разную нагрузку?
Режимы нагрузки на генераторе создаются сопротивлениями, которые подключены к генератору - генератор сложнее "прокрутить" если потребитель (сопротивление) требует большей мощности.
Сопротивлениия подобраны очень близко к нагрузкам на велосипеде при езде в гору, по равнине и по равнине в условиях полного штиля.
Наверное, имеет смысл дать ссылку на "микроликбез" (для тех, кто совсем-совсем не в теме).
Велостанок уже был создан, и несколько его экземпляров обрели своих владельцев. Причём в процессе изготовления автор конструкции понемногу вносил изменения в механику - но электронная часть оставалась неизменной (считайте - что-то вроде советского arduino на микросхемах с такими мощными контактами, что через них запросто можно запитать небольшой завод). Примерно взглянуть на станок можно здесь, например: http://velo.nsk.ru/biker.php?key=jPOKOkIJ
Таким образом - вся тема о том, как к уже существующему железу приделать новую "маленькую и быструю" электронику, которая позволит, например, загрузить программу тренировки по кабелю USB или передать на "флэшке".
Вся механическая часть, включая датчики и схему коммутирования нагрузки - есть, и работает уже многие годы. И вроде даже вся сигнальная часть сводится а стандартным ttl уровням. Вся задача встала о том, как заменить схему на "стопицот" советских микросхемах на что-нибудь более современное. В ответ на вопрос, "на что" заменить, ответом стала платформа ардуино. И теперь всё о том, как именно это сделать. С учётом практически готовой "ответной" части - фактически всё сводится к написанию скетча.
Спасибо. Я, вообщем-то, подозревал, что это сопротивление, но для меня это как-то сильно контр-интуитивно. Не знаю почему. А из любопытства можно вопрос - а можно понять сколько Ватт рассеивает это сопротивление?
Там в нагрузке сопротивление и второй двигатель постоянного тока (уже в режиме двигателя), на который насажен пропеллер и который дует "в морду". Основной двигатель-генератор, кажется, мощностью около 500-600 ватт. Двигатель-"мордодуй" - 170 ватт.
Выходит, остаётся рассеять максимум около 330-430 ватт. Это явно не радиолюбительский "резистор", но и не так уж много. Тем более если учесть, что эта мощность - скорее пиковая. Во время плановых тренировок с учётом "мордодуя" вряд ли нужно длительно рассеивать больше 200 ватт.
В ходе обкатки опытного образца обнаружилось, что Arduino считает показания не верно.
Как выяснилось это связано с передачей импульсов от геркона или датчика холла на Arduino на скоростях около и больше 35 км/ч.
Сейчас есть необходимость сделать формирователь импульсов.
Подскажите пожалуйста как это реализовать?