Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

probleem PWM'iga

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    probleem PWM'iga

    mul on pic18f1220 ja 8MHz kristall.
    vaja on juhtida servomootorit.
    kas keegi oskab öelda, kuidas seda teha, kasutades riistvaralist pwm moodulit.
    pr2 register, kuhu kirjutada vastav väärtus on 8 bitine, aga ükskõik kuidas arvutan, tuleb see arv liiga suur. PWMi periood peaks olema servode juhtimiseks 20ms? või sobib ka väiksem?

    on see 20ms ikka Tpwm või äkki hoopis duty cycle?
    äkki keegi oskab aidata.

    #2
    Vs: probleem PWM'iga

    Kaks erinevat asja on PWM'i periood ja täitetegur(duty cycle), mõlemat saad teineteisest sõltumatult muuta. Loe veelkord ja ürita mõlemad välja arvutada.
    PWM'i põhimõte on, et tehakse mingi konstantse perioodiga (periood=1/sagedus) signaali. Signaali täitetegurit saad muuta.
    Puust ja punaselt. Signaal on mingi osa ajast kõrgel nivool ja siis mingi osa ajast madalal nivool. Üks kõrge ja üks madal nivoo kokku annavad ühe perioodi. Perioodi paned konstantsena paika. Teine parameeter on täitetegur. See näitab, kui suur osa perioodist on kõrge ja kui suur osa on madal. Täitetegurit muutes muudad ainult perioodi jagunemist kõrgeks ja madalaks, sellega ei muuda kõrge ja madala pikkuse summat.
    Eraldi saad muuta veel PWM'i loenduri perioodi. PWM loendur töötab taimeri takti alusel ja loeb kõigepealt n taimeri takti (kus n on 8bit täitetegur) ja siis loeb veel p-n takti (kus p on PWM'i 8bit periood). Et saada maksimaalset reguleerimisulatust 256, pead panema p=255. Kui näiteks on vaja reguleerida 100 sammu ulatuses, siis võtad p=99.
    Taimeri perioodiks arvutad 20ms / 256 = 78,125 mikrosekundit. PWM'i perioodiks paned 255. Täitetegurit krutid siis 0-255 ja servo muudab oma asukohta vastavalt sellele.

    Comment

    Working...
    X