Как снизить дискретность тахометра в авто?
26.07.2015, 23:52
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от NewWriter
|
|
А для низкой - есть проблемка.
|
Для низкой можно и тупо программным счётчиком...
Вы ж периоды сами обозначили.
|
|
|
|
26.07.2015, 23:58
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
А может ТС замутить умножитель частоты на 60(30) на каком-нибудь 6-ногом МК. Тобишь на вход будут поступать родные импульсы, а на выходе импульсы будут идти с умноженной частотой.
Помнится на заре пиков робыв такую хрень на 84-ом.
|
|
|
|
27.07.2015, 00:14
|
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от NewWriter
|
|
Да какой там "хардкор"... че, автор с набором из 35 инструкций не справится?
|
А какая разница? Подозреваю что у ТСа что-то типа PIC12F629, старенького доброго хайтеч-стандарт вполне хватит. Я бы взял что-то типа PIC16F886, отладил бы всё, а потом перетаскивал. Или даже и не перетаскивал.
Да и вообще, ИМХО, вся эта повышенная дискретизация для такого применения феерическая блажь.
|
Цитата:
|
|
Это ж не какой-нить STM8, у которого одних только вариантов адресации... хотя набор инструкций "всего" 96 гтук
|
Не надо гнать на СТМ8, там всё патологически правильно и заточено под Си.
|
|
|
|
27.07.2015, 00:37
|
|
|
Прописка
Регистрация: 24.12.2006
Сообщений: 167
Сказал спасибо: 9
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от NewWriter
|
Думаю, нет. Если писать на ассемблере, а у МК сильно задрать частоту осциллятора, чтоб время не терять.
Беда в другом - ножек МК не хватит.
|
При внутреннем генераторе задрать частоту не получится, т.к. только 4 мГц А внутренний по все той же причине - нехватке ножек. Прерывания у меня от TMR0 каждые 4 mS на индикацию, но в принципе можно любое время сделать меньше/больше, но кратное 1:2:4 иначе секундного интервала не получить.
Вы тут смеетесь надо мной, типа почему такой камень выбрал. Я люблю повозиться со сложными задачами, выжимая максимум из слабого камня, утрамбовывая каждый байт, и меня это ни капли не напрягает, а наоборот доставляет удовольствие. Конечно, имея Salvo c библиотеками, хороший компилятор и камень, где не надо заглядывать в оставшийся объем памяти, задачу резко упрощает, но иногда хочется пошевелить мозгами.
|
|
|
|
27.07.2015, 00:56
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от FreeTramp
|
|
со сложными задачами, выжимая максимум из слабого камня
|
Кажись, где-то я это уже слышал 
Да не, мы не смеемся (по крайней мере, я).
Но вот лично я бы взял 16F88 (16F87) или 16F819. Там уже и внутренний осциллятор до 8 МГц, и ССР, и таймера три, да и 4 (2) кило флеша.
Кстати, на TMR2 удобно делать секундные отсчеты, совмещая с дин.индикацией.
|
|
|
|
27.07.2015, 01:09
|
|
|
Заблокирован
Регистрация: 10.03.2008
Адрес: г. Пятигорск
Сообщений: 451
Сказал спасибо: 41
Сказали Спасибо 279 раз(а) в 148 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Максимум из слабого камня надо выжимать для серийного производства, а в единственном экземпляре, если у процессора останется 50-90 процентов свободной памяти - совершенно не страшно.
А вычислять время между импульсами, которое и есть информация об оборотах в минуту, усреднять его, можно бесконечно точно.
Последний раз редактировалось Oleg_Bratkov; 27.07.2015 в 01:20.
|
|
|
|
05.08.2015, 22:01
|
|
|
Прописка
Регистрация: 24.12.2006
Сообщений: 167
Сказал спасибо: 9
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от FreeTramp
|
|
Я не заказ исполняю. Так, от неча делать решил себе тахометр с вольтметром сделать, ну и что бы яркость LED регулировалась, иначе в темное время глаз резать будет. В общем задача простая. Камней 14-ти ногих F676 штук десять дома наберется, а F688 или более серьезный PIC под такую игрушку рука взять не поднимается. Ладно, посмотрю сколько памяти у 676-го будет оставаться. Можно по прерыванию на ноге период измерить, только измерения эти усреднять перед вычислением надо. Ведь не с генератора лабораторного импульсы приходят. Цифры мельтешить, мне каца будут. Так что все дело в байтах. Может и запихаю все что надумал, а если не удастся, хрен с ней с дискретностью.
|
Вывод тахометра и напряжения на индикацию по кнопке, обошлось всего в 487 байт. Так что свободной памяти осталось предостаточно. Более мощный камень тут не нужен.Не получилось лишь регулировать яркость индикатора. Не хватает на борту одного 8-ми битного аппаратного таймера. С одним таймером, ШИМ не сотворить. Я по всякому игрался с TMR0. Записывал некое значение вызова прерывания для установки переднего фронта импульса, в этом же прерывании переписывал счетчик значением для длительности этого импульса, вычитая первое, что бы уложиться в 16 мс для 4 разрядов.
Ширину импульса менять можно, только получается сдвиг импульсов. Вывод - нельзя на ходу что-то менять в TMR0. Нужен второй аппаратный таймер. Выбирать другой проц, только из за того что бы регулировать яркость, я считаю нецелесообразным. Камень с бОльшими возможностями уже имеет другой вес в денежном выражении и заливать в него потом всего 500 байт, кощунство.
Последний раз редактировалось FreeTramp; 05.08.2015 в 22:07.
|
|
|
|
05.08.2015, 22:15
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
На одном аппаратном таймере можно сделать сколь угодно программных таймеров, кратных по времени периоду переполнения аппаратного таймера. Просто в прерывании аппаратного таймера считать (инкремент или декремент) регистры программных таймеров. Ну и для ШИМ взять программный таймер, не изменяя значения аппаратного таймера.
|
|
|
|
06.08.2015, 11:07
|
|
|
Прописка
Регистрация: 24.12.2006
Сообщений: 167
Сказал спасибо: 9
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
Сообщение от NewWriter
|
|
На одном аппаратном таймере можно сделать сколь угодно программных таймеров, кратных по времени периоду переполнения аппаратного таймера. Просто в прерывании аппаратного таймера считать (инкремент или декремент) регистры программных таймеров. Ну и для ШИМ взять программный таймер, не изменяя значения аппаратного таймера.
|
Не все так просто как кажется. На первый взгляд, все должно работать, но это справедливо только для одного разряда индикатора. Для динамической индикации такой фокус не проходит. При динамической индикации, нужно в одном и том же прерывании гасить предыдущий разряд и выдавать лог. 1 на следующий, иначе будет то что у меня на картинке. Импульсы будут сдвинуты и как следствие, будет мерцание разрядов. Значит для нормальной индикации, период следования импульсов одного разряда будет равен, длительности положительного импульса одного разряда, умноженного на число разрядов индикатора. Так что при уменьшении времени импульса, будет меняться и период, иначе (см. картинку). Вот такая арифметика.
|
|
|
|
06.08.2015, 11:37
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
|
Re: Как снизить дискретность тахометра в авто?
FreeTramp, а не пробовали менять скважность "импульсов индикации" другим способом, например, просто выбрасывать (пропускать) импульс?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:24.
|
|