Велокомпьютер для велостанка

skonev
Offline
Зарегистрирован: 24.11.2011

Здравствуйте!

Желание создать велокомпьютер для велостанка и автоматизировать переключение режимов тренировок живет в  нашем велоклубе "Титан" (http://veloclub-titan.ru) уже много лет.

Имеется велостанок.

Нагрузку на станке создает генератор постоянного тока.
При нагрузке генератор использует 3 режима:
– «легкий» (режим по умолчанию);
– «равнина»;
– «гора».
Режимы переключаются тумблером вручную.

Необходимо сделать велокомпьютер в котором будет реализовано:
1. Автоматическое переключение режимов в соответствии с планом тренировки.
Пример:
– на отрезке 0-300 м – режим «легкий»;
– на отрезке 300-500 м – режим «равнина»;
– на отрезке 500-600 м – режим «легкий»;
– на отрезке 600-700 м – режим «гора»;
– на отрезке 700-1000 м – режим «легкий».
2. Возможность программирования тренировки или поместить в память готовые планы тренировок (около 50). В идеале и то и другое одновременно.
3. Запоминание времени прохождения отрезков (до сотых долей секунды).
4. Функцию измерения текущей скорости (до десятых).
5. … другие функции – будут определены.

Подскажите пожалуйста:

1. С чего начинать?

2. Как правильно подобрать элементы Arduino?

step962
Offline
Зарегистрирован: 23.05.2011

skonev пишет:

 

Подскажите пожалуйста:

1. С чего начинать?

2. Как правильно подобрать элементы Arduino?

1. Прежде всего - определиться с максимальной скоростью вашего велосипедиста. На треке за лидером это - по утверждениям некоторых товарсчей - до 100 км/ч.  У вас судя по предполагаемым режимам - езда по пересеченной местности. То есть - до 50-60 км/ч. Ну, пусть с запасом 72 (на 3,6 хорошо делится). Делим на 3,6 - получаем 20 м/с или 20 см за одну сотую секунды. Ищите в конструкции своего велотренажера вращающийся элемент диаметром менее 3 см - с него можно будет снимать импульсы с нужной вам частотой (более 100 импульсов в сек на максимальной скорости). Такого элемента, скорее всего, нет - шкив э/двигателя поболе диаметром будет (вал не подходит, т.к. он вращается со скоростью шкива). В таком случае установите несколько источников импульсов (2-4 - с равным шагом) на элемент большего диаметра. Основное требование тут - расстояние между источниками импульсов должно соответствовать (или быть меньшим) 20 см на "колесе велосипеда".

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

Далее, определитесь, как вы будете задавать профили (="планы тренировок") - непосредственно на экранчике велокомпьютера, либо на ПК/ноутбуке и оттуда будете заливать в велокомпьютер. В первом случае к велокомпьютеру придется добавить дисплей минимум на пару строчек и минимум пяток кнопочек для редактирования профилей. И то гемморой будет приличный. Во втором - решать проблему связи с ПК. В большинстве Ардуин уже есть встроенное решение - последовательный порт через USB-разъем.

2. С предполагаемой задачей справится любая Ардуина. По большому счету они отличаются лишь размерами и обвеской (у некоторых самых компактных нет USB и стабилизатора питания). Выбирайте в зависимости от ответа на предыдущий вопрос. Но имея в виду полное отсутствие в вашем случае требований к компактности и необходимость более-менее комфортно заливать скетчи "на борт", берите что-нибудь не менее nano.

skonev
Offline
Зарегистрирован: 24.11.2011

Благодарю за проявленный интерес к нашей задаче.

Скажите еще можно ли использовать геркон для снятия импульсов.

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

step962
Offline
Зарегистрирован: 23.05.2011

skonev пишет:

Скажите еще можно ли использовать геркон для снятия импульсов.

для требуемой точности едва ли - смотрим вторую колонку:

http://radioparts.ru/gerkons/general.html

Рабочими альтернативами могут быть:

- датчик Холла

- фотосопротивление/-диод/-транзистор/...

- ...

Diemon
Offline
Зарегистрирован: 18.11.2011

 Главный вопрос: по чем считать пройденное расстояние и скорость? По оборотам маховика? Один оборот маховика=одному обороту 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обороту колеса в реальности. То есть нужно будет поднастроить нагрузку/подобрать передачу, чтобы соответствовало.

По программе не подскажу, потому как мой ардуино только ко мне едет.(А сам я тоже велосипедист)
 

skonev
Offline
Зарегистрирован: 24.11.2011

Благодарю за участие.

В основном клуб катается на МТВ с колесами 26 дюймов - мы любим поля и леса :)

По длине колеса 26" можно не задуряться и взять 2000 мм (2 метра) - среднестатистическое колесо МТВ.

Тоже была мысль использовать геркон - на велокомпьютере же справляется.

Можно подавать сигнал на соответствующий режим по количеству импульсов.

Например: если нужно включить соответствующий режим через 100 метров то отсчитаем количество импульсов равное 50.    50Х2м=100м

Передачи уже подобраны и имитирует реальную нагрузку.

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

Diemon
Offline
Зарегистрирован: 18.11.2011

 а что максимальная. Я у себя в городе на набережной, вплотную за грузовиком максимум мог держать постоянную в 60 км/час(Author Solution Disk, 26").  Я думаю макс скорость будет недалеко от этой. Думаю больше зависит от макс частоты переключения геркона.

Diemon
Offline
Зарегистрирован: 18.11.2011

 2й раз нечаянно сообщение запостил.

skonev
Offline
Зарегистрирован: 24.11.2011

Diemon пишет:

 а что максимальная. Я у себя в городе на набережной, вплотную за грузовиком максимум мог держать постоянную в 60 км/час(Author Solution Disk, 26").  Я думаю макс скорость будет недалеко от этой. Думаю больше зависит от макс частоты переключения геркона.

Тоже думаю, что в районе 60 км/ч будет достаточно.

Посчитал, если окружность колеса у нас 2 метра, а передача 44Х11.

За один оборот педалей колесо "проедет" 8 метров.

При каденсе 90 оборотов в минуту скорость получилась 43,2 км/ч.

Скорость 60 км/ч получится при каденсе 125.

Когда я отрабатываю на роллерном станке ускорения, то мой каденс близится к 180, а при таком каденсе скорость будет равна 86,4 км/ч (в реальном катании так конечно не сможешь).

Вот и думаю какую максимальную скорость закладывать?

Diemon
Offline
Зарегистрирован: 18.11.2011

 Подойдем с другой стороны: а зачем закладывать вообще максимальную скорость? Я думаю не стоит. Все будет ограничиваться быстродействием геркона+ардуино. Написать тестовую прогу по подсчету оборотов колеса в единицу времени и на станке попробовать при каденсе 180: будет ли успевать программа подсчитывать импульсы. А там уже видно будет.

skonev
Offline
Зарегистрирован: 24.11.2011

Diemon пишет:

 Подойдем с другой стороны: а зачем закладывать вообще максимальную скорость? Я думаю не стоит. Все будет ограничиваться быстродействием геркона+ардуино. Написать тестовую прогу по подсчету оборотов колеса в единицу времени и на станке попробовать при каденсе 180: будет ли успевать программа подсчитывать импульсы. А там уже видно будет.

Хорошая мысль. Опытным путем выясним.

step962
Offline
Зарегистрирован: 23.05.2011

Diemon пишет:

Если же взять 72 км/час, то получится:
72 000/3600=20м/с
20 000/2250= 8.8 оборота в секунду. Если округлить, то 10 Герц(раз в секунду) должен срабатывать наш геркон.  

Об этом придется забыть:

Цитата:

3. Запоминание времени прохождения отрезков (до сотых долей секунды).

Точность измерения будет примерно пять сотых, то есть "до десятых долей секунды".

skonev
Offline
Зарегистрирован: 24.11.2011

Вчера перед сном мерил возможность геркона велокомпьютера 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 секунд и выводить показания на дисплей или это нагрузит микропроцессор?

Как правильно сделать?

Ситибайкер
Offline
Зарегистрирован: 25.11.2011

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

Т.е. - один оборот маховика = 1 импульс датчика. Сам датчик - от того же велокомпьютера (что там внутри - геркон или что-то иное - не столь важно, главное - что в реальных условиях работает).

Расстояние - просто количество импульсов * длину колеса. Между импульсами во времени можно интерполировать линейно или квадратично (хотя последнее вряд ли нужно). Т.е. если длина колеса = 2м, и ты получил два импульса - один в 1сек, второй в 3сек. - то можно добавить виртуальных "точек" ещё так, чтобы в 2 сек (ровно между импульсами) считалось, что ты проехал 1 метр.

Скорость - так же просто. Возьми расстояние, пройденное за последнюю секунду. Вот тебе и "производная" :). С учётом инерционности маховика - вполне уместная.

А что касается скорости... Тут соображение простое. Если велокомп с маленькой схемкой на 1 "таблеточной" батарейке вполне успевает всё складывать/перемножать/усреднять - то неужто ардуин с 16МгЦ процессором не справится? :). Даже если ему подавать сигнал с частотой 100Гц, то между импульсами у него будет по 160.000 тактов, чтобы обработать результат.

skonev
Offline
Зарегистрирован: 24.11.2011

Алексей!

А как сделать часы - нужен модуль RTC?

Вроде такого http://devicter.ru/goods/modul-rtc?from=ZWM2

 

Ситибайкер
Offline
Зарегистрирован: 25.11.2011

Если тебе нужны именно часы (которые показывают время и не зависят от питания) - то да, пожалуй, без RTC не обойдёшься.

А просто считать период между импульсами можно и с помощью встроенного в контроллер таймера. Иными словами - обеспечить функционал велокомпьютера можно и без RTC. Но если хочется ещё и чтобы он сам фиксировал абсолютное время (начала/конца тренировки) - то для этого нужны часы.

skonev
Offline
Зарегистрирован: 24.11.2011

Ситибайкер пишет:

... Но если хочется ещё и чтобы он сам фиксировал абсолютное время (начала/конца тренировки) - то для этого нужны часы.

Именно это и хочется.

whoim
Offline
Зарегистрирован: 03.11.2011

 По поводу сенсора-счетчика - он есть в старых мышках, фотодиод и светодиод :) можно куда нить пристроить на станок.

Mastino
Offline
Зарегистрирован: 03.12.2011

компоненты будут стоять 50-100евро. и много работы если раньше не программировал Arduino..

skonev
Offline
Зарегистрирован: 24.11.2011

На сегодняшний день протатип устройства почти готов.

Он умеет:

- автоматически переключать режимы работы генератора по пройденному расстоянию указанному в файле, который считвается с  SD карты;

- считать скорости среднюю и максимальную поездки и отрезков (между переключениями режимов генератора);

- считать время прохождения тренировки и отрезков;

- считать пройденные дистанции поездки и отрезков;

- записывать все выше перечисленное на SD карту.

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

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

 

Zapek@n
Offline
Зарегистрирован: 16.02.2012

 Наверно вопрос наивный для знающих людей. Но как "Нагрузку на станке создает генератор постоянного тока", точнее как заставить его создавать разную нагрузку? Наверно конечно совсем ламерский вопрос, извините, я из мира программирования. 

skonev
Offline
Зарегистрирован: 24.11.2011

Zapek@n пишет:

Нагрузку на станке создает генератор постоянного тока", точнее как заставить его создавать разную нагрузку?

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

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

 

Ситибайкер
Offline
Зарегистрирован: 25.11.2011

Наверное, имеет смысл дать ссылку на "микроликбез" (для тех, кто совсем-совсем не в теме).

Велостанок уже был создан, и несколько его экземпляров обрели своих владельцев. Причём в процессе изготовления автор конструкции понемногу вносил изменения в механику - но электронная часть оставалась неизменной (считайте - что-то вроде советского arduino на микросхемах с такими мощными контактами, что через них запросто можно запитать небольшой завод). Примерно взглянуть на станок можно здесь, например: http://velo.nsk.ru/biker.php?key=jPOKOkIJ

Таким образом - вся тема о том, как к уже существующему железу приделать новую "маленькую и быструю" электронику, которая позволит, например, загрузить программу тренировки по кабелю USB или передать на "флэшке".

Вся механическая часть, включая датчики и схему коммутирования нагрузки - есть, и работает уже многие годы. И вроде даже вся сигнальная часть сводится а стандартным ttl уровням. Вся задача встала о том, как заменить схему на "стопицот" советских микросхемах на что-нибудь более современное. В ответ на вопрос, "на что" заменить, ответом стала платформа ардуино. И теперь всё о том, как именно это сделать. С учётом практически готовой "ответной" части - фактически всё сводится к написанию скетча.

Zapek@n
Offline
Зарегистрирован: 16.02.2012

 Спасибо. Я, вообщем-то, подозревал, что это сопротивление, но для меня это как-то сильно контр-интуитивно. Не знаю почему. А из любопытства можно вопрос - а можно понять сколько Ватт рассеивает это сопротивление?

Ситибайкер
Offline
Зарегистрирован: 25.11.2011

Там в нагрузке сопротивление и второй двигатель постоянного тока (уже в режиме двигателя), на который насажен пропеллер и который дует "в морду". Основной двигатель-генератор, кажется, мощностью около 500-600 ватт. Двигатель-"мордодуй" - 170 ватт.

Выходит, остаётся рассеять максимум около 330-430 ватт. Это явно не радиолюбительский "резистор", но и не так уж много. Тем более если учесть, что эта мощность - скорее пиковая. Во время плановых тренировок с учётом "мордодуя" вряд ли нужно длительно рассеивать больше 200 ватт.

skonev
Offline
Зарегистрирован: 24.11.2011

В ходе обкатки опытного образца обнаружилось, что Arduino считает показания не верно.

Как выяснилось это связано с передачей импульсов от геркона или датчика холла на Arduino на скоростях около и больше 35 км/ч.

Сейчас есть необходимость сделать формирователь импульсов.

Подскажите пожалуйста как это реализовать?