Отговори на тема  [ 18 мнения ]  Отиди на страница 1, 2  Следваща
Някои въпроси относно АЦП-то на PIC18f452 /мерене на честота 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Авг 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
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Re: Някои въпроси относно АЦП-то на PIC18f452 /мерене на чес
Нещо не мога да си обясня , за какво ти е ADC след като ще мериш честота :?
На теб по скоро ти трябва може би компаратор , да засичаш времето да е по едно и също място на синусойдата , ADC-ата са бавни ще имаш много ядове иначе с компаратора не е така !

_________________
Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !


Сря Авг 22, 2007 10:50 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Авг 22, 2007 9:34 am
Мнения: 3
Мнение 
Здравей,

Ръководителя ми така ми каза да го правя.
Може ли да ми поясниш малко по детайлно как точно имаш предвид да се реализира?

CCP модула на процесора ли имаш предвид?


Сря Авг 22, 2007 11:27 am
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Юли 23, 2007 8:09 am
Мнения: 29
Мнение 
Бих го реализирал със ССР модула в режим capture.
Като преди това се сложи един повторител (или инвертор) със тригер на Шмит на входа за да се получат хубави правоъгълни импулси със стръмни фронтове. Това няма да ти промени честотата.
Помисли върху това да пуснеш пик-а на максимална честота и измервай примерно 100 пъти за секунда.

_________________
I'm not a complete idiot. Some parts are missing ...


Сря Авг 22, 2007 11:34 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Съб Фев 18, 2006 11:55 pm
Мнения: 1301
Местоположение: София
Мнение 
Само като идея... Няма ли да е по-лесно да се засичат моментите в които напрежението минава през "нулата" и да се премери времето между две съседни преминавания.... ? За това мисля че АЦП не е необходимо и ще стане по-лесно...

_________________
Някой ден и костенурките ще се научат да летят...


Сря Авг 22, 2007 11:40 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
не само че ще е по-лесно, но ще е и по-точно. и няма нужда да се усреднява от 20 периода измерването, а просто да се измери времето на 20 периода, същото е математически, но като реализация е много по-просто.


Сря Авг 22, 2007 2:53 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Юли 08, 2005 3:46 pm
Мнения: 112
Местоположение: Пловдив
Мнение 
Здравей,
първо да ти кажа с АЦП-то не става, пробвах го и продължавам да се мъча, но не става.
Пиша софтуер за инвертор работещ с фотоволтаични панели и отдаващ енергия в променливотоковата мрежа, и
трябва да измеря дали напрежението и честотата на мрежата са в границите на нормалното. За напрежението става, със средната стойност. Но честота не става с АЦП-то.
Така че не се мъчете с АЦП-то, просто не става, пробвах да хвана пресичане на нулата, не става, греши, след това пробвах и с намиране на максималните стойности, пак не става, пак греши.
Направи ги с компаратор или с оптрон свързан към входа за прекъсване, защото той е чувствителен на фронт.
:)


Сря Авг 22, 2007 9:38 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Съб Юни 24, 2006 8:25 pm
Мнения: 2292
Мнение 
Малко късно се намесвам, щото съм неграмотен и не разбирам от нищо от PIC-ове,още повече от PIC18f452.
Все пак...
Първо един съвет - накарай ръководителят ти да изнамери един работещ осцилоскоп и хвани активният край на сондата с ръка. Гаргата, която ще се покаже на осцилоскопа е формата на напрежението в мрежата. Ако не вярвате - вижте я на вторичната намотка на някой трансформатор. Прилича на синусоида, но не е - смачкана е, на едно место е назъбена, а може и да има остър пик, който няма да съвпада с максимума на амплитудата на псевдосинусоидата. Това е втората причина да не търсите максимума на сигнала.
Първата причина е, че скоростта на изменение на сигнала там е най-малка и следователно грешката , която ще се допусне е най-голяма.
Трябва да се мери при нулата.
Наистина е неразумно от честота да се преминава в аналогов сигнал.
Съветът с намиране на нулевото напрежение с оптрон или транзистори е удачен. Ако все пак ръководителят държи на наукообразната форма на работата - има и схеми наречени нулеви детектори, макар, че за получаване на честотна поредица не е задължително коефициентът на запълване да е точно 0.5 .
Ако трябва да се мери по-точно може да се мери времето за N броя периода. И да се направи хубав анализ на грешките. Толкова.

_________________
Две плюс две е приблизително равно на четири. Факт!


Сря Авг 22, 2007 10:26 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Юни 29, 2007 10:59 pm
Мнения: 113
Мнение 
Явно се оказва, че не е удачен варианта с АЦП. В този ред на мисли и малко като шега - защо не опиташ с дискретна фуриерова трансформация? =D>


Сря Авг 22, 2007 11:55 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение Re: Някои въпроси относно АЦП-то на PIC18f452 /мерене на чес
nedev написа:
...


Както ти е намекнал @Yanek - само FFT/FFT2 е вярното решение - това дето си го намислил .. мин/мах, времена ... би работило при идеални условия: 1 sin. без щум, ...
в реалния свят нещата са много по-различни.

50Hz не е много ...

но ще трябва да прочетеш за FFT а и цифровата обработка на сигнали си има "тънкости" (входен филтър с поне 1/2 оф честотата на дискретизация...)

не знам пика до колко ще се справи, ... иначе има целочислени версии на FFT2, има RFFT2 ...

с АЦП-то можеш доста точно да мериш еф. стойност ...


Чет Авг 23, 2007 7:17 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Авг 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 пъти по-голяма от тази на импулсния)


Прикачени файлове:
Коментар на файл: Това е сигнала на изхода на тригера на Шмит.
Picture(13).jpg
Picture(13).jpg [ 110.81 KiB | Прегледано 2206 пъти ]
Коментар на файл: Това е сигнала на входа на тригера на Шмит, който вземам от вторичната намотка на трансформатора.
Picture(16).jpg
Picture(16).jpg [ 111.1 KiB | Прегледано 2201 пъти ]
Пет Авг 24, 2007 9:45 am
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Нед Ное 28, 2004 10:02 pm
Мнения: 141
Местоположение: София
Мнение 
Вместо тригери, синусоидално-триъгълно-правоъгълни преобразуватели би могъл да сложиш един прост инвертиращ (ако искаш и неинвертиращ - все тая) усилвател с ОУ - към 200-300 пъти - получаваш (почти) правоъгълни импулси с достатъчно стръмни фронтове. Към изхода на ОУ-то слагаш диод, и обратната връзка я взимаш след диода - така получаваш еднополупериоден 'електронен' изправител. След това вече е ясно - съпротивление и ценер. Аз подавам така получения сигнал на прекъсване вместо на ССР, но това са подробности и избора си е твой. Също така е добре да мериш целия период, а не ширина на импулс.
А още по-елементарно ще се получи с прост оптрон (обратно шунтиран с диод), колектора на изходния транзистор на който връзваш на прекъсване или ССР. Ама за дипломна (курсова или каквато и да е там) работа ти препоръчвам първия вариант. :)
За АЦП-то вече са ти казали... :)
Обърни внимание на стабилността на кварца - да не изскочат проблеми от там (имал съм такива случаи). Реално (при правилна постановка) само и единствено кварца ти определя цялата точност на измерване...

Успех! :)


Пет Авг 24, 2007 12:07 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Чет Дек 02, 2004 7:22 pm
Мнения: 140
Мнение 
Става и с един резистор 1мегаом към фаза. ама не е много за дипломна работа.


Пет Авг 24, 2007 4:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
stanleyhacker написа:
Става и с един резистор 1мегаом към фаза. ама не е много за дипломна работа.

Я ми обясни по-детайлно какво става с 1М към фаза :?:
макар, че може би първо на себе си трябва да го обясниш..... [-X

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Пет Авг 24, 2007 7:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Ами задачката ти като цяло е елементарна. Вариантите са няколко, став и с АЦП-то, но не виздам защо трябва да се мъчиш толкова. Може да с енаправи както с фурие, така и с засичане м-у определени точки. Фурието е нещо което може би не си учил, а измерванетона период ще ти е по разбираемо, естетсвено преди това си трвбва еидн хубав цифров филтър, но като цяло, стандартния вариант е много по добър. Като правило се прави, с детектор на нулата и измерване между два сигнала.


Пет Авг 24, 2007 9:28 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 18 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 0 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни