|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 10:06 pm
Измерване на честота (основи и принципи)
| Автор |
Съобщение |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
 Измерване на честота (основи и принципи)
Говорим за честоти от 1Херц до под Мегахерц (даже се съмнявам , че ще стигна 30kHz). / въпреки че ми се иска да говорим и въобще , но считам , че за аналогов сигнал колкото по-конкретно се говри толкова по-добре.
Проблемат за мен е там , че не знам какви неща трябва да се вземат в предвид когато искаш да мериш честота на сигнал, но не искаш да променяш х-ките на сигнала. Т.е какво трябва да осигуриш, за да измериш качествено честота.
Гледам разни честотомери , няколко IC (коя за усилване на сигнала ,коя само за стабилизиране.) + кондензатори и резистори преди да се подаде сигнала в MCU-то.
А аз не мога да преценя какво трябва да сложа и въобще трябва ли да слагам нещо на линията към MCU-то , за да съм сигурен , че ще измеря правилната честота.
Не знам дали задавам правилните въпроси, но простете - ако знаех нямаше да питам.
Мисля ,че основното ми притеснение е как да гарантирам , че по линията няма да се насложи друг сигнал с честота Х , която да промени моят сигнал и/или честотата на моят сигнал.
Една добре опроводена , екранирана жица/кабел ще свърши ли работа и директно в мцу-то и меря.
Относно мцу-то ми се иска също да питам нещо:
С кой модул като цяло/общо е най-добре да се мери честота. Дотук мисля по 3-варианта:
с таймер (като гледам това е и най-често ползваният)
с компаратор (тук ми е интересно какво ще кажете)
със следене за смяна на фронта на сигнала
Ако някъде нещата ги има написани няма да Ви карам да ми "четете".
Доста време прекарах в google, но не мога да кажа че съм удоволетворен , но пак казвам не съм сигурен че задавам правилните въпроси, та може и там да е проблема 
|
| Пон Май 15, 2006 2:02 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Ако съм те разбрал правилно, на теб ти трябва сонда за осцилоскоп с подходящ буферен усилвател.
|
| Пон Май 15, 2006 7:55 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Ами това какво д сложиш пред процесор зависи от това колко високоомен ти е източника на сигнал, ако говориш за тесен честотен диапазон в звуковия обхват, и искаш да си сигурен че няма да повлияеш на сигнала то най-добре сложи един операционен. Всусхност тои едва ли ще ти е излишен особенно ако мериш сигнали с ниско ниво. След това е е стествено да имаш формировател, така че да подаваш не синусоида а правоъгълен, това може и от сама ОУ да стане, там варианти много има. За високите естоти става по сложно, особенно акоискаш да мериш и сигнали с малка амплитуда, иначе до към 100 Мхз може да минеш с логически елементи за формиране а съм виждал и реализации с транзистори.
Самия уред може да натовари източника на сигнал, и евентуално да промени нивото, но да промени и честотата, т.е. да се отрази на точноста н измерването може да стане в много малко случаи, примеро ако мериш честотаат директно на някой трептящ кръг, или времезадаваща вирига, и капацитета на уреда се добавя към този на веригата.
А относно как да мериш, има няколко метода, з аниски честоти обикновенно по-точно да мериш период на сигнала, а за висока да броиш периоди за единица време. Има и един друг метод, който комбинира тези два, ткаа че да мериш с еднаква точност в целия диапазон. За целта имаш два брояча, единият брои периоди на входния сигнал за единица време, а другият брои еталонни импулси за цял брой периоди на входния сигнал. Примерно мериш 12 Хз, еталонния сигнал ти е 10 Мхз а времето за измерване 100 мс. Пускаш двата брояча едновременно, да предположим че броят по преден фронт. В този случай този който мери входни импулси ще се инкрементира два пъти, т.е. ще е две, след което времевата врата се затваря. Но този който брои еталонни импулси ще спре да брои едва когато постъпи третият преден фронт. Така ще имаш в единия брояч 2 а във втория 1666666. Честотат на входния сигнл е 1/(Бр.2/10.000.000*Бр1) = 12.0000048... така за 100 мс време на измерване ще получиш една доста добра точност. Същото ще е и при висока честота. Естествено за да не работиш с сложна математика, формилата малко трябва д си я префасонираш, но не мисля че това е проблем.
|
| Пон Май 15, 2006 8:04 am |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12765 Местоположение: София
|
Ако е неоходимо измерващото устройство да има малък входен капацитет и голям импеданс, потърси в мрежата "FET probe". Имаше публикувани 2 - 3 любителски проекта на такава сонда и бяха с входен капацитет ололо 0.5 - 1 pf и входен импеданс 10 или 100 мегаома (цитирам по памет).
|
| Пон Май 15, 2006 12:30 pm |
|
 |
|
nickich
Ранг: Почетен член
Регистриран на: Вто Ное 01, 2005 10:23 am Мнения: 704 Местоположение: Limerick, Ireland
|
Ако сигнала е аналогов - FFT.
_________________ "640 К са достатъчни на всеки за всичко." Бил Гейтс
|
| Пон Май 15, 2006 2:54 pm |
|
 |
|
setoy
Ранг: Почетен член
Регистриран на: Пет Фев 17, 2006 9:17 am Мнения: 765 Местоположение: Стара Загора
|
Останал съм с впечатление че с ПИК се занимаваш...
Ако е за ниски честоти - може би най-добре става с измерване на период , а не на честота - т.е. колко машинни цикли са изминали от преден до преден фронт - ССР модула на ПИК-овете е точно затова. Оттам честотата се смята лесно. А ако е за по висока - ТМР0 в режим на инкремент по фронт на РА4 и някой от другите таймери да го прекъсне в определено време - ей за това се сещам в момента. Иначе варианти много
За цифров сигнал от буфериране най-вероятно бъобще няма да има нужда, 4е и за аналогов може да мине без буфер ако ползваш някой вход с вграден тригер на Шмит, РА4 със сигурност е такъв, за другите забравих.
Всичко зависи от това какъв е източника на сигнала
|
| Пон Май 15, 2006 4:55 pm |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
1.Аз най-вече се бях ориентирал да меря по период (независимо от честотата)
2.Гледам се обединихте около едно:
ниски честоти - по период
високите - мери се с един таймер по външен фронт за единица време (отмервано от друг таймер).
--
Обаче ...
Как да се изразя правилно.
Линията ще носи сигнали с различни честоти и амплитуди, и въпросът е че те не са постоянни.
Т.е примерно има 100Hz , в следващият момент има 200Hz, в по-следващият 10kHz. Като този момент колко ще е дълъг не е константа.
Та си мисля няма ли да е добре да меря само по период. А и тъй като не съм го направил засега не съм сигурен, че ще стане това различаване на отделните честоти. Въобще много неизвестни.
|
| Пон Май 15, 2006 7:18 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
КОе различаване, аз ти писах как става ако искаш да мериш с еднаква точност в целия диапазон. А ако искаш да нзаеш точно каква е честоттаа в момента .. това вече е малко дуг въпрос,в смисъл ако искаш да откриваш кога се сменя.
|
| Пон Май 15, 2006 9:27 pm |
|
 |
|
nickich
Ранг: Почетен член
Регистриран на: Вто Ное 01, 2005 10:23 am Мнения: 704 Местоположение: Limerick, Ireland
|
А защо не FFT?
_________________ "640 К са достатъчни на всеки за всичко." Бил Гейтс
|
| Вто Май 16, 2006 10:47 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
FFT е идеален точно за задачи, които ще работят със зашумен сигнал, но изисква яко ядро, за да се сметне. ( BTW, точно така си намирам комарите в къщи.) Освен това FFT не е прецизен за измерване на честота. Ако имаш чист тон, класическото решение (формировател >> брояч или кепчър) е най-доброто. За ниски честоти кепчърът е за предпочитане, докато за високите броячът е по-добър. Най-добре е да ги има и двете, но иска по-сложен алгоритъм за обработка. Правил съм го на ПИК, ако те вълнува, обади се.
|
| Вто Май 16, 2006 10:57 am |
|
 |
|
nickich
Ранг: Почетен член
Регистриран на: Вто Ное 01, 2005 10:23 am Мнения: 704 Местоположение: Limerick, Ireland
|
Това ми стана доста интересно  Я разкажи пове4ко, плс.
_________________ "640 К са достатъчни на всеки за всичко." Бил Гейтс
|
| Вто Май 16, 2006 11:16 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Ами предполагам че батето първо пеленгова, като при това вема и в предвид нелинеиността и толерансите м-у левия и десни пеленгатор, след като определи ориентировъно местоположението, фокусира и прави FFT като ако честотниа спектър показва мъжки комар, или вече реял женски, това гооткрива п промяната в резонанса на търбуха, го оставя а по-късно, но ако открие че спектъра отговаря на гладен женски, сещате се че празния търбух има по висока резонансна честота, може би с ясно изразени аномалии, задеиства самонасоцващия се комаротрепец, а пък може и онова от снимката да е обучил.
|
| Вто Май 16, 2006 7:17 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Да изровим една стара тема.
Имам следното задание: измерване на честота в диапазона 50Hz-400kHz с максимално отклонение +/-10Hz.
Използвам метода на броене на периоди за единица време. Времевият ми прозорец е 160ms, което ми определя 6.25Hz отклонение в целия диапазон. Посредством average на 8 стойности отклонението в областта до 10kHz се свежда до 3Hz. Ако искам да намаля грешката при ниските честоти трябва или да използвам корекция на дьлжината на прозореца, спрямо измерваната честота или да направя комбинация с метода на измерване дьлжината на един период. Или хибридния митод, който описва Тони по-горе.
Вьпросьт е как да го реализирам този метод. Брояча на цели периоди в рамките на прозореца е ясно. Как да измеря броя на еталонните 10MHz импулси за тези 2 периода. Единственото което се сещам е чрез Capture. Опитах и в действителност работи, но до 180kHz. Нагоре interruptite, които произлизат от този Capture ми размазват напьлно тaйминга. При 400kHz сигнал, това си е interrupt на всеки 2.5µs.
Тони ще дадеш ли жокер?
И по принцип как бихте подходили ако иската да сведете грешката в целия диапазон до минимум?
|
| Пет Мар 30, 2007 4:58 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Ако обяснението ми не е разбирамо, това е кода, който скальпих относно метода на Тони.
Interrupt routines
Timers Initialization Macro А това е частта от кода, която изчислява честотата.
P.S. Сега като поразширих програмкта с някоя друга екстра бачка само до 80kHz. С какво да заменя Capture-а?
|
| Пет Мар 30, 2007 5:46 pm |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
Първо трябва да си изясниш какво точно искаш да мериш!
има:
1) периодични синусоидални сигнали - идеалния случай
2) периодични нехармонични - повтярят се нехамонични "картинки" (примерно: сдъФкани правоъгълни импулси)
3) непериодични (примерно говор) - дето няма нищо периодично
4) най-друго не остана
понеже честотомерите мерят всичко за единица време ... то те показват ~ вярно в 1) и 2)
за 3) остава спекралния анализ (FFT)
всъщност FFT-то става за всичко а точността му зависи от честотата с която се дискретизира и обхванатия период (брой "сампъли" степен на 2) ... т.е може да е изключително голяма и ... не се влияе от шумове и аплитуда на сигнала (поне няколко бита да мърдат  )
с две думи с FFT - можеш всичко
FFT си има доста тънкости и разновидности (за намaляване на сметките - иначе алгоритъма е 10-на реда на C)... и разбира се и много сметки/сек
P.S. има и WFFT (фурие на виноградов за нестепени за 2, ... но това си е друга тема) 
|
| Пет Мар 30, 2007 5:50 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|