![]() |
|
Tài trợ cho PIC Vietnam |
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 |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 | |
Nhập môn đệ tử
Tham gia ngày: Apr 2008
Bài gửi: 5
: |
![]() Dành cho trưởng lão namqn:
Hehehe... Trưởng lão án binh, bất khẩu về Đại lực điện tử (ĐTCS) để tái luyện công cũng là một ý hay, Mỗ hoan nghênh. Trưởng lão bất thiện khi nói Mỗ hám tìm lỗi của người khác để chê bai. Mỗ nhập diễn đàn là để luyện công, phải đâu để tóe tung miệng cho sướng để lòe bá tánh. Thiển nghĩ Mỗ tọa sơn kiến mục đấu pháp của bá tánh không phải là điều hay sao? Ngoài ra triệt kê bất dụng đại đao, nhiều thắc mắc của bá tánh sẽ được các ma đầu giải quyết, không cần Mỗ phải động thủ, vận công cho nhọc. Dành cho chú Tiễn Mình: Khi dụng PIC18F4431 thì nhiệm vụ đọat sóng sine hoàn hảo từ PIC ở những duty cycle có giá trị gần 100% hoặc là gần 0% là bất khả. Đây là yếu huyệt của nhiều dòng PIC của Microchip mà từ bấy giờ đến nay Mỗ vẫn ngạc nhiên khi không thấy ma đầu nào chỉ ra hạn chế này. Điểm nhãn vào sơ đồ khối của phần điều khiển tạo PWM trong con PIC thì Mỗ ngộ ra hạn chế này là do cách xử lý tín hiệu số trong nội bộ con chip không được tối ưu, không có phần bù trừ cải thiện dạng sóng. Nếu bất dụng biện pháp cải thiện bằng các mạch phụ trợ bên ngoài thì hạn chế này đồng nghĩa với việc chú sẽ không thể chiếm tiện nghi tối đa mức điện áp của nguồn dc đầu vào khi chỉ dùng khối PWM của PIC 18F4431. 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? ![]() ![]() ![]() Chúc các hạ vui. Thân, Biển học có hạn, sức người mênh mông ![]() Trích:
|
|
![]() |
![]() |
![]() |
#2 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
![]() |
![]() |
![]() |
#3 |
Nhập môn đệ tử
Tham gia ngày: Jul 2010
Bài gửi: 7
: |
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. |
![]() |
![]() |
![]() |
#4 |
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; } } } |
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Feb 2011
Bài gửi: 3
: |
![]() 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 . |
![]() |
![]() |
![]() |
|
|