Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Велокомпьютер на PIC16F628A и 4-разрядном LED индикаторе

По просьбе сына было решено сконструировать и установить  на подростковый велосипед спидометр, а лучше, наделив его дополнительными функциями, сделать многофункциональный велокомпьютер. Встал вопрос выбора основных деталей – микроконтроллера и индикатора. На счет микроконтроллера сомнений не возникло – это PIC16F628A, достаточно функциональный и недорогой, который можно купить практически в любом магазине. С выбором индикатора было чуть сложнее. Почти все аналогичные приборы из просторов Интернета имеют ЖК-индикаторы типа 8х2, 16х1 и т.д. Данные индикаторы наряду с несомненными преимуществами (возможность индикации не только цифр, но и текста; отсутствие необходимости постоянного опроса; малое энергопотребление; относительно небольшое количество требуемых портов ввода-вывода) имеют и существенные недостатки. К таковым можно отнести: невысокая ударопрочность, небольшой размер знаков, деградация при длительном воздействии прямых солнечных лучей, относительно высокая цена, небольшой угол обзора.

После недолгих раздумий, было решено остановиться на семисегментных 4-х разрядных супер-ярких LED-индикаторах. Решающее значение в выборе имели цена, а так же гораздо более простое считывание их показаний – внимательно приглядываясь к показаниям во время движения, можно слишком отвлечься от дороги и допустить ДТП. Кроме того, в данном случае, желательно не применять деталей, которые боятся ударов и тряски. Эти индикаторы, по моему мнению, незаслуженно считаются менее экономичными, чем LCD. Это справедливо только для индикаторов LCD без подсветки, стандартный же ток с подсветкой таких индикаторов  – 80-85 мА. Оперативная регулировка тока через LED-индикаторы в зависимости от освещения, даже при дневном свете позволяет довести среднее потребление 4-х разрядного индикатора (с высотой знака 14 мм) при удовлетворительной читаемости показаний до 30-40 мА, что ниже, чем ток потребления подсветки LCD.  При этом, светодиодные индикаторы имеют непревзойденные долговечность, ударопрочность и низкую цену (в 3-4 раза ниже, чем буквенно-цифровые LCD индикаторы). Если немного напрячь фантазию почти все необходимые служебные надписи можно воспроизвести (на английском языке) и с помощью 7-сегментных индикаторов.

В итоге, был сконструирован многофункциональный велосипедный компьютер на микроконтроллере PIC16F628A, индикаторе CPD-03641SR1/A с общим анодом и четырех MOSFET транзисторах IRLML6402 с динамической индикацией, программной регулировкой яркости свечения индикатора и датчиком движения на герконе.

Основные возможности прибора:
  - измерение скорости движения в км/ч с разрешением 0.1 км/ч;
  - измерение пройденного за все время расстояния в километрах с разрешением в 1 км (сброс этого параметра в 0 не предусмотрен);
  - измерение пробега с момента его (пробега) сброса, в километрах с разрешением в 0.1 км;
  - измерение пробега с момента сброса временного интервала, в километрах с разрешением в 0.1 км;
  - измерение времени, прошедшего с момента включения (или сброса временного интервала), с дискретностью 10 сек. ;
  - измерение напряжения питания с индикацией его снижения и выключением при снижении сверх нормы с сохранением данных;
  - программная регулировка яркости свечения индикатора (6 градаций);
  - оперативная установка значения длины окружности колеса для конкретного велосипеда;
  - запоминание в EEPROM основных значений при выключении; выключение в спящий режим при отсутствии движения более 2 минут;
  - индикация статистики поездки (средняя и максимальная скорость, время и расстояние);
  - вывод на индикатор служебных сообщений в виде бегущей строки;
  - возможность поездки без индикации, но с регистрацией всех данных, для экономии энергии батареи питания.
  - возможность питания прибора от аккумуляторов (Li-ion от мобильных телефонов или Ni-MH – 3 шт) или 3-х щелочных элементов;

Основные технические характеристики:
  - точность измерения всех параметров    - 1% плюс ед. мл. разряда;
  - напряжение питания   - 3.25-5.0 В;
  - ток потребления при мин. яркости индикатора не более    - 6.0 мА;
  - ток потребления при макс. яркости индикатора не более - 90 мА;
  - ток потребления в спящем режиме не более   - 0.1 мА;
  - пределы измерения скорости    - 0 - 99.9  км/ч;
  - пределы измерения общего пробега    - 0 -10000  км;
  - пределы измерения сбрасываемых пробегов   - 0 - 999.9  км;
  - пределы измерения времени поездки    - 10 сек -10 час;
  - пределы измерения напряжения питания    - 2.9 - 4.3 В;
  - напряжение, при котором выводится предупреждение    - 3.25 - 3.375 В;
  - напряжение, ниже которого прибор выключается   - 3.25 В;
  - пределы установки длины окружности колеса    - 24 - 255  см.;
  - время до выключения в режиме без движения    - 2 мин.

Рассмотрим работу с прибором более подробно.

Все манипуляции с прибором производятся с помощью одной кнопки без фиксации. При этом, в основном, действует правило: короткое нажатие кнопки (до 2 сек.) используется для выбора значения, а длинное нажатие (более 2 сек) - для включения выбранного значения (кнопку надо держать нажатой до появления на индикаторе подтверждения ввода – слова «YES_»). При отсутствии  нажатия кнопки в течении 6 секунд , прибор переходит в исходный режим.

При включении питания на экране появляется приветствие, после чего  индицируется скорость движения, а при его (движения) отсутствии переходит в режим «STOP» - ожидания  2 мин.  до выключения  в спящий режим. Любое нажатие кнопки или срабатывание датчика движения сбрасывает время ожидания и, впоследствии, отсчет 2 мин. производится заново. В режиме «STOP» на индикатор, попеременно с интервалом в одну секунду, выводится собственно эта надпись, сбрасываемый километраж, общий километраж и время в пути. В случае возобновления движения, прибор автоматически начинает индицировать параметр, согласно текущему режиму.

Короткое нажатие кнопки в исходном состоянии (движение или «STOP») переводит нас в основное меню, а длинное в режим установки яркости индикатора (индицируется «br.X», где Х – моргающая цифра от 0 до 5), где короткими нажатиями можно изменять цифру по кругу (при этом, сразу меняется яркость индикатора). Если в режиме установки яркости в течении 6 сек. не нажата кнопка, прибор переходит в исходный режим при прежней яркости, а если длительно нажать кнопку (до появления надписи «YES_») – в исходный режим с новой яркостью. Режим установки яркости наглядно показан на рисунке.

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

Выполняемая функция в каждом пункте меню зависит от того, находится прибор в режиме движения или в режиме «STOP».

Рассмотрим включаемые режимы в движении:
- скорость (“SPEE”) – индикация скорости;
- сбрасываемый километраж (“dist”) – индикация сбрасываемого километража;
- полный километраж (“d.ALL”) – индикация полного пробега в течении 16 сек., потом – режим “dist”;
- авто (“AUTO”) – попеременная индикация скорости, сбрасываемого километража и времени с интервалом 4с.;
- выключения индикации (“OFF_”) – на индикаторе попеременно загораются только нижние сегменты средних двух индикаторов (средний ток потребления не более 5 мА при максимальной яркости и не более 0.5 мА – при минимальной);
- время в пути (“time”) – на индикаторе временной интервал с момента очистки времени (формат вывода - “X.XX.X”, где 1-я цифра - часы, 2-я и 3-я – минуты, 4-я – десятки секунд);
-напряжение (“U.bAT”) -  индикация напряжения батареи (при напряжении более 4.3 В, индицируется 4.3);
- установки (“Set_”) – подменю установок (сброс километража (“d_CL”) и времени (“t_CL”), установка начальной яркости при включении (“br.St”), установка окружности колеса (“Set.L”)).

Пояснения требует пункт “Set.L” – включение этого пункта выводит на экран выражение вида “L.XXX”, где ХХХ – вписываемое значение окружности колеса в сантиметрах. При этом, изменяемая цифра моргает и меняется по кругу при коротких нажатиях на кнопку (цифры меняются таким образом, что ввести можно только числа от 024 до 255). Запоминание 1-й и 2-й цифры при длительном нажатии индицируется полным погасанием индикатора, а 3-й цифры – как обычно, словом “YES_” (означает запись всего числа в ОЗУ и EEPROM). Если кнопку не нажимать в течении 6 сек., происходит выход в подменю установок с сохранением последнего числа перед зажиганием слова “YES_” (если  надписи “YES_” еще не было – выход без изменения значения).

В режиме «STOP» следующие особенности.

Длительное нажатие кнопки в пункте меню «скорость» в этом режиме переводит прибор в режим отображения статистики поездки. Высвечиваются с интервалом в 2 сек. : максимальная скорость (вида “верхняя черта 1-го знака + ХХ.Х”, где ХХ.Х – максимальная скорость с момента сброса времени); средняя скорость (вида “-XX.X”, где ХХ.Х – средняя скорость с момента сброса времени считая время остановок – при остановке более 2 мин. учитывается только 2 мин. в режиме “STOP”); пройденное с момента сброса времени (не путать с прямо сбрасываемым километражем) расстояние (“XXX.X”); временной интервал (“X.XX.X”).

 В этом режиме прибор находится до нажатия кнопки или начала движения. Если ни того, ни другого события не происходит в течении 2 мин., устройство переходит в спящий режим аналогично режиму «STOP».   

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

Режим измерения напряжения питания и подменю установок работают аналогично случаю наличия движения.

Если в режиме ожидания (“STOP”) включить режим “OFF_”, устройство немедленно переходит в спящий режим с записью значений в энергонезависимую память (EEPROM). Выход из этого состояния происходит как при начале движения, так и при нажатии кнопки автоматически.  Внимание! Запись данных в энергонезависимую память происходит только при выключении в спящий режим! Во избежание потери данных о последней поездке, перед выключением питания прибора следует сначала перевести его в спящий режим. Впрочем, полное выключение питания прибора имеет смысл только при длительных перерывах в использовании.

В приборе приняты меры для исключения возможной порчи данных EEPROM из-за попытки записи в него информации при слишком низком напряжении питания, а также возможного выхода из строя аккумулятора от чрезмерного снижения его напряжения. Для этого  предусмотрены следующие действия программы. Во-первых, это предупреждение о приемлемом, но уже заниженном напряжении питания (3.25-3.375 Вольт) - в этом случае, прибор, работая в обычном режиме, каждые 16 сек. выводит на экран на одну секунду надпись “bAt.L”  (battery – low), сигнализируя пользователю, что пора подзарядить или заменить батарею питания. В случае снижения напряжения питания ниже 3.25 Вольт, на индикатор выводится на 4 сек. надпись “bAt.L”, моргающая для заметности с частотой 1 Гц. Далее в виде бегущей строки выводится сообщение “REPLACE THE BATTERY”, после чего прибор переходит в ждущий режим с сохранением данных в EEPROM. Причем, кнопкой и движением прибор из этого состояния уже не выводится.

При первичном включении питания прибора, напряжение может оказаться даже ниже 3 Вольт, что уже опасно для данных при записи в EEPROM. Поэтому, при включении питания, в первую очередь проверяется напряжение питания (предварительно нагрузив источник выводом числа “0000” для учета реального внутреннего сопротивления батареи) и если оно менее 3.25 Вольт, вышеописанная процедура выключения производится без записи данных в EEPROM.

Кроме того, на время любой записи в EEPROM выключается индикатор, тем самым исключая «проседание» напряжения питания прибора от тока индикации, а значит, обеспечивая во время  записи максимальное напряжение батареи.

Теперь можно перейти к описанию работы схемы.

Схема велокомпьютера

Индикатор своими выводами сегментов подключается к порту B (RB1-RB7), а вывод запятых - к выводу RA4 микроконтроллера (МК) через токоограничительные резисторы R11-R18. Благодаря применению индикатора с общим анодом (ОА), оказалось возможным непосредственное подключение выхода RA4 с открытым коллектором к выводу «запятых» индикатора. При номиналах резисторов, указанных на схеме, максимальный импульсный ток каждого вывода порта составляет 13-15 мА. Он меньше «ожидаемого», так как выход порта тоже имеет некоторое ненулевое сопротивление. Для увеличения яркости индикатора, если она недостаточна, можно уменьшить их номинал до 36 Ом, однако это увеличит потребляемые токи примерно на 15-17%. Выводы разрядов индикатора подключены к портам RA0-RA3 через усилители-инверторы на MOSFET транзисторах с каналом P-типа с малым напряжением включения затвора и малым сопротивлением СИ во включенном состоянии. Подобная схема включения позволяет предотвратить перегрузку портов МК (ток через выводы разрядов доходит до 15*8=120 мА), а так же снизить их (портов) выходные токи до нескольких микроампер максимум (почему это важно будет понятно ниже). Резисторы R7-R10 защищают выходы МК от скачков тока в моменты переключения, а так же в случае пробоя какого-либо транзистора.

Динамическая индикация с регулировкой яркости индикатора осуществляется с помощью прерываний от таймеров TMR0 и TMR2. В прерывании от TMR0 индикатор зажигается, а от TMR2 – гасится. Изменением соотношений интервалов этих прерываний и регулируется яркость. Подробнее об этом можно прочесть в моей статье //cxem.net/mc/mc244.php.

Импульсы оборота колеса поступают на вход МК RB0/INT с геркона SW1. Элементы R4, C4 устраняют дребезг контактов геркона, а R3 – уменьшает импульсы разрядного тока C4. 

С помощью таймера TMR1 измеряется время между импульсами. Собственно скорость вычисляется по формуле: скорость - V=(L(cm)*2813)/X , где V - скорость в 1/10 км/ч, Х - число 16 микросекундных интервалов между импульсами датчика, L – окружность колеса в сантиметрах.

Кнопка подключена ко входу RA5/MCLR, который запрограммирован как обычный вход. Резистор R1 «подтягивает» вход к +3В, а R2 – устраняет броски тока при переключении кнопки. Конденсатор C3 устраняет на входе MCLR «игольчатые» высокочастотные помехи. Без него прибор периодически может сбрасываться даже при такой конфигурации МК. Цепь R6, R5, D1 предназначена для возможности вывода  МК из режима SLEEP нажатием кнопки. При нажатии кнопки меняется с высокого на низкий уровень на входе RB7 (в режиме SLEEP он запрограммирован как вход и разрешено прерывание по изменению уровня) и МК выходит из спящего режима. На остальных выходах управления сегментами RB1-RB6 и RA4 в режиме SLEEP установлен высокий уровень, что гасит индикатор и минимизирует ток потребления независимо от состояния «разрядных» MOSFET транзисторов.

Элементы X1, C1, C2 образуют со входами RA6, RA7 кварцевый генератор частотой 4 МГц по обычной схеме. Применение кварцевого генератора позволяет максимально увеличить точность вычислений. В случае, если достаточна точность измерений 3-5 % и требуется максимальное увеличение вибрационной и ударной стойкости прибора, можно эти элементы исключить и установить в конфигурации в пункте «осциллятор» внутренний генератор (значение «IntOsc»). Тогда МК будет тактироваться от внутреннего генератора с такой же частотой 4 МГц, но его точность составит порядка 3% (при стабильном питании 3 В). Внимание! Если у Вас самодельный программатор, при установке в конфигурации одновременно пунктов “INT.OSC” и “MCLR OFF” (отсутствует птичка в пункте MCLR) могут быть проблемы, особенно с последующим перепрограммированием МК, поэтому, тем, кто не уверен, лучше собирать прибор по исходной схеме.

На элементах U2, R20, R21 реализована схема измерения напряжения батареи питания. Программируемый регулятор напряжения U2 включен по схеме с напряжением 2.5 Вольт. На его выходе напряжение питания 3-5 В преобразуется в 0.5-2.5 В. На выходе RA1 МК на время измерения напряжения устанавливается низкий уровень, соединяя верхний по схеме вывод R21 с корпусом, и он становится нагрузкой U2. Номинал R21  выбран для обеспечения минимального по datasheet тока через U2. Через резистор R20 на вход внутреннего компаратора МК (RA0, в данном случае, установлен как вход компаратора AN0) поступает измеряемое напряжение 0.5-2.5 Вольт. На другой вход компаратора поступает ступенчато возрастающее напряжение с внутреннего источника образцового напряжения (ИОН). По моменту превышения ИОН над входным напряжением вычисляется величина напряжения. При измерении напряжения, на входы двух транзисторов (Q1,Q2) поступает открывающее напряжение и только вышеупомянутое свойство транзисторов MOSFET, а именно очень низкий входной ток позволяет сохранять высокое входное сопротивление компаратора и минимизировать погрешность. На время измерения напряжения индикатор гасится посредством «сегментных» выводов МК, однако, из-за малого времени измерения, напряжение на конденсаторе C5 остается почти такое же, что и под нагрузкой, поэтому, измерение дает реальную картину.

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

В SLEEP режиме выходы RA0-RA3  устанавливаются в высокий уровень для закрытия транзисторов, при этом, нет тока через U2 и, соответственно, обеспечивается низкий ток потребления всего устройства.  

Вся схема питается напряжением 3В с выхода интегрального стабилизатора NCP551SN30, характеризующегося очень малым собственным током потребления (единицы микроампер) и падением напряжения (менее 0.1 В). На микроконтроллер напряжение питания поступает через дополнительный фильтр R22, C7, C8 уменьшающий помехи от динамической индикации. Относительно большая емкость конденсатора C5 обусловлена необходимостью шунтирования внутреннего сопротивления несколько разряженной батареи питания. Для его быстрой разрядки при выключении питания применяется резистор R19 и переключатель SW3 с дополнительным контактом. Диод D2 принудительно разряжает конденсаторы C6  и C8 при выключении питания, что облегчает последующий запуск микроконтроллера.

Программа микроконтроллера написана на Ассемблере в среде MPASM и в ней же откомпилирована. При загрузке прилагаемого HEX файла в программу для прошивки типа WINPIC или  IceProg, слово конфигурации загружается автоматически (все «галочки» кроме пункта “PWRT” сброшены, осциллятор установлен “XT”).

Почти все детали устройства установлены на односторонней печатной плате размерами 39х49 мм, изображенной на рисунке.

Печатная плата велокомпьютера

Для уменьшения размеров платы, большинство деталей использованы типа SMD.  При сборке сначала впаиваются все SMD компоненты, потом впаиваются перемычки, которые изготовлены из луженого медного провода диаметром 0.4 – 0.6 мм, в последнюю очередь впаиваются колодка для МК и индикатор.

Вне платы установлены только кнопка, выключатель питания, геркон и разъем для его подключения, а так же резистор R19, который припаян навесным способом на выключателе SW3. При отсутствии малогабаритного конденсатора 1000 мкФ на 6.3 В, C5 так же можно вынести за пределы платы и распаять на SW3.

Индикатор HL1 – кроме указанного типа, можно заменить на любой типа FYQ3641B, их лучше применить с индексами SR, HR, UHR (у них больше яркость) красного цвета или аналогичные оранжевого цвета. Транзисторы так же можно применить типа IRLML6401.  Все SMD резисторы и конденсаторы – типоразмера 0805, резистор R3 – МЛТ-0.125, C1, C2 – малогабаритные керамические, C5,C6,C8 – импортные алюминиевые. Стабилизатор NCP551SN30, в крайнем случае, можно заменить на LP2950CZ-3.0 в корпусе ТО-92 (в плате для этого предусмотрены отверстия), но у него похуже параметры. Диоды D1, D2 – заменимы на любые из серий КД521, КД522. Геркон – типа КЭМ-2 или другой, с как можно меньшим МДС срабатывания, а в качестве разъема для его подключения – любой малогабаритный для выносных БП, удобный для крепления в корпусе. Переключатель и кнопку – так же любые малогабаритные, предназначенные для крепления на корпусе.

Прибор изначально «заточен» на применение литий-ионной батареи от сотового телефона (пределы измерения напряжения, напряжение выключения), однако впоследствии было решено питать его от 3-х «алкалиновых» элементов типа АА, благо заряда их хватает на 3-4 месяца эксплуатации умеренной интенсивности. Впрочем, аккумулятор от «сотового» с зарядкой от штатного БП  так же можно использовать без проблем. Подойдут так же три металлогидридных аккумулятора, включенные последовательно.

Вид собранной платы с двух сторон и другие детали компоновки можно рассмотреть на фотографиях.

Детали для изготовления корпуса прибора вырезаны из корпуса старого аккумулятора от компьютерного ИБП. У него аккуратно срезана верхняя крышка, извлечены и сданы на утилизацию все внутренности. После промывки и сушки получаем пластмассовую коробку с 6-ю отсеками, из которой и вырезаем две части корпуса – верхний кожух и Т-образный каркас, на котором крепятся плата и снизу отсек для элементов питания. Он же выполняет роль нижней стенки корпуса с органами управления. Напротив индикатора в кожухе вырезано отверстие, заклеенное прозрачным оргстеклом красного цвета. Каркас вместе со всеми элементами вставляется в кожух так, чтобы нижняя стенка немного "утапливалась" в кожух, и фиксируется двумя миниатюрными саморезами. Благодаря такой конструкции, устройство не боится дождя, при условии вертикального положения велосипеда. К корпусу с задней стороны дихлорэтаном приклеивается пластинка из того же материала, к которой винтами привинчен хомут для крепления на велосипеде.

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

Для измерения длины окружности колеса на боковую поверхность шины наносят метку мелом и, покатив велосипед, отмечают на асфальте две точки «от метки до метки» и измеряют рулеткой это расстояние как можно точнее. В вышеуказанный интервал длин окружности колеса (24-255 см), думаю, попадают все существующие велосипеды, но если все же окружность колеса больше 255 см, есть простой выход – на колесе закрепляют строго друг против друга два магнита, а в качестве длины окружности вводят половину длины окружности колеса.

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

В прикрепленном файле: плата LAY, модель Proteus, исходный ASM-код и прошивка.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
U1 МК PIC 8-бит
PIC16F628A
1 Поиск в магазине ОтронВ блокнот
U2 ИС источника опорного напряжения
TL431
1 Поиск в магазине ОтронВ блокнот
U3 СтабилизаторNCP551SN301 LP2950ASZ3.0Поиск в магазине ОтронВ блокнот
Q1-Q4 ТранзисторIRLML64024 IRLML6401Поиск в магазине ОтронВ блокнот
D1, D2 Выпрямительный диод
1N4148
2 КД521Поиск в магазине ОтронВ блокнот
HL1 ИндикаторCPD-03641SR1/A1 FYQ-3641BПоиск в магазине ОтронВ блокнот
X1 Кварцевый резонатор4 МГц1 Поиск в магазине ОтронВ блокнот
C1, C2 Конденсатор22 пФ2 Поиск в магазине ОтронВ блокнот
C3 Конденсатор4700 пФ1 SMD 0805Поиск в магазине ОтронВ блокнот
C4 Конденсатор22 нФ1 SMD 0805Поиск в магазине ОтронВ блокнот
C5 Электролитический конденсатор1000мкФ 10В1 Поиск в магазине ОтронВ блокнот
C6 Электролитический конденсатор47мкФ 6.3В1 Поиск в магазине ОтронВ блокнот
C7 Конденсатор47 нФ1 SMD 0805Поиск в магазине ОтронВ блокнот
C8 Электролитический конденсатор220мкФ 6.3В1 Поиск в магазине ОтронВ блокнот
R1 Резистор
39 кОм
1 SMD 0805Поиск в магазине ОтронВ блокнот
R2, R21 Резистор
1 кОм
2 SMD 0805Поиск в магазине ОтронВ блокнот
R3 Резистор
47 Ом
1 0.125 ВтПоиск в магазине ОтронВ блокнот
R11-R19 Резистор
47 Ом
9 SMD 0805Поиск в магазине ОтронВ блокнот
R4, R6 Резистор
100 кОм
2 SMD 0805Поиск в магазине ОтронВ блокнот
R5 Резистор
10 кОм
1 SMD 0805Поиск в магазине ОтронВ блокнот
R7-R10 Резистор
470 Ом
4 SMD 0805Поиск в магазине ОтронВ блокнот
R20 Резистор
8.2 кОм
1 SMD 0805Поиск в магазине ОтронВ блокнот
R22 Резистор
27 Ом
1 SMD 0805Поиск в магазине ОтронВ блокнот
SW1 ГерконКЭМ-21 Поиск в магазине ОтронВ блокнот
SW2 КопкаRBS-1051 Без фиксацииПоиск в магазине ОтронВ блокнот
SW3 ПререключательMXL-1021 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (33) | Я собрал (0) | Подписаться

0
Анатолий #
Отличная статья! Повторил её и ни чем не хуже промышленных велокомпьютеров. Не плохо было бы увидеть статью этого ВК с использованием,например LCD16х2!
Ответить
0

[Автор]
diogen_b #
Спасибо на добром слове! "Фишка" прибора именно в LED индикаторе с программной регулировкой яркости. Использовав 1602, мы создадим уже другое устройство...
Ответить
0
Алексей #
Во время проверки аккумулятора логично использовать комбинацию 8888 вместо 0000. Больше индикаторов же горит:-)
Ответить
0

[Автор]
diogen_b #
Спасибо за комментарий. При работе прибора в каждом разряде, в среднем, светятся 5 сегментов. Поэтому, считаю, достаточно для нагрузки питания зажечь "0000", то есть по 6 сегментов.
Ответить
0
Анатолий #
Почему показания скорости не сбрасываются на "0.0" (например, при резком останове колеса), а остаются в соответствии скорости движения до остановки?
Ответить
0

[Автор]
diogen_b #
Данный прибор определяет скорость по времени полного оборота колеса. Определить сразу, что колесо "резко остановилось" он никак не сможет. Устройство делает вывод об остановке колеса, если нет импульса в течении примерно 8 сек., при этом, он переходит в режим "STOP". Индикация значения скорости 0.0 км/ч в приборе не предусмотрена.
Ответить
0
Анатолий #
Индикация значения скорости 0.0 км/ч в приборе не предусмотрена
При включении прибора выводится STOP->0.0->и т.д., вот это и есть индикация 0.0 км/ч. Я просто упростил немного ваш исходник,убрал среднюю скорость,индикацию STOP,регулировку яркости,и контроль батареи, перенес программу на другой контроллёр с АЦП. Показания скорости как раз вот через эти 8 секунд и сбрасываются на 0.0. В принципе интересное устройство,но вот я ещё не понял почему вы таймер сделали без остановки. На заводских нет движения и время поездки останавливается,а у вас всё-равно продолжает работать таймер,что в принципе не совсем удобно, для оценки времени движения в пути с остановками.Если вас не затруднит,подскажите как изменить программу, чтоб устранить указанный недостаток.
Ответить
0

[Автор]
diogen_b #
"0.0" после слова "STOP" это сбрасываемый километраж, а не скорость. Немного поездите и будет другое число. Впрочем, после Ваших "усовершенствований" программы, наверно возможно и другое ...
Таймер считает 2 мин. после остановки, потом прибор переходит в sleep-режим и, разумеется, дальше счет времени останавливается. Да и отсчитывает он время в поездке, а не время в движении - есть небольшая разница. Я не копировал промышленные образцы (каюсь, ни разу вообще такового не видел) и изменять что-либо в программе для большего соответствия им не собираюсь, извините.
Что до Ваших изменений программы (особенно удивляет "не нужность регулировки яркости"), то я совершенно не согласен, что после этого прибор станет лучше. Впрочем, я опубликовал исходники и Вы, конечно, вправе ДЛЯ СОБСТВЕННОГО ИСПОЛЬЗОВАНИЯ менять программу по своему усмотрению. Удачи!
Отредактирован 31.10.2014 00:49
Ответить
0
Дмитрий #
Подскажите пожалуйста, в чем может быть причина такого https://youtu.be/iS31Rhoz5ZA мерцания первого разряда индикатора?
Ответить
0

[Автор]
diogen_b #
Думаю, это происходит потому, что анод первого разряда постоянно включен. Я бы проверил Q4, R7, порт МК RA3 (выв.2) и их монтаж.
Ответить
0
joshva #
Подскажите пожалуста, очень хотелось бы применить данную схему к самодельному анемометру для измерения скорости ветра, но там нужна индикация в м/с , что нужно подправить в исходнике если это не сложно так как я в контроллерах ещё начинающий так сказать.
Ответить
0

[Автор]
diogen_b #
Как известно, в м/с результат будет в 3.6 раза меньше. В коде где происходит умножение переменной length на 2813 надо вместо этого умножать на 781, при этом x*781=x*195*4+ x. Остальное в комментах к коду. Удачи!
Ответить
0
musicominc #
Будет ли корректно работать на li-ion 3.7v? Или же двухбаночный брать. Хочется сделать компактно
Ответить
0

[Автор]
diogen_b #
Будет, 100%!
Ответить
0
payatel666 #
Почему вы использовали геркон вместо датчика холла? Геркон же во многом уступает. Например при езде по кочкам у геркона будут ложные срабатывания, или при большой скорости движения геркон может не успеть среагировать на пролетающий мимо магнит.
Ответить
0

[Автор]
diogen_b #
Оба случая на деле практически невозможны! Моё мнение.
Ответить
0
hunankh #
В файле, котором вы прикрепили, код на ассемблере возможно ли написать на С++ если нет то какой компилятор вы использовали?
Ответить
+1

[Автор]
diogen_b #
Разумеется, переписывать для Вас код я не собираюсь. А компилятор - MPASM.
Ответить
0
hunankh #
А у вас нету код на С++ ?
Ответить
0
hunankh #
Собственно скорость вычисляется по формуле: скорость - V=(L(cm)*2813)/X , где V - скорость в 1/10 км/ч, Х - число 16 микросекундных интервалов между импульсами датчика, L – окружность колеса в сантиметрах. А 2813 что за цифр?
Ответить
0
ALEKSANDR89 #
Здравствуйте. Собрал прибор, работает, исправно измеряет скорость, время в пути, расстояние. Но похоже, что какая-то программная ошибка, а именно:
- при сбросе времени , сбрасываемый пробег не обнуляется.
- не правильно работает подсчет несбрасываемого киллометрожа: было 8, проехал 4, стало 10, далее выключил-включил питание стало опять 8. Не пойму в какой момент сбрасываемый должен прибавляться к несбрасываемому.
Может я чего не правильно делаю? Прошивка не помню от куда,либо от сюда , либо с fpt "Радио".
Прошу подсказать в решении данной проблемы.
Ответить
0

[Автор]
diogen_b #
Невнимательно читали статью.
Длительное нажатие кнопки в пункте меню «скорость» в этом режиме переводит прибор в режим отображения статистики поездки. Высвечиваются с интервалом в 2 сек. : максимальная скорость (вида “верхняя черта 1-го знака + ХХ.Х”, где ХХ.Х – максимальная скорость с момента сброса времени); средняя скорость (вида “-XX.X”, где ХХ.Х – средняя скорость с момента сброса времени считая время остановок – при остановке более 2 мин. учитывается только 2 мин. в режиме “STOP”); пройденное с момента сброса времени (не путать с прямо сбрасываемым километражем) расстояние (“XXX.X”)

Внимание! Запись данных в энергонезависимую память происходит только при выключении в спящий режим! Во избежание потери данных о последней поездке, перед выключением питания прибора следует сначала перевести его в спящий режим. Впрочем, полное выключение питания прибора имеет смысл только при длительных перерывах в использовании.
Отредактирован 02.07.2020 11:34
Ответить
0
ALEKSANDR89 #
Спасибо за ответ. С параметром dall все понятно,над о переводить в спящий режим, параметр dist , у меня он не сбрасывается в ноль, при сбросе tcal, обнуляется только время
Ответить
0

[Автор]
diogen_b #
Если не можете найти в статье, я же привел цитату!
Сбрасываемый километраж и километраж от последнего сброса времени - две отдельные величины!!! Последний виден только в режиме статистики (длительное нажатие из режима STOP).
Ответить
0
Макс #
Хочу сегменты ABСDЕFG в прошивке местами поменять, чтобы компактней разводку сделать. Я так понял в прошивке есть таблица ее нужно править. А как подправить прошивку если у меня индикатор с ок?
Ответить
0

[Автор]
diogen_b #
Думаю, Вам проще будет купить индикатор с ОА, потому как, в противном случае, придется переделывать узел разрядных ключей Q1-Q4 (транзисторы с N-каналом на корпус и инвертировать разрядные выходы МК в программе). Соответственно, значения для сегментов из таблицы тоже надо инвертировать.
Ответить
0
Макс #
Поменять сегменты местами в исходнику и инвертировать я разобрался как. Транзисторы заменю на n канальные на массу. А инвертировать raz1, raz2, raz3, raz4 получается тоже нужно? И как это сделать, в какой строчке кода что поменять нужно?
Ответить
0

[Автор]
diogen_b #
В прерываниях, перед выводом в порт А, удалите команду xorlw b'00001111' .
Ответить
0
Макс #
Поменял 7 розрядов как мне удобно для розводки ,в протеусе подключил индикатор с общис С без транзисторов напрямую к мк ,работает ....А от когда подклю n канальные тр и удаляю команду xorlw b00001111 тогда не работает ....Где я ошибся?
Ответить
0

[Автор]
diogen_b #
Думаю, ошибка в транзисторах или их подключении. Попробуйте не примитив n-типа, а непосредственно irlml2502.
Ответить
0
Макс #
Как еще можно инвертировать розряды ?Так как вы предложили ,не работает....https://youtu.be/3KX7J_be7xE
Ответить
0

[Автор]
diogen_b #
"Не работает " потому, что Вы не знаете особенностей протеуса. Добавьте к каждому транзистору подтягивающий резистор, скажем 200кОм, от истока к плюсу питания и посмотрите...
Но идея использовать индикатор с ОК, в любом случае очень плоха: 1. для управления запятой придется городить еще ключ (предвижу "умное" предложение инвертировать этот выход в коде - не получится!); 2. уменьшится максимальная яркость более, чем в 2 раза (не спрашивайте, почему, поверьте на слово).
Так что, купите индикатор с ОА и не тратьте зря свое и чужое время!
Ответить
0
Макс #
Тогда куплю с ОА.... Спасибо
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
iMAX B6 - зарядное для Lion, LiPo, LiFe, Pb, NiCd и NiMH аккумуляторов Тестер ESR, полупроводников, резисторов, индуктивностей
вверх