1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

CHUONG 3 thiết kế mạch nạp ắc qui từ NLMT

19 377 2

Đ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 19
Dung lượng 1,52 MB

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

Nội dung

Chương 3.THIẾT KẾ VÀ THI CÔNG MẠCH NẠP ACQUY TỪ HỆ THỐNG PIN MẶT TRỜI.. Từ những cơ sở lý thuyết đó, chúng ta xây dựng mô hình của đề tài với ý tưởng thiết kế là sử pin năng lượng mặt tr

Trang 1

Chương 3.

THIẾT KẾ VÀ THI CÔNG MẠCH NẠP ACQUY TỪ

HỆ THỐNG PIN MẶT TRỜI.

3.1 Thiết kế mạch nạp acquy:

Những chương trước chúng ta đã tìm hiểu tổng quan về hệ thống pin mặt trời Từ những cơ sở lý thuyết đó, chúng ta xây dựng mô hình của đề tài với ý tưởng thiết kế là sử pin năng lượng mặt trời, nạp điện cho Acquy, có dò điểm công suất cực đại

3.1.1 Yêu cầu của mô hình:

3.1.1.1 Về kỹ thuật:

- Mô hình phải thể hiện được hiệu quả tiết kiệm và thân thiện với môi trường.

- Chịu được các điều kiện khắc nghiệt của thời tiết, bền vững với thời gian.

- Đơn giản trong vận hành và bảo trì.

- Linh động và thẩm mỹ.

3.1.1.2 Về kinh tế:

- Đơn giản nhất trong thiết kế để hạ giá thành.

- Sử dụng vật tư và thiết bị thông dụng với giá thành thấp.

- Với những phần không quan trọng của mô hình có thể tận dụng vật tư có sẳn để hạ

giá thành nhất có thể

3.1.2 Sơ đồ nguyên lý và code cho mạch nạp acquy:

Trang 2

Hình 3.1: Sơ đồ nguyên lý mạch nạp acquy.

Sơ đồ nguyên lý mạch nạp acquy được vẽ và chạy mô phỏng trên phần mềm Protues

Trang 3

Hình 3.2: Phần mềm mô phỏng Protues.

Chương trình được viết bằng ngôn ngữ lập trình C, được lập trình trên phần mềm Keil C

Hình 3.3: Phần mềm keil C.

Sau đây là đoạn code của mạch nạp acquy:

Phần này bao gồm:

- Chương trình chính của mạch nạp

- Các thư viện có trong chương trình chính:

 Thư viện LCD

 Thư viện DS1307

Trang 4

3.1.2.1 Code chương trình chính:

#include "REG51xD2.h"

#include <stdio.h>

unsigned char buf_lcd[20];

#define rs_lcd P10

#define e_lcd P11

#define d4_lcd P00

#define d5_lcd P01

#define d6_lcd P02

#define d7_lcd P03

#include "Driver_Lcd_4Bit_V0.h"

#define DS_WRITE 0xD0

#define DS_READ 0xD1

#define ERR_ACK 0x01

// *** -***

unsigned char RTC_ARR[7];

#include "i2c.h"

// Read RTC (all real time)

void ReadRTC(unsigned char * buff)

{

StartI2C();

WriteI2C(DS_WRITE);

Trang 5

WriteI2C(0x00);

StartI2C();

WriteI2C(DS_READ);

*(buff+0)=ReadI2C(ACK); // Second

*(buff+1)=ReadI2C(ACK); // Minute

*(buff+2)=ReadI2C(ACK); // hour

*(buff+6)=ReadI2C(NO_ACK); // year

StopI2C();

}

// Write RTC

void WriteRTC(unsigned char *buff)

{

StartI2C();

WriteI2C(DS_WRITE);

WriteI2C(0x00);

WriteI2C(*(buff+0));

WriteI2C(*(buff+1));

WriteI2C(*(buff+2));

StopI2C();

}

void Set_Date_Time( unsigned char min, unsigned char hour)

{

ReadRTC(&RTC_ARR[0]);

RTC_ARR[0] = RTC_ARR[0] & 0x7F;//enable oscillator (bit 7=0) RTC_ARR[1] = min;

RTC_ARR[2] = hour;

WriteRTC(&RTC_ARR[0]);//Set RTC

}

void display(void)

Trang 6

ReadRTC(&RTC_ARR[0]);

sprintf(buf_lcd," %02bX:%02bX:%02bX",RTC_ARR[2],RTC_ARR[1],RTC_ARR[0]); Putc_Lcd(buf_lcd,8,0);

delay(50); // delay about 1 second

}

#define adc_ale P14

#define adc_start P15

#define adc_add0 P16

#define adc_add1 P17

#define data_adc P2

short f_adc=0;

unsigned val_adc[6];

float xdata Vso, Pso,deltaV,deltaP,D_pwm,Pnew; Inap;

unsigned int mode=0,f_k=0;

void int_ex0 (void ) interrupt 0

{ f_adc = 1;

}

void int_ex1 (void ) interrupt 2

if(mode==3)

{ mode =1;}

}

void scan_adc()

{ unsigned int i=0;

/// doc ad

Trang 7

for (i=0;i<3;i++)

{ adc_add0 = (i & 0x01)? 1:0;

adc_add1 = (i & 0x02)? 1:0;

delay(1);

delay(1);

adc_start = 1;

delay(1);

adc_start = 0;

while(!f_adc);

val_adc[i] = data_adc;

delay(100);

}

/// hien thi ad

sprintf(buf_lcd,"%.2fV ",(float)val_adc[0]*14.10/255.0); /// hien thi ap pin Putc_Lcd(buf_lcd,9,1);

sprintf(buf_lcd,"%.2fV ",(float)val_adc[1]*20.0/255.0); /// hien thi ap solar Putc_Lcd(buf_lcd,9,2);

sprintf(buf_lcd,"%.2fA",((float)val_adc[2]*22.7/255.0-(float)val_adc[1]*20.0/255.0)/0.22); /// hien thi dong solar

Putc_Lcd(buf_lcd,9,3);

}

void charge() //moi bo sung pwm de do MPPT mach nap {

Inap= val_adc[2]; // do dong Isolar

deltaV = val_adc[1] - Vso; // Tinh deltaV

Trang 8

Pnew = val_adc[1]*Inap; // Tinh cong suat

deltaP = Pnew - Pso; //Tinh DeltaP

if (deltaP > 0.0)

{ if (deltaV > 0.0)

{ if (D_pwm > 5)

D_pwm = D_pwm-5;} } else

{ if (deltaV > 0.0)

{ if (D_pwm < 245.0) D_pwm = D_pwm+5; } }

void main()

EX1 = 1;

IT1 = 1;

Trang 9

mode =1 ;

//Set_Date_Time(0x37,0x9);

main:

Write_Lcd(0x01,0);

delay(10);

Dis_Lcd_4line (" Time =",

"Bater V=",

"Solar V=",

"Solar I="

);

// che do auto

while(mode==1)

{ ///

delay(200);

display();

scan_adc();

if(((float)val_adc[1]*20.0/255.0)>10.0) ///xet nap {

charge();

sprintf(buf_lcd,"Nap");

Putc_Lcd(buf_lcd,15,1);

} else {

Trang 10

CCAP0H = 255;

sprintf(buf_lcd,"Stop");

Putc_Lcd(buf_lcd,15,1);

} }

Write_Lcd(0x01,0);

delay(10);

goto main;

}

3.1.2.2 Code chương trình các thư viện:

Thư viện LCD:

#include <string.h>

void Triger(void);

void Write_Lcd(char c ,short mode );

void Innit_Lcd(void );

void Goto_Lcd(int x, int y);

void Putc_Lcd(char c[ ],int x , int y);

// ===

void delay(unsigned int count)

{ unsigned int i;

while(count)

{ i = 115;

while(i>0) i ;

count ;

}

}

Trang 11

void Triger(void)

{ delay(1);

delay(1);

e_lcd = 0;

delay(1);

}

// ===

void make_out_data(char buffer_data)

{ d4_lcd= (buffer_data&0x01) ;

d5_lcd= ((buffer_data&0x02)>>1);

d6_lcd= ((buffer_data&0x04)>>2);

d7_lcd= ((buffer_data&0x08)>>3);

}

// ===

void lcd_send_nibble(char buffer_nibble)

{ make_out_data(buffer_nibble);

Triger();

}

// ===

void Write_Lcd(char c ,short mode )

{ rs_lcd = 0;

delay(1);

rs_lcd = mode;

delay(1);

delay(1);

lcd_send_nibble((c >> 4)&0xf);

lcd_send_nibble(c & 0xf);

Trang 12

void Innit_Lcd(void )

{ char i;

rs_lcd = 0;

e_lcd= 0;

delay(5);

for(i=1;i<=3;++i)

{ lcd_send_nibble(3);

delay(10);

}

lcd_send_nibble(2);

// for(i=0;i<=3;++i)

Write_Lcd(((0x20|(2<<2))),0);

Write_Lcd(0x0c,0);

Write_Lcd(0x01,0);

Write_Lcd(6,0);

}

void Goto_Lcd(int x, int y)

{ switch(y)

{ case 0 : Write_Lcd((0x80+x),0);break;

case 1 : Write_Lcd((0xc0+x),0);break;

case 2 : Write_Lcd((0x94+x),0);break;

case 3 : Write_Lcd((0xd4+x),0);break;

}

}

void Putc_Lcd(char c[],int x, int y)

{ int i;

Goto_Lcd(x,y);

for (i=0 ; i<strlen(c) ; i++)

Trang 13

{ Write_Lcd(c[i],1);

}

}

void Dis_Lcd_4line(char str1[ ],char str2[ ],char str3[ ],char str4[ ]) {

Putc_Lcd(str1,0,0); //Hàng 1

delay(5);

Putc_Lcd(str2,0,1); //Hàng 2

delay(5);

Putc_Lcd(str3,0,2); //Hàng 3

delay(5);

Putc_Lcd(str4,0,3); //Hàng 4

delay(5);

}

Thư viện DS1307:

#include <intrins.h>

// *** -***

// I2C START

// *** -***

void StartI2C(void)

{

SDA = 1;

SCL = 1;

delay(1);

SDA = 0;

delay(1);

SCL = 0;

delay(1);

Trang 14

// *** -***

// I2C STOP

// *** -***

void StopI2C(void)

{ SDA = 0;

delay(1);

SCL = 1;

delay(1);

SDA = 1;

}

// *** -***

// I2C WRITE

// *** -***

void WriteI2C(unsigned char Data)

{ unsigned int i;

for (i=0;i<8;i++)

{

SDA = (Data & 0x80) ? 1:0;

SCL=1;SCL=0;

Data<<=1;

}

SCL = 1;

delay(1);

SCL = 0;

}

// *** -***

// I2C READ

// *** -***

Trang 15

unsigned char ReadI2C(bit ACK_Bit)

{ unsigned int i;

unsigned char Data=0;

SDA = 1;

for (i=0;i<8;i++)

{

SCL = 1;

Data<<= 1;

Data = (Data | SDA);

SCL = 0;

delay(1);

}

if (ACK_Bit == 1)

SDA = 0; // Send ACK else

SDA = 1; // Send NO ACK delay(1);

SCL = 1;

delay(1);

SCL = 0;

return Data;

}

3.2 Thi công mạch nạp acquy:

3.2.1 Vật tư thi công mạch nạp acquy:

- Bo mạch gồm: vi điều khiển P89V51RD2, ADC 0809, điện trở, biến trở, tụ điện, cuộn cảm, đèn led báo tín hiệu, DS1307, rơle đóng ngắt, điốt, màn hình LCD 4 lines …

- Bình acquy 12V-5Ah

Trang 16

3.2.2 Yêu cầu của mô hình:

- Màn hình LCD 4 lines hiển thị: time, áp acquy, áp solar, dòng solar

- Pin nuôi đồng hồ thời gian thực 3V

- Có rơle dự phòng để đóng điện vào buổi tối

- Chỉ sạc cho ắc quy khi điện áp của ắc quy nhỏ hơn 12.0V và điện áp của solar lớn hơn 10V

- Sạc bằng phương pháp điều rộng xung tần số 20KHZ

3.2.3 Kết quả phần thi công mạch nạp:

Hình 3.4: Mô hình sau khi hoàn thành.

Trang 17

Khi đưa nguồn acquy vào mạch sẽ tạo ra 5VDC, mục đích để cấp nguồn nuôi cho vi điều khiển, LCD, ADC…được thể hiện ở hình 3.5

Hình 3.5: Sau khi đưa acquy vào mạch.

Trang 18

Hình 3.6: Sau khi đưa nguồn từ pin mặt trời vào mạch.

Trong quá trình tiến hành đo độ rộng xung, khi ta thay đổi điện áp thì độ rộng xung thay đổi như hình 3.7 sau:

Hình 3.7: Độ rộng xung thay đổi khi thay

đổi điện áp solar.

3.3 Kết quả nghiên cứu đạt được và đánh giá về kết quả:

* Kết quả đạt được: chế tạo thành công mô hình mạch sạc acquy bằng năng lượng Mặt Trời có MPPT

* Đánh giá kết quả:

 Mô hình mạch sạc acquy bằng năng lượng Mặt Trời có tính chính xác cao, kết quả

đo đạt phù hợp với thực tế

 Mô hình mạch sạc acquy bằng năng lượng Mặt Trời có độ tin cậy cao, mạch chạy

ổn định

Trang 19

 Với việc chế tạo thành công mô hình này sẽ góp phần giúp cho đất nước ta khai thác tốt hơn về nguồn năng lượng siêu sạch và vô tận này Mô hình này có thể ứng dụng vào việc chiếu sáng cho những vùng sâu, vùng xa mà ở đó chưa có điện sinh hoạt Xa hơn có thể phát triển mô hình này với công suất lớn hơn dùng để hòa lưới

Ngày đăng: 10/06/2017, 12:44

TỪ KHÓA LIÊN QUAN

w