06.08.2015, 13:04
|
|
Прописка
Регистрация: 24.12.2006
Сообщений: 167
Сказал спасибо: 9
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от alvadep
|
FreeTramp, а не пробовали менять скважность "импульсов индикации" другим способом, например, просто выбрасывать (пропускать) импульс?
|
А какой смысл в этом? Если пропускать один импульс, значит надо пропускать и остальные три. Тем самым я просто добьюсь увеличения периода их следования, т.е в два раза снизится частота и опять начнется мерцание.
|
|
|
|
06.08.2015, 13:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
В доисторические времена делал стенд для проверки топливной аппаратуры на 16F876. Оптимальный алгоритм - измерение длительности импульсов таходатчика. В прерывании по изменению состояния таходатчика (у меня был сигнал ВМТ) считываем текущее состояние таймера и выставляем флаг готовности, а дальнейшую обработку делаем в основном цикле. При этом тот же таймер можно использовать и для динамической индикации. Точность будет определятся тактовой частотой таймера. Для нормального диапазона измерений желательно применять 16-разрядный таймер.
__________________
misterdi<@>i.ua
|
|
|
|
06.08.2015, 15:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от FreeTramp
|
А какой смысл в этом?
|
Смысл простой. Не надо перестраивать таймер. А чтобы не было мерцаний нужно изначально поднять частоту тактирования динамической индикации, так чтобы даже при самой большой скважности не было заметно глазу.
|
|
|
|
06.08.2015, 16:20
|
|
Прописка
Регистрация: 24.12.2006
Сообщений: 167
Сказал спасибо: 9
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от alvadep
|
Смысл простой. Не надо перестраивать таймер. А чтобы не было мерцаний нужно изначально поднять частоту тактирования динамической индикации, так чтобы даже при самой большой скважности не было заметно глазу.
|
Если поднять частоту, что бы не было заметно глазу мерцания, то мне кажется будут заметны глазу не гаснущие сегменты. У меня в руках старинные часы на ZILOG 18 pin с кварцем 10 мГЦ, так вот на этом камне видимо реализован ШИМ на динамическую индикацию. Яркость индикации в этих часах меняется ступенчато и имеет 4 ступени. Маркировка его Z86E0812PSC. Что у него на борту я не знаю, т.к. с ними никогда не работал, если только под Spectrum пытался что-то на асме изобразить, но потом забросил. Домой приду, скачаю даташит для интереса, а сейчас с планшетника пишу.Тут всего 500 мб на месяц трафика. Жалко однако
|
|
|
|
06.08.2015, 19:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от FreeTramp
|
Ширину импульса менять можно, только получается сдвиг импульсов. Вывод - нельзя на ходу что-то менять в TMR0. Нужен второй аппаратный таймер. Выбирать другой проц, только из за того что бы регулировать яркость, я считаю нецелесообразным. Камень с бОльшими возможностями уже имеет другой вес в денежном выражении и заливать в него потом всего 500 байт, кощунство.
|
А не попробовать ли сделать наоборот? Сделать ШИМ и программно расширить таймер.
|
|
|
|
06.08.2015, 19:23
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от FreeTramp
|
Не все так просто как кажется....уменьшении времени импульса, будет меняться и период, иначе (см. картинку).
|
Да не, ну почему же. Я не вижу принципиальных трудностей даже если менять значение таймера на каждом этапе, формируя ШИМ. Нужно всего лишь записывать во вспомогательные регистры заранее рассчитанные значения таймера и подгружать их в таймер каждый раз при наступлении прерывания. Ничего никуда сдвигаться не будет, потому что все длительности будут рассчитаны заранее.
Надо всю индикацию разбить на этапы, даже нарисовать на бумажке и просчитать значения таймера для каждого этапа. Все получится.
Последний раз редактировалось NewWriter; 06.08.2015 в 19:25.
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
06.08.2015, 19:31
|
|
Прописка
Регистрация: 24.12.2006
Сообщений: 167
Сказал спасибо: 9
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Посмотрел даташит на Z86E08. Плин, да он еще беднее чем 16F676.
1 Шесть прерываний (три по заднему фронту сигнала, один по переднему и два от таймеров) Прерывания приоритетные.
2. Таймеров всего два и оба восьмибитные с шестибитными предделителями.
3. Два аналоговых компаратора.
4. С генераторами дело обстоит точно так же как в Пике. Макссимальная рабочая частота у него 12 мГЦ
5. Имеется 1 кб памяти программной и 125 байт (почему-то ![Озадачен](images/smilies/icon_confused.gif) ) RAM
Ну и стандартные две приблуды в виде WDT и POR. Вот и все что у него под пластиком.
Ну как бы там не было, а регулировка яркости индикатора присутствует.
Поиграюсь еще частотой индикации, может удастся найти приемлемый вариант. Осложняется это еще и тем, что у меня внутренний генератор и кратные секунде прерывания нужно выбирать на этом же таймере. Так что выбор не велик. Надо железо собирать. Протеус не покажет изменение яркости.
|
|
|
|
06.08.2015, 19:43
|
|
Прописка
Регистрация: 24.12.2006
Сообщений: 167
Сказал спасибо: 9
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от NewWriter
|
Да не, ну почему же. Я не вижу принципиальных трудностей даже если менять значение таймера на каждом этапе, формируя ШИМ. Нужно всего лишь записывать во вспомогательные регистры заранее рассчитанные значения таймера и подгружать их в таймер каждый раз при наступлении прерывания. Ничего никуда сдвигаться не будет, потому что все длительности будут рассчитаны заранее.
Надо всю индикацию разбить на этапы, даже нарисовать на бумажке и просчитать значения таймера для каждого этапа. Все получится.
|
Ну у меня в 27 посте та же осцилограмма, только я посчитал что так быть не должно (там где зелеными стрелками отмечено), а в Протеусе нормально не проверить что индикация покажет.
NewWriter, а можно в личку, или тут (как удобно) пояснения к двум нижним осцилограммам?
|
|
|
|
06.08.2015, 19:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Да с яркостью все просто как мычание. 60 гц -глаз устраивает. Пусть у нас 4 цифры. T. е через каждые 4 милисекунды надо включать следущий сегмент А дальше все просто типа такого;
PHP код:
|
#define CntTact 4 #defineCntDig 4 Light = 3; tact = 0; dig = 0; void OutDig() { if(tact›=Ligth) { Выключить все сегменты ; } else { Установить сегменты цифры; } Включить цифру dig; tact++; tact%=CntTact; if(tact==0) { dig++; did%=CntDig; } }
|
При 4 уровнях яркости вызывать этот метод каждую милисекунду
при 8 каждых 500мкс
Всякие тонкости с паразитной засветкой опускаю))
|
|
|
|
06.08.2015, 19:54
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от FreeTramp
|
пояснения к двум нижним осцилограммам?
|
Так это ведь как раз и есть регулировка яркости на каждом разряде (60% и 20%), то есть, ШИМ!
Период переключения разрядов остается ОДНИМ И ТЕМ ЖЕ, не меняется, а вот длительность зажигания каждого разряда - и есть ШИМ. Поразрядный.
Ну и один и тот же таймер нужно перезагружать дважды для каждого разряда. Из осциллограмм видно ведь. Частота дин.индикации - 100 Гц. Время, отводимое на каждый разряд - 10 мс / 4 = 2,5 мс. Ну и эти 2,5 мс делятся на фазу свечения разряда и фазу выключенного разряда. Соотношение времени этих фаз - и будет определять яркость. Ну и значения таймера будут соответствующими. А в сумме - должно давать длительность 2,5 мс.
Для того, чтобы разряды не налезали друг на друга и не высвечивали цифру не в том разряде, нужно делать наоборот. Перед сменой разряда нужно гасить разряд, тут же загружать новое значение цифры, и тут же включать следующий разряд. Время на это - несколько микросекунд.
Последний раз редактировалось NewWriter; 06.08.2015 в 20:38.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:28.
|
|