| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Измерване на честота (основи и принципи) http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=2363 |
Страница 1 от 2 |
| Автор: | the_real_maniac [ Пон Май 15, 2006 2:02 am ] |
| Заглавие: | Измерване на честота (основи и принципи) |
Говорим за честоти от 1Херц до под Мегахерц (даже се съмнявам , че ще стигна 30kHz). / въпреки че ми се иска да говорим и въобще , но считам , че за аналогов сигнал колкото по-конкретно се говри толкова по-добре. Проблемат за мен е там , че не знам какви неща трябва да се вземат в предвид когато искаш да мериш честота на сигнал, но не искаш да променяш х-ките на сигнала. Т.е какво трябва да осигуриш, за да измериш качествено честота. Гледам разни честотомери , няколко IC (коя за усилване на сигнала ,коя само за стабилизиране.) + кондензатори и резистори преди да се подаде сигнала в MCU-то. А аз не мога да преценя какво трябва да сложа и въобще трябва ли да слагам нещо на линията към MCU-то , за да съм сигурен , че ще измеря правилната честота. Не знам дали задавам правилните въпроси, но простете - ако знаех нямаше да питам. Мисля ,че основното ми притеснение е как да гарантирам , че по линията няма да се насложи друг сигнал с честота Х , която да промени моят сигнал и/или честотата на моят сигнал. Една добре опроводена , екранирана жица/кабел ще свърши ли работа и директно в мцу-то и меря. Относно мцу-то ми се иска също да питам нещо: С кой модул като цяло/общо е най-добре да се мери честота. Дотук мисля по 3-варианта: с таймер (като гледам това е и най-често ползваният) с компаратор (тук ми е интересно какво ще кажете) със следене за смяна на фронта на сигнала Ако някъде нещата ги има написани няма да Ви карам да ми "четете". Доста време прекарах в google, но не мога да кажа че съм удоволетворен , но пак казвам не съм сигурен че задавам правилните въпроси, та може и там да е проблема |
|
| Автор: | bateAz [ Пон Май 15, 2006 7:55 am ] |
| Заглавие: | |
Ако съм те разбрал правилно, на теб ти трябва сонда за осцилоскоп с подходящ буферен усилвател. |
|
| Автор: | ToHu [ Пон Май 15, 2006 8:04 am ] |
| Заглавие: | |
Ами това какво д сложиш пред процесор зависи от това колко високоомен ти е източника на сигнал, ако говориш за тесен честотен диапазон в звуковия обхват, и искаш да си сигурен че няма да повлияеш на сигнала то най-добре сложи един операционен. Всусхност тои едва ли ще ти е излишен особенно ако мериш сигнали с ниско ниво. След това е е стествено да имаш формировател, така че да подаваш не синусоида а правоъгълен, това може и от сама ОУ да стане, там варианти много има. За високите естоти става по сложно, особенно акоискаш да мериш и сигнали с малка амплитуда, иначе до към 100 Мхз може да минеш с логически елементи за формиране а съм виждал и реализации с транзистори. Самия уред може да натовари източника на сигнал, и евентуално да промени нивото, но да промени и честотата, т.е. да се отрази на точноста н измерването може да стане в много малко случаи, примеро ако мериш честотаат директно на някой трептящ кръг, или времезадаваща вирига, и капацитета на уреда се добавя към този на веригата. А относно как да мериш, има няколко метода, з аниски честоти обикновенно по-точно да мериш период на сигнала, а за висока да броиш периоди за единица време. Има и един друг метод, който комбинира тези два, ткаа че да мериш с еднаква точност в целия диапазон. За целта имаш два брояча, единият брои периоди на входния сигнал за единица време, а другият брои еталонни импулси за цял брой периоди на входния сигнал. Примерно мериш 12 Хз, еталонния сигнал ти е 10 Мхз а времето за измерване 100 мс. Пускаш двата брояча едновременно, да предположим че броят по преден фронт. В този случай този който мери входни импулси ще се инкрементира два пъти, т.е. ще е две, след което времевата врата се затваря. Но този който брои еталонни импулси ще спре да брои едва когато постъпи третият преден фронт. Така ще имаш в единия брояч 2 а във втория 1666666. Честотат на входния сигнл е 1/(Бр.2/10.000.000*Бр1) = 12.0000048... така за 100 мс време на измерване ще получиш една доста добра точност. Същото ще е и при висока честота. Естествено за да не работиш с сложна математика, формилата малко трябва д си я префасонираш, но не мисля че това е проблем. |
|
| Автор: | itso.t [ Пон Май 15, 2006 12:30 pm ] |
| Заглавие: | |
Ако е неоходимо измерващото устройство да има малък входен капацитет и голям импеданс, потърси в мрежата "FET probe". Имаше публикувани 2 - 3 любителски проекта на такава сонда и бяха с входен капацитет ололо 0.5 - 1 pf и входен импеданс 10 или 100 мегаома (цитирам по памет). |
|
| Автор: | nickich [ Пон Май 15, 2006 2:54 pm ] |
| Заглавие: | |
Ако сигнала е аналогов - FFT. |
|
| Автор: | setoy [ Пон Май 15, 2006 4:55 pm ] | |||||||||
| Заглавие: | ||||||||||
Останал съм с впечатление че с ПИК се занимаваш... Ако е за ниски честоти - може би най-добре става с измерване на период , а не на честота - т.е. колко машинни цикли са изминали от преден до преден фронт - ССР модула на ПИК-овете е точно затова. Оттам честотата се смята лесно. А ако е за по висока - ТМР0 в режим на инкремент по фронт на РА4 и някой от другите таймери да го прекъсне в определено време - ей за това се сещам в момента. Иначе варианти много За цифров сигнал от буфериране най-вероятно бъобще няма да има нужда, 4е и за аналогов може да мине без буфер ако ползваш някой вход с вграден тригер на Шмит, РА4 със сигурност е такъв, за другите забравих. Всичко зависи от това какъв е източника на сигнала |
||||||||||
| Автор: | the_real_maniac [ Пон Май 15, 2006 7:18 pm ] |
| Заглавие: | |
1.Аз най-вече се бях ориентирал да меря по период (независимо от честотата) 2.Гледам се обединихте около едно: ниски честоти - по период високите - мери се с един таймер по външен фронт за единица време (отмервано от друг таймер). -- Обаче ... Как да се изразя правилно. Линията ще носи сигнали с различни честоти и амплитуди, и въпросът е че те не са постоянни. Т.е примерно има 100Hz , в следващият момент има 200Hz, в по-следващият 10kHz. Като този момент колко ще е дълъг не е константа. Та си мисля няма ли да е добре да меря само по период. А и тъй като не съм го направил засега не съм сигурен, че ще стане това различаване на отделните честоти. Въобще много неизвестни. |
|
| Автор: | ToHu [ Пон Май 15, 2006 9:27 pm ] |
| Заглавие: | |
КОе различаване, аз ти писах как става ако искаш да мериш с еднаква точност в целия диапазон. А ако искаш да нзаеш точно каква е честоттаа в момента .. това вече е малко дуг въпрос,в смисъл ако искаш да откриваш кога се сменя. |
|
| Автор: | nickich [ Вто Май 16, 2006 10:47 am ] |
| Заглавие: | |
А защо не FFT? |
|
| Автор: | bateAz [ Вто Май 16, 2006 10:57 am ] |
| Заглавие: | |
FFT е идеален точно за задачи, които ще работят със зашумен сигнал, но изисква яко ядро, за да се сметне. ( BTW, точно така си намирам комарите в къщи.) Освен това FFT не е прецизен за измерване на честота. Ако имаш чист тон, класическото решение (формировател >> брояч или кепчър) е най-доброто. За ниски честоти кепчърът е за предпочитане, докато за високите броячът е по-добър. Най-добре е да ги има и двете, но иска по-сложен алгоритъм за обработка. Правил съм го на ПИК, ако те вълнува, обади се. |
|
| Автор: | nickich [ Вто Май 16, 2006 11:16 am ] | |||||||||
| Заглавие: | ||||||||||
Това ми стана доста интересно |
||||||||||
| Автор: | ToHu [ Вто Май 16, 2006 7:17 pm ] |
| Заглавие: | |
Ами предполагам че батето първо пеленгова, като при това вема и в предвид нелинеиността и толерансите м-у левия и десни пеленгатор, след като определи ориентировъно местоположението, фокусира и прави FFT като ако честотниа спектър показва мъжки комар, или вече реял женски, това гооткрива п промяната в резонанса на търбуха, го оставя а по-късно, но ако открие че спектъра отговаря на гладен женски, сещате се че празния търбух има по висока резонансна честота, може би с ясно изразени аномалии, задеиства самонасоцващия се комаротрепец, а пък може и онова от снимката да е обучил. |
|
| Автор: | HCL [ Пет Мар 30, 2007 4:58 pm ] |
| Заглавие: | |
Да изровим една стара тема. Имам следното задание: измерване на честота в диапазона 50Hz-400kHz с максимално отклонение +/-10Hz. Използвам метода на броене на периоди за единица време. Времевият ми прозорец е 160ms, което ми определя 6.25Hz отклонение в целия диапазон. Посредством average на 8 стойности отклонението в областта до 10kHz се свежда до 3Hz. Ако искам да намаля грешката при ниските честоти трябва или да използвам корекция на дьлжината на прозореца, спрямо измерваната честота или да направя комбинация с метода на измерване дьлжината на един период. Или хибридния митод, който описва Тони по-горе. Вьпросьт е как да го реализирам този метод. Брояча на цели периоди в рамките на прозореца е ясно. Как да измеря броя на еталонните 10MHz импулси за тези 2 периода. Единственото което се сещам е чрез Capture. Опитах и в действителност работи, но до 180kHz. Нагоре interruptite, които произлизат от този Capture ми размазват напьлно тaйминга. При 400kHz сигнал, това си е interrupt на всеки 2.5µs. Тони ще дадеш ли жокер? И по принцип как бихте подходили ако иската да сведете грешката в целия диапазон до минимум? |
|
| Автор: | HCL [ Пет Мар 30, 2007 5:46 pm ] | |||||||||||||||||||||||||||
| Заглавие: | ||||||||||||||||||||||||||||
Ако обяснението ми не е разбирамо, това е кода, който скальпих относно метода на Тони. Interrupt routines
Timers Initialization Macro
А това е частта от кода, която изчислява честотата.
P.S. Сега като поразширих програмкта с някоя друга екстра бачка само до 80kHz. С какво да заменя Capture-а? |
||||||||||||||||||||||||||||
| Автор: | ps66 [ Пет Мар 30, 2007 5:50 pm ] | |||||||||
| Заглавие: | ||||||||||
Първо трябва да си изясниш какво точно искаш да мериш! има: 1) периодични синусоидални сигнали - идеалния случай 2) периодични нехармонични - повтярят се нехамонични "картинки" (примерно: сдъФкани правоъгълни импулси) 3) непериодични (примерно говор) - дето няма нищо периодично 4) най-друго не остана понеже честотомерите мерят всичко за единица време ... то те показват ~ вярно в 1) и 2) за 3) остава спекралния анализ (FFT) всъщност FFT-то става за всичко а точността му зависи от честотата с която се дискретизира и обхванатия период (брой "сампъли" степен на 2) ... т.е може да е изключително голяма и ... не се влияе от шумове и аплитуда на сигнала (поне няколко бита да мърдат с две думи с FFT - можеш всичко FFT си има доста тънкости и разновидности (за намaляване на сметките - иначе алгоритъма е 10-на реда на C)... и разбира се и много сметки/сек P.S. има и WFFT (фурие на виноградов за нестепени за 2, ... но това си е друга тема) |
||||||||||
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|