- Шта је ПВМ сигнал?
- ПВМ који користи ПИЦ16Ф877А:
- Програмирање ПИЦ-а за генерисање ПВМ сигнала:
- Шеме и испитивање:
- Рад на хардверу:
Ово је наш десети водич за учење ПИЦ микроконтролера помоћу МПЛАБ и КСЦ8. До сада смо покрили многе основне водиче попут ЛЕД-а који трепће помоћу ПИЦ-а, тајмера у ПИЦ-у, повезивања ЛЦД-а, повезивања 7-сегмената, АДЦ-а помоћу ПИЦ-а итд. Ако сте апсолутни почетник, онда посетите комплетну листу водича за ПИЦ овде и почните да учите.
У овом упутству ћемо научити како се генеришу ПВМ сигнали помоћу ПИЦ ПИЦ16Ф877А. Наш ПИЦ МЦУ има посебан модул који се зове Цомпаре Цаптуре модуле (ЦЦП) који се може користити за генерисање ПВМ сигнала. Овде ћемо генерисати ПВМ од 5 кХз са променљивим радним циклусом од 0% до 100%. Да бисмо варирали радни циклус, користимо потенциометар, стога је препоручљиво научити АДЦ лекције пре него што започнете са ПВМ. ПВМ модул такође користи тајмере за подешавање његове фреквенције, па овде унапред научите како се користе тајмери. Даље, у овом упутству ћемо користити РЦ коло и ЛЕД да претворимо вредности ПВМ у аналогни напон и користимо их за пригушивање ЛЕД светла.
Шта је ПВМ сигнал?
Модулација ширине импулса (ПВМ) је дигитални сигнал који се најчешће користи у управљачким круговима. Овај сигнал је постављен на високу (5в) и ниску (0в) у унапред дефинисаном времену и брзини. Време током којег сигнал остаје висок назива се „он тиме“, а време током којег сигнал остаје низак се назива „време искључења“. Постоје два важна параметра за ПВМ о којима се говори у наставку:
Радни циклус ПВМ:
Проценат времена у којем ПВМ сигнал остаје ВИСОК (на време) назива се радни циклус. Ако је сигнал увек УКЉУЧЕН, он је у 100% радном циклусу, а ако је увек искључен, то је 0% радног циклуса.
Радни циклус = Вријеме УКЉУЧЕЊА / (Вријеме УКЉУЧИВАЊА + Вријеме искључивања)
Учесталост ПВМ-а:
Учесталост ПВМ сигнала одређује колико брзо ПВМ завршава један период. Један период је комплетан УКЉУЧЕН и ИСКЉУЧЕН ПВМ сигналом као што је приказано на горњој слици. У нашем упутству поставићемо фреквенцију од 5КХз.
ПВМ који користи ПИЦ16Ф877А:
ПВМ сигнали се могу генерисати у нашем ПИЦ микроконтролеру помоћу ЦЦП (Цомпаре Цаптуре ПВМ) модула. Резолуција нашег ПВМ сигнала је 10-битна, односно за вредност 0 постојаће радни циклус од 0%, а за вредност од 1024 (2 ^ 10) постоји радни циклус од 100%. У нашем ПИЦ МЦУ-у постоје два ЦЦП модула (ЦЦП1 и ЦЦП2), то значи да истовремено можемо генерисати два ПВМ сигнала на два различита пина (пин 17 и 16), у нашем упутству користимо ЦЦП1 за генерисање ПВМ сигнала на пин 17.
Следећи регистри се користе за генерисање ПВМ сигнала помоћу нашег ПИЦ МЦУ-а:
- ЦЦП1ЦОН (регистар контроле ЦЦП1)
- Т2ЦОН (контролни регистар тајмера 2)
- ПР2 (регистровање периода модула тајмера 2)
- ЦЦПР1Л (ЦЦП регистар 1 низак)
Програмирање ПИЦ-а за генерисање ПВМ сигнала:
У нашем програму очитаћемо аналогни напон од 0-5в са потенциометра и мапирати га на 0-1024 помоћу нашег АДЦ модула. Затим генеришемо ПВМ сигнал фреквенције 5000Хз и варирамо његов радни циклус на основу улазног аналогног напона. То је 0-1024 претвориће се у 0% -100% циклуса рада. Овај водич претпоставља да сте већ научили да користите АДЦ у ПИЦ-у, ако не, прочитајте га одавде, јер ћемо прескочити детаље о њему у овом упутству.
Дакле, када се поставе конфигурацијски битови и програм напише за читање аналогне вриједности, можемо наставити с ПВМ-ом.
При конфигурисању ЦЦП модула за рад са ПВМ-ом треба предузети следеће кораке:
- Подесите период ПВМ уписивањем у ПР2 регистар.
- Поставите радни циклус ПВМ уписивањем у ЦЦПР1Л регистар и ЦЦП1ЦОН <5: 4> битова.
- Направите ЦЦП1 пин излазом брисањем ТРИСЦ <2> бита.
- Подесите ТМР2 вредност предшколске скале и омогућите Тимер2 писањем у Т2ЦОН.
- Конфигуришите ЦЦП1 модул за рад ПВМ-а.
У овом програму постоје две важне функције за генерисање ПВМ сигнала. Једна је функција ПВМ_Инитиализе () која ће покренути регистре потребне за постављање ПВМ модула, а затим подесити фреквенцију на којој би ПВМ требао радити, друга функција је функција ПВМ_Дути () која ће поставити радни циклус ПВМ сигнала у потребни регистри.
ПВМ_Инитиализе () {ПР2 = (_КСТАЛ_ФРЕК / (ПВМ_фрек * 4 * ТМР2ПРЕСЦАЛЕ)) - 1; // Постављање ПР2 формула помоћу табеле података // ПВМ ради у 5КХЗ ЦЦП1М3 = 1; ЦЦП1М2 = 1; // Конфигуришите ЦЦП1 модул Т2ЦКПС0 = 1; Т2ЦКПС1 = 0; ТМР2ОН = 1; // Конфигурирање модула тајмера ТРИСЦ2 = 0; // направити порт пин на Ц као излаз}
Горња функција је функција иницијализације ПВМ-а, у овој функцији ЦЦП1 модул је подешен да користи ПВМ тако што бит бит ЦЦП1М3 и ЦЦП1М2 буде висок.
Предкалерирање модула тајмера подешава се постављањем бита Т2ЦКПС0 на највиши ниво, а Т2ЦКПС1 на најнижи ниво, а бит ТМР2ОН је подешен за покретање тајмера.
Сада морамо да подесимо фреквенцију ПВМ сигнала. Вредност фреквенције мора бити записана у ПР2 регистар. Жељена фреквенција се може подесити помоћу следећих формула
Период ПВМ = * 4 * ТОСЦ * (ТМР2 вредност предшколске скале)
Преуређивање ових формула да би се добио ПР2 даће
ПР2 = (Период / (4 * Тосц * ТМР2 Пресцале)) - 1
Знамо да је Период = (1 / ПВМ_фрек) и Тосц = (1 / _КСТАЛ_ФРЕК). Стога…..
ПР2 = (_КСТАЛ_ФРЕК / (ПВМ_фрек * 4 * ТМР2ПРЕСЦАЛЕ)) - 1;
Једном када је фреквенција постављена, ову функцију не треба поново позивати, осим ако и док поново не променимо фреквенцију. У нашем упутству доделио сам ПВМ_фрек = 5000; тако да можемо добити радну фреквенцију од 5 КХз за наш ПВМ сигнал.
Сада поставимо радни циклус ПВМ- а користећи доњу функцију
ПВМ_Дути (непотписана инт дути) {иф (дути <1023) {дути = ((флоат) дути / 1023) * (_ КСТАЛ_ФРЕК / (ПВМ_фрек * ТМР2ПРЕСЦАЛЕ)); // При смањењу // дути = (((флоат) дути / 1023) * (1 / ПВМ_фрек)) / ((1 / _КСТАЛ_ФРЕК) * ТМР2ПРЕСЦАЛЕ); ЦЦП1Кс = царина & 1; // Складиштимо 1. бит ЦЦП1И = дути & 2; // Складиштимо 0-битни ЦЦПР1Л = дути >> 2; // Спремимо 8-битни подсјећање}}
Наш ПВМ сигнал има 10-битну резолуцију, па се ова вредност не може сачувати у једном регистру, јер наш ПИЦ има само 8-битне линије података. Тако смо користили друга два бита ЦЦП1ЦОН <5: 4> (ЦЦП1Кс и ЦЦП1И) за чување последња два ЛСБ-а, а затим преосталих 8 бита у ЦЦПР1Л Регистру.
Време радног циклуса ПВМ може се израчунати помоћу следећих формула:
Радни циклус ПВМ = (ЦЦПРИЛ: ЦЦП1ЦОН <5: 4>) * Тосц * (ТМР2 вредност предшколске скале)
Преуређивањем ових формула да се добију вредности ЦЦПР1Л и ЦЦП1ЦОН добиће се:
ЦЦПРИЛ: ЦЦП1Цон <5: 4> = радни циклус ПВМ / (Тосц * ТМР2 вредност скале)
Вредност нашег АДЦ-а ће бити 0-1024, треба да буде у 0% -100%, дакле, ПВМ деловни циклус = царина / 1023. Да бисмо претворили овај радни циклус у временски период, морамо га помножити са периодом (1 / ПВМ_фрек)
Такође знамо да је Тосц = (1 / ПВМ_фрек), дакле..
Дужност = (((плутајућа) царина / 1023) * (1 / ПВМ_фрек)) / ((1 / _КСТАЛ_ФРЕК) * ТМР2ПРЕСЦАЛЕ);
Решавање горње једначине даће нам:
Дажбина = ((плутајућа) царина / 1023) * (_КСТАЛ_ФРЕК / (ПВМ_фрек * ТМР2ПРЕСЦАЛЕ));
Комплетни програм можете погледати у одељку Цоде испод са детаљним видео записом.
Шеме и испитивање:
Као и обично, проверимо излаз користећи Протеус симулацију. Дијаграм коло је приказано у наставку.
Прикључите потенциометар на 7. пин да бисте напајали напон 0-5. ЦЦП1 модул је са пином 17 (РЦ2), овде ће се генерисати ПВМ који се може верификовати помоћу дигиталног осцилоскопа. Да бисмо ово претворили у променљиви напон , користили смо РЦ-филтер и ЛЕД да бисмо проверили излаз без опсега.
Шта је РЦ-филтер?
РЦ филтер или филтар ниских је једноставан склоп са два пасивних елемената односно отпорника и кондензатор. Ове две компоненте се користе за филтрирање фреквенције нашег ПВМ сигнала и чине га променљивим једносмерним напоном.
Ако испитамо коло, када се променљиви напон примени на улаз Р, кондензатор Ц ће почети да се пуни. Сада на основу вредности кондензатора, кондензатору ће требати неко време да се потпуно напуни, једном напуњен блокираће једносмерну струју (имајте на уму да кондензатори блокирају једносмерну струју, али дозвољава наизменичну струју), па ће се улазни једносмерни напон појавити на излазу. Високофреквентни ПВМ (АЦ сигнал) биће уземљен кроз кондензатор. Тако се преко кондензатора добија чиста једносмерна струја. Утврђено је да вредност од 1000Охм и 1уф одговара овом пројекту. Израчунавање вредности Р и Ц укључује анализу кола помоћу функције преноса, што је ван опсега овог водича.
Излаз програма се може верификовати помоћу дигиталног осцилоскопа, као што је приказано доле, промените потенциометар и радни циклус ПВМ-а треба да се промени. Такође можемо приметити излазни напон РЦ кола помоћу Волтметра. Ако све функционише како смо очекивали, можемо наставити са нашим хардвером. Даље проверите Видео на крају за цео поступак.
Рад на хардверу:
Хардверско подешавање пројекта је врло једноставно, ми ћемо само поново користити нашу ПИЦ Перф плочу приказану доле.
Такође ће нам требати потенциометар за напајање аналогног напона, на свој лонац сам прикачио неке женске крајње жице (приказано доле), тако да их можемо директно повезати на ПИЦ Перф плочу.
На крају, да бисмо верификовали излаз, требају нам РЦ коло и ЛЕД да бисмо видели како функционише ПВМ сигнал, једноставно сам користио малу перф плочу и на њега залемио РЦ круг и ЛЕД (за контролу осветљености), као што је приказано испод
Можемо користити једноставне женске каблове за повезивање жица и повезати их у складу са схемама приказаним горе. Када је веза завршена, отпремите програм на ПИЦ користећи наш пицкит3 и требали бисте бити у могућности да добијете променљиви напон на основу улаза вашег потенциометра. Варијабилни излаз се користи за контролу осветљености ЛЕД овде.
Мултиметар сам користио за мерење променљивих излаза, такође можемо приметити да се осветљеност ЛЕД-а мења за различите нивое напона.
То је све што смо програмирали да очитава аналогни напон са ПОТ-а и претвара у ПВМ сигнале који су заузврат претворени у променљиви напон помоћу РЦ филтера и резултат се верификује помоћу нашег хардвера. Ако сумњате или негде запнете, љубазно користите одељак за коментаре у наставку, радо ћемо вам помоћи. Комплетан радни ради на снимку.
Такође проверите наше остале Туториале за ПВМ на другим микроконтролерима:
- Водич за ПВМ за Распберри Пи
- ПВМ са Ардуино због
- Ардуино заснован ЛЕД затамњивач који користи ПВМ
- ЛЕД затамњење напајања помоћу АТмега32 микроконтролера