|
|
  |
Измерение частоты через АЦП, Как сделать? |
|
|
|
Oct 28 2011, 06:19
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Цитата(Павлик @ Oct 27 2011, 23:07)  Поставить РС814 на переменку, транзистор оптопары на подтяжку +5 питания меги, заводи на прерывание меги и считай. Я об этом думал ... По сути тот же компаратор. Но у меня все замеры по 3-м каналам АЦП делаются в прерывании таймера (1 мс). Сам АЦП работет по опросу, без прерываний. Т.е. это прерывание "долгоиграющее". Поэтому существует вероятность, что INT от оптопары или компаратора будет пропущено. В доке я что-то ничего про этот момент не нашёл  , может плохо искал.... Если есть, ткните носом плиз. Менять алгоритм не хотелось бы (уже всё отлажено), поэтому у меня и потекли мысли в сторону 2-го камня, который спокойно посчитает эту частоту, а потом легко отдаст её основному процу по какому-нибудь SPI (жаль только, что у тини нету железного SPI, эмулировать придётся ...). Когда цикл измерений закончен и "измеряющий" таймер выключен. Тинька даже дешевле отдельных счётчика и компаратора. По крайней мере, по местным ценам. А если ещё задуматься о способе считывания этого счётчика, 3-стаб. буферы, там тем более 2-й проц и дешевле и удобнее.
Сообщение отредактировал hd44780 - Oct 28 2011, 06:28
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Oct 28 2011, 06:34
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
QUOTE (hd44780 @ Oct 28 2011, 10:19)  Поэтому существует вероятность, что INT от оптопары или компаратора будет пропущено. В доке я что-то ничего про этот момент не нашёл  , может плохо искал.... Если есть, ткните носом плиз. Прерывания INTX старшие прерывания AVR и если уж они вкл. то проц их никогда не пропустит. Какая разрядность АЦП? Вы можете посчитать сколько time уходит на одно преобразование  Если укладываетесь в 20ms , то у Вас вполне остается время переключить входы и посчитать все значения на одном АЦП
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Oct 30 2011, 07:01
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Перепаял слегка схему, освободил 5 младших ног PORTB. Задействовал встроенный в Mega16 компаратор - AIN- - ср. точка (она же ADC0), AIN+ - вх. сигнал напряжения (ADC1), включил прерывание компаратора по нарастанию сигнала, параллельно TC2 считает миллисекунды. Куски кода: // Timer 2 overflow interrupt service routine // -- Частота прерываний 1 kHz = 1 мс - 20 раз за период 50 Гц (20мс) // -- 1000 раз в секунду interrupt [TIM2_OVF] void timer2_ovf_isr(void) { // Reinitialize Timer 2 value TCNT2=0x83; // Миллисекунды ms++; } // timer2_ovf_isr // Analog Comparator interrupt service routine // Переход синусоиды вверх через 0 interrupt [ANA_COMP] void ana_comp_isr(void) { pulses++; } // ana_comp_isr Расчёт частоты: //////////////////////////////////////////////// // Частота frequency = pulses*1000.0; frequency/=ms; ms, pulses - dword, frequency - float. ms, pulses обнуляются только при первичной инициализации по включении питания. "Измеряющий" таймер TC0 и АЦП пока выключены, т.е. прибор меряет только частоту. Получил результаты 50.10 ... 50.30 Гц - бегает. Заводской прибор показывает 49.98-48.99 Гц Единствнное, что приходит в голову, это то, что переменные pulses и ms наверняка меняются, пока расчитывается частота. Когда-то я уже натыкался на это. Попробую ввести переменные-защёлки для них и кратковременный запрет прерываний.
Сообщение отредактировал hd44780 - Oct 30 2011, 07:06
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Oct 30 2011, 15:14
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 18-07-05
Пользователь №: 6 871

|
Вам же Палыч на первой странице показал алгоритм, а вы делаете всё наоборот.
|
|
|
|
|
Oct 30 2011, 15:47
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
woroba, не валите всё в одну кучу. Замечания Палыча касаются измерения тока и напряжения. К измерению частоты через компаратор они не относятся, хотя бы потому, что аналогового компаратора тогда не было.
Кстати - проверил внутренний компаратор основному алгоритму не мешает. Так что, К554СА3, наверное, не нужен.
Сообщение отредактировал hd44780 - Oct 31 2011, 07:12
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Oct 31 2011, 07:09
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Цитата(DrGluck @ Oct 31 2011, 09:44)  А попробуйте пересчитать полученную погрешность измерения в свете используемого кварца на проце. У Вас же там не атомные часы подключены ? Наверняка что-нибудь из области 60 ppm ... А как пересчитать? Сделать генератор и померять прибором сколько Гц он выдаст? Кварц хрен знает какой, родом из радиобазара  ... На нём написано - MC 8.000 MHz. Кстати, его корпус заземлять надо? Иногда в схемах с такое видел... У меня пока незаземлён. Всё, что приходит в голову - ввести калибровочную константу и отнимать/прибавлять её (или делить/умножать - пока не знаю), как это делается с током и напряжением.
Сообщение отредактировал hd44780 - Oct 31 2011, 07:15
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Oct 31 2011, 07:39
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-11-05
Из: Россия
Пользователь №: 11 361

|
Цитата Кварц хрен знает какой, родом из радиобазара ... На нём написано - MC 8.000 MHz. ... без комментариев  P.S. "Пересчитать" - подразумевалось как эквивалент "А что Вас собственно удивляет ?" ...
Сообщение отредактировал DrGluck - Oct 31 2011, 07:41
--------------------
"... Ищущий вечно, однажды найдя, то, что искал бесконечно, мимо прошёл, совершенно беспечно, с кем-то о вечном шутя ..."
|
|
|
|
|
Oct 31 2011, 11:15
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Ну и что? Про излучение цезия-133 ( http://metrologyia.ru/?page_id=103 ) я и так знаю  А как мне это может помочь  ?
Сообщение отредактировал hd44780 - Oct 31 2011, 11:15
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Oct 31 2011, 11:54
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(hd44780 @ Oct 30 2011, 18:47)  Замечания Палыча касаются измерения тока и напряжения. Нет. Мои замечания выше касались именно подсчета частоты. Что видно "невооруженным" глазом: 1. Запуск таймера не "привязан" к началу цикла (сброс в ноль переменной ms - это очень грубо!), поэтому таймер, скорее всего, насчитает "немного" меньше (частота получится "немного" больше). 2. ТС говорит выше о измерении за Х мс. За это время может быть зафиксиворанно только целое число периодов. "Нецелая" часть периода в расчете не участвует. Поскольку тики таймера гораздо меньше N периодов, то лучше (точнее) расчет будет за целое число периодов измеряемой величины. Т.е. окончанием измерения должно быть фиксация N периодов. Цитата(hd44780 @ Oct 31 2011, 10:09)  На нём написано - MC 8.000 MHz. Кстати, посмотрите в справочной литературе: чем отличаются кварцы, на которых написано "8.000 MHz", от тех, где написано "8000 kHz"
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|