PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 05-09-2008, 04:49 PM   #1
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi tuoitrequaypha View Post
...
Khi muốn đảm bảo dạng sóng sine không bị biến dạng thì giá trị cực đại và cực tiểu của duty cycle được tính từ công thức sau:

max(dutycycle)= 1-6*td/T
min(dutycycle)=6*td/T

với td= dead time, T=chu kỳ PWM

Mỗ lấy ví dụ: chú dùng td=1us thì:
- Ở 20kHz PWM --> T=50us --> max(dutycycle)= 88%; min(dutycycle)=12%
- Ở 10kHz PWM --> T=100us --> max(dutycycle)= 94%; min(dutycycle)=6%

Các giá trị lớn hơn max hoặc nhỏ hơn min đều làm biến dạng sóng sine của chú. Đến đây chú thấy kết quả có phù hợp với phần đo đạc của chú chửa? Ở tần số PWM cao hơn, chẳng hạn 50kHz thì tình hình còn thê thảm hơn nữa với con PIC của chú . Chú đã bắt đầu thấy hạn chế của con PIC trong giải thuật SPWM chưa?
...
Theo tôi, ý của datasheet như sau:

max(dutycycle) = 1 - 3*td/T
min(dutycycle) = 3*td/T

với td = dead time, T = chu kỳ PWM.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-09-2010, 01:14 AM   #2
phithientula
Nhập môn đệ tử
 
Tham gia ngày: Jul 2010
Bài gửi: 7
:
Trích:
Nguyên văn bởi namqn View Post
Theo tôi, ý của datasheet như sau:

max(dutycycle) = 1 - 3*td/T
min(dutycycle) = 3*td/T

với td = dead time, T = chu kỳ PWM.

Thân,
sao bác tuoitrequaypha lại đưa ra hệ số là 6 vậy ạ?

thay đổi nội dung bởi: phithientula, 10-09-2010 lúc 01:23 AM.
phithientula vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-03-2011, 07:29 PM   #3
HYknight
Nhập môn đệ tử
 
Tham gia ngày: Aug 2010
Bài gửi: 6
:
Chào các anh !
Bảng sin em lập như hướng dấn của anh Nam, Pic em dùng là 16F886, Fpwm = 20KHz
Nhưng không hiểu tại sao không thể chạy đúng
Nếu em dùng chương trình này cho Pic18 thì ok
Hay có điều gì về PWM của Pic16 mà em chưa đọc kĩ
Mong các anh giải thích giùm
Đây là chương trình của em :

Code:
#include <16f886.h>
#fuses  HS,NOWDT,NOPROTECT,NOLVP
#Device ADC = 10
#use    Delay(clock=20000000)

long Const Table_sin[400] =
{
500,507,515,523,531,539,547,554,562,570,578,585,593,601,609,616,624,631,639,647
,654,661,669,676,684,691,698,705,712,719,726,733,740,747,754,761,767,774,781,787
,793,800,806,812,818,824,830,836,842,847,853,859,864,869,875,880,885,890,895,899,
904,909,913,917,922,926,930,934,938,941,945,949,952,955,958,961,964,967,970,973,975,977
,980,982,984,986,987,989,991,992,993,995,996,996,997,998,999,999,999,999,100,999,
999,999,999,998,997,996,996,995,993,992,991,989,987,986,984,982,980,977,975,973,970
,967,964,961,958,955,952,949,945,941,938,934,930
,926,922,917,913,909,904,899,895,890,885,880,875,869,864,859,853,847,842,836,830,824,
818,812,806,800,793,787,781,774,767,761,754,747,740,733,726,719,712,705,698,691,684,
676,669,661,654,647,639,631,624,616,609,601,593,585
,578,570,562,554,547,539,531,523,515,507,500,492,484,476,468,460,452,445,437,429,421,
414,406,398,390,383,375,368,360,352,345,338,330,323,315,308,301,294,287,280,273,266,
259,252,245,238,232,225,218,212,206,199,193
,187,181,175,169,163,157,152,146,140,135,130,124,119,114,109,104,100,95,90,86,82,77,
73,69,65,61,58,54,50,47,44,41,38,35,32,29,26,24,22,19,17,15,13,12,10,8,7,6,4,3,3
,2,1,0,0,0,0,0,0,0,0,0,1,2,3,3,4,6,7,8,10,12,13,15,17,19,22,24,26,29,32,35,38,41,
44,47,50,54,58,61,65,69,73,77,82,86,90,95,100,104,109,114,119,124,130
,135,140,146,152,157,163,169,175,181,187,193,199,206,212,218,225,232,238,245,252
,259,266,273,280,287,294,301,308,315,323,330,338,345,352
,360,368,375,383,390,398,406,414,421,429,437,445,452,460,468,476,484,492};

Unsigned Int16 Index;

Void Main()
      {  
         Set_Tris_A(0x0F);
         Set_Tris_B(0x00); 
         Set_Tris_C(0X02);

         Setup_Timer_2(T2_DIV_BY_1, 249, 1);
         Setup_ccp1(CCP_PWM);
         Index = 0; 
         
         While(1)
          {
              Set_pwm1_duty(Table_sin[index]);
              Index++;
              if (index > 399 ) 
                {
                  Index=0;
                }
          }
         
      }
HYknight vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-03-2011, 11:46 PM   #4
traixomtro_hy
Nhập môn đệ tử
 
Tham gia ngày: Feb 2011
Bài gửi: 3
:
Thumbs up điều chế độ rộng xung ra sin (SPWM)

bạn có thể vào trang này nó sẽ hướng dẫn cụ thể cách lập bảng mã SPWM

http://hoiquandientu.com//read.php?579#entrymore

cái này có lâu rồi mà . khi điều khiển cầu H cho nghịch lưu ở điện áp cao bạn nên để ý :

và lập trình khéo bạn phải cho khoảng thời gian deadtime vào .

còn để làm gì thì bạn chắc hiểu rồi .
traixomtro_hy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 08:48 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam