Страница 81 из 304

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:01:37
Magicanin
Ну насколько я знаю даже на холостом ходу обороты держатся на уровне 900 об/мин, или я не прав!
Даже на этих оборотах погрешность не будет превышать 50 об/мин, чем выше количество тем меньше погрешность. В любом случае будет точнее чем стрелочный малоинформативный тахометр.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:13:36
AVRDaemon
средние холостые от 800 до 900 это норма.

Код: Выделить всё

я посмотрел что при одном Гц у меня на жки значение 59463 = 1 ГЦ
                                                            ^  сама частота
                                                     ^ время между импульсами
при 100 ГЦ значение на жки 1249
следовательно можно получить точный тахометр, расчитав делитель для таймера.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:14:56
edm2007
Magicanin, я так понимаю он говорит о том что не была бы погрешность +- 100 оборотов... А так считать как угодно можно. Хоть количество импульсов хоть время между ними. Тем же таймером в режиме захвата, например...

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:19:32
AVRDaemon
я считаю время между импульсами, и пытаюсь конвертировать их в частоту.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:24:47
Magicanin
Зная малоизученность вопроса со стороны господина AVRDaemon, решил предложить самый простой способ, чтоб не заморачивался с коэффициентами и конвертированием.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:26:35
edm2007
Да конечно, самый простой вариант. :)

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:29:36
AVRDaemon
формулу не подскажете? :)

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:32:28
edm2007
Простите, формулу чего? Как перевести количество оборотов за 1 секунду в количество оборотов в минуту? :))

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:33:25
Magicanin
Единственная сложность подбор кварца, чтобы при выбранном прескаллере на выходе была секунда либо другое удобоваримое значение. Или второй вариант Timer1 с независимым часовым кварцем на 32768

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:35:41
edm2007
Не вижу проблем. Прерывание по совпадению и все. Секунда великолепно получается.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:41:04
AVRDaemon
нашел другой код, попробую адаптировать..

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:44:26
Magicanin
Тоже вариант если будет успевать прерываться до переполнения. :)
Можно если использовать подсчет переполнений.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:52:04
Magicanin
следовательно можно получить точный тахометр, расчитав делитель для таймера.
Погрешности в этом варианте так же не избежны.
Т.к. с приходом внешнего прерывания таймер сбросится не закончив цикл и прировняется к наименьшему предыдущему значению.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 17:52:31
AVRDaemon
Magicanin писал(а):Тоже вариант если будет успевать прерываться до переполнения. :)
Можно если использовать подсчет переполнений.
вот этот код и нашел) :))

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 18:09:50
Magicanin
Нашел тут в закромах кусок кода от ваттметра-приставки к электросчетчику с импульсным выходом.
Что к чему уже и не вспомню, может поможет.
Принцип измерения тот-же

Код: Выделить всё

...
Config Timer1 = Timer , Prescale = 1024 , Capture Edge = Falling
On Capture1 Captmr
On Timer1 Per
...
    Enable Interrupts
    Enable Capture1
    Enable Timer1
...
Sub Style6

  F = R * 65535
  F = F + Capture1
  F = F /15885
  F = 1125 / F
  Locate 1 , 1 : Lcd "ЁoїpeІ»ЗeјaЗ Е».ЕЅ.:"
  Locate 2 , 1 : Lcd Round(f) ; " Baїї    "
  Locate 3 , 1 : Lcd "Ko»-іo ёјѕy»Дcoі:"
  Locate 4 , 1 : Lcd Imp
  If Imp = 200 Then
  Cls
  Style = 1
  End If
Reset Watchdog
End Sub
Captmr:
  Incr Imp
  Timercounter = Capture1
  Timer1 = 0
  R = 0
Return
Per:
Incr R
Return

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 18:24:13
edm2007
Таймер в режиме захвата. Плюс еще подсчет переполнений таймера... А вообще по мне, так жутко неудобно наблюдать за оборотами в виде цифр. Меняются обороты и на индикаторе каша. :) Тут стрелка гораздо информативнее. Ну или дуга светодиодов... А цифрами разве что холостые выставлять хорошо. :) И раз уж цифры, так лучше за секунду считать, пусть шаг 60 будет, все меньше дрыганий. Впрочем, это всего лишь мое мнение...

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 04, 2011 18:31:01
AVRDaemon
поставил бы море плюсов вам, т.к показали хороший код, а обороты я хотел через waitms 300 выводить на ЖКИ.
благодарствую!

Re: BASCOM AVR в вопросах и ответах

Добавлено: Чт май 05, 2011 17:09:25
AVRDaemon
хм...
измерять время между импульсами самый лучший вариант, и более точный со сравнению подчета импульсов за секунду(врет аж на 60 об мин.)
у меня тут запара с расчетом нормальной частоты:

Код: Выделить всё


Config Timer1 = Timer , Prescale = 64 , Capture Edge = Rising  
Dim Wtime As Byte
dim rpm as single

On Capture1 Captmr
Enable Interrupts
Enable Capture1

Wtime = 100

Do
  Waitms Wtime
  Locate 1 , 1
  Rpm = Capture1 
 Lcd "rpm: " ; Rpm ; "     "
Loop

Captmr:
  Timer1 = 0
Return

этот код считает время между импульсами, при одном герце выводит на жки 59463
при 100гц выводит 1249
(что это может быть, я незнаю, похоже на время между двумя сигналами, и в чем оно измеряется я так и не понял)
может кто нибудь подскажет формулу вычисления об/мин из этих значений?

заранее благодарен.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Чт май 05, 2011 17:36:02
edm2007
Называйте вещи своими именами, не врет а шаг 60 оборотов. :) Оно и логично. Может стоит разобраться нормально с работой таймера по захвату? Да и вообще с работой таймера. С предделителями, со временем одно тика таймера и прочее...

Re: BASCOM AVR в вопросах и ответах

Добавлено: Чт май 05, 2011 17:45:02
AVRDaemon
делать на таймере, который считает импульсы в секунду, и затем их умножать на 60, получим менее точный результат с погрешностью 60 (кэп)
я хочу сделать на различии времени между импульсами(шагами) а выложенный код и есть в режиме захвата.
помогите только понять: это миллисекунды? 1246мс? или что?