PDA

View Full Version : Frequency PWM and Resolution


NATO308
16-04-2009, 02:28 PM
Anh Nam và mọi người giúp mình trả lời câu hỏi này nhé :
Câu 1: tần số PWM lớn nhất mà dspic30f4011 có thể tạo ra là bao nhiêu . Tương ứng là bao nhiêu bit ( hay độ phân giải )
Mình đã tìm trong datasheet và thấy có Công thức :

Tpwm =( Tcy.(PTPER +1 ) ) / (PTMR Prescale Value )
Resolution = log ( 2.(Tpwm/Tcy) ) / log ( 2 )

Với CT này , thì Fpwm muốn max thì Tpwm phải min , PTMR = 64 , Fcy = 160 MHz ( PLLx16)
Nhưng mình không biết giá trị PTPER phải bằng bao nhiêu để Fpwm max ( có phải = 1 ?? ). Giá trị max và min của PTPER là bằng bao nhiêu ?

Ở công thức tính độ phân giải , đơn vị của công thức đó có phải là bit ko ?

Câu 2 : Có sự khác nhau "về chất" của PWM (biên độ, dải tần số , pin tạo ra PWM ,độ ổn định .... ) giữa " Power supply PWM " và " Motor Control PWM Module " không ? Mình thấy microchip chia ra làm 2 phần riêng biệt .

Thanks !

namqn
16-04-2009, 05:53 PM
Anh Nam và mọi người giúp mình trả lời câu hỏi này nhé :
Câu 1: tần số PWM lớn nhất mà dspic30f4011 có thể tạo ra là bao nhiêu . Tương ứng là bao nhiêu bit ( hay độ phân giải )
Mình đã tìm trong datasheet và thấy có Công thức :

Tpwm =( Tcy.(PTPER +1 ) ) / (PTMR Prescale Value )
Resolution = log ( 2.(Tpwm/Tcy) ) / log ( 2 )

Với CT này , thì Fpwm muốn max thì Tpwm phải min , PTMR = 64 , Fcy = 160 MHz ( PLLx16)
Nhưng mình không biết giá trị PTPER phải bằng bao nhiêu để Fpwm max ( có phải = 1 ?? ). Giá trị max và min của PTPER là bằng bao nhiêu ?

Ở công thức tính độ phân giải , đơn vị của công thức đó có phải là bit ko ?

Câu 2 : Có sự khác nhau "về chất" của PWM (biên độ, dải tần số , pin tạo ra PWM ,độ ổn định .... ) giữa " Power supply PWM " và " Motor Control PWM Module " không ? Mình thấy microchip chia ra làm 2 phần riêng biệt .

Thanks !
1. Công thức tính Fpwm của bạn không chính xác, vì nếu biến đổi công thức đã nêu trong "dsPIC30F Family Reference Manual" thì nên có công thức sau:
Fpwm = Fcy/[(PTMR Prescaler)*(PTPER+1)]

Như vậy Fpwm sẽ đạt giá trị lớn nhất nếu hai biểu thức nằm ở mẫu số cùng đạt giá trị nhỏ nhất, và Fcy đạt giá trị lớn nhất. Với dsPIC30F4011, Fcy lớn nhất nằm trong giới hạn hoạt động được khuyến cáo của nhà sản xuất là 30 MHz. PTPER là một thanh ghi 16-bit, có thể được gán giá trị nguyên từ 0 đến 65535.

Do đó, về mặt lý thuyết thì Fpwm có thể đạt Fcy, khi thiết lập PTPER = 0, và PTMR prescaler = 1:1. Tuy nhiên, ở tần số này thì bạn thực sự không có nhiều lựa chọn cho duty cycle (chỉ có 2 giá trị là 0% và 100%, theo lý thuyết, vì tôi chưa bao giờ thử nghiệm ở chế độ khá vô nghĩa này).

Độ phân giải đúng là tính bằng đơn vị bit.

2. Module "Power Supply PWM" được thiết kế riêng cho các ứng dụng về nguồn chuyển mạch, do đó có những đặc tính cao cấp hơn vốn không cần thiết trong module "Motor Control PWM". Như vậy, có sự hơn hẳn "về chất" khi so sánh module "Power Supply PWM" với module "Motor Control PWM".

Thân,

NATO308
16-04-2009, 07:46 PM
thanks anh Nam, đúng là có sự khác biệt về công thức tính Tpwm trong 2 datasheet ""dsPIC30F Family Reference Manual" và "dspic30f4011/4012 datasheet " nên em bị sai công thức trên. Mình chụp sự khác biệt giữa 2 datasheet, ai muốn xem thì đỡ phải tra datasheet.

namqn
16-04-2009, 08:11 PM
thanks anh Nam, đúng là có sự khác biệt về công thức tính Tpwm trong 2 datasheet ""dsPIC30F Family Reference Manual" và "dspic30f4011/4012 datasheet " nên em bị sai công thức trên. Mình chụp sự khác biệt giữa 2 datasheet, ai muốn xem thì đỡ phải tra datasheet.
Thực ra hai công thức không hẳn mâu thuẫn nhau, chỉ vì bạn dùng giá trị PTMR = 64 (như là PTMR Prescale Value) nên tôi mới nói rằng công thức của bạn là không chính xác.

Bạn để ý trong công thức của các datasheet người ta dùng PTMR Prescale Value (tức là toàn bộ cụm 1/N, nếu như prescale được mô tả là 1:N), còn trong "dsPIC30F Family Reference Manual" thì người ta dùng PTMR Prescaler (tức là giá trị N, nếu như prescale được mô tả là 1:N).

Do đó, nếu dùng công thức trong các datasheet với PTMR Prescale Value = 1/N và dùng công thức trong "dsPIC30F Family Reference Manual" với PTMR Prescaler = N, cho trường hợp prescale được mô tả là 1:N, thì sẽ cho các kết quả không mâu thuẫn với nhau.

Bạn đã dùng công thức trong datasheet với PTMR Prescale Value = 64, thay vì 1/64, nên tôi mới nói rằng công thức của bạn không chính xác. Cần chú ý phân biệt PTMR Prescale Value (tỷ số chia trước = 1/N) và PTMR Prescaler (hệ số chia trước = N).

Thân,

tienminh
28-05-2009, 08:02 PM
Các bác cho em hỏi,
Em đang dùng con 30F2020 có 4 bộ PWM.
Vậy nó có thể tạo được 4 bộ tín hiệu PWM có tần số khác nhau được không?

namqn
28-05-2009, 09:45 PM
Các bác cho em hỏi,
Em đang dùng con 30F2020 có 4 bộ PWM.
Vậy nó có thể tạo được 4 bộ tín hiệu PWM có tần số khác nhau được không?
dsPIC30F2020 có thể tạo ra 4 tín hiệu PWM có tần số khác nhau, vì 4 bộ tạo tín hiệu PWM có các time base độc lập nhau.

Thân,

ngoctan2310
03-09-2009, 12:15 AM
em sinh viên ĐH cần thơ ,mới tự học về dsPic nên chưa hiểu lắm , em chủ yếu đọc datasheet và các tutorial trên picvietnam dsPic30f4011 có 6 pin xuất PWM nhưng chỉ thấy một thanh ghi TPMR và một thanh ghi PRPER làm sao mình set cả 6 chân này với 6 tần số PWM khác nhau được ?

Có 3 thanh ghi duty cycle PDC<1-3> vậy các chân ngõ ra PWMxL và PWMxH sẽ có cùng duty cycle ?

em cần điều khiển 4 DC motor với tốc độ khác nhau - nhưng em không rõ dsPic30f4011 có đáp ứng được không? mong các thành viên diễn đàn giải thích giùm .

tienminh
20-08-2010, 11:26 PM
Hi anh Nam,
Trong datasheet của dsPIC30F2020,phần PWM Period (trang 125) có công thức:
Period Duration = (PTPER + 1)/120 MHz @ 30 MIPS
Em thấy có vẻ công thức này không được tổng quát và khoa học.
Nếu em không chạy ở 30MIPS , giả sử chỉ dùng thạch anh ngoài 4MHz với PLL, và muốn tạo PWM=50KHz thì công thức tính tổng quát sẽ như thế nào?
Thanks.

namqn
21-08-2010, 01:28 AM
Hi anh Nam,
Trong datasheet của dsPIC30F2020,phần PWM Period (trang 125) có công thức:
Period Duration = (PTPER + 1)/120 MHz @ 30 MIPS
Em thấy có vẻ công thức này không được tổng quát và khoa học.
Nếu em không chạy ở 30MIPS , giả sử chỉ dùng thạch anh ngoài 4MHz với PLL, và muốn tạo PWM=50KHz thì công thức tính tổng quát sẽ như thế nào?
Thanks.
Bạn xem mục 30.9 trong tài liệu "Power Supply PWM" (DS70270C), link download dưới đây:
http://ww1.microchip.com/downloads/en/DeviceDoc/70270C.pdf

PWM Period = 1/(PWM Switching Frequency)

Tùy vào việc bạn dùng time base chung hoặc dùng time base độc lập mà giá trị được tính dựa vào giá trị của thanh ghi PTPER hay PHASEx.

Thân,

trường sa 001
20-12-2010, 03:18 PM
anh ơi!e muốn dùng pic18f4431 để điều khiển động cơ 1 chiều nhưng ko hiêu kỹ lắm về các nguồn pwm của nó.
anh chỉ dùm e y nghĩa của lệnh này được ko?
setup_power_pwm(PWM_CLOCK_DIV_16|PWM_UP_DOWN|PWM_D EAD_CLOCK_DIV_4,1,0,62,0,1,10);

trường sa 001
20-12-2010, 03:23 PM
anh nam trả chỉ giúp em đi anh?
e đọc datasheep mai ma ko hiểu anh ah!

hcmut.khoamaisi
03-03-2011, 10:10 PM
có ai giải thích giùm "PTMR Prescale Value" là như thế nào không?đọc datasheet thấy các con số 1:1 1:4 1:8 1:16 nhưng chưa hiểu được ý nghĩa các con số này liên quan tới PTMR Prescale Value như thế nào!

vietdien
03-03-2011, 11:43 PM
Prescale Value có thể hiểu đơn giản là cần chia tần số cho giá trị nào. thông thường dspic dùng FOS làm tần số đầu vào cho các bộ chia tần. VD bạn để FRC x4, thì tần số FOS là 7,14Mhz, đặt Prescale Val 1:4 thì tần số cho phần timer của PWM là 7,14/4 = 1,7xxxMhz.