реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Измерение частоты через АЦП, Как сделать?
maksimp
сообщение Oct 27 2011, 19:07
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Если один отсчёт АЦП например больше нуля, а следующий (через 1 мс) - меньше нуля, то можно между ними провести линейную интерполяцию сигнала и более точно определить момент перехода через 0.
По таким уточнённым переходам через 0 вычисляем период, а затем - частоту.

Если не очень спешим от ждём несколько периодов и по их суммарной длине вычисляем частоту. Но тут есть лучший вариант, на основе аппроксимации зависимости "время перехода через 0" от "номер по порядку перехода через 0" с помощью прямой по методу наименьших квадратов. Тогда частота - обратная величина к наклону этой прямой.
Go to the top of the page
 
+Quote Post
pavel-pervomaysk
сообщение Oct 27 2011, 20:07
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716



Поставить РС814 на переменку, транзистор оптопары на подтяжку +5 питания меги, заводи на прерывание меги и считай.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Oct 28 2011, 06:19
Сообщение #18


Профессионал
*****

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



Цитата(Павлик @ Oct 27 2011, 23:07) *
Поставить РС814 на переменку, транзистор оптопары на подтяжку +5 питания меги, заводи на прерывание меги и считай.


Я об этом думал ... По сути тот же компаратор.
Но у меня все замеры по 3-м каналам АЦП делаются в прерывании таймера (1 мс). Сам АЦП работет по опросу, без прерываний. Т.е. это прерывание "долгоиграющее".
Поэтому существует вероятность, что INT от оптопары или компаратора будет пропущено. В доке я что-то ничего про этот момент не нашёл sad.gif , может плохо искал.... Если есть, ткните носом плиз.

Менять алгоритм не хотелось бы (уже всё отлажено), поэтому у меня и потекли мысли в сторону 2-го камня, который спокойно посчитает эту частоту, а потом легко отдаст её основному процу по какому-нибудь SPI (жаль только, что у тини нету железного SPI, эмулировать придётся ...). Когда цикл измерений закончен и "измеряющий" таймер выключен.

Тинька даже дешевле отдельных счётчика и компаратора. По крайней мере, по местным ценам. А если ещё задуматься о способе считывания этого счётчика, 3-стаб. буферы, там тем более 2-й проц и дешевле и удобнее.

Сообщение отредактировал hd44780 - Oct 28 2011, 06:28


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 28 2011, 06:34
Сообщение #19


Профессионал
*****

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



QUOTE (hd44780 @ Oct 28 2011, 10:19) *
Поэтому существует вероятность, что INT от оптопары или компаратора будет пропущено. В доке я что-то ничего про этот момент не нашёл sad.gif , может плохо искал.... Если есть, ткните носом плиз.

Прерывания INTX старшие прерывания AVR и если уж они вкл. то проц их никогда не пропустит. Какая разрядность АЦП?
Вы можете посчитать сколько time уходит на одно преобразование Если укладываетесь в 20ms , то у Вас вполне остается время переключить входы и посчитать все значения на одном АЦП


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
hd44780
сообщение Oct 30 2011, 07:01
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 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 Гц rolleyes.gif

Единствнное, что приходит в голову, это то, что переменные pulses и ms наверняка меняются, пока расчитывается частота. Когда-то я уже натыкался на это. Попробую ввести переменные-защёлки для них и кратковременный запрет прерываний.

Сообщение отредактировал hd44780 - Oct 30 2011, 07:06


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
hd44780
сообщение Oct 30 2011, 09:10
Сообщение #21


Профессионал
*****

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



Переменные-защёлки не помогли.
Стабильно показывает 50.37 Гц при 49.97 по прибору.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
woroba
сообщение Oct 30 2011, 15:14
Сообщение #22


Участник
*

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



Вам же Палыч на первой странице показал алгоритм, а вы делаете всё наоборот.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Oct 30 2011, 15:47
Сообщение #23


Профессионал
*****

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



woroba, не валите всё в одну кучу.
Замечания Палыча касаются измерения тока и напряжения.
К измерению частоты через компаратор они не относятся, хотя бы потому, что аналогового компаратора тогда не было.

Кстати - проверил внутренний компаратор основному алгоритму не мешает. Так что, К554СА3, наверное, не нужен.

Сообщение отредактировал hd44780 - Oct 31 2011, 07:12


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
DrGluck
сообщение Oct 31 2011, 06:44
Сообщение #24


Местный
***

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



А попробуйте пересчитать полученную погрешность измерения в свете используемого кварца на проце. У Вас же там не атомные часы подключены ? Наверняка что-нибудь из области 60 ppm ...

Сообщение отредактировал DrGluck - Oct 31 2011, 06:45


--------------------
"... Ищущий вечно, однажды найдя, то, что искал бесконечно, мимо прошёл, совершенно беспечно, с кем-то о вечном шутя ..."
Go to the top of the page
 
+Quote Post
hd44780
сообщение Oct 31 2011, 07:09
Сообщение #25


Профессионал
*****

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



Цитата(DrGluck @ Oct 31 2011, 09:44) *
А попробуйте пересчитать полученную погрешность измерения в свете используемого кварца на проце. У Вас же там не атомные часы подключены ? Наверняка что-нибудь из области 60 ppm ...


А как пересчитать? Сделать генератор и померять прибором сколько Гц он выдаст?
Кварц хрен знает какой, родом из радиобазара biggrin.gif ... На нём написано - MC 8.000 MHz.
Кстати, его корпус заземлять надо? Иногда в схемах с такое видел... У меня пока незаземлён.

Всё, что приходит в голову - ввести калибровочную константу и отнимать/прибавлять её (или делить/умножать - пока не знаю), как это делается с током и напряжением.

Сообщение отредактировал hd44780 - Oct 31 2011, 07:15


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
DrGluck
сообщение Oct 31 2011, 07:39
Сообщение #26


Местный
***

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



Цитата
Кварц хрен знает какой, родом из радиобазара ... На нём написано - MC 8.000 MHz.

... без комментариев sm.gif
P.S. "Пересчитать" - подразумевалось как эквивалент "А что Вас собственно удивляет ?" ...

Сообщение отредактировал DrGluck - Oct 31 2011, 07:41


--------------------
"... Ищущий вечно, однажды найдя, то, что искал бесконечно, мимо прошёл, совершенно беспечно, с кем-то о вечном шутя ..."
Go to the top of the page
 
+Quote Post
hd44780
сообщение Oct 31 2011, 08:35
Сообщение #27


Профессионал
*****

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



Наверное, введу константу. Не будешь же делать тестовый генератор под каждый кварц....

Вот только какую константу лучше - для деления/умножения или прибавления/отнимания?
Пока мне думается второе.

Сообщение отредактировал hd44780 - Oct 31 2011, 08:36


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
DrGluck
сообщение Oct 31 2011, 08:57
Сообщение #28


Местный
***

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



http://metrologyia.ru/



--------------------
"... Ищущий вечно, однажды найдя, то, что искал бесконечно, мимо прошёл, совершенно беспечно, с кем-то о вечном шутя ..."
Go to the top of the page
 
+Quote Post
hd44780
сообщение Oct 31 2011, 11:15
Сообщение #29


Профессионал
*****

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



Ну и что?
Про излучение цезия-133 ( http://metrologyia.ru/?page_id=103 ) я и так знаю laughing.gif
А как мне это может помочь laughing.gif ?

Сообщение отредактировал hd44780 - Oct 31 2011, 11:15


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 31 2011, 11:54
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 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"
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 09:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01502 секунд с 7
ELECTRONIX ©2004-2016