Hình 2. 19: IC Eeprom 24LC512.
IC 24LC512 là một loại Eeprom có khả năng hoạt động ở điện áp từ 2,5V- 5,5V và có bộ nhớ 512Kb. Có khả năng ghi tới 64 KBytes dữ liệu và khả năng đọc tuần tự và ngẫu nhiên.
Các thông số cơ bản:
Bảng 2. 13: Các thông số của Eeprom 24LC512.
Thông số Giá trị Bộ nhớ 512kbits Điện áp hoạt động 2,5 V- 5,5 V Kích thước trang 128 byte Độ bền 1.000.0000 ghi/đọc/xóa Nhiệt độ làm việc -40°C đến 125°C Tần số 400kHz
2.3.10. IC nguồn LM2576
LM2576 là một IC nguồn tích hợp của mạch nguồn xung theo nguyên lý nguồn Buck.Với dòng điện định mức đầu ra tải là 3A và có các đầu điện áp đầu ra cố định 3.3V, 5V, 12V, 15V và điện áp biến đổi tùy từng loại Serial của LM2576. Đây là loại IC nguồn cung cấp điện áp đầu ra ổn định, hoạt động ổn định với đầu tản nhiệt tốt giúp IC hoạt động tốt trong nhiệt độ cho phép.
Hình 2. 20: IC ổn áp LM2576.
Một số tính năng chính của LM2576:
• Điện áp đầu ra của các Serial là 3.3V, 5V, 12V, 15V và điện áp điều chỉnh.
• Điện áp điều chỉnh được từ 1.25V đến 37V. Với điện áp đầu vào là lớn nhất.
• Dòng đầu ra định mức là 3A.
• Điện áp đầu vào định mức là 40V có thể lớn 60V tùy từng dòng Serial.
• Chỉ giao tiếp với 5 chân đầu vào ra.
• Tần số đóng cắt chuẩn 52Khz[separator].
• Hiệu suất cao.
Sơ đồ cấu tạo của LM2576:
Hình 2. 21: Cấu tạo của LM2576.
Ở trên là sơ đồ cấu tạo bên trong của LM2576. Nguyên tắc dựa theo nguồn xung (Nguồn Buck). Điện áp đầu ra được điều chỉnh liên tục để đảm bảo cho điện áp đầu ra luôn giữa ở một giá trị cố định. Trong sơ đồ cấu tạo thì LM2576 gồm khối: So sánh, tạo dao động, công suất, quá dòng...
• Chân 1 (Vin): Chân nguồn đầu vào.
• Chân 2 (Vout): Chân điện áp đầu ra. Tùy thuộc dòng LM2576 mà chân này có điện áp ra ổn định khác nhau.
• Chân 3 (GND): Chân nguồn chung.
• Chân 4 (Feedback): Chân đưa tín hiệu phản hồi từ đầu ra về đầu vào. Đưa vào bộ so sánh để điều chỉnh ổn định điện áp.
• Chân 5 (On/Off): Chân đóng mở. Thường để GND.
Thông số chính của LM2576:
• Điện áp đầu vào: + LM2576: 45V. + LM2576HV: 60V.
• Dòng điện đầu ra: 3A.
31
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
• Giải nhiệt độ hoạt động là: −65˚C to +150˚C.
• Điện áp ổn định đầu ra: + LM2576HVS-3.3: 3.3V. + LM2576HVS-5.0: 5V. + LM2576HVS-12: 12V. + LM2576HVS-15: 15V.
+ LM2576HVS-ADJ: ADJ (1.25V ~ 37V).
2.3 CÁC CHUẨN GIAO TIẾP.2.3.1. Chuẩn giao tiếp UART. 2.3.1. Chuẩn giao tiếp UART.
Chuẩn giao tiếp UART là chuẩn giao tiếp được sử dụng để giao tiếp giữa vi điều khiển và máy tính. Ngày nay rất nhiều vi điều kiển được tích hợp mạch giao tiếp UART.
Hình 2. 22: Mô tả giao tiếp UART.
Khi tiến hành giao tiếp giữa 2 vi điều khiển theo chuẩn giao tiếp UART thì các vi điều khiển tự động xử dụng xung của chính mình tạo ra
Hình 2. 23: Cấu trúc một khung dữ kiệu trong chuẩn giao tiếp UART.
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
49
Một gói dữ liệu theo chuẩn UART có thể bao gồm các bit Start, gói dữ liệu, bit kiểm tra parity (bit kiểm tra CRC) và bit Stop.
Khi bit Start kéo từ mức cao xuống mức thấp báo hiệu quá trình truyền dữ liệu đã sẵn sàng. Tiếp đó là việc truyền 8 bit dữ liệu. Sau khi tiến hành truyền hết dữ liệu thì bit kiểm tra thực hiện kiểm tra dữ liệu. Cuối cùng bit Stop lên mức cao báo hiệu đã kết thúc một quá trình truyền dữ liệu.
Các thông số cơ bản trong truyền nhận UART:
Baud rate (tốc độ baud): khoảng thời gian một bit được truyền nên phải được đồng bộ giữa bên gửi và nhận.
Frame (khung truyền): qui định số bit dữ liệu được truyền.
Bit Start: là bit bắt buộc, bắt đầu của một khung dữ liệu báo hiệu rằng sắp có một gói dữ liệu được truyền tới.
Data: Gói dữ liệu cần truyền, các bit có trọng số thấp (LSB) được truyền trước xong đó tới các bit có trọng số cao (MSB).
Bit Parity: kiểm tra dữ liệu truyền có đúng không. Bit Stop: Là bit cảnh báo rằng các bit đã được gửi xong.
2.3.2. Chuẩn giao tiếp I2C
I2C là viết tắt của từ Inter-Integrated Circuit là một chuẩn truyền thông do hãng điện tử Philips Semiconductor sáng lập và xây dựng thành chuẩn năm 1990. Phiên bản mới nhất của I2C là V3.0 phát hành năm 2007.
I2C: Là một truyền thông nối tiếp đa chip chủ (tạm dịch của cụm từ multi-master serial computer bus). Khái niệm “multi-master” được hiểu là trên cùng một bus có thể có nhiều hơn một thiết bị làm Master, đồng thời một Slave có thể trở thành một Master nếu nó có khả năng. I2C được thực hiện trên 2 đường SDA (Serial DATA) và SCL (Serial Clock) trong đó SDA là đường truyền/nhận dữ liệu và SCL là đường xung nhịp. Căn cứ theo chuẩn I2C, các đường SDA và SCL trên các thiết bị có cấu hình “cực góp mở” nghĩa là cần có các “điện trở kéo lên” (pull-up resistor) cho các đường này. Ở trạng thái nghỉ (Idle), 2 chân SDA và SCL ở mức cao. Hình 2.13 mô tả một mô hình mạng I2C cơ bản.
Vcc Vcc R1 R2 SDA SCL Thiết bị n Thiết bị 3 Thiết bị 2 Thiết bị 1
Hình 2.24: Mạng I2C với nhiều thiết bị và 2 điện trở kéo lên cho SDA, SCL.
Master: Là chip khởi động quá trình truyền nhận, phát đi địa chỉ của thiết bị cần giao tiếp và tạo xung giữ nhịp trên đường SCL.
Slave: Là chip có một địa chỉ cố định, được gọi bởi Master và phục vụ yêu cầu từ Master.
SDA – Serial Data: Là đường dữ liệu nối tiếp, tất cả các thông tin về địa chỉ hay dữ liệu đều được truyền trên đường này theo thứ tự từng bit một. Chú ý là trong chuẩn I2C, bit có trọng số lớn nhất (MSB) được truyền trước nhất, đặc điểm này ngược lại với chuẩn UART.
SCL – Serial Clock: Là đường giữ nhịp nối tiếp. I2C là chuẩn truyền thông nối tiếp đồng bộ, cần có 1 đường tạo xung giữ nhịp cho quá trình truyền/nhận, cứ mỗi xung trên đường giữ nhịp SCL, một bit dữ liệu trên đường SDA sẽ được lấy mẫu (sample). Dữ liệu nối tiếp trên đường SDA được lấy mẫu khi đường SCL ở mức cao trong một chu kỳ giữ nhịp, vì thế đường SDA không được đổi trạng thái khi SCL ở mức cao (trừ START và STOP condition). Chân SDA có thể được đổi trạng thái khi SCL ở mức thấp.
Hình 2.25: Giản đồ xung của SCL và SDA.
START Condition – điều kiện bắt đầu: từ trạng thái nghỉ, khi cả SDA và SCL ở mức cao nếu Master muốn thực hiện một “cuộc gọi”, Master sẽ kéo chân SDA xuống thấp trong khi SCL vẫn cao. Trạng thái này gọi là START Condition (chúng ta gọi tắt là S).
STOP Condition – điều kiện kết thúc: sau khi thực hiện truyền/nhận dữ liệu, nếu Master muốn kết thúc quá trình nó sẽ tạo ra một STOP condition. STOP condition được Master thực hiện bằng cách kéo chân SDA lên cao khi đường SCL đang ở mức cao. STOP condition chỉ được tạo ra sau khi địa chỉ hoặc dữ liệu đã được truyền/nhận.
REPEAT START: Bắt đầu lặp lại, khoảng giữa START và STOP condition là khoảng bận của đường truyền, các Master khác không tác động được vào đường truyền trong khoảng này. Trường hợp sau khi kết thúc truyền/nhận mà Master không gởi STOP condition lại gởi thêm 1 START condition gọi là REPEAT START. Khả năng này thường được dùng khi Master muốn lấy dữ liệu liên tiếp từ các Slaves. Hình bên dưới mô tả các Master tạo ra START, STOP và REPEAT START.
Hình 2.26: Giản đồ xung khi có REPEAT START.
Address Packet Format: Định dạng gói địa chỉ, trên mạng I2C, tất cả các thiết bị (chip) đều có thể là Master hay Slave. Mỗi thiết bị có một địa chỉ cố định gọi là Device
address. Khi một Master muốn giao tiếp với một Slave nào đó, nó trước hết tạo ra một START condition và tiếp theo là gởi địa chỉ Device address của Slave cần giao tiếp trên đường truyền, vì thế xuất hiện khái niệm “gói địa chỉ” (Address Packet). Gói địa chỉ trong I2C có định dạng 9 bits trong đó 7 bit đầu (gọi là SLA, được gởi liền sau START condition) chứa địa chỉ Slave, một bit READ/WRITE và một bit ACK- Ackknowledge (xác nhận). Do bit địa chỉ có độ dài 7 bits nên về mặt lý thuyết, trên 1 mạng I2C có thể tồn tại tối đa 2^7=128 thiết bị có địa chỉ riêng biệt. Tuy nhiên, có một số địa chỉ không được sử dụng như các địa chỉ có định dạng 1111xxx (tức các địa chỉ lớn hơn hoặc bằng 120 không được dùng).
Riêng địa chỉ 0 được dùng cho “cuộc gọi chung” (General call). Bit READ/WRITE (R/W) được truyền tiếp sau 7 bit địa chỉ là bit báo cho Slave biết Master muốn “đọc” hay “ghi” vào Slave. Nếu bit này bằng 0 (gọi là W) thì quá trình “Ghi” dữ liệu từ Master đến Slave được yêu cầu, nếu bit này bằng 1 (gọi là R) thì Master muốn “đọc” dữ liệu từ Slave về. Tám bits trên (SLA+R/W) được Master phát ra sau khi phát START condition, nếu một Slave trên mạng nhận ra rằng địa chỉ mà Master yêu cầu trùng khớp với Device address của chính nó sẽ “đáp trả” lại Master bằng cách phát ra 1 tín hiệu “xác nhận” ACK bằng cách kéo chân SDA xuống thấp trong xung thứ 9.
Ngược lại, nếu không có Slave đáp ứng lại, chân SDA vẫn ở mức cao trong xung giữ nhịp thứ 9 thì gọi là tín hiệu “không xác nhận” – NOT ACK, lúc này Master cần có những ứng xử phù hợp tùy theo mỗi trường hợp cụ thể. Ví dụ Master có thể gởi STOP condition và sau đó phát lại địa chỉ Slave khác…
Như vậy, trong 9 bit của gói địa chỉ thì chỉ có 8 bit được gởi bởi Master, bit còn lại là do Slave. Ví dụ Master muốn yêu cầu “đọc” dữ liệu từ Slave có địa chỉ 43, nó cần phát đi một byte như sau trên đường truyền: (43<<1) + 1, trong đó (43<<1) là dịch số 43 về bên trái 1 vị trí vì 7 bit địa chỉ nằm ở các vị trí cao trong gói địa chỉ, sau đó cộng giá trị này với “1” tức là quá trình “đọc” được yêu cầu.
Hình 2.27: Giản đồ xung khi có Address Packet Format.
General call – cuộc gọi chung: Khi Master phát đi gói địa chỉ có dạng 0 (thực chất là 0+W) tức nó muốn thực hiện một cuộc gọi chung đến tất cả các Slave. Tất nhiên, cho phép hay không cho phép cuộc gọi chung là do Slave quyết định. Nếu các Slave được cài đặt cho phép cuộc gọi chung, chúng sẽ đáp lại Master bằng ACK. Cuộc gọi chung thường xảy ra khi Master muốn gởi dữ liệu chung đến các Slaves. Chú ý là cuộc gọi chung có dạng 0+R là vô nghĩa vì không thể Master nhận dữ liệu từ tất cả các Slave cùng thời điểm.
Data Packet Format – định dạng gói dữ liệu: Sau khi địa chỉ đã được phát đi, Slave đã đáp lại Master bằng ACK thì quá trình truyền/nhận dữ liệu sẽ diễn ra giữa cặp Master/Slave này. Tùy vào bit R/W trong gói địa chỉ, dữ liệu có thể được truyền theo hướng từ Master đến Slave hay từ Slave đến Master. Dù di chuyển theo hướng nào, gói dữ liệu luôn bao gồm 9 bits trong đó 8 bits đầu là dữ liệu và 1 bit cuối là bit ACK. Tám bits dữ liệu do thiết bị phát gởi và bit ACK do thiết bị nhận tạo ra. Ví dụ khi Master thực hiện quá trình gởi dữ liệu đến Slave, nó sẽ phát ra 8 bits dữ liệu, Slave nhận và phát lại ACK (kéo SDA xuống 0 ở xung thứ 9), sau đó Master sẽ quyết định gởi tiếp byte dữ liệu khác hay không. Nếu Slave phát tín hiệu NOT ACK (không tác động SDA ở xung thứ 9) sau khi nhận dữ liệu thì Master sẽ kết thúc quá trình gởi bằng cách phát đi STOP condition. Hình bên dưới mô tả định dạng gói dữ liệu trong I2C.
Hình 2.28: Giản đồ xung định dạng gói dữ liệu trong I2C.
Phối hợp gói địa chỉ và dữ liệu: Một quá trình truyền/nhận I2C thường được bắt đầu từ Master, Master phát đi một START condition sau đó gởi gói địa chỉ SLA+R/W trên đường truyền. Tiếp theo nếu có một Slave đáp ứng lại, dữ liệu có thể truyền/nhận liên tiếp trên đường truyền (1 hoặc nhiều byte liên tiếp). Khung truyền thông thường được mô tả như hình bên dưới.
Hình 2.29: Khung truyền dữ liệu trong I2C.
2.4 GIỚI THIỆU PHẦN MỀM.
2.4.1. Phần mềm lập trình Arduino IDE 1.8.1
Phần mềm Arduino IDE là phần mềm lập trình dành cho các board Arduino. Phần mềm có rất nhiều tiện ích như cài đặt dễ dàng nhanh chóng, mã nguồn mở nên ta có thể thêm các thư viện mong muốn, ngôn ngữ lập trình thông dụng.
Bước 1: Tải về và cài đặt phiên bản mới nhất của Arduino. Truy cập và website https://www.Arduino.cc vào mục Software kéo đến phần Download Arduino IDE. Chú ý: chọn đúng phiên bản dành cho hệ điều hành trên máy tính. Arduino IDE cho Windows có 2 lựa chọn, một là tải về file nén “.zip”, hai là tải về file cài đặt “.exe”. Phiên bản mới nhất hiện tại là 1.8.3. Sau khi tải về thì tiến hành cài đặt chương trình.
Bước 2: Sau khi cài đặt thành công, mở chương trình Arduino IDE lên và tiến hành tạo project mới. Cấu trúc cơ bản của chương trình khi khởi tạo một project mới (gọi là sketch) bao gồm hai hàm chính là setup() và loop().
Hình 2.30: Giao diện Arduino IDE với project mới (sketch mới).
Ví dụ về một chương trình mẫu bật tắt led. Trường hợp của đề tài vừa sử dụng Arduino và sử dụng EPS8266, mặc định trên phần mềm chưa có thư viện hỗ trợ module ESP8266, vì vậy để sử dụng được thì phải cài đặt module ESP8266 cho phần mềm. Thực hiện cài đặt như sau: vào File, chọn Preferences vào textbox Additional Board Manager URLs thêm vào đường link sau.
http://Arduino.esp8266.com/stable/package_esp8266com_index.json. Tiếp theo vào Tool→Board→Boards Manager:
39
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
Chọn ESP8266 by ESP8266 Community, click vào Install. Tool→Board→NodeMCU 1.0 ESP8266-12E Module.
Bước 3: Viết chương trình cấu trúc cơ bản của chương trình bao gồm hai hàm chính là setup và loop. Hàm setup chạy mỗi khi khởi động một chương trình, dùng để thiết lập các cài đặt. Hàm loop được gọi lặp lại nhiều lần cho đến khi tắt nguồn.
Bước 4: Biên dịch và nạp code: sau khi vết code xong thì tiến hành biên dịch cho đến khi chương trình không còn lỗi thì nạp chương trình vào bo mạch Arduino. Sau khi nạp thành công thì Arduino IDE hiện “Uploading Done”. Lúc này đã nạp chương trình vào Arduino thành công, kiểm Arduino xem có thực hiện đúng yêu cầu mong muốn chưa, nếu chưa thì hiệu chỉnh lại code rồi tiến hành biên dịch và nạp lại.
Hình 2.31: Biên dịch thành công.
2.4.2. Phần mềm thiết kế mạch Altium
Là phần mềm thiết kế mạch chuyên nghiệp có nhiều chức năng vô cùng tiện ích như thiết kế sơ đồ nguyên lý, thiết kế vẽ mạch layout (PCB), tạo mới linh kiện, và thư viện 3D đẹp mắt.
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
57
Hình 2.32: Màn hình khởi động của Altium 16.
Cửa sổ làm việc phần thiết kế mạch nguyên lý:
Cửa sổ làm việc vẽ PCB:
Chương 3. TÍNH TOÁN VÀ THIẾT KẾ 3.1 GIỚI THIỆU
Thiết kế và thi công hệ thống giám sát điện năng tiêu trong thụ hộ gia đình thu thập dòng điện, điện áp, tính toán công suất và điện năng hiển thị lên màn hình LCD, cài đặt cảnh báo và cảnh báo khi quá công suất và điện năng tiêu thụ cho phép sử dụng. Xây dựng được website quản trị có thể điều khiển, giám sát và cập nhật cơ sở dữ liệu lên Database, hiển thị thông tin từ Database ra website thông qua mạng Internet.