![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ВелоМетр - Велосипедный спидометр/одометр
Автор: Полтарецкий Алексей Решил я как-то раз украсить своего железного коня спидометром. Но вместо того чтобы сделать так, как делают все нормальные люди (взять некоторое количество кровно заработанных и пойти на ближайший рынок, где обменять их на нечто китайского производства с надписью "BEJIOCNIIEDHbIN CIINDOMETP" на лицевой панели), я решил поступить как true-радиолюбитель - собрать его собственноручно из того, что есть под рукой. Первым делом я, разумеется, полез искать готовый проект в Интернете. Но, как выяснилось, в Сети попросту нет подходящих конструкций велосипедных спидометров - есть либо слишком сложные (на базе дорогостоящих микроконтроллеров, не менее дорогостоящих дисплеев, и содержащие кучу бесполезных функций), либо слишком примитивные (с прошивками, написанными на бЭйсике, и кучей схемотехнических ошибок). И тогда я решил придумать желаемый девайс самостоятельно.
Описание Устройство предназначено для измерения скорости и пробега велосипеда, а также для управления фарой - регулирования яркости, автоматического включения и отключения.Основные характеристики:
Управление Кнопка 1 - вызов настроекКнопка 2 - включение/отключение устройства Кнопка 3 - включение/отключение фары Кнопка 2 в режиме настроек -уменьшение или отключение параметра Кнопка 3 в режиме настроек - увеличение или включение параметра Удерживание кнопки 1 при включении - разблокировка дополнительных настроек Удерживание кнопок 1 и 3 при подаче питания - сброс настроек и данных о пробеге (только для варианта прошивки, хранящего данные в оперативной памяти) Настройки
Как это работает Измерение скорости и учет пробега осуществляются при помощи датчика вращения, закрепленного на передней вилке велосипеда. Для определения скорости движения, устройство измеряет время между срабатываниями датчика. Поскольку для измерения скорости необходимы как минимум 2 срабатывания, при первом срабатывании расчет скорости не производится, а при последующих скорость вычисляется по формуле S = C*(F*0.036)/T где S - скорость движения велосипеда; C - длина окружности колеса, взятая из настроек устройства; F - тактовая частота счетчика; T - значение счетчика. При отсутствии срабатывания датчика на протяжении пяти секунд, показания скорости сбрасываются, и начинается отсчет времени отключения. По достижении времени отключения, указанного в настройках, либо при нажатии на кнопку 2 устройство переходит в спящий режим с током потребления не более 2 uA.Принципиальная схема Схема построена на микроконтроллере ATTiny2313A. Для отображения информации используется дисплей RC0802A. Поскольку МК питается напрямую от батареек, а дисплей - от повышающего преобразователя 5V (т.е напряжения питания МК и контроллера дисплея могут отличаться более чем в 2 раза), соединять шину данных дисплея с МК без согласования уровней нельзя. Для согласования уровней используются резисторы R13-R24. Транзистор VT2 используется для ШИМ-регулирования контрастности дисплея. Пределы регулировки контрастности устанавливаются подбором резисторов R10-R12. Транзистор VT4 управляет подсветкой дисплея. Транзистор VT3 отвечает за сброс дисплея. Данный "некрасивый" способ сброса является единственно возможным, поскольку у дисплея вывод сброса отсутствует. Транзистор VT1 управляет питанием преобразователя напряжения. Преобразователь напряжения, питающий дисплей и фару, построен на микросхеме NCP1450ASN50T1 и половине транзисторной сборки VT5. Вторая половина VT5 используется для ШИМ-регулирования яркости фары.Если к устройству не планируется подключать фару, либо ток фары составляет не более 50mA, то можно использовать альтернативную схему преобразователя: В качестве датчика вращения используется геркон в паре с постоянным магнитом, установленным на колесе. Геркон полключен к выводу 6 МК через конденсатор C2. Это необходимо для снижения потребляемой мощности устройства в том случае, когда магнит остановился напротив геркона. Конденсатор C1 необходим для устранения дребезга контактов геркона. Детали Основная плата устройства собрана по технологии поверхностного монтажа (SMD). Резисторы и конденсаторы могут иметь типоразмер 1206, либо 0805. При использовании деталей меньшего размера, потребуется модификация печатной платы.Конденсаторы C3 и С6 могут быть заменены на электролитические. В этом случае рекомендуется установить параллельно C3 керамический конденсатор емкостью 0.1 uF. В качестве L1 использован дроссель ДПМ 0.6-10. При отсутствии данного дросселя, его можно заменить на любой дроссель аналогичного или большего типоразмера с индуктивностью 10 uH. Настоятельно не рекомендуется использовать дроссели меньшей индуктивности, поскольку это приведет к кратковременному возрастанию напряжения на выходе преобразователя при резком уменьшении тока нагрузки. По этой же причине при самостоятельном изготовлении дросселя из подручных материалов и отсутствии под рукой измерителя индуктивности, рекомендуется проверить работу преобразователя до того, как к схеме будет подключен дисплей. Не следует наматывать дроссель на кольцевом магнитопроводе. Если у Вас нет никакого магнитопровода кроме кольцевого, то нужно переломать его на две части, либо прорезать в нем зазор. Вместо ATTiny2313A можно использовать ATTiny2313V, либо, при питании схемы от трех батареек - ATTiny2313. Однако, при такой замене станет невозможным включение фары при отключенном устройстве. Вместо транзистора TPC8103 можно использовать любой другой P-канальный полевой транзистор подходящей мощности с пороговым напряжением открытия (Gate Threshold Voltage) не более 1.5V (например IRF7404). Вместо транзисторной сборки IRF7530 можно использовать любю другую сборку, содержащую пару N-канальных полевых транзисторов подходящей мощности с пороговым напряжением открытия не более 1.5V (например IRF7501 - без изменения печатной платы, либо IRF7301, IRF7311, IRF7331 - с изменением печатной платы). Вместо транзисторной сборки также можно использовать два отдельных транзистора. При этом пороговое напряжение открытия транзистора в цепи ШИМ-регулирования яркости фары может быть больше чем 1.5V. В качестве кнопок SB1-SB3 рекомендуется использовать угловые микрокнопки, поскольку в этом случае отверстия для толкателей будут находиться на боковой стенке устройства, а не сверху, что снизит вероятность попадания влаги внутрь корпуса. Либо использовать силиконовые кнопки, извлеченные из какого-нибудь устройства (калькулятора, пульта, джойстика, и.т.д). В этом случае плату для кнопок рекомендуется вырезать из платы того же устройства - при изготовлении платы в домашних условиях Вы навряд-ли сможете нанести на нее покрытие из металла, стойкого к коррозии. Для стабилизации тактовой частоты МК можно использовать кварцевый резонатор 4 MHz, либо керамический с частотой 500 kHz. Если у Вас под рукой нет ни того, ни другого, Вы можете использовать для тактирования МК внутренний RC-генератор, однако в этом случае погрешность измерения скорости будет составлять ±10% - такова точность заводской калибровки генератора. При помощи калибровки можно добиться повышения точности генератора до ±2%. Для этого Вам потребуется частотомер и калибровочная прошивка (см. архив с прошивками). Калибровка производится следующим образом: прошейте МК калибровочной прошивкой - при включении на дисплее отобразится текущее значение, хранящееся в калибровочном регистре: После этого подключите частотомер к выводу 9 МК, затем при помощи кнопок 2 и 3 добейтесь частоты, наиболее близкой к 50 kHz. После этого Вам потребуется пересобрать основную прошивку устройства, раскомментировав в файле velometer.c макрос USER_OSCCAL, и вписав в него значение полученное при калибровке. Упрощенная схема Данный вариант схемы проще для повторения, однако он обладает целым букетом недостатков, главный из которых - значительное изменение контрастности дисплея (вплоть до невозможности прочитать инфокмацию) по мере разрядки батареек. Повторять упрощенную схему рекомендуется лишь в том случае, если вы испытываете затруднения с покупкой деталей, или просто хотите "пощупать" данное устройство перед тем, как собрать полноценную схему. Часто задаваемые вопросы Вопрос: Зачем было использовать такие мощные полевики в схеме питания? К примеру, одного TPC8103 хватит для управления питанием десятка наких устройств. С жиру бесимся, да?Ответ: Девайс собирался из того, что было под рукой. И под ней не оказалось транзисторов слабее чем те, что установлены в схеме. Вам никто не запрещает ставить полевики послабее при повторении схемы. Вопрос: Зачем было устанавливать в устройство, собранное по SMD-технологии микроконтроллер в корпусе DIP? Ответ: См ответ на предыдущий вопрос. Вопрос: Какой смысл в цепочке R6 VT3 R7? Зачем делать короткое замыкание в цепи дисплея? Ответ: Во-первых, замыкание там не короткое, а через резистор 10 ом. Во-вторых, оно происходит всего на 50 милисекунд перед включением дисплея. А нужно оно вот зачем: при инициализации дисплея в режиме четырехпроводной шины данных, перваяя инструкция имеет длину 4 бита (или, проще говоря, полбайта). Все остальные инструкции дисплея имеют длину 1 байт, и отправка полубайтовой инструкции в дисплей, уже прошедший инициализацию, будет иметь весьма нехорошие последствия - дисплей будет считать эту инструкцию первыми четырьмя битами нормальной, восьмибитной инструкции, первые 4 бита следующей инструкции - последними четырьмя битами предыдущей инструкции, и.т.д. В результате этого на дисплее вместо циферок с буковками будет отображаться билиберда. Казалось бы, зачем отправлять в инициализированный дисплей еще одну инструкцию инициализации, и тем самым сводить его с ума? А все дело в том, что при переходе устройства в спящий режим, питание дисплея отключается, но, несмотря на это, он некоторое время остается инициализированным благодаря заряду конденсатора C7. Соответственно, включение устройства до того, как конденсатор C7 разрядится, и приведет к отправке второй полубайтовой инструкции в инициализированный дисплей. Так вот, цепочка R6 VT3 R7 нужна именно для того, чтобы разрядить конденсатор C7, и тем самым выполнить сброс дисплея. Если после всего вышесказанного Вы все еще сомневаетесь в необходимости данной цепи, то можете не собирать ее при повторении устройства, и понаблюдать как красиво оно будет работать. Вопрос: Могу ли я использовать в данном устройстве дисплей на базе контроллера HD44780? Ответ: Теоретически да, однако Вам придется модифицировать библиотеку, отвечающую за работу с дисплеем, поскольку у данного контроллера несколько отличается процедура инициализации. Вопрос: У меня нет ни кварца на 4 MHz, ни керамического резонатора на 500 kHz, ни частотомера. А хочется собрать нормальный, точный спидометр. Можно ли использовать резонатор с другой частотой? Ответ: В схему можно поставить практически любой кварц (кроме слишком высокочастотных - встроенный в МК генератор просто не сможет с ними работать). Например 4.43 MHz или 3.58 MHz (такие стоят во всех телевизорах и видеомагнитофонах). Однако, при изменении тактовой частоты МК необходим пересчет множителя, используемого для расчета скорости (макрос SPEED_MULTIPLIER) и максимального значения таймера, отсчитывающего 5-секундные интервалы (макрос MAIN_TIMER) в файле velometer.c. После чего потребуется пересобрать прошивку. И не забудьте установить новую тактовую частоту в настройках проекта CodeVisionAVR - в противном случае компилятор неправильно рассчитает задержки, необходимые для работы дисплея. Вопрос: Я собрал данную схему без резисторов R13-R24 - соединил МК с дисплеем напрямую. И она прекрасно работает от двух пальчиковых батареек. Зачем тогда нужны эти резисторы? Ответ: Подождите пока батарейки подсядут, и тогда Вам станет ясно, зачем нужны эти резисторы :). Вопрос: Собрал данное устройство, использовав версию прошивки, хранящую все данные в оперативной памяти. При отключении питания общий пробег и настройки должны сбрасываться, а они не сбрасываются. Мало того, не сбрасывается даже текущий пробег, а он вроде как хранится в оперативной памяти во всех версиях прошивки. Почему так? Вы что-то напутали в коде? Ответ: Ничего я не напутал. Тут используется свойство МК от Atmel сохранять содержимое регистров и оперативной памяти в течение некоторого времени (около 15 минут) после отключения питания. Вопрос: Почему в файлах нету эмуляции схемы в Proteus"е? Вы забыли ее приложить? Ответ: Нет, я просто не эмулировал ее в протеусе, ибо эмуляция микроконтроллеров в нем работает как говно. Вопрос: Почему на плате нет разъема SPI? Это, типа, нужно выпаивать МК при каждой перепрошивке? Ответ:Я посчитал нецелесообразным увеличивать размеры платы ради разъема, который не будет использоваться при эксплуатации. А выпаивать МК вовсе не обязательно - достаточно установить его в панель, или припаять 5 проводков к задней стороне платы (дисплей, подключенный к тому же порту, совершенно не мешает программатору). Вопрос: Почему все отверстия на плате (даже крепежные) имеют диаметр 0.5 мм? Не маловато ли? Ответ: Отверстия, отпечатанные в процессе лазерно-утюжного изготовления платы, использутся в качестве кернов при сверловке. А керн диаметром 2.5 мм и глубиной 35 мкм выполняет свои функции довольно таки хреново. Вопрос: Почему прошивка писалась в CodeVisionAVR? Это же говно. Компилятор для ламеров. Ответ: А кто Вам сказал что я не ламер? И кстати, оно в большинстве случаев прекрасно справляестя со своими обязанностями. Не хуже чем IAR или WinAVR. Интересные факты, выяснившиеся при создании устройства • Оценить скорость движения "на глазок" довольно таки трудно. К примеру, скорость в режиме "просто кручу педали" - это аж 20 км/ч, а не "от силы 15" как мне казалось раньше. А в режиме "разогнался шописец" - всего лишь 40, а не "за 50", как я считал до установки спидометра.• Рабочие, занимающиеся установкой километражных столбов на трассах, измеряют расстояние между ними при помощи резиновой рулетки - разброс расстояния между ними иногда достигает сотни метров. И погрешность спидометра тут совершенно не при чем - расстояние между столбами отличается иногда в большую, а иногда в меньшую сторону, а между одними и теми же столбами оно всегда совпадает. Фото Внутренности устройства:На фото отчетливо видна некрасивая конструкция из двух конденсаторов 220uF Топология печатной платы отличается от финальной, поэтому не следует использовать фото в качестве образца при сборке. Корпус устройства изготовлен из листового полистирола (корпус от телевизора "Электрон"). В качестве клея использовался растворитель 646: Первая версия корпуса была жестоко угроблена во время горячей сушки краски (оказывается, рука, засунутая в духовку, весьма хреново выполняет функции термодатчика). После подобного epic fail"а обычно хочется бросить всё к чёртовой матери, но я нашел в себе силы начать все сначала, в результате чего и появился корпус v2: При покраске второй версии корпуса я решил не использовать горячую сушку, благодаря чему он и дожил до стадии сборки: Вместо микрокнопок уже установлен кусок платы от китайского калькулятора Устройство в сборе: Как видим, калькулятор поделился со мной не только куском своей материнской платы, но и отсеком батареек. Вид снизу: Корпус для геркона: Корпус вырезан из листового текстолита толщиной 8 мм. Датчик вращения в сборе: Выводы геркона тщательно изолированы при помощи термоклея. В катафоте профрезеровано углубление, после чего в него вклеен редкоземельный магнит, извлеченный из привода БМГ жесткого диска. На самом деле, можно было обойтись и без фрезеровки, но мне показалось, что так будет надежнее. Кстати, мои кривые руки умудрились напортачить и здесь - если хорошо присмотреться, то можно заметить, что магнит переломан ближе к концу. Это результат того, что я пытался подогнуть магнит по форме углубления (оно получилось слегка выпуклым). Ну не знал я что неодимовые магниты изготовляются методом порошковой металлургии. Фото спидометра, установленного на велосипеде показать, к сожалению, не могу - из-за испорченного корпуса график сильно сдвинулся, и мне пришлось вернуть фотоаппарат до того, как краска на корпусе приобрела достаточную прочность. Хотя в общем-то оно и к лучшему - слишком уж мой велик страшный и ржавый. Datasheetы RC0802AATTiny2313A TPC8103 NCP1450 SS14 IRF7530 BC848 P.S. Надеюсь, мое поздравление Коту понравилось, и он поделится со мной валерьянкой и сухим кормом :)
Файлы: Все вопросы в Форум.
Эти статьи вам тоже могут пригодиться: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![](/templates/radiokot_classic_neew/images/datasheet.png)
![](/templates/radiokot_classic_neew/images/dorogi.png)
![]() |
![]() |
|||
|
||||
![]() |
![]() |