• slider image 442
  • slider image 477
  • slider image 479
  • slider image 480
  • slider image 481
  • slider image 482
:::


Browsing this Thread:   1 Anonymous Users






請教PIC16F1936 PWM DUTY的設定
#1
新會員
新會員


查看用戶資訊
各位大大好

小弟有一個10khz PWM的設定問題
就是想要用一個VR來調整PWM 1%-100%的輸出
又不想要因為ADC轉換,產生誤差
EX:下面的設定
/*
* PWM registers configuration
* Fosc = 20000000 Hz
* Fpwm = 10000.00 Hz (Requested : 10000 Hz)
* Duty Cycle = 50 %
* Resolution is 10 bits
* Prescaler is 4
*/
PR2 = 0b01111100 ;
T2CON = 0b00000101 ;
CCPR1L = 0x3e ;
CCP1CON = 0b00001100 ;

問題是在CCPR1L,CCPR1L控制DUTY的加減,
當CCPR1L在0x7c時輸出就會到達100%,
小弟的算法是:
0-0x7c有125個STEP,而VR經由ADC是取8 bit 255 STEP,
大約是兩倍。
因此就把VR得到值/2,丟到CCPR1L
但事出現一個問題,會有抖動的情形,抖動的情況事發生在ADC的跳動誤差和/2的進位退位的+1-1情形,駛的PWM的DUTY跳動。
根據這個情形,想問板上先進,該如何課定才能使的PWM的FULL SACLE是255個STEP,頻率必須微值10K(外接OSC20Mhz)
謝謝

發表於: 2009/9/7 22:54
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請教PIC16F1936 PWM DUTY的設定
#2
版主
版主


查看用戶資訊
參照:

jiunli 寫道:
在ADC的跳動誤差和/2的進位退位的+1-1情形,駛的PWM的DUTY跳動。
根據這個情形,想問板上先進,該如何課定才能使的PWM的FULL SACLE是255個STEP,頻率必須微值10K(外接OSC20Mhz)


PWM 會抖動是因為 ADC 轉換時 LSB 會受到Digital Noice 的干擾,要降低跳動干擾可以用取 AD 的平均,或將低AD轉換跟新 Duty 的速度;或在 Sleep Mode下 ADC 使用Interal RC 做轉換,這樣 Digital Noise 的干擾會是最小的。

PR2 = 0xFF 就可以做到 256 階。20Mhz 10-bit resolution 為19.53KHz;降成 10NHz 就可以為 10KHz PWM 輸出,因
Timer2 無除二的 Prescaler。

發表於: 2009/9/8 13:47
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請教PIC16F1936 PWM DUTY的設定
#3
新會員
新會員


查看用戶資訊
感謝板大的回覆
小弟目前也是先用30-50次並去頭去尾做平均
ADC的效果還是算穩定但總是會有一兩個STEP換算時會有跳動
所以才想說如果可以直接由ADC 256STEP對應~那就不用除2了

降成 10NHz 就可以為 10KHz PWM 輸出
請問這個要怎麼設定?

發表於: 2009/9/8 14:34
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請教PIC16F1936 PWM DUTY的設定
#4
版主
版主


查看用戶資訊
沒辦法,使用 ADC 轉換的結果去控制 Duty 很難不會有跳動現象的。

10MHz Fosc 的計算;10MHz/10KHz= 1000, 又1000 轉成16進制= 0x3E8, 所以 Duty(CCPRL+CON1CON<5:4>) 最高為 0x3E8 (10-bit) , PR2 = 0x3E8/4=0xFA。

發表於: 2009/9/8 15:10
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請教PIC16F1936 PWM DUTY的設定
#5
新會員
新會員


查看用戶資訊
參照:

Ryang 寫道:
沒辦法,使用 ADC 轉換的結果去控制 Duty 很難不會有跳動現象的。

10MHz Fosc 的計算;10MHz/10KHz= 1000, 又1000 轉成16進制= 0x3E8, 所以 Duty(CCPRL+CON1CON<5:4>) 最高為 0x3E8 (10-bit) , PR2 = 0x3E8/4=0xFA。


感謝板大
ADC的誤差~上次也有問過類似的問題~看來稍微跳動是難免了~
PWM的DUTY也只好使用20KHZ了~
先暫時使用看看~會不會有問題
感謝RYANG回覆

發表於: 2009/9/8 17:07
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------