www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

PWM in PIC16F877

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Drejc
Član
Član



Pridružen-a: Čet 27 Nov 2003 12:21
Prispevkov: 13
Aktiv.: 0.05
Kraj: MB

PrispevekObjavljeno: Pon Sep 20, 2004 1:33 pm    Naslov sporočila: icon_question PWM in PIC16F877 Odgovori s citatom

Cisto na kratko... Zacel sem z ukontrolerjem F84 in uspel narediti PWM regulacijo, sedaj pa bi rad presedlal na resno "zverino" (F877), in se tam igrati z PWM-jem...
No po preletavanju in citanju datasheeta imam obcutek da je zadeva precej bolj zakomplicirana...
Skrbijo, bolje receno ne razumem najbolj kako uporabit PWM/CAPTURE/COMPARE module, katere timerje je potrebno uporabit, kako se lotit zadeve, na kaj je potrebno pazit itd.

Pa ne mi zdaj pridigat o tem kaj je pwm npr. Rolling Eyes

Zelel bi cisto prakticen primer kako se lotit zadeve in na kaj pazit... Confused

Gre za podobno regulacijo kot se je lotil ze Silvo (16f84), vendar z omenjenim malckom... No podobno zadevo sem ze spravil skupaj, zdaj me pa zanima kako naj isto naredim z "starejsim bratom"...

Drejc
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pon Sep 20, 2004 1:54 pm    Naslov sporočila:   Odgovori s citatom

Citiram:
No po preletavanju in citanju datasheeta imam obcutek da je zadeva precej bolj zakomplicirana...


Stvar ni komplicirana. Le, da stvar ne morem opisat v par besedah. Te dni sem zelo na kratko s časom zaradi gužve v službi. Bom probal pripravit kak enostaven primer do konca tedna. A vezel bom raje 16F628 ki ga lahko direk dam na testno ploščo. Sama PWM se pa praktično ne razlikuje.

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ma73
Član
Član



Pridružen-a: Ned 04 Jan 2004 21:56
Prispevkov: 49
Aktiv.: 0.21

PrispevekObjavljeno: Sre Sep 22, 2004 10:54 pm    Naslov sporočila:   Odgovori s citatom

Silvo, to bi bilo pa res zelo lepo od tebe, če bi nam pokazal kakšen primer o PWM za PIC, prosim daj še za nas laike malo več komentarja Wink

Imaš še mogoče kakšen primerček za I2C...


lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Čet Sep 23, 2004 8:37 am    Naslov sporočila:   Odgovori s citatom

O samem I2C je bilo na forumu že kar precej napisanega. Odtipkaj v Iskanje "i2c" . Sicer lahko pogledaš na primer tale primer. Gre za čisto assemblersko rutino, za oscilator 4Mhz ter jo lahko uporabiš praktično na vsakem pic-u. Z samo vgrajeno I2C perifierijo v 16F877 pa še nisem delal. Slaba lastnost tega je, da je pač vezana na točno določen pin.
Glede PWM pa bom poskušal, če ne prej nekaj napisat čez vikend.

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Čet Sep 23, 2004 10:44 am    Naslov sporočila:   Odgovori s citatom

Sem sedaj imel malo časa. Vzorec je napisan za 16F628, katerega lahko direkt dam na testno ploščo, tako, da lahko zadevo testiram. Za ostale pica v glavnem ni razlke. Zraven vsake vrstice sem napisal komnetar, tako da z razumevanjem ne bi smelo biti problema.

Koda:

;--------------------------------------
;primer PWM
;uporabljen mikrokontroler pic16f628
;
;--------------------------------------

   list P=16F628

#include "d:\asm\p16F628.inc"

   __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _LVP_OFF & _XT_OSC

   cblock 0X20
   TMP
   endc

   org 0X0
   goto GLAVNI

   org 0x5

GLAVNI
   
   bsf STATUS,RP0      ;bank 1
   bcf TRISB,3         ;PWM pin pri 16F628 je RB3 -pin najprej dolocimo kot izhod
   movlw .19         ;primer vrednosti PWM perioda=(PR2+1)*4*Tosc
   movwf PR2         ;== (19+1)*4* 0.25uS==20uS==50kHz
   bcf STATUS,RP0      ;bank0
   movlw b'1010'         ;PWM duty c=(CCPR1L LSB)*TMR2 vrednost preddelilnika
   movwf CCPR1L      ;resolucija je 10 bitna CCPR1L (8bitov) ter dva LSB bita v
                  ;CCP1CON 5:4
   movlw b'00000100'   ;vkljucimo TIMER2 bit2 (preddelilnik 1:1) bit 0:1
   movwf T2CON
   movlw b'00001100'   ;vklucimo PWM mode. To storimo tako, da postavimo bita
   movwf CCP1CON      ;3:2 registra CCP1CON bit 5:4 sta LSB

                  ;izracun za dani primer (oscilator 4Mhz)
                  ;(19+1)*4*0.25uS==20uS==50000Hz
                  ;Frekveca 50kHz (20uS)
                  ;duty cycle =b'101000'==40*0.24uS*1=10uS
                  
   
ZANKA
   nop
   goto ZANKA
   
   END   ;eof




_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Drejc
Član
Član



Pridružen-a: Čet 27 Nov 2003 12:21
Prispevkov: 13
Aktiv.: 0.05
Kraj: MB

PrispevekObjavljeno: Pet Sep 24, 2004 1:15 pm    Naslov sporočila:   Odgovori s citatom

No osebni bi zadevo rad implementiral na cisto klasicni zarnici, ki je prikljucena na mrezo... No ob tem se mi postavlja par vprasanj... Rolling Eyes
Glede na to da se regulacija izvaja z "prehodom nule" je PWM perioda bistveno daljsa, kot jo navajas v tvojem primeru. V situacijah z mrezo je perioda vedno enaka 10 ms, duty cycle pa tako spreminjas med 0 in 10 ms (0 in 100%)...

Ta primer ki si ga opisal (v kolikor si jaz zadevo pravilno razlagam...) je uporaben za elektromotorje najbrz, kjer so frekvence regulacije precej visje... Jaz pa pri regulaciji MORAM upostevat faktor mreze, posledicno prehoda skozi nulo in posledicno se prekinitve, ki se ob tem sprozi (vsakih 10 msekund)... Idea

Glede na 4M quartz bi bilo precej tesko doseci periodo 10ms, zato je en pristop znizat frekvenco externe ure (tezko s kvarcem ker je takt relativno nizek, netocno z RC elementi), s tem doseci takt in uro 10 ms in prilagoditi vrednosti registrov da dobimo PWM periodo. Ce bi imel npr. quartz frek. 10kHz, s tem periodo 100us, potem bi glede na formulo lahko prisli do: Pwm per=(24+1)*4* 100uS=10000us=10ms.
Ce pa se lotim se duty cycla, bi ga pa recimo prav tako spreminjal po koraku npr. 33%, 33*100uS*1=3,3mS, pa nato 66*100us*a=6,6mS in nato 99…

Kako torej speljat zadevo z prekinitvijo? V prejsnjem programu sem imel zadevo implemetirano tako da sem v rutini za prekinitve gledal za katero vrsto prekinitve gre in nato z zamikom (tmr0) reguliral svetilnost… Kako naj postopam pri omenjenem pic-u??? Question Question

Drejc
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Sep 24, 2004 2:44 pm    Naslov sporočila:   Odgovori s citatom

Citiram:
No osebni bi zadevo rad implementiral na cisto klasicni zarnici, ki je prikljucena na mrezo... No ob tem se mi postavlja par vprasanj...


Za zelo nizko frekvenco po moje ne bi bila potrebna vgrajena PWM ampak bi lahko generiral lastno, saj je pri tem dovolj procesorskega časa. Nekje na forumu ali na Filemanager je ravno en tak primer IR regulatorja svetlobe. Zadevo sem izvedel z 16F84.
Kako je to po moje najenostavneje narediti?. Vključiš zunanjo prekinitev na pinu RB0/INT. Na tem pinu tipaš prehod skozi "0" zato lahko uporabiš kar optokopler na katerega dovedeš polnovalen usmerjen signal brez glajenja. Ko se izvede prehod skozi "0" se sproži prekinitev. V prekinitveni rutini napišeš eno časovno rutino katera z željenim časovnim zamikom pošlje na izhod nekaj mi S dolg impulz toliko, da prime tricac (seveda, če boš na izhodu uporabil triac).

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
LoLek
Član
Član



Pridružen-a: Sre 25 Feb 2004 12:46
Prispevkov: 343
Aktiv.: 1.45

PrispevekObjavljeno: Sre Apr 13, 2005 4:05 pm    Naslov sporočila:   Odgovori s citatom

Da ne odpiram nove teme: mene pa zanima kakšna je optimalna frekvenca PWM signala za vodenje DC motorja preko H-mostiča? Nekje sem slišal, da je frekvenca 50Hz, ampak meni tako nizka frekvenca dela probleme, ker imam 20MHz oscilator na PIC-u. (20MHz rabim za CAN vodilo, da deluje na 125kbps)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Gavran
Član
Član



Pridružen-a: Pon 26 Maj 2003 12:16
Prispevkov: 415
Aktiv.: 1.75
Kraj: Posavje

PrispevekObjavljeno: Čet Apr 14, 2005 8:42 pm    Naslov sporočila:   Odgovori s citatom

Frekvenco izbereš glede na moč motorja, izbrane izhodne transistorje in mesto, kjer bo motor deloval. Za večje moči in IGBT transistorje bi izbral nekje med 1 in 5 KHz, razen če mora motor biti tih (stikalno frekvenco boš slišal na motorju). Pri manjši moči in MOSFET transistorji bi šel nekje do 20KHz. To frekvenco bi izbral tudi, če mora biti delovanje tiho, vendar bi v primeru uporabe IGBT transistorjev moral izbrati ultrafast varianto ali pa jih predimenzionirati.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
LoLek
Član
Član



Pridružen-a: Sre 25 Feb 2004 12:46
Prispevkov: 343
Aktiv.: 1.45

PrispevekObjavljeno: Pet Apr 15, 2005 12:35 am    Naslov sporočila:   Odgovori s citatom

Imam od texas instruments H-bridge in v datasheetu piše, da je 2kHz optimalna frekvenca. To sem nastavil in deluje v redu. Hvala za odgovor.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aleks
Neznanec
Neznanec



Pridružen-a: Pon 11 Apr 2005 10:29
Prispevkov: 1
Aktiv.: 0.00

PrispevekObjavljeno: Sre Maj 04, 2005 10:29 am    Naslov sporočila:   Odgovori s citatom

Tud jaz da ne odpiram nove teme sem začetnik u pic programiranju, pa me zanima, če ma kdo že nareto al pa kak predlog kak bi naredu pwm s pic 16f84
rabim za krmiljenje motorja prek MOSFETa.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sre Maj 04, 2005 10:48 am    Naslov sporočila:   Odgovori s citatom

PIC16F84 nima vgrajene PWM periferije, zato se bo potrebno zadeve lotiti drugače. V vsakem primeru je najbolje uporabiti časovnik TMR0. Sam bi v koliko ne bi bila potrebna prevelika frekvneca uporabil še prekinitev, ki bi jo sprožil TMR0.
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group