1. Trang chủ
  2. » Giáo Dục - Đào Tạo

TAI LIEU HUONG DAN MACH DO DONG AC

16 23 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 168 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TÀI LIỆU HƯỚNG DẪN MẠCH ĐO DÒNG ACMạch điện giới thiệu cho Biến dòng Current transformer viết tắt là CT.. Cấu tạo Biến dòng CT: gồm 2 bên sơ cấp và thứ cấp.. Bên sơ cấp nhận 1 pha của đi

Trang 1

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 là CT.

Cấu tạo Biến dòng CT: gồm 2 bên sơ cấp và thứ cấp Bên sơ cấp nhận

1 pha của điện lưới qua tải

Bên thứ cấp là 1 vài vòng dây được quấn tỷ lệ với bên sơ cấp

Dựa vào tỷ lệ này ta có thể tính được điện áp biến đổi bên thứ cấp (Điện áp AC)  Cần phải chỉnh lưu bằng Opamp sang Điện áp DC

Lý do dùng Opamp là do điện áp bên cuôn thứ cấp rất bé, tầm mV, do

đó cần dùng đến Opamp thì mới chỉnh lưu sang DC được Từ đó suy ngược ra dòng điện cần đo qua tải theo tỷ lệ của CT dùng ở đây là 1:10, nghĩa là cứ đo áp ra sau chỉnh lưu 1mV, thì dòng qua tải tương ứng là 1x10=10 mA

Từ ngõ ra của Opamp sau khi chỉnh lưu được áp DC, ta đưa vào bộ đọc ADC 10 bit của Vi điều khiển MSP430G2452 của Texas

Instrument.

Trang 2

Đây là sơ đồ mạch chỉnh lưu áp áp AC tầm mV sang áp DC mV

Trang 3

Phần tiếp theo là sơ đồ mạch điều khiển:

Mạch gồm có các phần:

1 Module nguồn hạ áp từ 5V xuống 3.3VDC cấp cho vi điều khiển MSP430G2452

2 Module LCD 16x2 giao tiếp MSP430G2452 theo giao thức 4 bit ( có 2 cách giao tiếp là mode 8 bit và mode 4 bit), 4 bit thì tiết kiệm chân cho vi điều khiển hơn.

3 Module nạp code cho MSP430G2452 thông qua đế nạp

4 Module ACS712T-20A (Vẽ thừa).

Trang 4

Phần tiếp theo là code điều khiển :

Giải thích trong code

Code chính :

#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

Trang 5

//-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 3 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; // 16 conversions

CCTL0 |= CCIE; // CCR0 interrupt disabled

CCR0 = 50000;

TACTL = TASSEL_2 + MC_1; // SMCLK, upmode

TACTL|=TAIE;

_BIS_SR( GIE); // Enter interrupt

lcd_init();

put_cmd(clr_scr);

delay_cycles(50);

for(int i=0;i<10;i++)

{

put_cmd(line_1);

Trang 6

lcd_putsf("Mach do 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 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); // Wait if ADC10 core is active ADC10SA = (unsigned int)vr; // Data buffer start

ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion ready _NOP(); // space for debugger

_NOP(); // space for debugger

if (ti<1000)

{

tong=tong+vr[2];

ti++;

}

else

{

Trang 7

tong=tong/1000;

dong = tong*10;

tong=0;

ti=0;

}

ok_lcd();

}

}

void ok_lcd()

{

chuyendoi(tong,3.3,1000);//P1.0 tai put_cmd(line_1);

lcd_putsf("Dong tai do duoc:");

put_cmd(line_2);

chuyendoi(dong,3.3,1000);//P1.0 tai lcd_putsf(" ");

lcd_putchar(ketqua1+48);

lcd_putchar(ketqua4+48);

Trang 8

lcd_putchar(ketqua7+48);

lcd_putchar(ketqua9+48);

lcd_putsf("mA");

lcd_putsf(" ");

put_cmd(0x10);

delay_cycles(5000);

}

void chuyendoi(int m, float heso1, int heso2)

{

adc=m ;

adc1=adc*heso2;

ketqua=adc1*heso1/1023;

// ketqua1=ketqua/1000;//PHAN NGAN 1

ketqua1=(int) (ketqua/1000);//PHAN NGAN 1 //Uart_Array[6] = (int) (1000*( sen_data.accel_x ));

ketqua2=ketqua1*1000;

// ketqua3=ketqua-ketqua2;

ketqua3=(int) (ketqua-ketqua2);

ketqua4=ketqua3/100;//PHAN TRAM 4

ketqua5=ketqua4*100;

Trang 9

ketqua6=ketqua3-ketqua5;

ketqua7=ketqua6/10;//PHAN CHUC 7

ketqua8=ketqua7*10;

ketqua9=ketqua6-ketqua8;//PHAN DON VI 9

}

Code Phụ (Thư viện LCD) :

File : TVLCD.h

//*******************dinh nghia bit************************ typedef unsigned char uchar;

union reg

{ unsigned char _byte; //khai bao 1byte

struct bit

{ //dinh nghia bit trong byte vua khai bao

unsigned char b0:1; //bit 0 trong byte

unsigned char b1:1; //bit 1 trong byte

unsigned char b2:1; //bit 2 trong byte

unsigned char b3:1; //bit 3 trong byte

unsigned char b4:1; //bit 4 trong byte

unsigned char b5:1; //bit 5 trong byte

unsigned char b6:1; //bit 6 trong byte

unsigned char b7:1; //bit 7 trong byte

} _bit;

};

union reg* P2_dir=(union reg*)0x2a; //khai bao dia chi o nho

Trang 10

union reg* P2_out=(union reg*)0x29;

union reg* P2_sel=(union reg*)0x2e;

union reg* P2_in=(union reg*)0x28;

union reg* P1_sel=(union reg*)0x26;

union reg* P1_dir=(union reg*)0x22; //khai bao dia chi o nho

union reg* P1_out=(union reg*)0x21;

union reg* P1_in=(union reg*)0x20;

//**************************define

Pin_LCD*******************

#define RS P2_out->_bit.b0 //0 >thanh ghi lenh lenh;1 >thanh ghi data

#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);

Trang 11

//********************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********************************

****************

Trang 12

//****************************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;i<t;i++);

}

//********************LCD Funtion*********************** //********************tao

xung*******************************************

void enable()

{

EN=1;

delay(10);

EN=0;

delay(20);

}

//**********convert data >send to Pin of

microcontrol****************************

void set_data_lsb(unsigned char data) //ham gui byte data thap

Trang 13

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;

Trang 14

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 thanh ghi lenh

set_data_msb(cmd);

enable();

set_data_lsb(cmd);

enable();

}

//**************************ham gui

data*************************************

void lcd_putchar(unsigned char data)

{

RS=1;

Trang 15

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 do gui lenh

set_data_lsb(0x03);

Trang 16

enable();

enable();

enable();

set_data_lsb(0x02);

enable();

put_cmd ( 0x28 ); //cd 4bit,2dong,5x7

put_cmd ( 0x0C); //bat hien thi,tat con tro

put_cmd ( 0x06 ); //* entry mode set, increment & scroll left put_cmd ( 0x01 ); //* clear display

}

//************************************************

Chúc bạn thành công !

Ngày đăng: 01/03/2020, 19:37

w