![]() |
|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 7 túi
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
: |
Do cosphi lưới điện dùng 74ls86
Lúc trước bạn ocean_86 có hỏi, tui có ý kiến như sau:
Nếu bạn tạo được tín hiệu xung vuông áp và dòng có "bề rộng" như nhau như hình bên dưới, thì giải thuật tính: theo hình: dòng trễ t0 so với tín hiệu áp. u=u0*sin(wt); i=i0*sin(w(t-t0). Góc lệch pha wt0. cosphi=cos(wt0)=cos(2*pi*f*t0). w radian/s, do đó góc tính theo radian, tính theo độ là trớt wớt. Dùng "mọi chiêu" để đo được t0 là ok thui!!!!!!!!!!!. Tui thấy các cao thủ hay dùng ADE7753 hay hơn!!!!!!!!. Để các cao thủ cho ý kiến thêm vậy!!!!!!! |
![]() |
![]() |
![]() |
#2 |
Đệ tử 1 túi
Tham gia ngày: Mar 2010
Bài gửi: 12
: |
cám ơn picpen
mình đã so pha như vậy rồi đó còn đây là chương trình của mình, mình viết mà nó không chạy(không đo được khoảng thời gian lệch pha đó) #INCLUDE <16F877A.h> //#include <math.h> #DEVICE *=16 ADC = 10 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT #USE DELAY (CLOCK = 12000000) #INCLUDE <lcd_lib_4bit.C> //================================================== ============================ // DINH NGHIA THANH GHI, PORT, CAC CHAN #byte PORTA = 0x05 #byte PORTB = 0x06 #byte PORTC = 0x07 #byte PORTD = 0x08 #byte PORTE = 0x09 #byte TRISA = 0x85 #byte TRISB = 0x86 #byte TRISC = 0x87 #byte TRISD = 0x88 #byte TRISE = 0x89 #bit RB7 = 0X06.7 #bit RB6 = 0X06.6 #bit RB5 = 0X06.5 #bit RB4 = 0X06.4 char BANG[90]={0x01,0x03,0x05,0x06,0x08,0x0A,0x0C,0x0D,0x0F, 0x11,0x13,0x14,0x16,0x18,0x19,0x1B,0x1D,0x1E,0x20, 0x22,0x23,0x25,0x27,0x28,0x2A,0x2B,0X2D,0x2E,0x30, 0x32,0x33,0X34,0x36,0x37,0x39,0x3A,0x3C,0x3D,0x3E, 0x40,0x41,0x42,0x44,0x45,0x46,0x47,0x49,0x4A,0x4B, 0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55, 0x56,0x57,0x58,0x59,0x59,0x5A,0x5B,0x5C,0x5C,0x5D, 0x5D,0x5E,0x5F,0x5F,0x60,0x60,0x61,0x61,0x61,0x62, 0x62,0x62,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63, 0x64}; int16 temp2,k; int16 a1,b1,c1, state; #int_timer1 #int_ext void ngat() { if(k=0) { set_timer1 (0); ext_int_edge(l_to_h); k = 1; } else { temp2=get_timer1(); ext_int_edge(h_to_l); k = 0; state = 1; } } void main() { k=0; temp2 = 0; state = 0; output_bit (pin_D2, 0); // DK RS output_bit (pin_D3, 1); // DK CS enable_interrupts(global); enable_interrupts(int_ext); ext_int_edge (l_to_h); enable_interrupts(int_timer1); setup_timer_1(t1_internal|t1_div_by_1); while(true); { if(state=1) { temp2 = get_timer1(); temp2=bang[temp2-90]; state = 0; a1=temp2/100; temp2=temp2%100; b1=temp2/10; c1=temp2%10; } } lcd_putcmd(0xc0); printf(lcd_putchar,"COS = "); lcd_putchar(a1 + 0x30); printf(lcd_putchar,"."); lcd_putchar(b1 + 0x30); lcd_putchar(c1 + 0x30); } rất mong các cao thủ giúp đỡ em. thanks!!! |
![]() |
![]() |
![]() |
|
|