Lập trình code cho hệ thống

Một phần của tài liệu Nghiên cứu, thiết kế phần mềm cho hệ thống quản lí pin BMS đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 88)

4.2.2.1. Lập trình code cho Arduino

Các bước gửi và nhận chuỗi trên Arduino:

- Bước 1: Gửi chuỗi từ Arduino truyền dữ liệu tới BMS-DXB31 - Bước 2: Nhận chuỗi từ BMS-DXB31 tới Arduino nhận sữ liệu - Bước 3: Đọc và hiển thị chuỗi lên trên phần mềm Monitor.

77 Các bước trên đây được thực hiện như là một trình tự gửi và nhận chuỗi có logic và không thể làm ngược lại được. Do cách thức giao tiếp với BMS-DXB31 được nhà sản xuất mặc định sẵn với những frame tín hiệu truyền đi tới BMS-DXB31 là cố định. Chính vì vậy, ta lập trình code truyền và gửi đi trên Arduino theo như quy trình thực hiện trên.

a) Bước 1: Gửi chuỗi từ Arduino truyền dữ liệu tới BMS-DXB31 Lập trình code cho Arduino

void setup() { Serial.begin(9600); Serial1.begin(9600); } void loop() { //0x01 Alarm status Serial1.write(0x3a); Serial1.write(0x16); Serial1.write(0x01); Serial1.write(0x00); Serial1.write(0x17); Serial1.write(0x00); Serial1.write(0x0d); Serial1.write(0x0a); delay(50); //0x06 Temperature of MOS in BMS Serial1.write(0x3a); Serial1.write(0x16); Serial1.write(0x06); Serial1.write(0x00); Serial1.write(0x1c); Serial1.write(0x00); Serial1.write(0x0d); Serial1.write(0x0a); delay(50);

//0x07 Lowest temp of Battery

Serial1.write(0x3a); Serial1.write(0x16);

Serial1.write(0x07); Serial1.write(0x00);

Serial1.write(0x1d); Serial1.write(0x00);

Serial1.write(0x0d); Serial1.write(0x0a);

78

//0x08 Highest temp of Battery

Serial1.write(0x3a); Serial1.write(0x16); Serial1.write(0x08); Serial1.write(0x00); Serial1.write(0x1e); Serial1.write(0x00); Serial1.write(0x0d); Serial1.write(0x0a); delay(50); //0x09 Voltage Serial1.write(0x3a); Serial1.write(0x16); Serial1.write(0x09); Serial1.write(0x00); Serial1.write(0x1f); Serial1.write(0x00); Serial1.write(0x0d); Serial1.write(0x0a); delay(50); //0x0a Current Serial1.write(0x3a); Serial1.write(0x16); Serial1.write(0x0a); Serial1.write(0x00); Serial1.write(0x20); Serial1.write(0x00); Serial1.write(0x0d); Serial1.write(0x0a); delay(50);

//0x0D Remaining capacity percentage SOC

Serial1.write(0x3a); Serial1.write(0x16); Serial1.write(0x0d); Serial1.write(0x00);

Serial1.write(0x23); Serial1.write(0x00);

Serial1.write(0x0d); Serial1.write(0x0a);

delay(25);

//0x0F Actual remaining capacity

Serial1.write(0x3a); Serial1.write(0x16); Serial1.write(0x0f); Serial1.write(0x00);

Serial1.write(0x25); Serial1.write(0x00); Serial1.write(0x0d); Serial1.write(0x0a);

79 delay(25);

//0x10 Actual full capacity

Serial1.write(0x3a); Serial1.write(0x16); Serial1.write(0x10); Serial1.write(0x00); Serial1.write(0x26); Serial1.write(0x00); Serial1.write(0x0d); Serial1.write(0x0a); delay(25); //0x24 Cell 1~7 voltage Serial1.write(0x3a); Serial1.write(0x16); Serial1.write(0x24); Serial1.write(0x00); Serial1.write(0x3a); Serial1.write(0x00); Serial1.write(0x0d); Serial1.write(0x0a); delay(50); //0x25 Cell 8~14 voltage Serial1.write(0x3a); Serial1.write(0x16); Serial1.write(0x25); Serial1.write(0x00); Serial1.write(0x3b); Serial1.write(0x00); Serial1.write(0x0d); Serial1.write(0x0a); delay(50); }

b) Bước 2: Nhận chuỗi từ BMS-DXB31 tới Arduino nhận sữ liệu Lập trình code cho Arduino

void setup() { Serial.begin(9600); Serial1.begin(9600); } Int inByte; void loop() { if (Serial1.available())

80 { inByte = Serial1.read(); Serial.print (inByte,HEX); Serial.print (" "); } }

c) Bước 3: Hiển thị chuỗi nhận được trên Serial Monitor trong Arduino:

Hình 4.21: Kết quả hiển thị chuỗi nhận được trên Serial Monitor

4.2.2.2. Lập trình code trên phần mềm LabVIEW 2020

Trong phần mềm LabVIEW, có khối có thể giao tiếp giữa Arduino với LabVIEW. Để thực hiện, ta nhấn chuột phải chọn “Instrucment I/O” → “Serial” → “Configure Port”.

Hình 4.22: Khối giao tiếp với Arduino trên LabVIEW

Để tách chuỗi và thu thập dữ liệu từ BMS-DXB31, ta thực hiện các bước tách chuỗi, thu thập dữ liệu và cho ra các thông số để thể hiện trạng thái của pin.

- Bước 1: Nhận diện chuỗi tương ứng với từng thông số, trạng thái của pin - Bước 2: Tách chuỗi, thu thập dữ liệu và chuyển đổi về giá trị phù hợp - Bước 3: So sánh các giá trị thu thập đuộc với các giá trị thực tế

81 a) Bước 1: Nhận diện chuỗi tương ứng với từng thông số và trạng thái của pin

- Khi đã có các frame được gửi về lại Arduino, sau đó ta phải phân tích chuỗi đó để lấy thông tin các trạng thái của cell pin được gửi đến. Sau đây là việc xây dựng các khối trên LabVIEW, có công dụng: nhận chuối, phân tích, tách chuỗi, và lấy dữ liệu của các trạng thái của pin.

- Xây dựng các khối đọc và hiển thị chuỗi của Arduino nhận về:

Hình 4.23: Các khối trên LabVIEW để đọc và hiển thị chuỗi

b) Bước 2: Tách chuỗi, thu thập dữ liệu và chuyển đổi về giá trị phù hợp

- Sau khi nhận diện được chuỗi, ta tiến hành xây dựng các khối tách chuỗi lấy data và sau đó ta làm tương tự với các chuỗi còn lại của các trạng thái cell pin.

82 c) Bước 3: So sánh các giá trị thu thập đuộc với các giá trị thực tế

- Bước này giúp chúng ta so sánh các giá trị hiển thị trên giao diện LabVIEW với các giá trị đo được ngoài thực tế, và áp dụng tương tự với các tráng thái pin còn lại.

Hình 4.25: So sánh giá trị điện áp của bộ pin với thực tế

Kết luận: ta sẽ dùng 3 bước này áp dụng vào các trường hợp tráng thái khác của cell pin

và sau đó ta thu thập được các giá trị dữ liệu của các thông tin tráng thái của bộ pin.

* Các tín hiệu gửi tới Arduino nhận hay có tình trạng mất tín hiệu nên giá trị luôn nhảy

về giá trị bằng 0, dẫn đến giao diện hiển thị trên LabVIEW trông không ổn định. Vì vậy, để khắc phục nhược điểm này ta sẽ lấy lại giá trị của vòng lặp trước khi giá trị nhảy về giá trị bằng 0, giúp cho giao diện trên phần mềm hiển thị ổn định hơn. Ngoài giá trị bằng 0, ta có thể thay đổi các giá trị khác để phù hợp với giá trị thực tế.

Vì thế, ta xây dựng các khối lưu giá trị tương tự như sau:

83

Chương 5. THỰC NGHIỆM VÀ KẾT QUẢ 5.1. Xây dựng hệ thống quản lý pin BMS cho bộ pin 36V-13Ah 5.1.1. Mô hình thực tế

Hình 5.1: Mô hình thực tế của hệ thống quản lý pin

5.1.2. Giao diện phần mềm

84

Hình 5.3: Giao diện của phần mềm cho hệ thống quản lý pin (2)

Trong đó:

1- Kết nối với phần mềm 2- Trạng thái của pin

3- Các thông số cơ bản của bộ pin 4- Các trạng thái cảnh báo

5- Lưu dữ liệu vào file excel

6- Biểu đồ thể hiện điện áp từng cell

7- Bảng giá trị điện áp từng cell theo thời gian (t = 1s)

8- Đồ thị thể hiện giá trị nhiệt độ của MOSFET trong mạch BMS, giá trị nhiệt

độ của bộ pin và dòng điện của bộ pin

9- Bảng giá trị và đồng hồ thể hiện giá trị của MOSFET trong mạch BMS, giá

trị nhiệt độ của bộ pin và dòng điện của bộ pin theo thời gian (t = 1s)

5.1.3. Đánh giá tính hiệu quả của phần mềm

a) Nhận kết quả hiển thị từ giao diện hiển thị trên phần mềm: Dùng giá trị hiển thị mức điện áp của bộ pin để so sánh với giá trị thực tế

85

Hình 5.4: Giá trị điện áp của bộ pin được hiển thị trên phần mềm

b) So sánh với giá trị ngoài thực tế: Dùng đồng hồ đo vạn năng để kiểm tra giá trị điện áp của bộ pin.

Hình 5.5: Kiểm tra giá trị điện áp thực tế của bộ pin bằng đồng hồ vạn năng

c) Kết luận: Kết quả hiển thị giá trị điện áp của bộ pin trên phần mềm gần giống với giá trị điện áp thực tế của pin.

5.2. Kết quả hiển thị trên phần mềm 5.2.1. Các trạng thái của pin: 5.2.1. Các trạng thái của pin:

Có 3 trạng thái khi sử dụng pin:

a) Normal: Pin đang ở trạng thái bình thương, không sạc cũng không xả (Dòng điện bằng 0)

86

Hình 5.6: Phần mềm hiển thị trạng thái pin đang bình thường

b) Charge: Pin được kết nối với bộ sạc và đang ở trạng thái sạc (Dòng điện lúc này là dòng của thiết bị sạc cung cấp cho pin)

Hình 5.7: Kết nối pin với bộ sạc

Hình 5.8: Phần mềm hiển thị trạng thái pin đang sạc

c) Discharge: Pin được kết nối với tải (Dùng điện trở có giá trị R = 66 Ω) và đang ở trạng thái xả (Dòng điện lúc này là dòng của pin đang cung cấp cho tải)

Hình 5.9: Kết nối pin với tải

Hình 5.10: Phần mềm hiển thị trạng thái pin đang xả

5.2.2. Hiển thị các trạng thái cảnh báo

Đèn tín hiệu sẽ chuyển sang màu đỏ khi pin gặp 1 trong các sự cố dưới đây: - C-OC (Charge overcurrent): Sạc pin quá dòng cho phép

87 - D-OC (Discharge overcurrent): Xả pin quá dòng

- C-SC (Charge short-circuit): Sạc bị ngắn mạch - D-SC (Disharge short-circuit): Xã bị ngắn mạch

- HT (High-temperature): Nhiệt độ cao quá mữc cho phép - OL (Overload): Quá tải

- OV (Overvoltage): Sạc pin quá điện áp cho phép - UV (Undervoltage): Xã pin quá điện áp cho phép

Hình 5.11: Tín hiệu báo khi pin xã quá điện áp cho phép trên phần mềm

5.2.3. Các tín hiệu trên biểu đồ hiển thị điện áp từng cell

Tín hiệu báo trên đồ thị hiển thị điện áp là tín hiệu mất cân bằng cell pin hoặc khi cell pin sạc quá điện áp cho phép (Vcell > 4200 mV) và xả quá điện áp cho phép (Vcell < 2500 – 2700 mV).

88

Hình 5.13: Tín hiệu cell pin bị mất cân bằng (Unbalanced) khi sạc nhiều hơn các cell còn lại và sau đó được cân bằng lại

5.2.4. Các trạng thái trên đồ thị hiển thị nhiệt độ MOSFET trong mạch BMS, giá trị nhiệt độ của bộ pin và dòng điện của bộ pin:

a) Trạng thái sạc pin: Pin được sạc qua 2 giai đoạn

- Giai đoạn sạc ổn định dòng (SOC trong khoảng 0 đến 80%): Dòng điện sạc không đổi, nhiệt độ pin và nhiệt độ MOSFET tăng lên.

Hình 5.14: Đồ thị thể hiển thị giá trị nhiệt độ MOSFET trong mạch BMS, nhiệt độ và dòng điện của bộ pin theo thời gian trong giai đoạn sạc ổn định dòng

89

Hình 5.15: Bảng giá trị thể hiển thị giá trị nhiệt độ MOSFET trong mạch BMS, nhiệt độ và

dòng điện của bộ pin theo thời gian trong giai đoạn sạc ổn định dòng

- Giai đoạn sạc ổn định áp (SOC từ 80 đến 100%): Dòng điện sạc giảm dần, nhiệt độ pin và nhiệt độ MOSFET giảm thấp hơn so với giai đoạn trên.

Hình 5.16: Đồ thị thể hiển thị giá trị nhiệt độ MOSFET trong mạch BMS, nhiệt độ và dòng điện của bộ pin theo thời gian trong giai đoạn sạc ổn định áp

90

Hình 5.17: Bảng giá trị thể hiển thị giá trị nhiệt độ MOSFET trong mạch BMS, nhiệt độ và dòng điện của bộ pin theo thời gian trong giai đoạn sạc ổn định áp

b) Trạng thái xả pin: Pin được kết nối với tải (Điện trở có giá trị R = 66 Ω). Lúc này, dòng xả và nhiệt độ MOSFET trong mạch BMS, nhiệt độ của bộ pin không thay đổi nhiều.

Hình 5.18: Đồ thị thể hiển thị giá trị nhiệt độ MOSFET trong mạch BMS, nhiệt độ và dòng điện của bộ pin theo thời gian trong giai đoạn xả pin

91

Hình 5.19: Bảng giá trị thể hiển giá trị nhiệt độ MOSFET trong mạch BMS, nhiệt độ và dòng điện của bộ pin theo thời gian trong giai đoạn xả pin

5.2.5. Dữ liệu của pin được lưu về file excel

Các dữ liệu của pin được lưu về file excel nhằm mục đích theo dõi pin theo từng thời gian khi giao tiếp với hệ thống. Các giá trị được lưu gồm có:

- Thời gian: Ngày, giờ

- Phần trăm dung lượng pin còn lại (R-SOC) (%) - Dung lượng hiện tại (R – Capacity) (mAh) - Điện áp toàn bộ pin (Voltage) (V)

- Nhiệt độ của MOSFET trong mạch BMS (MOS – Temperature) (°C) - Nhiệt độ thấp nhất của pin (Lowest – Temperature) (°C)

- Nhiệt độ thấp nhất của pin (Highest – Temperature) (°C) - Điện áp từ cell 1 đến cell 10 (mV)

92

93

Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1. Kết luận

- Nhìn chung cơ bản đã nắm rõ được lý thuyết về pin và hệ thống quản lý pin BMS - Đã tự xây dưng và thiết kế giao diện cho phần mềm hệ thống quản lý pin BMS

- Các tín hiệu gửi từ BMS-DXB31 đến Arduino nhận và hiển thị dữ liệu lên giao diện LabVIEW tương đối ổn định và và khớp với các giá trị thực tế. Tuy nhiên, trong quá trình thực hiện vẫn còn vài tín hiệu gây nhiễu.

6.2. Hạn chế của đề tài

- Các tín hiệu gửi lên LabVIEW hay gặp vấn đề nhiễu và mất tín hiệu.

- Chưa thể lập trình trên 1 Arduino có thể vừa gửi và vừa nhận, vẫn sử dụng tới 2 board Arduino để làm những công việc này.

- Do tình hình dịch bệnh nên không có đủ các dụng cụ, linh kiện ở thời điểm hiện tại. Vì thế mô hình chưa thực sự hoàn thiện từ kết cấu đến thẩm mỹ, và việc đấu dây và jack cắm nhìn chung vẫn còn sơ sài. Việc đánh giá tính hiệu quả của phần mềm chưa được đánh giá 1 cách trực quan do thiếu dụng cụ đo.

6.3. Hướng phát triển đề tài

- Có thể lọc và loại bỏ các tín hiệu dư thừa đi để việc thu thập tin hiệu ổn định và tăng

hiệu làm việc của phần mềm.

- Có thể phát triển quy mô trên các mô hình bộ pin với số lượng cell pin khác nhau phù hơp với từng yêu cầu được sử dụng.

94

CÁC TÀI LIỆU THAM KHẢO

[1] Davide Andrea, Battery Management Systems for Large Lithium-Ion Battery Packs,

LonDon, 2010.

[2] Nguyễn Bá Hải, Lập trình LabVIEW, trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh, 2010. [3] https://datasheetspdf.com/datasheet/ICR18650-26F.html [4] https://www.ionenergy.co/resources/blogs/cell-balancing-battery-life/ [5] http://www.d-powercore.com/cms/project/113 [6] http://www.d-powercore.com/class/19 [7] https://khoahoc.tv/nguyen-ly-hoat-dong-va-qua-trinh-sac-xa-pin-lithium-ion-99155 [8] https://cesti.gov.vn/bai-viet/khcn-nuoc-ngoai/xu-ly-pin-lithium-ion-sau-su-dung- 01010748-0000-0000-0000-000000000000 [9] https://batteryuniversity.com/article/bu-908-battery-management-system-bms [10] http://oto.saodo.edu.vn/tin-moi/cau-tao-khoi-pin-cua-xe-o-to-dien-375.html [11] https://vi.wikipedia.org/wiki/Pin_Li-ion

95

PHỤ LỤC

Hướng dẫn sử dụng phần mềm cho hệ thống quản lý pin BMS

Logo của phần mềm:

a) Các bước kết nối phần mềm với BMS

Bước 1: Chọn vào biểu tượng để khởi động phần mềm

Bước 2: Nhấn vào biểu tưởng bên dưới để chọn nơi lưa dữ liệu của pin trước khi kết nối.

Bước 3: Chọn file để lưu dữ liệu trên máy tính của bạn (file lưu được định dạng ở file

có đuôi .xls)

96

Bước 5: Chọn cổng mũi tên sổ xuống để lựa chọn cổng COM đnag giao tiếp với mạch

BMS-DXB31

97

b) Chọn vào 2 cửa sổ bên dưới mà bạn muốn xem thông số về pin

- Cửa sổ cell voltage:

Một phần của tài liệu Nghiên cứu, thiết kế phần mềm cho hệ thống quản lí pin BMS đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 88)

Tải bản đầy đủ (PDF)

(109 trang)