АвторСообщение
постоянный участник


Пост N: 110
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 26.10.13 20:13. Заголовок: Правильный тахометр


Всем привет.
Даже не знаю как задать вопрос, ну пусть будет так:
Существует ли формула точного тахометра?
В начале для пробы написАл программу классику - TMR0 без преддделителя считает импульсы в течении секунды, преобразуем и выводим.
Даже в железе попробовал. С цифровыми приборами все прекрасно работает, на деле дискретность показаний равна 60, показания прыгают.
В принципе я этого ожидал.
Начал писать вторую - на измерении времени между импульсами, то есть формула:
1 секунду делим на время между импульсами - правильно ли это?
Но, что то пока не нравятся мне показания:
-при прерывании раз в 8 мкс при максимальной частоте 150 гц ошибка на 80 оборотов
-при прерывании раз в 4 мкс при максимальной частоте 150 гц ошибка на 40 оборотов
Хотел бы попробовать без предделителя погонять, но нет подпрограммы деления 4 байтного на 2 байтное - если кому не жалко, заранее спасибо
Ну, в общем как то так.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 37 [только новые]


moderator




Пост N: 615
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 26.10.13 21:17. Заголовок: Сань, тут прикреплят..


Сань, тут прикреплять тяжело. Давай куда нибудь кину программку.
Насчет тахометра. Сколько импульсов на оборот? И при чем прерывания?
В принципе, готовый проект маленький. Так размещу.

     list        p=16f876a   
include <p16f876a.inc>
ERRORLEVEL -302, -305
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_OFF & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF& _DEBUG_OFF



CBLOCK 0x020
delimL ;делимое
delimM
delimH
delimHH
count
octH ; остаток
octL
delH ; делитель
delL
ENDC

org 0x000
nop
; проверка
nop
movlw 0
movwf delimL
movlw 0x87
movwf delimM
movlw 0x93
movwf delimH
movlw 0x03
movwf delimHH
movlw 0x09
movwf delH
movlw 0x60
movwf delL


divide movlw 32
movwf count
clrf octL
clrf octH

dvloop clrc

rlf delimL
rlf delimM
rlf delimH
rlf delimHH
rlf octL
rlf octH

skpnc
goto subd
movfw delH
subwf octH,w
skpz
goto testgt
movfw delH
subwf octL,w
testgt skpc
goto remrlt

subd movfw delL
subwf octL
skpc
decf octH
movfw delH
subwf octH
bsf delimL,0

remrlt decfsz count
goto dvloop
return
nop
nop

End


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 111
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 26.10.13 21:22. Заголовок: Sank61@bk.ru Прерыва..


Sank61@bk.ru
Прерывания в TMR1
Саша спасибо, что так быстро

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 616
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 26.10.13 21:26. Заголовок: Счас кину по человеч..


Счас кину по человечески.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 112
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 26.10.13 21:27. Заголовок: Хочу 1 импульс на об..


Хочу 1 импульс на оборот. Датчик оптический. Белую бумажку на на шкив (на станки делаю) приклеил и пусть считает

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 617
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 26.10.13 21:28. Заголовок: А TMR1 есть? с ним н..


Короче, поясни что кого прерывает. И кто считает импульсы.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 113
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 26.10.13 21:33. Заголовок: Чего то я сразу заво..


Чего то я сразу заволновался, сейчас проект открою


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 114
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 26.10.13 21:36. Заголовок: Считает импульсы RB0..


Считает импульсы RB0, время считает TMR1, кварц 4

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 618
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 26.10.13 21:39. Заголовок: Если 1 импульс на об..


Если 1 импульс на оборот, то мах. длительность измерительного импульса 1сек
Понятно. INT фиксирует. А считает программный счетчик.
Подскажи нижний верхний диапазон возможных оборотов



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 115
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 26.10.13 21:41. Заголовок: Ага, это программа д..


Ага, это программа деления появилась у тебя в сообщении? Спасибо.
Чего то я все делю в последнее время

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 619
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 26.10.13 21:44. Заголовок: А письмо мое тебе на..


А письмо мое тебе на адрес не пришло. Хакер блин


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 116
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 26.10.13 21:44. Заголовок: Если 1 импульс на об..



 цитата:
Если 1 импульс на оборот, то мах. длительность измерительного импульса 1сек


Вот этого не понял

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 117
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 26.10.13 21:47. Заголовок: Проверил почту - при..


Проверил почту - пришло. Спасибо еще раз

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 118
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 26.10.13 21:50. Заголовок: Подскажи нижний верх..



 цитата:
Подскажи нижний верхний диапазон возможных оборотов


Верхний - 4 разряда индикаторы значит 9999
нижний оборотов 100-200
А вообще, так я делаю "правильный тахометр" хотелось бы от 1 оборота тысяч до 20. Но это хотелки

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 620
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 26.10.13 22:13. Заголовок: Ну будем считать 100..


Ну будем считать 100 об\сек нижний (обычно считают в минутах)
Посмотри здесь Может, что поможет.
Считать импульсы проще и удобней, чем длительность, тем более INT. Это из опыта. В принципе в промышленности их и считают.
100 имп. сек; 1сек/100=10мс . Т.е. измерительный интервал тебе не нужно делать 1 сек. Достаточно 10 мс. Сбросил таймер с счетных входом, лучше TMR1, запустил TMR0 на 10мс. Прервался, считал импульсы. Получается сколько оборотов за 10мс. умножил на 100 вот и обороты в секунду.
Спокойно преобразуешь, выводишь на индикацию раз в секунду приблизительно. И опять заново.
Делитель TMR0 на 1/64, предустановка .100 или .99 для 10мс. А там сколько накрутишь. 1 импульс за 10мс вот и 100об/сек
Если от 1 оборота, надо увеличивать импульсы на оборот, или измерять за 1 сек, или измерять длительность. Но длительность много подводных камней. Теоретически все просто, если будет идеальный датчик
Но очень низкие обороты очень тяжело измерить. Если ничего больше делать не надо, то проще и точней считать импульсы за 1 сек.



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 119
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 26.10.13 23:43. Заголовок: Ну будем считать 100..



 цитата:
Ну будем считать 100 об\сек нижний (обычно считают в минутах)

- мне тоже в минутах надо.

 цитата:
Считать импульсы проще и удобней

- согласен на все 100 но:
как правильно перевести импульсы (герцы) в обороты в минуту?
Я когда 1 тахометр делал считал так:
1 гц х 60 = 60 об.мин
2 гц х 60 =120 об.мин
и так далее. Вот она дискретность в 60 оборотов и вырисовывается. А как мерить 70, 75 оборотов?
Или я не прав?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 383
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 06:25. Заголовок: Diam пишет: Вот он..


Diam пишет:

 цитата:
Вот она дискретность в 60 оборотов и вырисовывается. Или я не прав?


Для меня, прав. Недавно закончил узел тахометра для любительского сверлильного станочка.
Имею два импульса на оборот шкива, 30 об/мин дискретность. Дело, думаю, в умножении на 60.
Сколько импульсов не намерить, после умножения последняя цифра на индикаторе - 0, но не 5.



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 120
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 08:58. Заголовок: Вячеслав пишет: Име..


Вячеслав пишет:

 цитата:
Имею два импульса на оборот шкива, 30 об/мин дискретность.


Тогда получается - с увеличением количества меток на шкиве падает дискретность и повышается точность.
Но, тогда получается, что проще взять частотомер, сделать на валу 60 меток (аппаратное умножение) и будет все ОК

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 384
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 10:36. Заголовок: Diam пишет: проще ..



Diam пишет:

 цитата:
проще взять частотомер


Не понял юмора. Индицируй об/сек или количество импульсов за секунду.
Нужна ли точность тахометра на сверлилке (я всё о своём ) до 0,5 оборота?
Закрепил 2 магнита на шкив двигателя только ради его центровки, если датчик по светоотражению, ИМХО - 1 импульс на оборот , достаточно для моего случая.
Вот из моего архива по тахометру :
".......По сути тахометр - это обычный частотомер, домножающий измеренную частоту на 60/N, где N - число лопастей того устройства, что призвано преобразовать электрическую (ну или метаноловую) энергию в механическую, ведь более распространенной единицей измерения оборотов является об/мин. Вот алгоритм, в большинстве своих строк, и повторяет частотомер."

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 121
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 11:52. Заголовок: Вячеслав пишет: Нуж..


Вячеслав пишет:

 цитата:
Нужна ли точность тахометра на сверлилке

- на сверлилке не нужна, но ведь есть места где нужна более высокая точность.
Меня больше раздражает скакание показаний.

По поводу подпрограммы деления:
divide movlw 32
movwf count
clrf octL
clrf octH
В какой системе счисления число 32. Похоже точку перед ним надо поставить. А так работает.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 122
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 12:54. Заголовок: Китайцы продают вот ..


Китайцы продают вот такие наборы:
http://shot.qip.ru/00eDOt-3sGa1lfwD/
там диск с 40 делениями. И чем им нравится число 40

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 621
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 27.10.13 15:49. Заголовок: Diam пишет: Я когда..


Diam пишет:

 цитата:
Я когда 1 тахометр делал считал так:
1 гц х 60 = 60 об.мин
2 гц х 60 =120 об.мин
и так далее. Вот она дискретность в 60 оборотов и вырисовывается. А как мерить 70, 75 оборотов?
Или я не прав?


Конечно прав. Поэтому в промышленных тахометрах не менее 1000 имп. на оборот. Но такие диски не все потянут.
Остальное все "показометры" типа тахометров на автомобилях.
Альтернатива, считать длительность импульса. Там точно. Но надо делить 60.000.000 на длительность.
60.000.000// TMR1 х reg_ch\
3938700h / TMR1 x reg_ch = частота оборотов минуту
reg_ch -это счетчик переполнения TMR1 при такте 1 мкс
И есть еще ПРОБЛЕМКА получить на малых оборотах до 100 150 об/мин четкий фронт измерительного импульса.
Ну например, пусть INT компаратор и т.д. фиксирует фронт. Он это четко делает. При малых оборотах фронт начинает затягиваться и происходит несколько срабатываний в районе гистерезиса. При чем не всегда и не постоянно. И тут начинается ахинея. Вместо 50 об/мин получаем 38000. Хотя прога работает нормально, она получила импульс. Опять надо увеличивать количество импульсов на оборот, между ними измерять и т.д. Этот парадокс.. Я его два года изучал в гараже с цифровым осциллографом и даже наметил путь решения. Сделать сложный датчик с собственным контроллером. Но пока это только ради интереса. Времени особенно нет и я знаю как делают профи. Считают импульсы на 1000 --2000 импульсных датчиках.
Выбор по сути ограничен.
Diam пишет:

 цитата:
divide movlw 32
movwf count
clrf octL
clrf octH
В какой системе счисления число 32. Похоже точку перед ним надо поставить. А так работает.


Ну я думал, что ты догадаешься, что в 4 байтном числе 32 бита. И ты оправдал мои ожидания

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 123
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 16:00. Заголовок: MAZ пишет: Но надо д..


MAZ пишет:

 цитата:
Но надо делить 60.000.000 на длительность.


Александр этим сейчас и занимаюсь
похоже ты правильно подметил:
подаю 20 гц вычисляет 1200
подаю 20,5 гц вычесляет 1230
подаю 10 гц вычесляет 1740 на малых оборотах какую то фигню вычесляет

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 623
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 27.10.13 16:05. Заголовок: Я не догоняю. Какие ..


Я не догоняю. Какие Гц? Вычисляет все нормально. Ты учитываешь прерывания таймера? В смысле переполнения? Хоть ИНТ, хоть счетчиком. Или просто импульсы подаешь от генератора?




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 124
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 16:17. Заголовок: Саша может я не прав..


Саша может я не правильно объясняю, но уж как умею
TMR1 без предделителя считает время, по прерывании INT он останавливается. 60.000.000 делю на показания двухбайтного счётчика-таймера TMR1H:TMR1L.
Дальше двоично-десятичное преобразование.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 125
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 16:22. Заголовок: Герцы пока подаю в П..


60.000.000 это у меня константа

Герцы пока подаю в Протеусе

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 624
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 27.10.13 16:28. Заголовок: На малых оборотах дв..


На малых оборотах двухбайтный Таймер должен переполнится,произойдет прерывание, это надо зафиксировать не прерывая счета.
Потом количество прерываний умножить на FFFF, и прибавить что осталось в таймере.
Как умножить быстро здесь
В моем варианте с временем обработки было туго. Надо было еще ПИД регулирование успевать делать, то просто проверял на ноль счетчик переполнений, и умножал если только не ноль


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 126
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 16:34. Заголовок: На малых оборотах дв..



 цитата:
На малых оборотах двухбайтный Таймер должен переполнится


за подсказку спасибо, про это даже мыслей не было

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 625
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 27.10.13 16:43. Заголовок: Просто не представил..


Просто не представил этот процесс
60об/мин ( всего лишь)= 1об/сек= 1000000 мкс (тактов) и это 15 переполнений
Diam пишет:

 цитата:
подаю 10 гц вычесляет 1740 на малых оборотах какую то фигню вычесляет


Вот у тебя и получается 100000 мкс - одно переполнение которое не учитываешь и остаток 52587
Делим 60000000/52587=1141. Очень похоже. Хотя на бумаге все очень идеально чем а реале


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 127
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 16:57. Заголовок: Ага, ты смеешься. :s..


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

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 626
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 27.10.13 17:11. Заголовок: Конечно у каждого св..


Конечно у каждого своя. На его взгляд - самая оптимальная. Только делить уже надо на трехбайтное.
Ну или учи Си. Там просто. Разделить и все. Без всяких нервов
Проверь почту на всякий случай.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 128
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 17:28. Заголовок: Проверил - ты уже го..


Проверил - ты уже готовишь мне высшую математику?
Может все таки есть попроще выход? Ну там кварц сменить. И почему все таки когда играешь предделителем накапливается ошибка.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 627
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 27.10.13 20:39. Заголовок: Предделитель, это то..


Предделитель, это тот же самый регистр, который тебе не доступен. Что там осталось, никто не знает. Вспомни старые методы досчета частотомеров на TMR0. У тебя с начала заполняется предделитель, например 256 импульсов, потом переполнение и только запись в таймер. Так несколько раз и тут стоп, измерение окончено. Ты берешь данные из таймера, а что в предделителе, хрен его знает.

А куда деваться? Ну смени кварц сделай 1 сек такт Кстати TMR1 можно отдельным кварцем тактировать, тот же часовой 32768. Ну и что это изменит?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 129
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 20:58. Заголовок: С предделителем поня..


С предделителем понятно.

 цитата:
А куда деваться? Ну смени кварц сделай 1 сек такт Кстати TMR1 можно отдельным кварцем тактировать, тот же часовой 32768. Ну и что это изменит?

- пища для размышлений есть, зима длинная, будем думать

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 628
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 27.10.13 21:05. Заголовок: Везет. А мне некогда..


Везет. А мне некогда по паять. Хотя и пенсионер. Одни бытовые кружева.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 130
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.10.13 23:00. Заголовок: Везет. А мне некогда..



 цитата:
Везет. А мне некогда по паять. Хотя и пенсионер. Одни бытовые кружева.


Чего уж везет. Такие же бытовые проблемы. Я тоже больше года паяльник в руки не брал, MPLAB не заводил - все строился.
Вот только начал. И так ничего не знал и остальное забыл

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 131
Зарегистрирован: 05.06.08
Откуда: Россия, Челябинская область
Рейтинг: 1
ссылка на сообщение  Отправлено: 29.10.13 15:01. Заголовок: Александру еще раз б..


Александру еще раз благодарность, за программу деления 6х3
И как это он раньше меня узнал, что она мне понадобится

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 629
Зарегистрирован: 01.03.11
Рейтинг: 3
ссылка на сообщение  Отправлено: 29.10.13 17:32. Заголовок: Так ты повторяешь ве..


Так ты повторяешь весь мой путь. А я уже все мины почти подорвал. Тебе проще пока. Вот выйдешь на оперативный простор....


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия