Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
168 KB
Nội dung
TÀI LIỆU HƯỚNG DẪN MẠCH ĐO DÒNG AC Mạch điện giới thiệu cho Biến dòng (Current transformer) viết tắt CT Cấu tạo Biến dòng CT: gồm bên sơ cấp thứ cấp Bên sơ cấp nhận pha điện lưới qua tải Bên thứ cấp vài vòng dây quấn tỷ lệ với bên sơ cấp Dựa vào tỷ lệ ta tính điện áp biến đổi bên thứ cấp (Điện áp AC) Cần phải chỉnh lưu Opamp sang Điện áp DC Lý dùng Opamp điện áp bên cn thứ cấp bé, tầm mV, cần dùng đến Opamp chỉnh lưu sang DC Từ suy ngược dòng điện cần đo qua tải theo tỷ lệ CT dùng 1:10, nghĩa đo áp sau chỉnh lưu 1mV, dòng qua tải tương ứng 1x10=10 mA Từ ngõ Opamp sau chỉnh lưu áp DC, ta đưa vào đọc ADC 10 bit Vi điều khiển MSP430G2452 Texas Instrument Đây sơ đồ mạch chỉnh lưu áp áp AC tầm mV sang áp DC mV Phần sơ đồ mạch điều khiển: Mạch gồm có phần: Module nguồn hạ áp từ 5V xuống 3.3VDC cấp cho vi điều khiển MSP430G2452 Module LCD 16x2 giao tiếp MSP430G2452 theo giao thức bit ( có cách giao tiếp mode bit mode bit), bit tiết kiệm chân cho vi điều khiển Module nạp code cho MSP430G2452 thông qua đế nạp Module ACS712T-20A (Vẽ thừa) Phần code điều khiển : Giải thích code Code : #include "msp430g2452.h" #include "TVLCD.c" float ketqua; int ch,dv,dong=0,ketqua1,ketqua2,ketqua3,ketqua4,ketqua5,ketqua6,ketqua7,ketqua8,ket qua9; long adc,adc1,ti=0,tong=0; int vr[3]; //Store adc values in this array void hienthi(); void ok_lcd(); void chuyendoi(int m,float heso1,int heso2); void main() { // Cau hinh ban dau //-stop watchdog timer //-chay bang giao dong noi 1Mhz WDTCTL = WDTPW + WDTHOLD; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; // Dinh nghia cac chan P1.3->P1.7 la OUTPUT P1DIR|=( BIT3+ BIT4+ BIT5+ BIT6 + BIT7); // Dinh nghia cac chan P2 la OUTPUT P2DIR=0XFF; P2SEL=0X00; // Cau hinh ADC cho chan P1.0->P1.2 ADC10CTL1 = INCH_2 + CONSEQ_3; // A2/A1/A0, repeat multi channel ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON; ADC10AE0 = 0x07; // P1.0,1,2 ADC option select ADC10DTC1 = 0x20; CCTL0 |= CCIE; // 16 conversions // CCR0 interrupt disabled CCR0 = 50000; TACTL = TASSEL_2 + MC_1; // SMCLK, upmode TACTL|=TAIE; _BIS_SR( GIE); lcd_init(); put_cmd(clr_scr); delay_cycles(50); for(int i=0;iP1.3 O day chi su dung P1.0 //P1.0 la vr[2]; P1.1 la vr[1]; P1.2 la vr[0]; // Doc P1.0 luu gia tri vao bien : vr[2] ADC10CTL0 &= ~ENC; while (ADC10CTL1 & BUSY); ADC10SA = (unsigned int)vr; // Wait if ADC10 core is active // Data buffer start ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion ready _NOP(); // space for debugger _NOP(); // space for debugger if (ti_bit.b0 //0 >thanh ghi lenh lenh;1 >thanh #define EN P2_out->_bit.b1 //phan biet giua 2lan gui data #define DATA_4 P2_out->_bit.b2 #define DATA_5 P2_out->_bit.b3 #define DATA_6 P2_out->_bit.b4 #define DATA_7 P2_out->_bit.b5 #define line_1 0x80 #define line_2 0xC0 #define clr_scr 0x01 //********************delay************************ void delay(unsigned long int t); //********************LCD Funtion*********************** //********************tao xung******************************************* void enable(); //**********convert data >send to Pin of microcontrol**************************** void set_data_lsb(unsigned char data); //ham gui byte data thap void set_data_msb(unsigned char data); //ham gui byte data cao //************************HAM GUI LENH****************************************** void put_cmd(unsigned char cmd); //**************************ham gui data************************************* void lcd_putchar(unsigned char data); void lcd_putsf(uchar *s); //****************HTLCD******************************** **************** //****************************ham khoi tao lcd************************* void lcd_init(); //************************************************ TVLCD.c #include "TVLCD.h" //********************delay************************ void delay(unsigned long int t) { unsigned long int i=0; for(i=0;isend to Pin of microcontrol**************************** void set_data_lsb(unsigned char data) //ham gui byte data thap { unsigned char convert=0; convert=data&0x01; if(convert==0x01)DATA_4=1; else DATA_4=0; convert=data&0x02; if(convert==0x02)DATA_5=1; else DATA_5=0; convert=data&0x04; if(convert==0x04)DATA_6=1; else DATA_6=0; convert=data&0x08; if(convert==0x08)DATA_7=1; else DATA_7=0; } void set_data_msb(unsigned char data) //ham gui byte data cao { unsigned char convert=0; convert=data&0x10; if(convert==0x10)DATA_4=1; else DATA_4=0; convert=data&0x20; if(convert==0x20)DATA_5=1; else DATA_5=0; convert=data&0x40; if(convert==0x40)DATA_6=1; else DATA_6=0; convert=data&0x80; if(convert==0x80)DATA_7=1; else DATA_7=0; } //************************HAM GUI LENH****************************************** void put_cmd(unsigned char cmd) { RS=0; //chon ghi lenh set_data_msb(cmd); enable(); set_data_lsb(cmd); enable(); } //**************************ham gui data************************************* void lcd_putchar(unsigned char data) { RS=1; set_data_msb(data); enable(); set_data_lsb(data); enable(); } void lcd_putsf(uchar *s) { while(*s) { lcd_putchar(*s); s++; }; } //****************HTLCD******************************** **************** //****************************ham khoi tao lcd************************* void lcd_init() { delay(100); RS=0; // che gui lenh set_data_lsb(0x03); enable(); enable(); enable(); set_data_lsb(0x02); enable(); put_cmd ( 0x28 ); //cd 4bit,2dong,5x7 put_cmd ( 0x0C); //bat hien thi,tat tro put_cmd ( 0x06 ); //* entry mode set, increment & scroll left put_cmd ( 0x01 ); //* clear display } //************************************************ Chúc bạn thành công ! ... void ok_lcd() { chuyendoi(tong,3.3,1000);//P1.0 tai put_cmd(line_1); lcd_putsf( "Dong tai duoc:"); put_cmd(line_2); chuyendoi (dong, 3.3,1000);//P1.0 tai lcd_putsf(" "); lcd_putchar(ketqua1+48); lcd_putchar(ketqua4+48);... // Enter interrupt lcd_putsf( "Mach dong AC, "); put_cmd(line_2); lcd_putsf(" Xin chao ban "); put_cmd(0x10); delay_cycles(1000000); } while (1) { // Doc ADC cac chan P1.0->P1.3 O day chi su dung... _NOP(); // space for debugger _NOP(); // space for debugger if (ti