Форум РадиоКот https://radiokot.ru/forum/ |
|
Частотомер https://radiokot.ru/forum/viewtopic.php?f=57&t=123128 |
Страница 1 из 3 |
Автор: | sirha [ Ср ноя 11, 2015 10:35:08 ] |
Заголовок сообщения: | Частотомер |
Всем привет заинтересовала тема частотомера не на таймерах Нужен частотомер частота которого определяется через АЦП микроконтроллера Видел схему осциллографа на atmega32: http://radiokot.ru/circuit/digital/measure/21/03.gif или здесь http://bezkz.su/publ/shemy/oscillografy/700212-oscillograf-na-mikrokontrollere-atmega32a.html хотелось бы узнать как в данной схеме прибор измеряет частоту? |
Автор: | Mishany [ Ср ноя 11, 2015 11:08:10 ] |
Заголовок сообщения: | Re: Частотомер |
измеряемая частота ограничена частотой преобразования АЦП, до 200кГц по даташиту для меги32 А про как подумайте сами, есть синус например как вычислить его частоту? по периоду, например запустить таймер по max, остановить по min и вычислить.... |
Автор: | B@R5uk [ Ср ноя 11, 2015 11:13:57 ] |
Заголовок сообщения: | Re: Частотомер |
sirha писал(а): как в данной схеме прибор измеряет частоту? Математически. Есть много разных способов. Например, можно посчитать ДПФ и по максимумам спектра найти все частоты, которые есть в сигнале. Обычно они кратны друг другу с целым числом, а наименьшая частота (частота основного тона) будет искомой частотой.Можно считать в лоб: засекать моменты, когда сигнал пересекает ноль. Время пересечения нуля как функция номера пересечения будет линейной функцией. Коэффициент пропорциональности — период. Обратный период есть искомая частота. Ещё более упрощённый вариант: посчитать время N периодов сигнала, поделить N на время, получится частота. |
Автор: | sirha [ Ср ноя 11, 2015 11:18:12 ] |
Заголовок сообщения: | Re: Частотомер |
Mishany писал(а): измеряемая частота ограничена частотой преобразования АЦП, до 200кГц по даташиту для меги32 по периоду, например запустить таймер по max, остановить по min и вычислить.... Можете расстолковать как это делается,про таймеры я знаю,но что вы имеете ввидду по мах и мин? Я так понял что нужно включить таймер как токо началось преобразование в АЦП и остановить его как токо закончилось?,это и будет период? B@R5uk писал(а): Математически. Есть много разных способов. Например, можно посчитать ДПФ Что за ДПФ? |
Автор: | B@R5uk [ Ср ноя 11, 2015 11:43:19 ] |
Заголовок сообщения: | Re: Частотомер |
Дискретное преобразование Фурье. |
Автор: | sirha [ Ср ноя 11, 2015 11:45:55 ] |
Заголовок сообщения: | Re: Частотомер |
B@R5uk писал(а): Ещё более упрощённый вариант: посчитать время N периодов сигнала, поделить N на время, получится частота. а можете подробно обьяснить как это сделать |
Автор: | B@R5uk [ Ср ноя 11, 2015 11:49:59 ] |
Заголовок сообщения: | Re: Частотомер |
Алгоритм: 1) ждать пересечение нуля передним фронтом сигнала. 2) начать считать число семплов сигнала и число пересечений нуля передним фронтом сигнала 3) остановиться считать, когда число пересечений нуля будет равно заданному 4) число пересечений нуля поделить на число семплов и умножить на частоту дискретизации, получится частота сигнала |
Автор: | sirha [ Ср ноя 11, 2015 11:58:25 ] |
Заголовок сообщения: | Re: Частотомер |
B@R5uk писал(а): Алгоритм: 1) ждать пересечение нуля передним фронтом сигнала. Уже первое непонятно ![]() Как это проследить? следить за флагами когда преобразование закончено ?- тогда 0? что значит передним фронтом сигнала? B@R5uk писал(а): 2) начать считать число семплов сигнала и число пересечений нуля передним фронтом сигнала что за семплов? количество полуволн?- но мы и так же будем считать переходы через 0 B@R5uk писал(а): 3) остановиться считать, когда число пересечений нуля будет равно заданному это до какого значения (вкл таймер на 1 секунду и замерить количество переходов?) B@R5uk писал(а): 4) число пересечений нуля поделить на число семплов и умножить на частоту дискретизации, получится частота сигнала частота дискретизации я так понял что если я АЦП ставлю 200 кгц то это и есть частотота дискретизации? |
Автор: | B@R5uk [ Ср ноя 11, 2015 12:23:44 ] |
Заголовок сообщения: | Re: Частотомер |
Что такое сэмплы, фронт сигнала и так далее вам объяснит Гугл. Когда разберётесь, ещё разок обдумайте алгоритм, и после этого спрашивайте, что у вас осталось не понятым. Если человек не будет сам разбираться в непонятных вещах, то никто за него этого делать не будет. |
Автор: | sirha [ Ср ноя 11, 2015 12:30:08 ] |
Заголовок сообщения: | Re: Частотомер |
B@R5uk писал(а): Когда разберётесь, ещё разок обдумайте алгоритм, и после этого спрашивайте, что у вас осталось не понятым. Если человек не будет сам разбираться в непонятных вещах, то никто за него этого делать не будет. А форум для чего нужнен?,я же не прошу вас писать мне прошивку, а просто прошу ответить на вопросы которые задал, хотя бы растолковать сказанное,ладно бы там был какой то вольтметр ,я бы разобрался, но тут честно говоря не так просто все Я почитал про семплы и передний и задний фронт импульса Все равно остались вопросы: 1.пересечение через ноль передним фронтом как определять? через флаги прерывания ? или по амплитуде сигнала? 2. как считать семплы?вообще не понимаю вкл таймер от перехода нуля и считать до заднего фронта по положительной волне ?,и по новой на отрицательной полуволне от перехода нуля? |
Автор: | B@R5uk [ Ср ноя 11, 2015 16:33:36 ] |
Заголовок сообщения: | Re: Частотомер |
sirha писал(а): пересечение через ноль передним фронтом как определять? Один семпл меньше нуля, следующий за ним — больше. Произошло пересечение нуля. Очевидно же.sirha писал(а): как считать семплы? А как считают байты или слова? Данные, читаемые с АЦП — это и есть последовательность семплов с известной частотой дискретизации. Сколько раз прочитали данные — такой и номер семпла.
|
Автор: | sirha [ Ср ноя 11, 2015 19:39:25 ] |
Заголовок сообщения: | Re: Частотомер |
B@R5uk писал(а): sirha писал(а): пересечение через ноль передним фронтом как определять? Один семпл меньше нуля, следующий за ним — больше. Произошло пересечение нуля. Очевидно же.sirha писал(а): как считать семплы? А как считают байты или слова? Данные, читаемые с АЦП — это и есть последовательность семплов].Хорошо тоесть смотрите: введем функцию ацп пусть у нас АЦП на 0 порту если Код: adc(0)>1 то мы отправляемся в прерывание по совпадению где у нас насчитывается некий семпл тоесть t++ если Код: adc(0)<0 сохраняем t под другой переменной t1 потом обнуляем переменную t и все по новой правильно ли я все понимаю подсчет половины полуволны, период получается 2t1? |
Автор: | Mishany [ Чт ноя 12, 2015 05:35:33 ] |
Заголовок сообщения: | Re: Частотомер |
sirha думаю вы рано взялись за такой проект, сделайте для начало пару вольтметров, кнопок на АЦП с нуля, а потом возращайтесь уже сюда. |
Автор: | sirha [ Чт ноя 12, 2015 07:15:18 ] |
Заголовок сообщения: | Re: Частотомер |
Mishany писал(а): sirha думаю вы рано взялись за такой проект, сделайте для начало пару вольтметров, кнопок на АЦП с нуля, а потом возращайтесь уже сюда. Пару вольтметров ,амперметров и даже более я уже сделал так что я сдесь ![]() B@R5uk писал(а): Один семпл меньше нуля, следующий за ним — больше. Произошло пересечение нуля. Очевидно же. Дак обьясните с чего начать то? Пока что в голову приходит что нужно начать с: введем сначала функцию АЦП, введем функцию Таймера: прерывание по совпадению далее будем смотреть когда у нас на входе больше 0,тогда будем запускать таймер по совпадению к примеру пусть каждые 10 мс в фунцию прерывания по совпадению введем некоторую переменную t++ пока верно мыслю ?,или нужно по другому алгоритму идти? |
Автор: | Mishany [ Чт ноя 12, 2015 07:45:28 ] |
Заголовок сообщения: | Re: Частотомер |
sirha писал(а): Можете расстолковать как это делается,про таймеры я знаю,но что вы имеете ввидду по мах и мин? Я так понял что нужно включить таймер как токо началось преобразование в АЦП и остановить его как токо закончилось?,это и будет период? Это будет не период сигнала, а период одного преобразования АЦП. Про мин/макс это амплитуда сигнала. Что бы понять нарисуйте синус раскадрируйте на произвольное количество замеров АЦП, на моем примере на оси t - 9 замеров и подумайте: о частоте сигнала и частоте преобразования и как, что можно вычислить и преобразовать и т.п. Спойлер![]() Я по дальше не посылал, я предложил немного опыта набраться, а опыт приходит при самостоятельной работе. У меня у самого по каждому проекту куча художеств на А4 листах... графики, формулы, расчеты... Инфа для размышления: по скольким точкам можно отрисовать синус? каждая точка это один замер АЦП, максимально-рекомендуемое количество замеров АЦП прописано в даташите на МК 50-200кГц. Далее: для определения только частоты АЦП не нужен, для рисования сигнала нужно АЦП, выходит 2 задачи для решения, решите их в отдельности, а потом совместите. возможно прийдется задействовать еще одну ногу МК и немного доп обвеса, и возможно Вы превзойдете по точности и функционалу примеры из первого поста. |
Автор: | sirha [ Пт ноя 13, 2015 19:33:45 ] |
Заголовок сообщения: | Re: Частотомер |
Mishany писал(а): Далее: для определения только частоты АЦП не нужен Подождите ,мне нужно определить частоту именно на ножках АЦП,как в осцилографе чтобы было ,я хочу частоту определять без всяких внешних прерываний и таймеров захватов и тому подобное Вы же сами написали что нужно вкл таймер на маx амплитуды,а раз я буду мерить амплитуду значит я буду мерить значение АЦП |
Автор: | Mishany [ Пт ноя 13, 2015 23:04:03 ] |
Заголовок сообщения: | Re: Частотомер |
в таком случае запасайтесь литературой по асм, и авр, без таймеров и т.п. придется по тактам все расписовать, обрабатывать массивы с ацп...... что бы бегать сначало надо научиться ходить. как по показаниям ацп определить момент максимума положительной полуволны? домашнее задание ![]() |
Автор: | sirha [ Пт ноя 13, 2015 23:18:24 ] |
Заголовок сообщения: | Re: Частотомер |
Mishany писал(а): что бы бегать сначало надо научиться ходить. как по показаниям ацп определить момент максимума положительной полуволны? домашнее задание ![]() я вас не до конца понимаю,вы сначала говорите одно потом другое по ацп определить максимум полуволны я смогу,но вы же пишите одновременно что для замера частоты - ацп не учавствует сами себе противоречите,как оно не учавствует если вы сами вначале писали что нужно определять максимум полуволны и минимум чтобы определить период по таймеру и посчитать частоту |
Автор: | Аlex [ Пт ноя 13, 2015 23:33:04 ] |
Заголовок сообщения: | Re: Частотомер |
Цитата: частота которого определяется через АЦП микроконтроллера Через АЦП частоту не меряют, через него меряют уровень напряжения.Про форму входного сигнала ничего не сказано. А она может быть абсолютно любой ![]() Ответы про синус - игра в угадайку. Для вычисления частоты аналогового сигнала необходимо динамически определять некий "виртуальный ноль", переходы через который считать началом и окончанием периода. Определять его нужно по среднему значению входного сигнала за определённый промежуток времени. Ну а чтобы узнать частоту, необходимо бы, для начала, узнать что вообще такое частота. Ответ находится любым поисковиком за считанные секунды - Частота. Изучив досконально написанное (именно изучить, а не пробежать мельком), уже можно понять как её вычислить. Так же, Вы поймёте, что её нереально вычислить "без всяких там таймеров и тому подобного"... |
Автор: | Mishany [ Пт ноя 13, 2015 23:34:00 ] |
Заголовок сообщения: | Re: Частотомер |
да как же вас еще расшевелить самостоятельно думать и анализировать? первое сообщение в краткой форме реализует хотелку, но вашего опыта оказалось не достаточно взять правильное направление. Так вот чтобы решить одну большую задачу надо сначало решить много маленьких, вот и пробуем реализовать определение момента максимума положительной полуволны, потом минимума отрицательной полуволны потом амплитуду, всеравно это придется делать для вывода на экран. Знания и опыт с неба не падают, нужно приложить усилия, а что бы понять надо начать что то делать. и еще, какой максимальной частоты сигнал можно отрисовать с условием возможностей ацп 32меги, что бы можно было отличить синус от пилы или еще чего? |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |