Отговори на тема  [ 28 мнения ]  Отиди на страница Предишна  1, 2
Софтуерен ШИМ (PWM) 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Яну 30, 2006 2:48 am
Мнения: 1248
Местоположение: София
Мнение 
azrael написа:
Edesign написа:
Поясни какво точно правиш. Хем за ШИМ става въпрос хем за 1200 бода хем за някакви 4 МХЗ с този ПИК?
Нещо нищо не се връзва какво е питането ти?


Ограничения: Тактова честота на микроконтролера: 4MHz (не може да се променя - ползва се вградения генератор). Няма хардуерен ШИМ (не трябва да се ползва друг чип).
Питането: Дали някой е генерирал FSK сигнал na 1200 boda със подобен PIC, чрез използване на ШИМ (за да не откривам топлата вода тепърва). Честотите на тоновете, които трябва да се получат са при Low Bit -> 2200Hz и при High Bit -> 1200Hz ( т.е. продължителността на един бит е 833,3 микросекунди )

Нещо друго неясно има ли? Или ясно?


направи си една малка програмка в таймерно прекъсване.
Достатъчна е!
Аз имам продукт, който освен че предава, и приема (с аналоговия компаратор) и декодира същата поредица, че прави и протокола за обмена (пакети) в многоточкова модемна структура.
не е просто, но става.
Но не става на "С". става на асемблер. :evil:

Да добавя - с такт 4МХц

Впрочем, модемчето го продавам евтино :D :D :D


Пон Дек 11, 2006 11:03 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Дек 11, 2006 11:47 am
Мнения: 7
Мнение 
HCL - Е най накрая, още едно мнение което заслужава внимание, след това на evc. Като начало това ми идва в главата, а отпосле - замислям се доколко правилно съм представил проблема. И май грешката е моя, така че, че моля да бъда извинен. В един момент тук ми заприлича на "поредния форум" дето всички пишат и никой не мисли. Затова беше предното гадно изказване. Съжалявам. Точно това е HCL, представи си няколко радиопредавателя, които при определено събитие излъчват различен "код" - двоична информация, която е генерирана и доведена до синусоидална форма от този PIC именно чрез PWM. Но в един моент трябва да се промени някоя от думите и се натъкваме на CP ALL... Следователно, в устройството трябва да бъде записано всичко отначало. И ми е необходим някакъв читав алгоритъм. При все това, че със този PIC, с тази тактова честота, съм го видял да работи. Яд ме е на себе си, че алгоритмите които съставям до момента са прекалено тромави и резултата е повече от отвратителен. Затова и търся помощ, а не мнения от рода "ами това се прави елемнтарно" ...


Пон Дек 11, 2006 11:39 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 1:31 pm
Мнения: 3849
Мнение 
Май наистина не се разбрахте в началото, затова и се получиха такива мнения, но както и да е.
Защо точно PWM? Един VCO не е ли по-добро решение, резонансен крьг с варактор или пьк два осцилатора ако има проблем сьс скоростта на превключване.
И един вьпрос от любопитсво, обикновенна FSK модулация ли използваш или филтрираш честотните преходи (GFSK например) с цел да ограничиш спектьра?
Какво им е тромавото на алгоритмите, пусни код или поне схема на програмта. И какво точно се случва сьс сигнала ведньж излязал от µC-a.
Syrius-B и ти ли сьздаваш синусоида сьс PWM 8O
Впрочем @азраел аз сьм от "чираците" в този форум, затова и повече питам и гледам да избягвам да давам много акьл, макар и да се изкушавам понякога, човешко e :D , да не се подведеш нещо по лампичките над аватара.


Вто Дек 12, 2006 12:51 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
HCL написа:
Тук намерих готина картинка която онагледява идеята.


А имаш ли идея за интегратора на ШИМ-а, за да се получи таква гладка синусоида? Интересува ме живо темата. :)


Вто Дек 12, 2006 1:09 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Дек 11, 2006 11:47 am
Мнения: 7
Мнение 
VCO на толкова ниски честоти, при това с варактор... Май няма да се получи. А по втория въпрос - обикновена FSK. А какво е тромавото - значи аз досега се опитвах да завъртам една табличка, която представлява един период от синусоида и в зависимост от бит (0 или 1) се променяше скоростта на заврътане на тази табличка. Тези опити завършиха успешно, но не през ШИМ, а през R2R. След това реших, че трябва да използвам хардуерния ШИМ на PIC16F628 и го направих и така - със честота на ШИМ-а 62.5kHz. Но после се оказа, че чипа в нещото, което трябва да се презаписва е 12F629 - т.е. няма хардуерен ШИМ... А какво се случва със сигнала след като излезе от чипа - минава през две интегриращи групички (които също не могат да бъдат променени) съставени от 2,2k и 100nF a оттам отива във FM модулатора на някакъв радиопредавател..


Вто Дек 12, 2006 8:13 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Виждал съм по мрежата такива решения, е, не точно за този PIC и тази честота на осцилатора. Генерират правоъгълни импулси с точната честота, след което се филтрират с активен НЧФ и на изхода излиза синусоида. Като искаш да предаваш 1 или 0, сменяш честотата на правоъгълните импулси за времето на 1 бит и ... общо взето е това. В сайта на TI има такива AN за MSP430 в качеството си на FSK ( май V.23 ) модем.

Ако обаче искаш да синтезираш тези честоти, т.е. PIC да ти прави синусоида без хардуерен ШИМ и на тази честота, няма как да стане. Синтезирам с PIC на 8 MHz с хардуерен ШИМ DTMF сигнали, процесора е натоварен на 99,99 %, даже не достига в определени програмни сегменти, но ме спасява външния филтър, който не може да реагира толкова бързо.

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Вто Дек 12, 2006 10:09 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Авг 31, 2005 1:57 pm
Мнения: 1103
Мнение 
ето линк към статия как се смятат филтрите:
ww1.microchip.com/downloads/en/AppNotes/00538c.pdf
ето и още една статия:
http://www.edn.com/index.asp?layout=art ... d=CA240913

Според мен може да се направят два софтуерни шима на 2 пина на ПИКа и с външен аналогов ключ да се комутират към общ изход.
За генериране на ДТМФ пак има статия и сорс някъде из апликейшъните с R2R на някакъв ПИК 16 серия и кода не беше никак голям.
Но наистина все още не ми става ясно възможна ли е тази FSK заради съотношенията на времената. Просто никога не съм правил подобна комуникация. Имам доста проекти на дистанционни управления, някои от първите ми съм публикувал в страничката ми може да ги разгледаш но са на принципа с чист PWM както беше описано няколко поста по-горе.


Вто Дек 12, 2006 10:19 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юни 07, 2005 6:20 pm
Мнения: 3532
Мнение 
azrael се опитва да обясни следното

Той има платка, устройство, което е готово и работещо и изпълнено по определен начин (и не е негово произведение). Обаче не му върши работа поради някаква причина (той каза каква). Изхода според него е да се смени софта. Това е.
Не знам защо обаче досега не написа горните две изречения в прав текст. Обикновено за да получиш правилен отговор трябва да зададеш правилен въпрос (аз доста често не успявам, така че не го съдя).

От тази гледна точка едва ли ще му свършат работа други решения освен софтуерни.
И в този ред на мисли аз да попитам - azrael, сигурен ли си че това което реализират със сегашната програма е ШИМ, а не просто цифров FSK с аналогов филтър? (само питам :wink: ).


Вто Дек 12, 2006 11:32 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 1:31 pm
Мнения: 3849
Мнение 
Реконструктор написа:
HCL написа:
Тук намерих готина картинка която онагледява идеята.


А имаш ли идея за интегратора на ШИМ-а, за да се получи таква гладка синусоида? Интересува ме живо темата. :)


Не бях виждал подобна реализация на PWM, затова и питах как изглеждат филтрите след µC-а, но Edesign е дал хубави линкове.


Вто Дек 12, 2006 12:27 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Преди време правих един пик да вади синусоида с ШИМ на 50 хц, 20 кхц носеща (ясно за какво иде реч). Човека само това искаше де. И като го сложихме на неговия стар руски осцилоскоп имаше много красива синусоида - кондезатора в сондата така хубаво изглаждаше сигнала, че чак се удивихме. Иначе и на мен ми е интересно какво представлява интегратора на сигнала.


Вто Дек 12, 2006 1:52 pm
Профил ICQ
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Пет Окт 21, 2005 8:45 am
Мнения: 499
Мнение 
Всичко, което обобщи @ex-man е вярно, но бих искал да заостря вниманието ви на няколко цифри:
При 20кХц един период на ШИМ-а е 50мкс. В един период на синусоидата при високата честота на модулация - 2200Хц има 9 периода на ШИМ-а. Следователно синусоидата може да се опише с не повече от 9 точки, което не е толкова зле - за сравнение HiFi компакт диск има честота на дискретизациа 22кХц на канал при ширина на честотната лента 20кХц! Тук е подводния камък обаче! При тези честоти е много трудно да се получи желаната резолюция на синусоидата при такт от 1МХц! Т.е. да се постигне колкото се може по-голяма динамика на изходното напрежение, като се запази относително монотонно нарастването и спадането на сигнала - да не стане на "стъпалца" синуса. Ето защо посъветвах колегата да напише колкото се може по-линеен код, дори ако е възможно да не използва прекъсвания въобще. Прилагам подпрограмата за генериране на синусоида, с която постигнах най малка "стъпаловидност" на изходния сигнал, както ти обещах @azrael. Освен нея трябва да добавиш основната програма, която да прави проверка за настъпване на стартовото събитие, да върти един по един байтовете на идентификационната поредица, като в подпрограмата изходната честота се управлява от флага f2200. Подпрограмата генерира цял период на синусоида, така че на всеки период можеш спокойно да сменяш честотата - за да не се получат хармоници. Честотата на ШИМ-а е 20кХц за 2200Хз и 11кХц за 1200Хц. За кодиране на "0", трябва да се извика два пъти подред подпрограмата. Ако такова голямо изменение на честотата не е желателно - може да се направят две отделни подпрограми за генериране на двете честоти, като във случая с 1200Хц, ще имаш 16точки за един период на синусоидата, вместо 9.
Успех!


Прикачени файлове:
PWM_code.asm [2.47 KiB]
260 пъти

_________________
Простотията е Божи дар, но човек не бива да парадира с подаръците си!
Вто Дек 12, 2006 3:13 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Сря Апр 05, 2006 9:52 pm
Мнения: 877
Местоположение: Разград
Мнение 
evc,
да разбирам ли от твоя код, че номера е в избраните стойности на sin_table ( от 28 до 50%) за да се получи по гладка синосуида?
И не можах да схвана нуждата от asin_table.. (':oops:')


Вто Дек 12, 2006 10:27 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Пет Окт 21, 2005 8:45 am
Мнения: 499
Мнение 
@kasparov,
всичко се принася в жертва на скоростта. Ролята на asin_table е да се спести изчисляването на стойността на времето, през което изхода ще е "0" чрез изваждане. Това би стеснило и без това тесния динамичен диапазон с още две-три мкс. При положение, че целия период е 50мкс, стойност 50 съответства на 100%. Може да се изцеди и още малко динамика, ако се направят отделни подпрограми за 1200 и 2200Хц.

_________________
Простотията е Божи дар, но човек не бива да парадира с подаръците си!


Сря Дек 13, 2006 9:55 am
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 28 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

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


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

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