ПВМ: опонашање аналогних пинова са вашом Ардуино плочом

ПВМ сигнали

Помоћу дигиталних и аналогних пинова које можете користити на Ардуино плочи можете да примате или шаљете електричне сигнале за контролу или добијање података из својих електронских пројеката. Поред тога, у овој врсти плоча постоје и други врло занимљиви сигнали, а то су ПВМ, који могу емулирати аналогни сигнал а да заправо нису аналогни. Односно, то су дигитални пинови који могу деловати на сличан начин (не исто) као аналогни сигнал.

Ове врсте сигнала су врло практичне када не желите само да користите дигиталне ВИСОКЕ и НИСКЕ сигнале, односно 1 или 0, УКЉУЧЕНО И ИСКЉУЧЕНО, већ желите ићи даље и описати нешто сложенији сигнали. На пример, могуће је модулисати брзину а Једносмерни мотор, или интензитет светлости светла, за соленоид итд.

Аналогни вс дигитални систем

Аналогни вс дигитални сигнал

Електронски кругови се могу поделити у две велике породице или категорије: дигитални и аналогни. Када говоримо о дигиталној електроници, користимо величине са дискретним вредностима, односно бинарни систем представљен електричним сигналима ниског или високог напона за тумачење стања оних битова којима се рукује. С друге стране, када се ради о аналогном колу, користе се величине са непрекидним вредностима.

Унутар дигиталних система могу се наћи редом оне комбинационог типа и оне секвенцијалног типа. Односно, први су они код којих излаз система зависи само од стања улаза. С друге стране, у секвенцијалне су укључени меморијски елементи, а излаз ће зависити од тренутног стања улаза и претходног ускладиштеног стања.

У случају аналога не постоје ове две велике групе или варијанте, јер су овде реч о континуалним сигналима од којих ће увек зависити ла сенал тренутни систем. На пример, у звучнику ће сигнал који му се испоручује зависити од звука који желите да репродукујете. Исто је и са микрофоном који ће генерисати аналогни сигнал у зависности од звука који прима. Сигурно сте то видели и са многим другим сензорима које смо описали на овом блогу и који делују са аналогним сигналима (и зато је требало створити формулу да би се касније вредности могле израчунати или условити у Ардуино ИДЕ скицама ) ...

Ове карактеристике једног и другог чине да неки имају своје предности и мане, као што је уобичајено у готово свему. На пример, дигитални су обично јефтинији, бржи, лакши за развој, информације се могу лакше складиштити, имају већу тачност, могу се програмирати, нису толико осетљиви на ефекте буке итд. Тачно је и да са аналогима можете радити са сложенијим сигналима.

По ејемпло, сензор Халловог ефекта дигиталног типа може да открије само присуство или одсуство оближњег магнетног поља. Уместо тога, аналогни сензор Холовог ефекта то може да уради и такође одреди густину поменутог магнетног поља захваљујући аналогном сигналу који генерише на његовом излазу. Знајући како добро протумачити тај сигнал већег или мањег напона, лако можете знати ту величину. Други примери које имате у мноштву величина природе које можете квантитативно измерити аналогним системом, као што су температура, време, притисак, удаљеност, звук итд.

Аналогни вс дигитални сигнал

То је речено, а аналогни сигнал То ће бити напон или електрична струја која се временом и непрекидно мења. Ако се нанесе на графикон, аналогни сигнал би био синусни талас једне фреквенције.

Што се тиче дигитални сигнал, је напон који постепено варира у односу на време. Односно, ако је представљен на графикону, то ће бити сигнал корака који се не мења континуирано, већ се мења у корацима или дискретним корацима.

Требали бисте знати да постоје склопови за прелазак са аналогног на дигитални сигнал или обрнуто. Ове претварачи познати су као ДАЦ (дигитално-аналогни претварач) и АДЦ (аналогно-дигитални претварач). И врло су чести у многим уређајима које данас користимо, попут телевизора, рачунара итд. Помоћу њих можете претворити дигиталне сигнале које користи ова опрема у електронски ниво за рад са другим периферним уређајима или деловима који раде аналогно.

По ејемпло, звучник или микрофон са аналогним сигналима који раде са звучном картицом или дигиталне графичке картице које су имале чувени РАМДАЦ чип за портове аналогних монитора ... У Ардуину се ова врста претварача такође користи за више пројеката, као што ћемо видети ...

Шта је ПВМ?

графички радни циклус

Мада ПВМ (модулација ширине импулса), или модулација ширине импулса, има дигиталну базу, облик његовог сигнала подсећа на донекле „квадратни“ аналогни сигнал. Омогућава помоћу дигиталних импулса да варирају сигнал да би емулирали аналогни систем као што сам већ раније коментарисао. У ствари, ако погледате име, оно вам већ даје трагове о томе шта чини, кроз ширину дигиталних импулса.

Ово је корисно за Ардуино будући да постоји много аутоматизама или електронских компонената које можете додати својим пројектима и то нису способни да пруже прави аналогни сигнал, али они користе овај ПВМ за рад. Нити могу да користе дискретизовани аналогни сигнал, односно који иде до скокова напона да подсећа на дигитални. Оно што могу да ураде је да користе дигитални излаз -Вцц или Вцц дигиталног типа за генерисање овог необичног сигнала ...

Стога је ПВМ својеврсни „трик“ са којим Ардуино и други системи могу да комуницирају са овом врстом сигнала који не постају потпуно аналогни или конвенционални дигитални. Да би то омогућили, они одржавају дигитални излаз активан одређено време или искључују, у зависности од интереса у сваком тренутку. Ово је далеко од онога што би био дигитални сат или сигнал бинарног кода, чији импулси имају исту ширину.

У својим пројектима са Ардуином можете проверити ову врсту ПВМ сигнала у којима се временом одржава константна фреквенција импулсних окидача, али ширина ових импулса је различита. У ствари, назива се радни циклус када се сигнал држи на високом нивоу с обзиром на укупан циклус. Стога је радни циклус дат у%.

Имајте на уму да ПВМ не ради као у аналогном сигналу, између различитих вредности напона и флуктуира између њих. У случају ПВМ то је квадратни сигнал у дигиталном стилу и чија је максимална вредност Вцц. На пример, ако радите са напајањем од 3В, можете давати импулсе од 3В или 0В, али не и 1В или било коју другу средњу вредност која би се догодила у стварном аналогном. Оно што би у том случају варирало је ширина импулса, коју можемо задржати 30% при тој високој Вцц вредности, или 60% да бисмо јој дали већу снагу итд.

Али будите опрезни, јер ако уређај подржава Вцц ограничење и премаши га ПВМ, може се оштетити. Зато би увек било потребно поштовати вредности техничких листова које пружају произвођачи. Такође, у неким уређајима као што су једносмерни мотори, релеји, електромагнети итд., повлачење напона након радног циклуса може значити да индуктивна оптерећења могу проузроковати штету. Због тога је заштите правовремено.

ПВМ на Ардуину

Ардуино И2Ц аутобус

Сад кад знате како то функционише, погледајмо конкретан случај ПВМ-а у свету Ардуина ...

ПВМ: пиноут на Ардуину

На Ардуино плочама можете пронаћи неколико пинова који имплементирају хардверски ПВМ. Можете их препознати на самој ПЦБ-у јер имају симбол ~ (мала глава) заједно са нумерисањем пинова. То би могао да уради и софтвер у Ардуино коду, али то би микроконтролера преоптеретило радом, нешто апсурдно када то може да се ради нативно и хардверски ...

  • Arduino UNO, Мини и Нано- Имате 6 8-битних ПВМ излаза на пиновима 3, 5, 6, 9, 10 и 11, који ће то имати ~ тачно испред броја.
  • Ардуино Мега- На овој најмоћнијој Ардуино плочи имате 15 8-битних ПВМ излаза. Налазе се на пиновима од 2 до 13 и од 44 до 46.
  • Ардуино Дуе: у овом случају постоји 13 8-битних ПВМ излаза. Налазе се на пиновима 2 до 13, плус два друга аналогна излаза дискретизована ДАЦ-ом са 12-битном резолуцијом.

Када говорите о резолуцији од 8 бита или 12 бита, итд., У овом типу ПВМ излаза, мислите на маневарски простор који имате. Са 8 битова има 256 нивоа Између којих се можете разликовати, а 12 битова иде до 4096 нивоа.

Контрола помоћу тајмера

За хардверску ПВМ контролу, Ардуино користиће тајмере за то. Сваки присутни тајмер може послужити 2 или 3 ПВМ излаза. Регистар за упоређивање за сваки излаз допуњује овај систем, тако да када време достигне вредност регистра, стање или вредност излаза се мењају да би се зауставили ти радни циклуси. Иако постоје два излаза којима управља исти тајмер, оба могу имати различите радне циклусе, иако деле исту фреквенцију.

У случају тајмера повезаних са сваким ПВМ пином, они ће се разликовати у зависности од врсте Ардуино плоче да имаш:

  • Arduino UNO, Мини и Нано:
    • Тајмер0 - 5 и 6
    • Тајмер1 - 9 и 10
    • Тајмер2 - 3 и 11
  • Ардуино Мега:
    • Тајмер0 - 4 и 13
    • Тајмер1 - 11 и 12
    • Тајмер2 - 9 и 10
    • Тајмер3 - 2, 3 и 5
    • Тајмер4 - 6, 7 и 8
    • Тајмер5 - 44, 45 и 46

Унапред подешени регистар поделиће време са целим бројем, а тајмер ће све остало урадити за контролу сваког од придружених ПВМ излаза. Модификовање вредности регистра може променити учесталост. Тхе фреквенције Такође ће се разликовати у зависности од тајмера и плоче:

  • Arduino UNO, Мини и Нано:
    • Тајмер0: омогућава предкалирање 1, 8, 64, 256 и 1024. Фреквенција је 62.5 Кхз.
    • Тајмер1: са унапред подешеним поставкама од 1, 8, 64, 256 и 1024. Са фреквенцијом од 31.25 кХз.
    • Тимер2: једнак Тимер1, само што додаје предходно скалирање 32 и 128 поред претходних.
  • Ардуино Мега:
    • Тајмер0, 1, 2: исто као горе.
    • Тајмер3, 4 и 5: са фреквенцијом од 31.25 кХз и унапред подешеним на 1, 8, 64, 256 и 1024.

Неспојивости и сукоби

Тајмер повезан са излазима није само за ту функцију, користе и други. Стога, ако их користи нека друга функција, морате да бирате између једне или друге, не можете истовремено да користите обе. На пример, ово су неке од некомпатибилности које можете пронаћи у својим пројектима:

  • Серво библиотека: Када користите серво моторе, он интензивно користи тајмере, тако да може створити сукобе. Конкретно користите Тимер1 за УНО, Нано и Мини, односно не можете користити пинове 9 и 10 док користите скицу са том библиотеком. У Меги ће то зависити од броја серво сервоа ...
  • СПИ: Ако се на плочи Ардуино користи СПИ комуникација, за функцију МОСИ користи се пин 11. Због тога се тај ПВМ пин не може користити.
  • Тон: ова функција користи Тимер2 за рад. Дакле, ако се користи, чините игле 3 и 11 (или 9 и 10 за Мега) бескорисним.

Практични тест са Ардуином

Шема Ардуино ПВМ-а са ЛЕД

Ако желите да на лицу места видите како ПВМ ради на Ардуину, најбоље што можете да урадите је да повежете мерне водове волтметар или мултиметар (у функцији мерења напона) између ПВМ пина који сте изабрали да користите и уземљења или ГНД ардуино плоче. На овај начин, на екрану мерног уређаја моћи ћете да видите како се напон мења са излазом који је дигитални захваљујући овом ПВМ трику.

Волтметар / мултиметар можете заменити ЛЕД-ом да бисте видели како варира интензитет светлости, једносмерним мотором или било којим другим елементом који желите. Поједноставио сам га на дијаграму са Фритзингом са ЛЕД-ом без више, али знајте да може представљати и савете мултиметра ...

Ако користите ЛЕД, запамтите отпор на катоди и ГНД.

у изворни код Да бисте управљали микроконтролером Ардуино плоче да би све функционисало, требало би да га уметнете у Ардуино ИДЕ (у овом случају сам користио ПВМ пин 6 од Arduino UNO):

const int analogOutPin = 6;
byte outputValue = 0;  
 
void setup()
{  
   Serial.begin(9600);        
   pinMode(ledPIN , OUTPUT); 
 
   bitSet(DDRB, 5);       // LED o voltímetro
   bitSet(PCICR, PCIE0);       
   bitSet(PCMSK0, PCINT3);     
}
 
void loop() 
{
   if (Serial.available()>0)  
   {
      if(outputValue >= '0' && outputValue <= '9')
      {
         outputValue = Serial.read();   // Leemos la opción
         outputValue -= '0';      // Restamos '0' para convertir a un número
         outputValue *= 25;      // Multiplicamos x25 para pasar a una escala 0 a 250
         analogWrite(ledPIN , outputValue);
      }
   }
}  
 
ISR(PCINT0_vect)
{
   if(bitRead(PINB, 3))
   { 
      bitSet(PORTB, 5);   // LED on 
   }
   else
   { 
      bitClear(PORTB, 5); // LED off  
   } 
} 
Саветујем вам да се поиграте вредностима и видите резултати на светлу или волтметру. Програм може да прими вредности од 0 до 9, тако да можете видети како се све разликује. За више информација, саветујем вам курс ардуино које имамо у бесплатном преузимању ...

Коментар, остави свој

Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.

  1.   Хозе дијо

    Здраво добар дан. Пре свега желим да вам се захвалим на времену посвећеном овом објашњењу за најновије.
    Желим да вас питам. Покушавам да покренем код на протеус 8 емулатору за Аргуино Мега. Прикључим волтметар на пин 6, Протеус је повезан са серијским портом, али не знам како и шта да варирам тако да се излазе различити напони. Морао сам да направим мања прилагођавања кода да бих га компајлирао. Много вам хвала на помоћи