У овом пројекту ћемо користити једну од карактеристика АТмега32А да подесите осветљеност 1 Ватт ЛЕД. Метода која се користи за подешавање брзине ЛЕД-а је ПВМ (Пулсе Видтх Модулатион). Овај водич за ПВМ за АВР микроконтролере детаљно објашњава концепт ПВМ-а и генерисање ПВМ-а (Такође можете да проверите ово једноставно коло ПВМ генератора). Размотрите једноставан склоп као што је приказано на слици.
Сада, ако је прекидач на горњој слици непрекидно затворен током одређеног временског периода, онда ће сијалица непрекидно да гори током тог времена. Ако је прекидач затворен на 8 мс и отворен на 2 мс током циклуса од 10 мс, онда ће сијалица бити укључена само у времену од 8 мс. Сада је просечни терминал пребачен током периода од 10 мс = време УКЉУЧЕЊА / (време УКЉУЧИВАЊА + време ИСКЉУЧЕЊА), то се назива радни циклус и износи 80% (8 / (8 + 2)), па је просек излазни напон ће бити 80% напона батерије.
У другом случају, прекидач је затворен на 5мс и отворен на 5мс током 10мс, тако да ће просечни напон на излазу бити 50% од напона акумулатора. Рецимо да ли је напон акумулатора 5В, а радни циклус 50%, па ће просјечни напон на прикључку бити 2.5В.
У трећем случају радни циклус је 20%, а средњи напон на прикључку је 20% напона батерије.
У АТМЕГА32А имамо четири ПВМ канала, и то ОЦ0, ОЦ1А, ОЦ1Б и ОЦ2. Овде ћемо користити ОЦ0 ПВМ канал за варирање осветљености ЛЕД диоде.
Компоненте потребне
Хардвер:
Микроконтролер АТмега32
Напајање (5в)
АВР-ИСП програмер
Кондензатор 100уФ, 1Ватт ЛЕД
ТИП127 транзистор
Дугмад (2 комада)
Кондензатор 100нФ (104) (2 комада), Отпорници од 100Ω и 1кΩ (2 комада).
Софтвер:
Атмел студио 6.1
Прогисп или фласх магија
Шема и радно објашњење
Горња слика приказује шему кола ЛЕД затамњења са АВР микроконтролером (Такође можете да проверите овај једноставан круг ЛЕД затамњења).
У АТмеги, за четири ПВМ канала, одредили смо четири пина. Излаз ПВМ можемо узети само на ове пинове. С обзиром да користимо ПВМ0, требало би да узмемо ПВМ сигнал на ОЦ0 пину (ПОРТБ 3. ПИН). Као што је приказано на слици, повезујемо базу транзистора са ОЦ0 пином за погон ЛЕД напајања. Овде је још једна ствар преко четири ПВМ канала, два су 8-битна ПВМ канала. Овде ћемо користити 8-битни ПВМ канал.
На свако дугме је повезан кондензатор како би се избегло одбијање. Кад год притиснете дугме, на затик ће се чути неки звук. Иако се овај шум стабилизује у милисекундама. За контролер оштри врхови пре стабилизације делују као окидачи. Овај ефекат може бити уклоњен софтвером или хардвером, како би програм био једноставан. Користимо хардверску методу додавањем кондензатора за одбијање звука.
Кондензатори поништавају ефекат одбијања тастера.
У АТМЕГА постоји неколико начина за генерисање ПВМ-а, а то су:
1. Фаза исправља ПВМ
2. Брзи ПВМ
Овде ћемо све поједноставити, па ћемо користити ФАСТ ПВМ методу за генерисање ПВМ сигнала.
Прво одаберите фреквенцију ПВМ-а. То обично зависи од примене, када ЛЕД диода ради било коју фреквенцију већу од 50Хз. Из тог разлога бирамо бројач 1МХЗ. Дакле, не бирамо никакав прескалар. Прескалар је број који је одабран тако да добије мањи бројач сати. На пример, ако је такт осцилатора 8 МХз, можемо одабрати прескалар од '8' да добијемо такт од 1 МХз за бројач. Прескалар се бира на основу учесталости. Ако желимо више импулса у временском периоду, морамо одабрати виши предскалар.
Сада да бисмо из АТМЕГА-е избацили БРЗИ ПВМ од 50 Хз такта, морамо да омогућимо одговарајуће битове у регистру „ ТЦЦР0 “. Ово је једини регистар који нам је потребан да бисмо добили 8-битни ФАСТ ПВМ.
Ево, 1. ЦС00, ЦС01, ЦС02 (ЖУТО) - одаберите прескалар за одабир бројача сата. Табела за одговарајући предкалар приказана је у доњој табели. Дакле, за предкалирање једног (осцилаторни сат = бројач).
па је ЦС00 = 1, друга два бита су нула.
2. ВГМ01 и ВГМ00 су измењени да бирају режиме генерисања таласних облика, на основу доње табеле, за брзи ПВМ. Имамо ВГМ00 = 1 и ВГМ01 = 1;
3. Сада знамо да је ПВМ сигнал са различитим односом дужине или различитим временима УКЉ. До сада смо бирали фреквенцију и тип ПВМ-а. Главна тема овог пројекта лежи у овом одељку. Да бисмо добили другачији однос дажбина, изабраћемо вредност између 0 и 255 (2 ^ 8 због 8 бита). Рецимо да одаберемо вредност 180, јер бројач почиње рачунати од 0 и достигне вредност 180, излазни одговор се може активирати. Овај окидач може бити инвертујући или неинвертујући. То је излаз који се може зауставити када се постигне бројање, или се може рећи да се повукао када се достигне бројање.
Овај избор повлачења горе или доле одабиру битови ЦМ00 и ЦМ01.
Као што је приказано у табели, да би излаз напредовао при упоређивању, а излаз ће остати висок до максималне вредности (као што је приказано на слици на дну). Морамо изабрати начин инвертовања да бисмо то урадили, па је ЦОМ00 = 1; ЦОМ01 = 1.
Као што је приказано на доњој слици, ОЦР0 (Оутпут Цомпаре Регистер 0) је бајт који чува вредност коју је изабрао корисник. Дакле, ако променимо ОЦР0 = 180, контролер покреће промену (високу) када бројач достигне 180 од 0.
Сада за варирање осветљености ЛЕД-а морамо да променимо ДУТИ РАТИО ПВМ сигнала. Да бисмо променили однос дажбине, морамо да променимо вредност ОЦР0. Када променимо ову вредност ОЦР0, бројачу треба различито време да достигне ОЦР0. Дакле, контролер вуче излаз високо у различито време.
Дакле, за ПВМ различитих радних циклуса, морамо да променимо вредност ОЦР0.
У кругу имамо два тастера. Једно дугме служи за повећање вредности ОЦР0 и тако ДУТИ РАТИО ПВМ сигнала, друго је за смањење ОЦР0 вредности и тако ДУТИ РАТИО ПВМ сигнала.