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 Bài Trong Ngày 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 08-09-2007, 10:17 AM   #1
tuananh_852003
Nhập môn đệ tử
 
Tham gia ngày: Aug 2007
Bài gửi: 2
:
Post điều chế độ rộng xung ra sin (SPWM)

các bác ơi giúp em với.em mới tìm hiểu về pic và em đang mắc ở chỗ làm sao điều chế pwm có dạng sỏng ra là sin.nếu bác nào có tài liệu về nó hoặc có đoạn ma chương trinh hướng dẫn em với. em đang làm việc với pic18f4431.
Em cảm ơn các bác !
tuananh_852003 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-08-2008, 07:16 PM   #2
tienminh
Đệ tử 3 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 50
:
Trích:
Nguyên văn bởi tuananh_852003 View Post
các bác ơi giúp em với.em mới tìm hiểu về pic và em đang mắc ở chỗ làm sao điều chế pwm có dạng sỏng ra là sin.nếu bác nào có tài liệu về nó hoặc có đoạn ma chương trinh hướng dẫn em với. em đang làm việc với pic18f4431.
Em cảm ơn các bác !
Tôi nghĩ đây là kiểu chương trình bạn cần .
Tôi cũng tranh thủ hỏi luôn các bạn thành thạo về PWM của PIC8F4431:
- Chương trình này dùng cặp PWM0-1 của chip, tra bảng sin để đặt dutycycle .
- Khi chạy chương trình thì dạng sóng đầu ra biến đổi độ rộng theo chu kỳ sine , tuy nhiên sau khi chạy 1-2 phút thì nó tịt, không phát xung nữa, không biết tại sao??????????

sau đây là code viết trong C18


Code:
#include<p18f4431.h>
#include<delays.h>

#pragma config	OSC=HS
/*
#pragma config	FCMEN = ON
#pragma config	PWRTEN = ON
#pragma config	BOREN = ON
#pragma config	BORV = 42
#pragma config	WDTEN = OFF
#pragma config	WINEN = OFF
#pragma config	WDPS = 64
#pragma config	T1OSCMX = OFF
#pragma config	STVREN = OFF
#pragma config	LVP = OFF
#pragma config	CP3 = ON
*/
const rom unsigned int  sine[800]={
400 , 403 , 406 , 409 , 412 , 415 , 418 , 421 , 425 , 428 , 431 , 434 , 437 , 440 , 443 , 
447 , 450 , 453 , 456 , 459 , 462 , 465 , 468 , 471 , 474 , 478 , 481 , 484 , 487 , 490 , 
493 , 496 , 499 , 502 , 505 , 508 , 511 , 514 , 517 , 520 , 523 , 526 , 529 , 532 , 535 , 
538 , 541 , 544 , 547 , 550 , 553 , 555 , 558 , 561 , 564 , 567 , 570 , 573 , 575 , 578 , 
581 , 584 , 587 , 589 , 592 , 595 , 598 , 600 , 603 , 606 , 608 , 611 , 614 , 616 , 619 , 
622 , 624 , 627 , 630 , 632 , 635 , 637 , 640 , 642 , 645 , 647 , 650 , 652 , 654 , 657 , 
659 , 662 , 664 , 666 , 669 , 671 , 673 , 676 , 678 , 680 , 682 , 685 , 687 , 689 , 691 , 
693 , 695 , 697 , 700 , 702 , 704 , 706 , 708 , 710 , 712 , 714 , 716 , 717 , 719 , 721 , 
723 , 725 , 727 , 729 , 730 , 732 , 734 , 736 , 737 , 739 , 741 , 742 , 744 , 745 , 747 , 
748 , 750 , 752 , 753 , 754 , 756 , 757 , 759 , 760 , 761 , 763 , 764 , 765 , 767 , 768 , 
769 , 770 , 771 , 773 , 774 , 775 , 776 , 777 , 778 , 779 , 780 , 781 , 782 , 783 , 784 , 
784 , 785 , 786 , 787 , 788 , 788 , 789 , 790 , 791 , 791 , 792 , 792 , 793 , 794 , 794 , 
795 , 795 , 796 , 796 , 796 , 797 , 797 , 797 , 798 , 798 , 798 , 799 , 799 , 799 , 799 , 
799 , 799 , 799 , 799 , 799 , 800 , 799 , 799 , 799 , 799 , 799 , 799 , 799 , 799 , 799 , 
798 , 798 , 798 , 797 , 797 , 797 , 796 , 796 , 796 , 795 , 795 , 794 , 794 , 793 , 792 , 
792 , 791 , 791 , 790 , 789 , 788 , 788 , 787 , 786 , 785 , 784 , 784 , 783 , 782 , 781 , 
780 , 779 , 778 , 777 , 776 , 775 , 774 , 773 , 771 , 770 , 769 , 768 , 767 , 765 , 764 , 
763 , 761 , 760 , 759 , 757 , 756 , 754 , 753 , 752 , 750 , 748 , 747 , 745 , 744 , 742 , 
741 , 739 , 737 , 736 , 734 , 732 , 730 , 729 , 727 , 725 , 723 , 721 , 719 , 717 , 716 , 
714 , 712 , 710 , 708 , 706 , 704 , 702 , 700 , 697 , 695 , 693 , 691 , 689 , 687 , 685 , 
682 , 680 , 678 , 676 , 673 , 671 , 669 , 666 , 664 , 662 , 659 , 657 , 654 , 652 , 650 , 
647 , 645 , 642 , 640 , 637 , 635 , 632 , 630 , 627 , 624 , 622 , 619 , 616 , 614 , 611 , 
608 , 606 , 603 , 600 , 598 , 595 , 592 , 589 , 587 , 584 , 581 , 578 , 575 , 573 , 570 , 
567 , 564 , 561 , 558 , 555 , 553 , 550 , 547 , 544 , 541 , 538 , 535 , 532 , 529 , 526 , 
523 , 520 , 517 , 514 , 511 , 508 , 505 , 502 , 499 , 496 , 493 , 490 , 487 , 484 , 481 , 
478 , 474 , 471 , 468 , 465 , 462 , 459 , 456 , 453 , 450 , 447 , 443 , 440 , 437 , 434 , 
431 , 428 , 425 , 421 , 418 , 415 , 412 , 409 , 406 , 403 , 399 , 396 , 393 , 390 , 387 , 
384 , 381 , 378 , 374 , 371 , 368 , 365 , 362 , 359 , 356 , 352 , 349 , 346 , 343 , 340 , 
337 , 334 , 331 , 328 , 325 , 321 , 318 , 315 , 312 , 309 , 306 , 303 , 300 , 297 , 294 , 
291 , 288 , 285 , 282 , 279 , 276 , 273 , 270 , 267 , 264 , 261 , 258 , 255 , 252 , 249 , 
246 , 244 , 241 , 238 , 235 , 232 , 229 , 226 , 224 , 221 , 218 , 215 , 212 , 210 , 207 , 
204 , 201 , 199 , 196 , 193 , 191 , 188 , 185 , 183 , 180 , 177 , 175 , 172 , 169 , 167 , 
164 , 162 , 159 , 157 , 154 , 152 , 149 , 147 , 145 , 142 , 140 , 137 , 135 , 133 , 130 , 
128 , 126 , 123 , 121 , 119 , 117 , 114 , 112 , 110 , 108 , 106 , 104 , 102 , 99 , 97 , 95 , 
93 , 91 , 89 , 87 , 85 , 83 , 82 , 80 , 78 , 76 , 74 , 72 , 70 , 69 , 67 , 65 , 63 , 62 , 60 , 
58 , 57 , 55 , 54 , 52 , 51 , 49 , 47 , 46 , 45 , 43 , 42 , 40 , 39 , 38 , 36 , 35 , 34 , 32 , 
31 , 30 , 29 , 28 , 26 , 25 , 24 , 23 , 22 , 21 , 20 , 19 , 18 , 17 , 16 , 15 , 15 , 14 , 13 , 
12 , 11 , 11 , 10 , 9 , 8 , 8 , 7 , 7 , 6 , 5 , 5 , 4 , 4 , 3 , 3 , 3 , 2 , 2 , 2 , 1 , 1 , 1 , 0 , 0 , 
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 3 , 3 , 
4 , 4 , 5 , 5 , 6 , 7 , 7 , 8 , 8 , 9 , 10 , 11 , 11 , 12 , 13 , 14 , 15 , 15 , 16 , 17 , 18 , 
19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 28 , 29 , 30 , 31 , 32 , 34 , 35 , 36 , 38 , 39 , 
40 , 42 , 43 , 45 , 46 , 47 , 49 , 51 , 52 , 54 , 55 , 57 , 58 , 60 , 62 , 63 , 65 , 67 , 
69 , 70 , 72 , 74 , 76 , 78 , 80 , 82 , 83 , 85 , 87 , 89 , 91 , 93 , 95 , 97 , 99 , 102 , 
104 , 106 , 108 , 110 , 112 , 114 , 117 , 119 , 121 , 123 , 126 , 128 , 130 , 133 , 
135 , 137 , 140 , 142 , 145 , 147 , 149 , 152 , 154 , 157 , 159 , 162 , 164 , 167 , 
169 , 172 , 175 , 177 , 180 , 183 , 185 , 188 , 191 , 193 , 196 , 199 , 201 , 204 , 
207 , 210 , 212 , 215 , 218 , 221 , 224 , 226 , 229 , 232 , 235 , 238 , 241 , 244 , 
246 , 249 , 252 , 255 , 258 , 261 , 264 , 267 , 270 , 273 , 276 , 279 , 282 , 285 , 
288 , 291 , 294 , 297 , 300 , 303 , 306 , 309 , 312 , 315 , 318 , 321 , 325 , 328 , 
331 , 334 , 337 , 340 , 343 , 346 , 349 , 352 , 356 , 359 , 362 , 365 , 368 , 371 , 
374 , 378 , 381 , 384 , 387 , 390 , 393 , 396  };
unsigned int index=0;
void set_duty0(unsigned int duty);

void setupPWM(void)
{
PTCON0=0x00; //Postscale 1:1, Prescale 1:1, Free Running
PTCON1=0xC0;//PWM time base is on, count up
PWMCON0=0x20;//Enable PWM0-1, Complementary
PWMCON1=0x40;
DTCON=0x00;

PTMRH=0;
PTMRL=0;

PTPERH=0;
PTPERL=0xC7; // 20KHz PWM

PDC0H=0x00;
PDC0L=0x00;//duty
/*
PDC1H=0;
PDC1L=0;
PDC2H=0;
PDC2L=0;
PDC3H=0;
PDC3L=0;
OVDCOND=0;
OVDCONS=0;
FLTCONFIG=0;
SEVTCMPH=0;
SEVTCMPL=0;
*/
}
void set_duty0(unsigned int duty)
{
PTCON1=0x00;
PDC0H=duty/256;
PDC0L=duty%256;
PTCON1=0xC0;
}
void main()
{
TRISA=0x00;
ANSEL0=0x00;
setupPWM();

while(1)
{

	set_duty0(sine[index]);
	index++;
	if(index==800)index=0;
	Delay1KTCYx(1);

}
}

thay đổi nội dung bởi: namqn, 27-08-2008 lúc 06:40 PM.
tienminh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-08-2008, 12:50 PM   #3
tienminh
Đệ tử 3 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 50
:
Với chương trình cấu trúc như trên tôi chạy trên AT90PWM2 thì thấy chạy tốt , ra sine hoàn hảo. Còn trên PIC18F4431 thì có vấn đề gì đó trong update dutycycle làm cho độ rộng xung ra chỉ chạy được một chút rồi nó cố định duty cycle luôn không biết đổi nữa.
Có thể đây thể hiện sự yếu kém của 18F4431 chăng?
tienminh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-08-2008, 07:38 PM   #4
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 tienminh View Post
Với chương trình cấu trúc như trên tôi chạy trên AT90PWM2 thì thấy chạy tốt , ra sine hoàn hảo. Còn trên PIC18F4431 thì có vấn đề gì đó trong update dutycycle làm cho độ rộng xung ra chỉ chạy được một chút rồi nó cố định duty cycle luôn không biết đổi nữa.
Có thể đây thể hiện sự yếu kém của 18F4431 chăng?
Code của bạn chỉ đặt mỗi cấu hình HS cho bộ dao động, còn những phần cấu hình khác đã bị chú thích.

Có thể kết luận gì khi nhiều người làm thành công và một người không thành công?

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 27-08-2008, 09:49 PM   #5
tienminh
Đệ tử 3 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 50
:
Trích:
Nguyên văn bởi namqn View Post
Code của bạn chỉ đặt mỗi cấu hình HS cho bộ dao động, còn những phần cấu hình khác đã bị chú thích.

Có thể kết luận gì khi nhiều người làm thành công và một người không thành công?

Thân,
Có chú thích cấu hình hay không cũng chẳng khác gì, vẫn chỉ chạy được một chút rồi nó cố định luôn độ rộng xung không biến đổi nữa.
Tôi không thích cách gợi ý xỏ xiên của người được mệnh danh là bang chủ PIC, đây là cách lôi kéo người khác đến với PIC của picvietnam?
tienminh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-08-2008, 10:07 PM   #6
tmtm
Đệ tử 4 túi
 
Tham gia ngày: Dec 2006
Bài gửi: 79
:
Trích:
Nguyên văn bởi tienminh View Post
Có chú thích cấu hình hay không cũng chẳng khác gì, vẫn chỉ chạy được một chút rồi nó cố định luôn độ rộng xung không biến đổi nữa.
Tôi không thích cách gợi ý xỏ xiên của người được mệnh danh là bang chủ PIC, đây là cách lôi kéo người khác đến với PIC của picvietnam?
Bác đừng nặng lời vậy. Em cũng chưa giải quyết được bài toán này, nhưng em có được đọc một tài liệu có liên quan mà vấn đề phức tạp hơn đã được giải quyết. Do vấn đề bản quyền nên em ko tiện up lên diễn đàn. Bác có thể vào link sau:
http://www2.hcmut.edu.vn/~nxbac/data/
tìm đến tài liệu có tên: QUANG_LVTN_hoanchinh.pdf
tmtm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-08-2008, 10:59 PM   #7
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 tienminh View Post
Có chú thích cấu hình hay không cũng chẳng khác gì, vẫn chỉ chạy được một chút rồi nó cố định luôn độ rộng xung không biến đổi nữa.
Tôi không thích cách gợi ý xỏ xiên của người được mệnh danh là bang chủ PIC, đây là cách lôi kéo người khác đến với PIC của picvietnam?
Bạn tham gia diễn đàn cách đây gần 2 năm mà vẫn không hiểu được ý của tôi.

Nếu nhiều người đã làm thành công mà một người nào đó làm không thành công thì khả năng rất lớn là người không thành công đó làm chưa đúng, và khả năng rất nhỏ là chip được dùng có sự yếu kém về vấn đề đó.

Tôi sẽ rất vô lý nếu tôi kết luận rằng một vi điều khiển nào đó là yếu kém, vì chương trình của tôi viết cho nó không chạy đúng ý đồ của tôi, trong khi nhiều người khác đã làm được việc đó.

Nếu bạn thích làm việc với PIC, hoan nghênh bạn gia nhập PICVietnam, nếu bạn không thích làm việc với PIC, chúng tôi không hề ghét bạn.

Về vấn đề của bạn, tôi không có sẵn PIC18F4431 để kiểm tra code mà tôi đã sửa lại (và tôi có thói quen chỉ post những code đã được thử nghiệm), do đó bạn hãy chờ một vài ngày để tôi tìm con PIC18F4431 và mạch thử nghiệm trong đống linh kiện lộn xộn của tôi.

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 18-09-2009, 09:01 AM   #8
nhanvh
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Bài gửi: 1
:
Trích:
Nguyên văn bởi tienminh View Post
Tôi nghĩ đây là kiểu chương trình bạn cần .
Tôi cũng tranh thủ hỏi luôn các bạn thành thạo về PWM của PIC8F4431:
- Chương trình này dùng cặp PWM0-1 của chip, tra bảng sin để đặt dutycycle .
- Khi chạy chương trình thì dạng sóng đầu ra biến đổi độ rộng theo chu kỳ sine , tuy nhiên sau khi chạy 1-2 phút thì nó tịt, không phát xung nữa, không biết tại sao??????????

sau đây là code viết trong C18


Code:
#include<p18f4431.h>
#include<delays.h>

#pragma config	OSC=HS
/*
#pragma config	FCMEN = ON
#pragma config	PWRTEN = ON
#pragma config	BOREN = ON
#pragma config	BORV = 42
#pragma config	WDTEN = OFF
#pragma config	WINEN = OFF
#pragma config	WDPS = 64
#pragma config	T1OSCMX = OFF
#pragma config	STVREN = OFF
#pragma config	LVP = OFF
#pragma config	CP3 = ON
*/
const rom unsigned int  sine[800]={
400 , 403 , 406 , 409 , 412 , 415 , 418 , 421 , 425 , 428 , 431 , 434 , 437 , 440 , 443 , 
447 , 450 , 453 , 456 , 459 , 462 , 465 , 468 , 471 , 474 , 478 , 481 , 484 , 487 , 490 , 
493 , 496 , 499 , 502 , 505 , 508 , 511 , 514 , 517 , 520 , 523 , 526 , 529 , 532 , 535 , 
538 , 541 , 544 , 547 , 550 , 553 , 555 , 558 , 561 , 564 , 567 , 570 , 573 , 575 , 578 , 
581 , 584 , 587 , 589 , 592 , 595 , 598 , 600 , 603 , 606 , 608 , 611 , 614 , 616 , 619 , 
622 , 624 , 627 , 630 , 632 , 635 , 637 , 640 , 642 , 645 , 647 , 650 , 652 , 654 , 657 , 
659 , 662 , 664 , 666 , 669 , 671 , 673 , 676 , 678 , 680 , 682 , 685 , 687 , 689 , 691 , 
693 , 695 , 697 , 700 , 702 , 704 , 706 , 708 , 710 , 712 , 714 , 716 , 717 , 719 , 721 , 
723 , 725 , 727 , 729 , 730 , 732 , 734 , 736 , 737 , 739 , 741 , 742 , 744 , 745 , 747 , 
748 , 750 , 752 , 753 , 754 , 756 , 757 , 759 , 760 , 761 , 763 , 764 , 765 , 767 , 768 , 
769 , 770 , 771 , 773 , 774 , 775 , 776 , 777 , 778 , 779 , 780 , 781 , 782 , 783 , 784 , 
784 , 785 , 786 , 787 , 788 , 788 , 789 , 790 , 791 , 791 , 792 , 792 , 793 , 794 , 794 , 
795 , 795 , 796 , 796 , 796 , 797 , 797 , 797 , 798 , 798 , 798 , 799 , 799 , 799 , 799 , 
799 , 799 , 799 , 799 , 799 , 800 , 799 , 799 , 799 , 799 , 799 , 799 , 799 , 799 , 799 , 
798 , 798 , 798 , 797 , 797 , 797 , 796 , 796 , 796 , 795 , 795 , 794 , 794 , 793 , 792 , 
792 , 791 , 791 , 790 , 789 , 788 , 788 , 787 , 786 , 785 , 784 , 784 , 783 , 782 , 781 , 
780 , 779 , 778 , 777 , 776 , 775 , 774 , 773 , 771 , 770 , 769 , 768 , 767 , 765 , 764 , 
763 , 761 , 760 , 759 , 757 , 756 , 754 , 753 , 752 , 750 , 748 , 747 , 745 , 744 , 742 , 
741 , 739 , 737 , 736 , 734 , 732 , 730 , 729 , 727 , 725 , 723 , 721 , 719 , 717 , 716 , 
714 , 712 , 710 , 708 , 706 , 704 , 702 , 700 , 697 , 695 , 693 , 691 , 689 , 687 , 685 , 
682 , 680 , 678 , 676 , 673 , 671 , 669 , 666 , 664 , 662 , 659 , 657 , 654 , 652 , 650 , 
647 , 645 , 642 , 640 , 637 , 635 , 632 , 630 , 627 , 624 , 622 , 619 , 616 , 614 , 611 , 
608 , 606 , 603 , 600 , 598 , 595 , 592 , 589 , 587 , 584 , 581 , 578 , 575 , 573 , 570 , 
567 , 564 , 561 , 558 , 555 , 553 , 550 , 547 , 544 , 541 , 538 , 535 , 532 , 529 , 526 , 
523 , 520 , 517 , 514 , 511 , 508 , 505 , 502 , 499 , 496 , 493 , 490 , 487 , 484 , 481 , 
478 , 474 , 471 , 468 , 465 , 462 , 459 , 456 , 453 , 450 , 447 , 443 , 440 , 437 , 434 , 
431 , 428 , 425 , 421 , 418 , 415 , 412 , 409 , 406 , 403 , 399 , 396 , 393 , 390 , 387 , 
384 , 381 , 378 , 374 , 371 , 368 , 365 , 362 , 359 , 356 , 352 , 349 , 346 , 343 , 340 , 
337 , 334 , 331 , 328 , 325 , 321 , 318 , 315 , 312 , 309 , 306 , 303 , 300 , 297 , 294 , 
291 , 288 , 285 , 282 , 279 , 276 , 273 , 270 , 267 , 264 , 261 , 258 , 255 , 252 , 249 , 
246 , 244 , 241 , 238 , 235 , 232 , 229 , 226 , 224 , 221 , 218 , 215 , 212 , 210 , 207 , 
204 , 201 , 199 , 196 , 193 , 191 , 188 , 185 , 183 , 180 , 177 , 175 , 172 , 169 , 167 , 
164 , 162 , 159 , 157 , 154 , 152 , 149 , 147 , 145 , 142 , 140 , 137 , 135 , 133 , 130 , 
128 , 126 , 123 , 121 , 119 , 117 , 114 , 112 , 110 , 108 , 106 , 104 , 102 , 99 , 97 , 95 , 
93 , 91 , 89 , 87 , 85 , 83 , 82 , 80 , 78 , 76 , 74 , 72 , 70 , 69 , 67 , 65 , 63 , 62 , 60 , 
58 , 57 , 55 , 54 , 52 , 51 , 49 , 47 , 46 , 45 , 43 , 42 , 40 , 39 , 38 , 36 , 35 , 34 , 32 , 
31 , 30 , 29 , 28 , 26 , 25 , 24 , 23 , 22 , 21 , 20 , 19 , 18 , 17 , 16 , 15 , 15 , 14 , 13 , 
12 , 11 , 11 , 10 , 9 , 8 , 8 , 7 , 7 , 6 , 5 , 5 , 4 , 4 , 3 , 3 , 3 , 2 , 2 , 2 , 1 , 1 , 1 , 0 , 0 , 
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 3 , 3 , 
4 , 4 , 5 , 5 , 6 , 7 , 7 , 8 , 8 , 9 , 10 , 11 , 11 , 12 , 13 , 14 , 15 , 15 , 16 , 17 , 18 , 
19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 28 , 29 , 30 , 31 , 32 , 34 , 35 , 36 , 38 , 39 , 
40 , 42 , 43 , 45 , 46 , 47 , 49 , 51 , 52 , 54 , 55 , 57 , 58 , 60 , 62 , 63 , 65 , 67 , 
69 , 70 , 72 , 74 , 76 , 78 , 80 , 82 , 83 , 85 , 87 , 89 , 91 , 93 , 95 , 97 , 99 , 102 , 
104 , 106 , 108 , 110 , 112 , 114 , 117 , 119 , 121 , 123 , 126 , 128 , 130 , 133 , 
135 , 137 , 140 , 142 , 145 , 147 , 149 , 152 , 154 , 157 , 159 , 162 , 164 , 167 , 
169 , 172 , 175 , 177 , 180 , 183 , 185 , 188 , 191 , 193 , 196 , 199 , 201 , 204 , 
207 , 210 , 212 , 215 , 218 , 221 , 224 , 226 , 229 , 232 , 235 , 238 , 241 , 244 , 
246 , 249 , 252 , 255 , 258 , 261 , 264 , 267 , 270 , 273 , 276 , 279 , 282 , 285 , 
288 , 291 , 294 , 297 , 300 , 303 , 306 , 309 , 312 , 315 , 318 , 321 , 325 , 328 , 
331 , 334 , 337 , 340 , 343 , 346 , 349 , 352 , 356 , 359 , 362 , 365 , 368 , 371 , 
374 , 378 , 381 , 384 , 387 , 390 , 393 , 396  };
unsigned int index=0;
void set_duty0(unsigned int duty);

void setupPWM(void)
{
PTCON0=0x00; //Postscale 1:1, Prescale 1:1, Free Running
PTCON1=0xC0;//PWM time base is on, count up
PWMCON0=0x20;//Enable PWM0-1, Complementary
PWMCON1=0x40;
DTCON=0x00;

PTMRH=0;
PTMRL=0;

PTPERH=0;
PTPERL=0xC7; // 20KHz PWM

PDC0H=0x00;
PDC0L=0x00;//duty
/*
PDC1H=0;
PDC1L=0;
PDC2H=0;
PDC2L=0;
PDC3H=0;
PDC3L=0;
OVDCOND=0;
OVDCONS=0;
FLTCONFIG=0;
SEVTCMPH=0;
SEVTCMPL=0;
*/
}
void set_duty0(unsigned int duty)
{
PTCON1=0x00;
PDC0H=duty/256;
PDC0L=duty%256;
PTCON1=0xC0;
}
void main()
{
TRISA=0x00;
ANSEL0=0x00;
setupPWM();

while(1)
{

	set_duty0(sine[index]);
	index++;
	if(index==800)index=0;
	Delay1KTCYx(1);

}
}
Cảm ơn bạn Namqn. Bạn có nhiều bài rất hay về biến tần và PWM. Bạn cho tôi email được ko? Tôi đang nghiên cứu biến tần dùng PIC. Có rất nhiều điều cần bạn tư vấn. Bạn liên hệ với tôi qua vuongdaonhan@gmail.com
nhanvh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-09-2008, 08:58 AM   #9
gto
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Bài gửi: 2
:
Công lực uyên thâm vô cùng! Xem ra bác tuoitrequaypha là một nhân vật có tên tuổi trong giới khoa học. Giá mà bác tích cực ra mặt giúp chúng em nhiều hơn nữa thì tốt biết bao, chứ bác cứ "tọa sơn kiến mục đấu pháp của bá tánh" thế thì thật lãng phí nhân tài.
Bác cho em hỏi, trong các dòng PIC và dsPIC thì dòng nào, chip nào giải quyết vấn đầ này tốt nhất?
gto vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-09-2008, 09:34 PM   #10
tienminh
Đệ tử 3 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 50
:
Với dutycycle từ 5-95% thì tôi cũng đã lọc ra sin gần như hoàn hảo rồi, không bị méo chút nào nữa .
Từ PWM của PIC đưa qua IC driver đến cầu H dùng MOSFET sau đó dùng LC để lọc.
Tuy nhiên lúc thực nghiệm tôi lấy đại một cặp LC ra để thử chứ cũng chưa tính toán gì, kết quả là ra sin quá đẹp(chắc là gặp may).
Bác nào cho tôi hỏi, tính toán LC như thế nào để đạt được chất lượng dạng sóng cũng như biên độ đầu ra , đảm bảo hiệu suất cao nhất?
(tần số PWM=20KHz và V=+310Vdc, Tải tiêu thụ=200W mắc song song với tụ điện)
tienminh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-09-2008, 10:59 PM   #11
cipralos
Nhập môn đệ tử
 
Tham gia ngày: Sep 2008
Bài gửi: 3
:
Anh namqn hỏi chút về pcpwm của pic18f4431. Trong chế độ hoạt động của complementary PWM, trong datasheet viết: "PDC0 register controls PWM1/PWM0 outputs", cái này có phải là trong một chu kỳ PWM, PWM0 sẽ ở mức cao trong suốt thời gian của duty cycle, sau đó chuyển xuống mức thấp, tiếp theo là khoảng thời gian deadtime, rồi PWM1 sẽ chuyển lên mức cao trong khoảng thời gian còn lại của chu kỳ?
Giả sử em muốn tạo ra dạng sóng sinpwm điều khiển cầu H, trong nửa đầu của chu kỳ sin, tín hiệu điều khiển lấy từ PWM0 (gồm nhiều chu kỳ xung pwm mang tín hiệu sin, trong suốt khoảng thời gian này PWM1 ở mức 0), sau đó đến deadtime, rồi đến bán kỳ sau của sin thì PWM0 ở mức 0, còn PWM 1 sẽ là tín hiệu điều khiển gồm nhiều chu kỳ xung PWM mang tín hiệu sin.. Em chưa rõ là pic18f4431 có hỗ trợ nào khác so với pic16f877A không?
Hình Kèm Theo
File Type: bmp H Bridge.bmp (750.1 KB, 245 lần tải)
cipralos vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-09-2008, 06:28 PM   #12
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 cipralos View Post
Anh namqn hỏi chút về pcpwm của pic18f4431. Trong chế độ hoạt động của complementary PWM, trong datasheet viết: "PDC0 register controls PWM1/PWM0 outputs", cái này có phải là trong một chu kỳ PWM, PWM0 sẽ ở mức cao trong suốt thời gian của duty cycle, sau đó chuyển xuống mức thấp, tiếp theo là khoảng thời gian deadtime, rồi PWM1 sẽ chuyển lên mức cao trong khoảng thời gian còn lại của chu kỳ?
Giả sử em muốn tạo ra dạng sóng sinpwm điều khiển cầu H, trong nửa đầu của chu kỳ sin, tín hiệu điều khiển lấy từ PWM0 (gồm nhiều chu kỳ xung pwm mang tín hiệu sin, trong suốt khoảng thời gian này PWM1 ở mức 0), sau đó đến deadtime, rồi đến bán kỳ sau của sin thì PWM0 ở mức 0, còn PWM 1 sẽ là tín hiệu điều khiển gồm nhiều chu kỳ xung PWM mang tín hiệu sin.. Em chưa rõ là pic18f4431 có hỗ trợ nào khác so với pic16f877A không?
Cũng trong đoạn đó của datasheet, có đoạn văn sau: "PWM1/3/5/7 are the main PWMs that are controlled by the PDCx registers and PWM0/2/4/6 are the complemented outputs." Như vậy PWM1 mới là tín hiệu chính trong cặp PWM1/PWM0 chứ không phải là PWM0 như bạn đã mô tả.

Hình 17-18 trong datasheet đã minh họa rõ ràng dead-time được thêm vào như thế nào.

Với dạng sóng tín hiệu điều khiển cho PWM1 và PWM0 mà bạn đặt yêu cầu, tôi cho là chế độ complementary không phù hợp.

Câu hỏi về sự khác nhau trong hỗ trợ của PIC18F4431 và PIC16F877A của bạn chưa rõ ràng. Không rõ bạn muốn so sánh về sự hỗ trợ cho những tính năng gì.

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 02-09-2009, 12:35 AM   #13
JohnnyNguyen
Đệ tử 3 túi
 
Tham gia ngày: Jul 2009
Bài gửi: 46
:
bác nào có file HEX của chương trình namqn viết ko,cả mô hình mạch nữa.gửi cho mình với.mình cũng đagn điều chế sóng sin,nhưng dùng dspic và C30.
JohnnyNguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-09-2009, 10:36 AM   #14
thuan_tb86
Nhập môn đệ tử
 
Tham gia ngày: Sep 2008
Bài gửi: 8
:
Anh namqn ơi. Em chuyển viết chương trình của anh sang CCS thi thay đổi tần số sóng Sin ra được. Anh chọn giá trị đỉnh có dựa trên cơ sở nao không anh hay là tuỳ mình chọn.
thuan_tb86 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-10-2009, 11:19 PM   #15
Ruby
Nhập môn đệ tử
 
Tham gia ngày: May 2007
Bài gửi: 6
:
bác tienminh làm ngon lành rồi thì giời thiệu cho a e đi, e cũng đang rất quan tâm đến vấn đề DC-AC như bác đã nghiên cứu
Ruby vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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à 01:30 AM.


Đượ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