Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Тахометр, Спидометр - одометр (Нужна помощь по программе для спидометра)
Тахометр, Спидометр - одометр
xppirat Дата: Пн, 25.04.2011, 13:46  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.03.2011

Статус: Offline

Вот, как и говорил, у меня появились вопросы. Сам пока справится, не могу, нужна ваша помощь.
Сделал тахометр, проверил в железе, все работает. Посмотрите, может, какие ошибки найдете или предложите варианты по улучшению кода.
А вот теперь о тупике, в который я зашел.
Программа спидометра + одометра работает, а вот как сделать:
1. Чтоб при нажатии кнопки происходило переключение одометра с основного на суточный
2. А при удержании той же кнопки в течение 1,5 секунд происходил сброс суточного пробега, но при этом, чтоб процесс подсчета импульсов не прерывался (надо записать нули в переменные OdoTripKm, OdoTripM и цифру 60 в переменную ImpOdoSyt)
3. Как сделать, чтоб при выключении зажигания данные из переменных (OdoMetr, Odo123Km, Odo456Km, OdoTripM, OdoTripKm) записывались в EEPROM, и после записи PortC.1 переводился в ноль (т. е. МК отключался)
В архиве лежит схема, под которую пишется данная программа спидометра.

Добавлено (24.04.2011, 15.02.18)
---------------------------------------------
Вот так всегда, то кричат помочь хотим, то ни кого не найдешь в помощь angry . Или я зря кричу, и все просто праздник празднуют biggrin .
Ну да ладно, в общем, я уже разобрался, как сохранить данные, остался вопрос, как сделать, чтоб при удержании кнопки в течение 1,5 секунд сбрасывались показания суточного одометра.

Добавлено (25.04.2011, 13.46.51)
---------------------------------------------
Народ, ну помогите же. Уже ведь практически готовый девайс, я уже все темы прочитал, но так и не понял, как это можно сделать sad :( sad . Или не кто не знает как это можно сделать?
Пожалуйста, помогите cry .

Прикрепления: _pic84.rar (27.8 Kb) · 1447371.rar (106.3 Kb) · Speedometr_last.rar (39.0 Kb)

Сообщение отредактировал xppirat - Пн, 25.04.2011, 13:49
ЯНДЕКС Дата: 25.04.2011
ivan_fd Дата: Пн, 25.04.2011, 14:48  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Если я правильно понял, Вы не знаете как при нажатии кратковременно сделать одно действие, а при длительном нажатии другое?
Если да, то заведите переменную, при нажатии кнопки инкрементируйте ее (например в таймере), и если значение лежит в пределах меньше установленного то на первое действие, а если насчитало больше (~1,5сек.), то на другое действие.
xppirat Дата: Пн, 25.04.2011, 16:19  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.03.2011

Статус: Offline

Спасибо за ответ. А если не сложно, вы бы не могли набросать пример кода.
ivan_fd Дата: Пн, 25.04.2011, 18:57  |                                                                                                                Сообщение # 4
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Пожалуйста, только он на Протоне. Я думаю разберетесь, команды почти те самые.
Прикрепления: Button.rar (28.4 Kb)
xppirat Дата: Вт, 26.04.2011, 08:16  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.03.2011

Статус: Offline

Всем кто отвечал на мои вопросы большое спасибо.
Наконец я доделал спидометр biggrin . Результат выкладываю здесь, если кому понадобиться.
Небольшой список затронутых в проекте тем программирования:
1. Измерение времени при помощи TMR0
2. Подсчет импульсов при помощи прерывания
3. Сохранение данных во внутренний EEPROM
4. Динамическая индикация на Led индикаторах

Добавлено (26.04.2011, 08.16.21)
---------------------------------------------
Отдельное спасибо ivan_fd. Если бы не ваш совет так и не сдвинулся бы я с мертвой точки.

Прикрепления: SpedoOdo_Full.rar (91.1 Kb)
FlintOFF Дата: Чт, 19.05.2011, 23:30  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Новенький
Сообщений: 4
Репутация: 0   ±
Замечания:   ±
На сайте с 19.05.2011

Статус: Offline

В протеусе нашел только спидометер, а вот тахометра не вижу. Если можно одновременно выводить на два индикатора значение спидометра и одометра, то почему нельзя подключить и третий индикатор тахометра и брать имбульсы с катушки или с эл. прерывателя. Тогда всю панель нафиг.
FlintOFF Дата: Вт, 24.05.2011, 17:22  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Новенький
Сообщений: 4
Репутация: 0   ±
Замечания:   ±
На сайте с 19.05.2011

Статус: Offline

Добрый день.
Задумал на 2108 поставить вместо спидометра, стертого одометра и отсутствующего тахометра микроконтроллер.
Смотрел схемы, что не нравиться так это то что на каждый прибор используется отдельный мк или на одном мк и один индикатор с посменным выводом значений.
В идеале сделать все на одном мк и на четырех отдельных индикаторах.
Что нужно:
1. Спидометер (3 разряда)
2. Тахометер (3 разряда, запятая после 1 символа)
3. Одометер суточного пробега (4 разряда, запятая после 3 символа)
4. Одометер (6 разрядов)
Хотел сделать на pic16f84 но администратор сайта подсказал что в нем нет двух счетчиков, нужно делать на pic16f628a.
Плюс нужно добавить:
5. Автоматическое переключение яркости индикатора в зависимости от того включены габариты или нет.
6. При превышении скорости 80 км издать один короткий звуковой сигнал, при превышении 110 км издать два коротких звуковых сигнала.

По моим подсчетам нужно 29 выходов для индикаторов (20 символов + 7 сегментов + 1 точка + 1 для звукового сигнала) + 3 входа (2 для подсчета импульсов + 1 для переключения яркости).
Решил управления 20 символами сделать через один порт при помощи двух счетчиков 561ие8, но выходы у них слаботочные, всего 4-5 мА, потому нужно включить еще 20 транзисторов кт315, или смд аналоги.
Тогда количество выводом уменьшается до 13 шт. что приемлемо для pic16f628.
Теперь о скорости счетчика. Я нашел что максимально допустимая частота для 561Ие8 составляет 3 МГц. Исходя из минимальной частоты для одного индикатора в 25Гц рабочая частота счетчика составит 25*20=500Гц что входит в предел допустимого.

Вот мои размышления, теперь хочу задать вопросы.
1. Чем можно заменить 561Ие8 желательно SMD вариант с 20 выходами и желательно с током на каждый выход 25мА чтобы обойтись без транзисторов.
2. Насколько я понимаю частоту кварца в 4МГц вполне достаточно для такого прибора и не должно быть мерцаний ведь рабочая частота мк 1МГц и частота обновления индикаторов в два раза меньшея.
3. Также хочу реализовать Квазианалоговою шкалу на тахометер и спидометер так как тут вот только выводов не хватает, может подскажите не дорогой МК с большим количеством выводов или простой способ как реализировать Квазианалоговою шкалу.
4. Подскажите где я еще могу наступить на грабли, а только начинаю с мк работу. Планирую программировать на PicBasicPro.

P/s Всем спасибо кто дочитал до конца smile

Сообщение отредактировал FlintOFF - Вт, 24.05.2011, 17:29
ADMIN Дата: Ср, 25.05.2011, 07:23  |                                                                                                                Сообщение # 8
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

1!Накидай для начала схему, как ты это видишь.
2!Каких габаритов получится прибор, в котором нужно отображать 20 цифр(и почему 20? я насчитал 16)? Пусть даже они - миниатюрные. На мой взгляд, проще взять LCD и не париться. Во первых, информативно, во-вторых - миниатюрней, в третьих - портов требуется намного меньше, в-четвертых - низкое потребление, в-пятых - можно управлять яркостью подсветки с помощью ШИМ выбранного контроллера. Для таких задач, думаю, вполне подойдет что-то типа 16F870/871 или аналогичный, с 28-ю выводами, 2-3 таймерами, ШИМ, и дополнительными выводами (для чего хочешь)

3!
Quote (FlintOFF)
Насколько я понимаю частоту кварца в 4МГц вполне достаточно для такого прибора и не должно быть мерцаний ведь рабочая частота мк 1МГц и частота обновления индикаторов в два раза меньшея.

Для нормального отображения цифр, без мерцаний и слияний сегментов, требуется примерно 5 мс на цифру - подсчитай - на одну только индикацию будет уходить не менее 90 мс.
4!
Насчет квазианалоговой шкалы, опять же плюс к LCD
5!
И наконец, последнее: проще сейчас перейти на протон, поскольку в PBP с аппаратными прерываниями возникают проблемы, нет поддержки переменной типа Float, команд больше и т.д. и т.п. Да и не отличается он по синтаксису почти ничем.
Вот основные отличия Протона от PBP:

В PBP пишут - Temp var Byte
В протоне - Dim Temp as Byte

В PBP - Pause 100, Pauseus 100
В Протоне - DelayMs 100, DelayUs 100, но здесь еще есть команда DelayCs 100(задержка в циклах)

В PBP - LCDOUT $FE, 1
В протоне Print At 1,1 - здесь явно указывается куда писать символ

В PBP - OWIN, OWOUT
Протон - OREAD, OWRITE
и т.д, и т.п.
FlintOFF Дата: Ср, 25.05.2011, 13:18  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Новенький
Сообщений: 4
Репутация: 0   ±
Замечания:   ±
На сайте с 19.05.2011

Статус: Offline

1. Схема коммутации индикаторов через счетчик 561ие8 накидал в протеусе и добавляю к посту. Тут основная задача была проверки работоспособности индикации при коммутации общих катодов через 10 счетчик. Протеус показывает нестабильную работу, подозреваю что в реалии все должно работать нормально. Плюс я так и не разобрался как подключить два счетчика последовательно, как вариант цыплять каждый счетчик на отдельную ножку МК.
2. Габариты не столь существенны так как прибор будет устанавливаться стационарно вместо спидометра на ВАЗ 2108 "низкая панель".
Цифр 20 так как вы пропустили суточный пробег.
LCD вариант только для одометра и суточного пробега. Спидометр и тахометр при сильных лучах сета не будет видно на LCD, а со светодиодами будет меньше проблем в этом плане.
Управлять яркостью можно через выводы МК на сигменты А-G индикатора.
3. Тут трудности. Сколько должен быть кварц?
4. Для квазианалоговой шкалы думал приспособить микросхему уровня входного сигнала, или действительно взять pic16f876 и создать матрицу диодов.
Прикрепления: 4477945.dsn (155.6 Kb)
MasterPic Дата: Чт, 26.05.2011, 07:13  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 186
Репутация: 2   ±
Замечания:   ±
На сайте с 22.11.2008

Статус: Offline

Кварц, думаю примерно на 16-20 МГц надо, чтобы успевал подсчеты делать
FlintOFF Дата: Чт, 26.05.2011, 22:06  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Новенький
Сообщений: 4
Репутация: 0   ±
Замечания:   ±
На сайте с 19.05.2011

Статус: Offline

Сегодня меня осенило.
Зачем делать квазианалоговый индикатор если можно поставить на сервомашинку стрелку и управлять ею по одному порту МК.
Как ни как но стрелочный более привычный.
Да и нагрузка на сервамашунку минимальная (вообще отсутствует) и позиционирование точное.
К тому же можно поставить на начало шкалы и на конец фото датчик и каждый раз при включении калибровать стрелку не только относительно нуля но и по максимальному значению, прямо как в BWM smile
Теперь самое главное. Как я говорил на одометр можно поставить LCD - выходит экономим порты, можно выводить любую информацию (вывести кнопку на переключение показателей), и упрощаеться схема.
Теперь стоит задача выбора индикатора и сервомашинок. А также думаю перевести всю индикацию через МК и переделать полностью панель.
ЯНДЕКС Дата: 26.05.2011
MasterPic Дата: Пт, 27.05.2011, 17:24  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 186
Репутация: 2   ±
Замечания:   ±
На сайте с 22.11.2008

Статус: Offline

Вот статья. Она должна помочь в подключении кучи индикаторов к нескольким портам МК. Надеюсь поможет. Там и программа есть, правда на Си. И индикаторы - точечные, но разницы помоему нет
xppirat Дата: Ср, 01.06.2011, 13:27  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.03.2011

Статус: Offline

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

Привет всем, давно меня здесь не было.
Схема тахометра в первом сообщении (_pic84.rar(28Kb)).
Два МК было использовано, потому что схему спидометра я собрал уже давно. Но чужая прошивка мне не понравилась по причине большой погрешности. Потом я собрал схему тахометра, но опять же, чужая прошивка не вкатила. После чего я наткнулся на этот хороший сайт и начал копать, в результате раскопок у меня получились программы для МК, которые отлично работают с данными схемами.

А для объединения тахометра и спидометра нужен другой МК, и как сказал ADMIN, для вывода такого количества цифр в динамической индикации потребуется очень много времени и энергии. Если использовать один МК, то надо запитывать индикаторы через драйвер светодиодов.

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

Сообщение отредактировал xppirat - Ср, 01.06.2011, 13:28
ADMIN Дата: Ср, 01.06.2011, 13:49  |                                                                                                                Сообщение # 14
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Вот и напиши статью в каталоге, как и что. Статьи - это наглядный пример, руководство к действию, а не просто архив с файлами.
xppirat Дата: Пт, 03.06.2011, 00:49  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.03.2011

Статус: Offline

Quote (ADMIN)
Ее нужно перенести в Каталог статей. Ты же положил ее в архив, где хранятся всякие полезные программы, книги и т.д. Перенеси, будь добр.

А как это можно сделать, не подскажите. А то я в редакторе открываю, и в разделе “Категория” не отображается “Каталог статей”. И я так понял эту статью надо в раздел PicBasic Pro положить?
Форум Picbasic.ru » Программирование МК » PicBasicPro » Тахометр, Спидометр - одометр (Нужна помощь по программе для спидометра)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: