Спидометр-одометр , идея не нова, а вот реализация такого устройства имеют разные варианты, предлагаю вашему вниманию, несложную схему на распространенном МК ATmega8 , к схеме имеется два вида прошивок под индикаторы ; 16х2 и 16х4. , а также проект работы схемы в протеусе. Схема данного спидометра-одометра , Коэффициенты под датчик скорости, можно настраивать прямо из пользовательского меню, под любой датчик скорости с любым ( с количеством импульсов от 1 и до 9999……), а также задается и корректируется из пользовательского меню, количество импульсов на километр.
Характеристики схемы: • Отображение текущей скорости, (отображение на ЖКИ, для 16х2 от 0.1 км/ч, для 16х4 от 0.001 км/ч) • километраж общий, (отображение на ЖКИ, для 16х2 от 0.1 км/ч, для 16х4 от 0.001 км) • километраж суточный (держитесь …..20 !!! суточных счетчиков, выбор № из меню), • отображение время активности каждого счетчика (общего и для суточных) проще говоря время в пути. • Возможность настроить сигнал о превышении скорости. • пользовательское меню, позволяет выставить все коэффициенты ( скорости и учета километров) непосредственно с клавиатуры прибора. • Все данные сохраняются в память контроллера.
Здесь привожу описание работы меню и вывода показаний для дисплея 16х2 ( под дисплей 16х4 это описание работы также полностью подходит, только вывод информации на экран 16х4 происходит более полный без сокращений). Описание меню. 1) Выбор № персонального суточного счетчика км с учетом времени периода активности ячейки 2) Просмотр персонального суточного счетчика км ( та которая выводится в первой строке, при нажатии кнопок вправо enter обнуляется.) 3) Сброс общего (тотального) км, (на суточные счетчики не влияет) 4) Сброс текущего счета км, (в EEPROM не сохраняется) 5) НАСТРОЙКИ 5.1) Частота кварца настройка коррекции тактов кварцевого резонатора ATmega8 на 1 секунду (влияет только на расчет скорости км/ч) 5.2) Количество импульсов датчика скорости ( по умолчанию 6 имп.) 5.3) Импульс на км, это количество импульсов со счетчика на 1 километр ( по умолчанию 600 имп.) 5.4) Тактов в секунду - внутренняя переменная внутренних часов на выводе PB1 она выдаёт коротенький импульс 0.5Гц , если часы спешат - число надо увеличивать, если отстаёт - число надо уменьшать. 5.4) максимальная скорость,- настройка порога макс. скорости (зумер) . 5.5) Вост. умолчания - восстановить настройки умолчания. 5.6) Сохранить настройки - пока вы не нажали этот пункт - всё действует только до выключения.
Сохраняются в EEPROM такие данные; а) общие настройки, б)тотальные показания (общая сумма всех счетчиков) с фиксацией и отображением часов, периода работы активного состояния спидометра - одометра. в)20 персональных ячеек показаний км, с фиксацией и отображением часов, периода работы активного состояния отображаемой ячейки. Для тотальных и персональных данных за сохранение в память при обесточке схемы, отвечает вывод INT 0, он подсоединен через резисторный делитель, который подсоединен 2кОм на землю и 4.7кОм на + 12 V питания кренки.
Разработчик и автор этой программы clawham, Моя миссия здесь только ознакомить вас с этой интересной схемкой, мной добавлено это описание, схема ,печатка, скрин фьюзов для понипрог, подкорректировал в исходнике надписи вывода информации и меню, под прямое назначение прибора спидометра-одометра, а в принципе программа довольно таки универсальна и может быть спидометром, и частотомером, и тахометром, и вообще что только душе угодно....суть в том, что она считает, очень точно, частоту умножая на коэффициент, и считает общее кол-во импульсов деля его на коэффициент, в принципе подобрав коэффициенты, оно может работать чем угодно ...... Схема в протеусе. Данная схема с прошивкой у меня также работает в качестве счётчика-ваттметра. Вот ссылка откуда всё началось,….
Вложение:
Комментарий к файлу: Архив спидометра-одометра. Файлы Для сборки .rar [139.54 KiB]
Скачиваний: 1378
Вложения:
Комментарий к файлу: Схема Схема С О.GIF [62.68 KiB]
Скачиваний: 7004
Заголовок сообщения: Re: Цифровой спидометр-одометр на ЖКИ и ATmega8
Добавлено: Вт июл 05, 2011 07:31:16
Поставщик валерьянки для Кота
Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22 Сообщений: 2401 Откуда: Россия, Волгоград
Рейтинг сообщения:0 Медали: 1
Моментом вставляю свои 5коп 1. Датчики скорости имеют выход с ОК, поэтому я подключал по-другому. 2. Резистор 6к8 - слишком много, не обеспечит нармальный ток через светодиод. Это так беглый взгляд.
_________________ Чем дальше, тем больше становлюсь занудой...
Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.
потребление 15 миллиампер при отключенной подсветке, 16-ти мегагерцах и практически любом режиме работы на 4х20 экране...основное питание тащется экраном... можно его конечно переводить в статикповер даун...надо с этим поиграться если критично... впринципе-то и процу можно идле команду давать...если нужно...я конечно сомневаюсь в экономичности ибо всётаки основное питание жрёт экран... ВПРИНЦИПЕ.....в менюхе можно поставить чатсоту такта для проца и фузами поставить внутренний ген на 1 мегагерц и делитель на 8 включить....тогда потребление будет очень низким НО....без кварца поедет очень сильно точность измерений...особенно от температуры будет сильно зависить....решать Вам....прошивке абсолютно пофиг на какой частоте работать - главное в менюхе показать эту частоту и выставить предделитель
Цитата:
5.4) Тактов в секунду - внутренняя переменная внутренних часов на выводе PB1 она выдаёт коротенький импульс 0.5Гц , если часы спешат - число надо увеличивать, если отстаёт - число надо уменьшать.
чтоб время правильно считало ( от этого зависит измерение частоты и скорость обновления экрана и так далее
по поводу велика - дык что тут сложного-то? датчик холла из вентилятора/куллера любого компьютерного а на спицы - магнит...можно вообще 2-3-10 магнитов нацепить....или намагнитить спицы у основания подшипника...тогда скорость и путь будут чаще обновляться ну или геркон и магнит побольше и помощнее и поближе... геркону надо сделать фильтрацию в виде RC цепочки ибо он умеет гигагерцы дребезгом показывать...
_________________ Что нас не убило сделало нас осторожней Не доверяйте русским лужам - это может быть вход в метро.
Ребятки а не стыдно? В протеусе запомнены абсолютные пути к файлу прошивки и файлу еепрома Вам надо скачать архив, распаковать в отдельную папку, зайти в свойства модели микроконтроллера и перепоказать ему файл прошивки под нужный Вам экран и показать файл начального значения еепрома - без него (как и без прошивки реального мк еепромом) устройство не работает ибо в еепром вынесено большинство текстов, все настройки и важнейшие параметры системы...
_________________ Что нас не убило сделало нас осторожней Не доверяйте русским лужам - это может быть вход в метро.
Что то протеус не запускается , выдает ошибку. ............... В протеусе не запускается.
Кроме того что уже к месту сказано
Цитата:
перепоказать ему файл прошивки под нужный Вам экран и показать файл начального значения еепрома - без него (как и без прошивки реального мк еепромом)
Для протеуса вместо еер. подставляется віn , он в архиве присутствует. И еще не забывать, когда в протеус обновляеш версии прошивок работающими с EEPROM , нужно делать периодически сброс постоянных модели (ну в общем фото приложил)
_________________ Некакого перимирия, Некаких мирных шагов навстречу и периговоров.
Для велоспидометра можно сделать датчик, используя детали конструкции самого вело добавив сюда датчик холла. У меня, например, на колесе 35 спиц, для датчика это будет практически сантиметровая точность. Как это будет работать? За счет колебания магнитных волн (обод колеса и золотник из сплавов не магнитится, если у вас обод металл, датчику он на расстоянии 5-10 см не помеха) спицы металлические и каждая вносит колебания в магнитное поле, будет с коэффициентом 35 на оборот, это хорошие показания при такой простоте конструкции.
Вот это был бы супервариант НО! 1) негде достать такие точные и чувствительные датчики холла 2) поднимая чувствительность рискуем проехав мимо троллейбуса накрутить пару сотен километров 3) сложная дифференциальная усиливающая цепочка из фильтров низких высоких частот и с отсекателем постоянной составляющей... 4) заведение этого всего безобразия в условиях "все бребезжит, плавает в болоте и песке" да ещё и с минимальным потреблением от аккума...
_________________ Что нас не убило сделало нас осторожней Не доверяйте русским лужам - это может быть вход в метро.
исходники есть в соответствующей теме....проект не доделанный на данный момент перекочевал на новый компилятор и возможно на новый камень конечно же на сях я не камикадзе писать 8 килов кода на асме:))
_________________ Что нас не убило сделало нас осторожней Не доверяйте русским лужам - это может быть вход в метро.
исходники есть в соответствующей теме....проект не доделанный на данный момент перекочевал на новый компилятор и возможно на новый камень конечно же на сях я не камикадзе писать 8 килов кода на асме:))
та меня впринципе интересует только измерительная часть а точнее сам принцип измерения,какие таймеры как настроить и все в таком духе...
я просто уже 2неделю бьюсь над подобным проэктом а результат неутешительный....-показания идут непонятно- 3 7 14 и т.д. а промежуточных вообще никак
есть тема тут на форуме называется теория работы частотомера чтоб были промежуточные результаты и притом точные надо мерять время между импульсами....если частота низкая а если высокая - то считать колличество импульсов за прошедшее время..я там писал
по сути есть два таймера 1 просто затактован извне и взведено его прерывание а второй 16-тибитный затактован без предделителя от системного клока когда приходит прерывание(и одновременно инкрементируется первый счетчик) мы засекаем значение второго 16-тибитного таймера и обнуляем переменную его переполнений и дальше ждём когда приходит второе прерывание(например Rising edge) то мы смотрим сколько раз переполнился таймер 2, умножаем это число на 65536 и прибавляем само значение таймера на момент прерывания и отнимаем 12 - константа пропущенных тактов для прерывания - с момента прихода реального прерывания пройдёт 12 атктов до момента выполнения первого оператора в прерывании) ну а дальше частоту системы делиш на то что получилось от первого вычисления и получаеш точную частоту
смотриш...если частота превышает 10 килогерц - то тут уже рациональнее считать кол-во импульсов вырубаеш внешнее прерывание и запоминаеш значение счетного таймера, дальше ждёш например секунду и уже от наклацанных в счетном таймере попугаев отнимаеш запомненные - получаеш частоту в герцах
конечно можно юзать прерывание захвата таймера конечно можно юзать предделитель и всегда мерять низкие частоты конечно можно и одним таймером обойтись меняя ему режимы работы
но это всё занимает много места это всё вызывает много ошибок и глюков это всё вызывает взрыв мозга если надо поменять тактовую частоту(или вообще иметь возможность задавать её из меню)
я остановился на этом варианте
ну и там есть немного плюшек для плавного вывода значения частоты а не рывками по 1-5 секунд - одновление идёт 8 раз в секунду вне зависимости от текущей частоты(хоть один импульс в 50 секунд - он всёравно покажет)
а на высокие частоты заведен стек из 51 ячейки...каждые 1/8 секунды в очередну ячейку записывается то что успело наклацаться , и каждую же 1/8 секунды все ячейки суммируются, делятся на (51/8) и получается точное среднее текущее значение частоты
вот и все делы
на данный момент я уперся в возможности компилятора по размеру переменных и в объём флеши...мега 8-ая забита просто под завязку...хочу пересесть на мегу 168-328 или вообще на 103-128 просто они у меня есть мег 103-х 10 штук 128-х 2 штуки и 168-х 3 штуки... но меги 103-128 это большие мощные камни сильно излишние и при этом огромные...мега 168 - маханькая 32-ногая tqfp - но я ещё не научилсо делать платки
_________________ Что нас не убило сделало нас осторожней Не доверяйте русским лужам - это может быть вход в метро.
по сути есть два таймера 1 просто затактован извне и взведено его прерывание а второй 16-тибитный затактован без предделителя от системного клока когда приходит прерывание(и одновременно инкрементируется первый счетчик) мы засекаем значение второго 16-тибитного таймера и обнуляем переменную его переполнений и дальше ждём когда приходит второе прерывание(например Rising edge) то мы смотрим сколько раз переполнился таймер 2, умножаем это число на 65536 и прибавляем само значение таймера на момент прерывания и отнимаем 12 - константа пропущенных тактов для прерывания - с момента прихода реального прерывания пройдёт 12 атктов до момента выполнения первого оператора в прерывании) ну а дальше частоту системы делиш на то что получилось от первого вычисления и получаеш точную частоту
смотриш...если частота превышает 10 килогерц - то тут уже рациональнее считать кол-во импульсов вырубаеш внешнее прерывание и запоминаеш значение счетного таймера, дальше ждёш например секунду и уже от наклацанных в счетном таймере попугаев отнимаеш запомненные - получаеш частоту в герцах
спасибо столько информации.... сложно сразу всё переварить... буду пробовать
вообщем переваривая всю инфу сделал немного подругому....точность конечно неахти (до 100 гц - +/-1гц , от 100 до 300 гц +/- 4 гц) но для спидометра сойдёт
если интересно проэкт ниже
Вложения:
Комментарий к файлу: модель дисплея нокии3310 в протеус nokia3310_proteus.zip [51.06 KiB]
Скачиваний: 590
Комментарий к файлу: проэкт с исходником в кодевизижен Spidometr.rar [124.51 KiB]
Скачиваний: 603
вывод информации на экран 16х4 происходит более полный без сокращений).
Указана скорость 61.025км/ч, люди знакомые с метрологией, понимают, что ДС не обеспечивает такой бешеной точности, а значит тысячные доли скорости указывать не обязательно, зачем показывать на дисплее погрешность датчика?
По теме, я так понял устроство работает постоянно, без использоваться +12 после зажигания? Недавно искал решение проблемы гашения/зажигания дисплея при снятии/подаче напряжения с замка зажигания. Самый просто способ - разрывать цепочку на 3м контакте дисплея (контрастность) Дисплей работает, но ничего не показывает, пока не подать питание Написал это, может кому-нибудь окажется полезным.
Кстати а вычислять скорость с помощью датчика положения коленчатого вала можно? У него намагниченный сердечник, считает зубья железного хомута, т.е. поставить только его и написать прошивку...правда наверно 1-2 спицы придется выломать
Меня глубоко не интересует что Ваш источник сигнала может или нет! Если частотомер меряет 2.123 герца то он это и покажет я не могу в рамках флеши данного МК втулить ещё и задание колва знаков после запятой с менюшки! да оно и не надо в общемто особенностью прошивки является единая система выравнивания результата после запятой ввиду экономии памяти программ я не могу позволить себе принтф с опциями вывода флоатов в произвольном форматировании... на многое пришлось пойти ради умещения кода в 8 килов флеша...при этом все тексты и параметры форматирования вынесены в еепром из флешки...тоесть там реально некуда байту упасть
да и потом я ещё не встречал случаев когда большая точность была бы излишней! всегда можно уловить пусть не абсолютное значение точности ввиду погрешности датчика то хотябы малейшие её изменения!
по поводу датчика - а в чём проблема-то? там этот датчик и представляет собой холл и магнит одно но там правда есть - расположен он в 1 мм до кромки зуба на маховике....сомневаюсь что на велосипеде вы сможете так близко подступиться к спицам и не выломать при этом этот самый датчик на очередном выбое
а по поводу выключения я вообще ничего не понял! какой смысл оставлять работать схему но выключать дисплей? микроконтроллер все показания запоминает, стартует за пол секунды...в чём хитрый смысл гасить экран? Ведь оно кушает 50-100 миллиампер....питайте его от замка зажигания и делов-то...
_________________ Что нас не убило сделало нас осторожней Не доверяйте русским лужам - это может быть вход в метро.
А правильна ли эта формула? V=(F*1000)/L где F-частота импульсов с датчика(геркона)...а L-длина окружности в мм. чтото меня терзают смутные сомнения что что в ней нетак....
какой смысл оставлять работать схему но выключать дисплей? микроконтроллер все показания запоминает, стартует за пол секунды...в чём хитрый смысл гасить экран? Ведь оно кушает 50-100 миллиампер....питайте его от замка зажигания и делов-то...
Поверьте, смысл в этом есть...не для вашего конечно устройства, а для конкретно моего(оно должно продолжать работать после глушения двигателя)...и как я и написал выше, та информация просто может оказаться полезной информацией Включенный дисплей я считаю просто дело истетики, поэтому и придумал нехитрую схему
А зачем задавать количество знаков функционально, этого никто делать не будет (ну равзе что по приколу) разделить перед выводом на экран на 100 или 1000 и так и оставить, сделать просто и 1кб лишний не сожрет А вместо этих бесполезных цифр лучше поставить что-нить полезное...даже просто скорость написать будет полезнее, чем смотреть на тысячные доли скорости, приходящие с Марса
clawham писал(а):
да и потом я ещё не встречал случаев когда большая точность была бы излишней!
Вы просто с интерферометрами не работали, ложные срабатывания из-за таких флуктуаций серьезная штука Ну да ладно, проехали
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения