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 01-06-2010, 12:17 AM   #1
Ruby
Nhập môn đệ tử
 
Tham gia ngày: May 2007
Bài gửi: 6
:
Luồng này mình thấy rất hay mà sao giờ trầm lắng quá nhỉ? Theo mình thấy code bác Nam viết chỉ enable cho PWM0 và 1, giờ mình muốn enable cho cả PWM2 và 3 nữa để đưa vào cho đủ cầu H thì xử lý trong giải thuật ntn ah? Bác Nam có thể gợi ý thêm giúp e ko? Vì e cũng ko rõ khi đặt enable PWM2, 3 trong PWMCON0 thì thuật toán phía sau xử lý ntn nữa để trong cầu H thì PWM1 và PWM3 đặt vào kênh cao, PWM0 và PWM2 đặt vào kênh thấp, tín hiệu điều biến là PWM1+ tín hiệu bù PWM0 sẽ phải ngược pha so với tín hiệu điều biến PWM3 + tín hiệu bù PWM2 (tín hiệu PWM1 dẫn nửa chu kỳ và PWM3 dẫn nửa chu kỳ còn lại).
Ruby vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-03-2011, 01:05 PM   #2
mini_2440
Đệ tử 1 túi
 
Tham gia ngày: Mar 2011
Bài gửi: 21
:
Mình thử xem sao , cảm ơn mọi người nhiều,
mini_2440 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-05-2011, 07:42 PM   #3
dungd4
Nhập môn đệ tử
 
Tham gia ngày: Aug 2010
Bài gửi: 2
:
các anh ơi giúp em với!em dùng vi điều khiển pic18f4431 để điều khiển cầu nghịch lưu áp làm inverter,khi mô phỏng trên proteus thì ra sóng sine đúng biên độ và tần số nhưng điện áp cứ tăng lên rồi giảm xuống theo chu kỳ?em đã làm mạch và chạy cũng như mô phỏng vậy!các anh xem giúp có phải vì chương trình hay vì phần cứng em có gì sai không?
đây là chương trình và mô phỏng của em!
File Kèm Theo
File Type: zip nghich luu ap.zip (7.81 MB, 380 lần tải)
dungd4 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-05-2011, 05:28 PM   #4
killua142
Nhập môn đệ tử
 
Tham gia ngày: Jun 2010
Bài gửi: 7
:
- Mấy anh cho em hỏi PTMRL là gì vậy và vì sao phải có điều kiện PTMRL >= 100 hoặc PTMRL >= 50.
PTMRL có phải là byte thấp của PTMR và nó sẽ đếm lên đến khi = PTPER thì reset về 0.
- Em mới tìm hiểu về Pwm mong được mọi người chỉ bảo cho.

thay đổi nội dung bởi: killua142, 29-05-2011 lúc 10:18 PM.
killua142 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-04-2013, 12:04 PM   #5
navypro_hvhq
Đệ tử 1 túi
 
Tham gia ngày: Aug 2012
Bài gửi: 24
:
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 !
lên google mà tìm hôm bữa mình cũng làm cái này lên tìm phát được luôn
navypro_hvhq vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-11-2013, 05:27 PM   #6
tuanlovetien
Nhập môn đệ tử
 
Tham gia ngày: Sep 2012
Bài gửi: 3
:
bác namqn cho em hỏi vấn đề này em đang làm đề tài inverter dùng dspic với thuật pid,em trong chu kỳ chia ra 20 bậc,trung bình mỗi bậc là 1ms,giá trị đặt được thay đổi bằng cách dùng bảng tra sin nhưng chỉ có 1ms thì liệu hệ thống có đáp đứng k bác,em chỉ làm pid cho động cơ nhưng lấy mẫu tới 25ms,giờ làm cái này chỉ có 1ms,bác có cách sử lí pid nào khác hơn không gợi ý cho em làm với.
tuanlovetien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-01-2015, 02:06 AM   #7
xuanthuan
Nhập môn đệ tử
 
Tham gia ngày: Sep 2014
Bài gửi: 1
:
hihi em vừa làm thành công con inventer 12>>220v pure sine

em lang thang trên mạng thì tìm được cái code của mấy anh điện tử việt nam lên em làm thử quả nhiên ra sine thật mấy anh à đây là link của em nó các anh xem xong chém nhẹ hihi
có gì anh nam sửa cho em cái sai sót

https://www.facebook.com/video.php?v...type=2&theater
xuanthuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-11-2015, 12:37 PM   #8
chaukyo
Nhập môn đệ tử
 
Tham gia ngày: Nov 2015
Bài gửi: 4
:
Trích:
Nguyên văn bởi xuanthuan View Post
em lang thang trên mạng thì tìm được cái code của mấy anh điện tử việt nam lên em làm thử quả nhiên ra sine thật mấy anh à đây là link của em nó các anh xem xong chém nhẹ hihi
có gì anh nam sửa cho em cái sai sót

https://www.facebook.com/video.php?v...type=2&theater
Chỉ có mỗi cái video thì bạn làm sao được hay vậy:
chaukyo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-09-2015, 10:47 AM   #9
NguyenDucTin
Nhập môn đệ tử
 
Tham gia ngày: Feb 2014
Bài gửi: 2
:
mọi người có ai lập trình tạo sin PWM cho pic 18f4431 chưa giậy? chỉ mình sai chổ nào trog code này đi. mình sửa mãi mà không chạy. trong đồ án nghịch lưu 3 pha... ;(((

code mình:

#include<htc.h>
//#include<stdio.h>
#include<math.h>
__CONFIG(1,HS);//HS
__CONFIG(2,WDTWINDIS);
__CONFIG(3,MCLREN,PWM4RB5,PWRTDIS);
__CONFIG(4,LVPDIS,STVRDIS,BORDIS);
#define _XTAL_FREQ 20000000
float Ta,Tb,To,U,V,W;
char sector;
unsigned int i,j;

unsigned int data[300]={0,40,81,121,161,202,242,282,322,363,403,443,
484,524,564,604,645,685,725,765,805,846,886,926,96 6,1006,1047,1087,1127,
1167,1207,1247,1287,1327,1367,1407,1447,1487,1527, 1567,1607,1647,1687,
1727,1767,1806,1846,1886,1926,1965,2005,2045,2084, 2124,2164,2203,2243,
2282,2322,2361,2401,2440,2480,2519,2558,2598,2637, 2676,2715,2754,2793,
2833,2872,2911,2950,2989,3027,3066,3105,3144,3183, 3222,3260,3299,3337,3376,
3415,3453,3491,3530,3568,3607,3645,3683,3721,3759, 3797,3835,3873,3911,3949,
3987,4025,4063,4100,4138,4176,4213,4251,4288,4326, 4363,4400,4437,4475,4512,
4549,4586,4623,4660,4697,4733,4770,4807,4843,4880, 4916,4953,4989,5026,5062,
5098,5134,5170,5206,5242,5278,5314,5350,5385,5421, 5457,5492,5527,5563,5598,
5633,5668,5704,5739,5774,5808,5843,5878,5913,5947, 5982,6016,6050,6085,
6119,6153,6187,6221,6255,6289,6323,6356,6390,6424, 6457,6490,6524,6557,6590,
6623,6656,6689,6722,6755,6787,6820,6852,6885,6917, 6949,6981,7013,7045,7077,
7109,7141,7172,7204,7235,7267,7298,7329,7360,7391, 7422,7453,7484,7514,
7545,7576,7606,7636,7666,7696,7726,7756,7786,7816, 7846,7875,7904,7934,7963,
7992,8021,8050,8079,8108,8136,8165,8193,8222,8250, 8278,8306,8334,8362,8390,
8417,8445,8472,8500,8527,8554,8581,8608,8635,8662, 8688,8715,8741,8767,8793,
8820,8846,8871,8897,8923,8948,8974,8999,9024,9049, 9074,9099,9124,9149,9173,
9198,9222,9246,9270,9294,9318,9342,9365,9389,9412, 9436,9459,9482,9505,9528,
9550,9573,9595,9618,9640,9662,9684,9706,9728,9749, 9771,9792,9814,9835,
9856,9877,9898,9918,9939,9959,9980};

/*unsigned int data[300]={127, 130, 132, 135, 138, 140, 143, 146, 148, 151, 153, 156,
159, 161, 164, 166, 169, 171, 174, 176, 179, 181, 183, 186, 188, 191, 193, 195, 197, 199, 202, 204, 206, 208, 210, 212, 214,
216, 218, 220, 221, 223, 225, 227, 228, 230, 231, 233, 234, 236, 237, 238, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 249,
250, 251, 251, 252, 252, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 252, 252, 251, 251, 250, 249, 249,
248, 247, 246, 245, 244, 243, 242, 241, 240, 238, 237, 236, 234, 233, 231, 230, 228, 227, 225, 223, 221, 220, 218, 216, 214, 212, 210,
208, 206, 204, 202, 199, 197, 195, 193, 191, 188, 186, 183, 181, 179, 176, 174, 171, 169, 166, 164, 161, 159, 156, 153, 151, 148, 146,
143, 140, 138, 135, 132, 130, 127, 124, 122, 119, 116, 114, 111, 108, 106, 103, 101, 98, 95, 93, 90, 88, 85, 83, 80, 78, 75, 73, 71, 68,
66, 63, 61, 59, 57, 55, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 33, 31, 29, 27, 26, 24, 23, 21, 20, 18, 17, 16, 14, 13, 12, 11, 10,9,8,7,6,
5,5,4,3,3,2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 23, 24, 26, 27, 29,
31, 33, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 55, 57, 59, 61, 63, 66, 68, 71, 73, 75, 78, 80, 83, 85, 88,
90, 93, 95, 98, 101, 103, 106, 108, 111, 114, 116, 119, 122, 124};*/
void main()
{
char m=0;
i=sector=0;
//khoi tao PWM tan so 5KHz, => T = 0.0002(s)
PTCKPS1= 0; PTCKPS0=0; // bo chia 1:1--------------------------------------

PTMOD1=1; PTMOD0 =0; // continuos up/down counting

PTEN =1; // PWM time base on

PWMEN2 = 1; PWMEN1 = PWMEN0 =0; // dung cac chan PWM0--5

PMOD0 = PMOD1 = PMOD2 = 1; // independent : chay doc lap
// complementary : chay bu tru nhau

SEVOPS3 = SEVOPS2 = SEVOPS1 = SEVOPS0 =0; // các bit co dãn ngõ ra PWM dac biet. : 1-1
//-------------------------------------------------------------

//tan so PWM 5KHz -> T = 1/5000 = 0.0002(s)
/*(PTPER.4+1).4.Pre/Fosc=1/T
=> (PTPER.4+1).4.Pre = 4000
chon Pre = 1.
=> PTPER = 250.
PTPER = PTPERH.256 + PTPERL
=> PTPERH = 0 , PTPERL =250
Ts = PTPER*4
*/
PTPERH =0; PTPERL =250;

// dead time 1us
DTCON = 0b00000001;

// interrupt PWM
PTIE =1; PTIF = 0; IPEN = 1; GIE = 1;
LATB6 =1; RB6 =1;

while(1)
{}
}
void interrupt ngat()
{
if(PTIF)
{
Ta=50.0*data[299-i]/150.0;
Tb=50.0*data[i]/150.0;
To=(250-Ta-Tb)/2.0;
i=i+3;
if(i>=300)
{
i=0;
sector++;
if(sector>6)
sector=1;
}
switch(sector)
{
case 1:
U= To;
V=To+Ta;
W=250-To;
RD0=1;
break;
case 2:
U= To+Tb;
V=To;
W=250-To;
RD0=0;
break;
case 3:
U= 250-To;
V=To;
W=To+Ta;
RD0=1;
break;
case 4:
U= 250-To;
V=To+Tb;
W=To;
RD0=0;
break;
case 5:
U= To+Ta;
V=250-To;
W=To;
RD0=1;
break;
case 6:
U= To;
V=250-To;
W=To+Tb;
RD0=0;
break;
}
PDC0H=(char)(U/256.0);PDC0L=(char)(U-PDC0H*256.0);
PDC1H=(char)(V/256.0);PDC1L=(char)(V-PDC1H*256.0);
PDC2H=(char)(W/256.0);PDC2L=(char)(W-PDC2H*256.0);
PTIF=0;
}

}
NguyenDucTin 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à 08:03 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