|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 12:41 am
Някои въпроси относно АЦП-то на PIC18f452 /мерене на честота
| Автор |
Съобщение |
|
nedev
Ранг: Минаващ
Регистриран на: Сря Авг 22, 2007 9:34 am Мнения: 3
|
 Някои въпроси относно АЦП-то на PIC18f452 /мерене на честота
Здравейте!
Нов съм във форума и в програмирането на контролери и това е първата ми тема, но се надявам да срещна вашето разбиране и помощ.  В момента се дипломирам в Технически Университет и въпреки, че специалността ми съвсем не е хардуерна и в курса ми на обучение сме имали съвсем малко такива диспциплини, поради големия си интерес си избрах дипломна работа именно с хардуерна насоченост. Поради тези съображения ви моля ако откриете, че на места се изказвам не съвсем правилно технически да ме коригирате, за да мога да си взема бележка
За дипломната си работа имам за задача да измеря честотата на входен синусоидален сигнал с възможно най-голяма точност. Сигнала е от мрежата, така че честотата ще е сравнително постоянна величина - около 50Hz. За целта идеята ми за алгогритъм е следната:
1) Отчитам стойността на входната аналогова величина с дадена честота, много по-голяма от честотата на мерения сигнал (за която знам че е около 50Hz).
2) Съхранявам последните N стойности и на тяхна база откривам максимумите и минимумите на амплитудата.
3) Отчитам времето между два максимума като един период.
4) Усреднявам продължителността на (да речем) 20 периода и от там намирам някаква средна стойност за периода и от там съответно и честотата.
5) Обновявам визуализацията на резултатите на всеки 20 такива периода.
Въпросите ми са:
1) Виждате ли нещо нередно в аллгоритъма, който съм избрал. Познанията ми по електротехника и схемотехника не са особено дълбоки и се притеснявам да не би да не доглеждам нещо и подхода ми да е грешен.
2) Каква е максималната честота, с която мога да извършвам измервания с АЦП-то, без да губя значително от точността и въобще без да имам проблеми в гореописания случай. (Кварца, който съм сложил е 27 MHz)
По мои разсъждения стигнах до следния отговор:
Гледайки ADCON2 контролния регистър за АЦПто там:
- битове 5-3 определят времето за конвертиране на 1 бит, като цялото конветиране на стойността отнема 12*Tad. Според таблицата от дейташийта, която определя каква стойност трябва да се даде на Тad спрямо работната честота на контролера, следва, че трябва да избера 64Tosc.
Тоест времето за едно мерене ми е 1/27е+6 * 64 * 12 = 2,8444e-5 = 28.44 uS
От тук честотата на мерене ми е приблизително 35.162 kHz
Следователно за един период на входния сигнал ще извърша 35162/50 = 703 измервания ?
Ако извърша за един период 703 измервания това каква точност би трябвало да ми даде ... тоест през колко Hz дискрет ще мога да отчитам стойности ?
Мога ли да избера 32Tosc, така че да вдигна честотата на конвертиране в моя случай. Изобщо как мога да получа максимална точност?
Ще ви помоля за всякакви насоки и съвети, които можете да ми дадете!
Благодаря ви предварително!
|
| Сря Авг 22, 2007 10:35 am |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Re: Някои въпроси относно АЦП-то на PIC18f452 /мерене на чес
Нещо не мога да си обясня , за какво ти е ADC след като ще мериш честота
На теб по скоро ти трябва може би компаратор , да засичаш времето да е по едно и също място на синусойдата , ADC-ата са бавни ще имаш много ядове иначе с компаратора не е така !
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Сря Авг 22, 2007 10:50 am |
|
 |
|
nedev
Ранг: Минаващ
Регистриран на: Сря Авг 22, 2007 9:34 am Мнения: 3
|
Здравей,
Ръководителя ми така ми каза да го правя.
Може ли да ми поясниш малко по детайлно как точно имаш предвид да се реализира?
CCP модула на процесора ли имаш предвид?
|
| Сря Авг 22, 2007 11:27 am |
|
 |
|
/dev/null
Ранг: Минаващ
Регистриран на: Пон Юли 23, 2007 8:09 am Мнения: 29
|
Бих го реализирал със ССР модула в режим capture.
Като преди това се сложи един повторител (или инвертор) със тригер на Шмит на входа за да се получат хубави правоъгълни импулси със стръмни фронтове. Това няма да ти промени честотата.
Помисли върху това да пуснеш пик-а на максимална честота и измервай примерно 100 пъти за секунда.
_________________ I'm not a complete idiot. Some parts are missing ...
|
| Сря Авг 22, 2007 11:34 am |
|
 |
|
Koleto
Ранг: Форумен бог
Регистриран на: Съб Фев 18, 2006 11:55 pm Мнения: 1301 Местоположение: София
|
Само като идея... Няма ли да е по-лесно да се засичат моментите в които напрежението минава през "нулата" и да се премери времето между две съседни преминавания.... ? За това мисля че АЦП не е необходимо и ще стане по-лесно...
_________________ Някой ден и костенурките ще се научат да летят...
|
| Сря Авг 22, 2007 11:40 am |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
не само че ще е по-лесно, но ще е и по-точно. и няма нужда да се усреднява от 20 периода измерването, а просто да се измери времето на 20 периода, същото е математически, но като реализация е много по-просто.
|
| Сря Авг 22, 2007 2:53 pm |
|
 |
|
Taner
Ранг: Новодошъл
Регистриран на: Пет Юли 08, 2005 3:46 pm Мнения: 112 Местоположение: Пловдив
|
Здравей,
първо да ти кажа с АЦП-то не става, пробвах го и продължавам да се мъча, но не става.
Пиша софтуер за инвертор работещ с фотоволтаични панели и отдаващ енергия в променливотоковата мрежа, и
трябва да измеря дали напрежението и честотата на мрежата са в границите на нормалното. За напрежението става, със средната стойност. Но честота не става с АЦП-то.
Така че не се мъчете с АЦП-то, просто не става, пробвах да хвана пресичане на нулата, не става, греши, след това пробвах и с намиране на максималните стойности, пак не става, пак греши.
Направи ги с компаратор или с оптрон свързан към входа за прекъсване, защото той е чувствителен на фронт.

|
| Сря Авг 22, 2007 9:38 pm |
|
 |
|
sthx
Ранг: Форумен бог
Регистриран на: Съб Юни 24, 2006 8:25 pm Мнения: 2292
|
Малко късно се намесвам, щото съм неграмотен и не разбирам от нищо от PIC-ове,още повече от PIC18f452.
Все пак...
Първо един съвет - накарай ръководителят ти да изнамери един работещ осцилоскоп и хвани активният край на сондата с ръка. Гаргата, която ще се покаже на осцилоскопа е формата на напрежението в мрежата. Ако не вярвате - вижте я на вторичната намотка на някой трансформатор. Прилича на синусоида, но не е - смачкана е, на едно место е назъбена, а може и да има остър пик, който няма да съвпада с максимума на амплитудата на псевдосинусоидата. Това е втората причина да не търсите максимума на сигнала.
Първата причина е, че скоростта на изменение на сигнала там е най-малка и следователно грешката , която ще се допусне е най-голяма.
Трябва да се мери при нулата.
Наистина е неразумно от честота да се преминава в аналогов сигнал.
Съветът с намиране на нулевото напрежение с оптрон или транзистори е удачен. Ако все пак ръководителят държи на наукообразната форма на работата - има и схеми наречени нулеви детектори, макар, че за получаване на честотна поредица не е задължително коефициентът на запълване да е точно 0.5 .
Ако трябва да се мери по-точно може да се мери времето за N броя периода. И да се направи хубав анализ на грешките. Толкова.
_________________ Две плюс две е приблизително равно на четири. Факт!
|
| Сря Авг 22, 2007 10:26 pm |
|
 |
|
Yanek
Ранг: Новодошъл
Регистриран на: Пет Юни 29, 2007 10:59 pm Мнения: 113
|
Явно се оказва, че не е удачен варианта с АЦП. В този ред на мисли и малко като шега - защо не опиташ с дискретна фуриерова трансформация? 
|
| Сря Авг 22, 2007 11:55 pm |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
 Re: Някои въпроси относно АЦП-то на PIC18f452 /мерене на чес
Както ти е намекнал @Yanek - само FFT/FFT2 е вярното решение - това дето си го намислил .. мин/мах, времена ... би работило при идеални условия: 1 sin. без щум, ...
в реалния свят нещата са много по-различни.
50Hz не е много ...
но ще трябва да прочетеш за FFT а и цифровата обработка на сигнали си има "тънкости" (входен филтър с поне 1/2 оф честотата на дискретизация...)
не знам пика до колко ще се справи, ... иначе има целочислени версии на FFT2, има RFFT2 ...
с АЦП-то можеш доста точно да мериш еф. стойност ...
|
| Чет Авг 23, 2007 7:17 am |
|
 |
|
nedev
Ранг: Минаващ
Регистриран на: Сря Авг 22, 2007 9:34 am Мнения: 3
|
Здравейте!
Първо искам да ви благодаря за насоките, които ми дадохте и главоболията, които ми спестихте!
Реших да генерирам правоъгълни импулси от синусоидалния сигнал и да ги подавам директно на CCP модула в Capture mode, като използвам като компаратор за нулево ниво тригер на Шмит по следната схема:
http://en.wikipedia.org/wiki/Image:Opam ... ircuit.svg
Реализирам тригера с ОУ, TL081 (такъв имах под ръка). В статията в Уикипедия пишеше как да си определя широчината на хистерезиса чрез избор на R1 и R2 и направих праговете на превключване на тригера да са при +- 0.9V.
Вчера успях да погледна изхода на тригера на осцилоскопа на един приятел и импулсите изглеждаха що годе правоъгълни (прикачвам снимка). Притесняват ме обаче някои неща:
1. Достатъчно правоъгълни ли са импулсите, за да мога безпроблемно директно да ги подавам на Capture входа на процесора.
2. Ценерите, които ползвам са на 4.7 V, така че амплитудата на сигнала също е в +- тези граници. Предполагам обаче, че трябва да отрежа отрицателната част от сигнала и така да подавам на входа на процесора. Как мога да реализирам това? Обикновен диод ще свърши ли работа?
3. Синусоидалния сигнал, който измерих директно на изхода на вторичната намотка на трансформатора, изглежда доста триъгълен (прикачвам снимка), което ме притеснява. Може би тук е мястото да отбележа, че осцилоскопа, на който гледах сигналите, беше доста доста стар; неизползван отдавна; руски; с кофти сонди; малък (някакъв преносим модел може би - около 20смх15смх25см; съвсем грубо на око). На какво може да се отдаде тази форма на сигнала? Нямам много опит при работата с осцилоскоп.
4. Най-голямото ми притеснение, идва от това, че според осцилоскопа, сигналите (на входа и на изхода на тригера на Шмит) имаха един и същи период (което е добре), но той беше доста различен от 20mS (което е 50Hz честота). Беше около 17mS. Може ли това също да се отдаде на грешка на осцилоскопа? Входния сигнал е от вторичната намотка на трансформатор 220V/2х12V 250mA. Не би трябвало трансформатора да променя честотата, нали така?
Благодаря ви предварително!
PS1. Извинявам се за кофти качеството на снимките
PS2. Периода на двата сигнала на снимките е еднакъв - 5mS на деление. Амплитудата е различна (на синусоидалния сигнал е 4 пъти по-голяма от тази на импулсния)
|
| Пет Авг 24, 2007 9:45 am |
|
 |
|
zmej
Ранг: Новодошъл
Регистриран на: Нед Ное 28, 2004 10:02 pm Мнения: 141 Местоположение: София
|
Вместо тригери, синусоидално-триъгълно-правоъгълни преобразуватели би могъл да сложиш един прост инвертиращ (ако искаш и неинвертиращ - все тая) усилвател с ОУ - към 200-300 пъти - получаваш (почти) правоъгълни импулси с достатъчно стръмни фронтове. Към изхода на ОУ-то слагаш диод, и обратната връзка я взимаш след диода - така получаваш еднополупериоден 'електронен' изправител. След това вече е ясно - съпротивление и ценер. Аз подавам така получения сигнал на прекъсване вместо на ССР, но това са подробности и избора си е твой. Също така е добре да мериш целия период, а не ширина на импулс.
А още по-елементарно ще се получи с прост оптрон (обратно шунтиран с диод), колектора на изходния транзистор на който връзваш на прекъсване или ССР. Ама за дипломна (курсова или каквато и да е там) работа ти препоръчвам първия вариант.
За АЦП-то вече са ти казали...
Обърни внимание на стабилността на кварца - да не изскочат проблеми от там (имал съм такива случаи). Реално (при правилна постановка) само и единствено кварца ти определя цялата точност на измерване...
Успех! 
|
| Пет Авг 24, 2007 12:07 pm |
|
 |
|
stanleyhacker
Ранг: Новодошъл
Регистриран на: Чет Дек 02, 2004 7:22 pm Мнения: 140
|
Става и с един резистор 1мегаом към фаза. ама не е много за дипломна работа.
|
| Пет Авг 24, 2007 4:33 pm |
|
 |
|
MYXATA
Ранг: Форумен бог
Регистриран на: Пон Юни 05, 2006 1:48 pm Мнения: 4906 Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
|
Я ми обясни по-детайлно какво става с 1М към фаза
макар, че може би първо на себе си трябва да го обясниш..... 
_________________ ... ако трети ден не ти се работи... това означава, че е сряда !
|
| Пет Авг 24, 2007 7:58 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Ами задачката ти като цяло е елементарна. Вариантите са няколко, став и с АЦП-то, но не виздам защо трябва да се мъчиш толкова. Може да с енаправи както с фурие, така и с засичане м-у определени точки. Фурието е нещо което може би не си учил, а измерванетона период ще ти е по разбираемо, естетсвено преди това си трвбва еидн хубав цифров филтър, но като цяло, стандартния вариант е много по добър. Като правило се прави, с детектор на нулата и измерване между два сигнала.
|
| Пет Авг 24, 2007 9:28 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|