| Автор |
Съобщение |
|
Nikolas_N
Ранг: Минаващ
Регистриран на: Нед Дек 25, 2005 7:26 pm Мнения: 12 Местоположение: Стара Загора
|
 Измерване на ШИМ 100kHz- как?
Здравейте!
Застигна ме следния проблем:
Трябва да измервам дължината на импулса на ШИМ с честота 100KHz.
Пробвах с PIC18, но достигнах до 50-60KHz
Проблема е, че съм се занимавал само с PIC а сега няма време да уча друго.
Ако може да ме посъветвате нещо?
|
| Чет Сеп 14, 2006 10:45 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Откажи се да мериш време. По-добре интегрирай импулсите и мери постоянната съставка.
|
| Чет Сеп 14, 2006 11:00 pm |
|
 |
|
Nikolas_N
Ранг: Минаващ
Регистриран на: Нед Дек 25, 2005 7:26 pm Мнения: 12 Местоположение: Стара Загора
|
Това ми е план Б 
|
| Чет Сеп 14, 2006 11:01 pm |
|
 |
|
sthx
Ранг: Форумен бог
Регистриран на: Съб Юни 24, 2006 8:25 pm Мнения: 2292
|
 Re: Измерване на ШИМ 100kHz- как?
С каква точност (разрешаваща способност) трябва да измерваш продължителността на импулса?
Не познавам от близо pic-овете, и не съм сигурен дали са виновни с нещо в случая. Ако имат брояч , който да спира тактуването по фронта на сигнала и го използваш, единственото, което може да се направи е да се увеличи честотата на кварца. Вместо брояч може да се използва регистър за запис на стойността на друг брояч, но това не променя същността на нещата. Ако Pic-а няма такова чудо, ще се наложи използването на външна схемичка с брояч.
_________________ Две плюс две е приблизително равно на четири. Факт!
|
| Чет Сеп 14, 2006 11:10 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Re: Измерване на ШИМ 100kHz- как?
Защо да не става зависи колко точно искаш да отчетеш времето примерно дали е от качващ до качващ или от качващ до падащ фронт ?
Приемаме че например е 50кHz преобразувано във време е 20 мкс, при 20MHz кварц имаш 0.2 мкс за такт, ако ползваш таймера ще се натрупва с тази честота максимум 100 единици в таймера при 20мкс демек точноста ти е 0.2
Правиш следното :
Предварително си настройваш делителя на таймера да отиде към WDT , така таймера остава без делител и ще се тактува с такта на процесора. Сигнала който мериш го вкарваш във входа за прекъсване например при 16F84 е B0 , включваш прекъсването и когато прекъсне прочиташ таймера и го записваш в времена клетка , после нулираш таймера и излизаш от прекъсване , може би ще имаш малко корекция в резултата от инструкциите при прекъсването .
В основната програма си правиш един Loop и си обработваш този темп.
|
| Чет Сеп 14, 2006 11:36 pm |
|
 |
|
didofen
Ранг: Популярен
Регистриран на: Вто Юни 27, 2006 11:13 am Мнения: 381 Местоположение: Варна
|
 CCP
Ама защо ще се занимаваш с брояч? 16ф872 например има Capture модул, който прави това с брояча автоматично, получаваш направо времето на импулса. Има възможности за настройка на честота на броене, на избор на фронт и т.н. Освен ако нямаш такъв ПИК, защото 84А наистина няма ССР модул. Има пикове даже с два такива модула.
Успех !
|
| Пет Сеп 15, 2006 8:10 am |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
При всички положения докато не се синхронизира със 100-те kHz няма да има 100% точност, ако това е целта. На мен ми е по интересно за какъв грездей ШИМ-а е 100 kHz.
|
| Пет Сеп 15, 2006 8:16 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
CCP - мериш с точност 1 процесорен такт. Т.е 100ns при 40 МHz пик. Това не стига ли?
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Пет Сеп 15, 2006 10:01 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
CCP не щракаше ли само по предния фронт? С него как се мери период ( всъщност : полупериод )?
|
| Пет Сеп 15, 2006 10:24 am |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
ССР щрака по който фронт му кажеш, можеш да му го казваш "в движение", ама ако му го казваш така, при малък (много малък - мързи ме да смятам) коефицент на запълване, е това: "CCP - мериш с точност 1 процесорен такт" (цитат от Цецо) не важи...
|
| Пет Сеп 15, 2006 10:34 am |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
Nikolas_N, нещо е много мъгляво какво се опитваш да направиш...
Да не се мъчиш семплираш PCM аудио?
|
| Пет Сеп 15, 2006 10:42 am |
|
 |
|
Nikolas_N
Ранг: Минаващ
Регистриран на: Нед Дек 25, 2005 7:26 pm Мнения: 12 Местоположение: Стара Загора
|
Благодаря на всички
Става въпрос за сензор за разстояние на капацитивен принцип. Изхода на схемата е фиксиран на 100KHz.
Пробвах с PIC18F458 пуснат на 4x8MHz, като ползвам двата CCP модула-единият мери нарастващия , а другия падащия фронт.
По разликата съдя за дължината на импулса.
Точността не е нужно да е много висока-0.5us е достатъчна при период 10us
Ще го пусна на 4x10MHz
Ако не стане, ще го интегрирам и после ADC. Лошото е че са 8 ШИМа на 40см разстояние един ог друг 
|
| Пет Сеп 15, 2006 8:06 pm |
|
|