TỔNG QUAN
Đặt vấn đề
Hiện nay, các hộ tiêu thụ điện năng chủ yếu phụ thuộc vào việc quản lý của điện lực, dẫn đến việc họ không biết mức tiêu thụ điện của mình cho đến khi nhận biên lai vào cuối tháng Điều này khiến họ không thể điều chỉnh lượng điện tiêu thụ hợp lý Thêm vào đó, có nhiều trường hợp điện năng bị thất thoát mà các hộ tiêu thụ không hay biết, dẫn đến việc họ phải trả hóa đơn cao hơn so với các tháng trước Khi nhận ra vấn đề, họ thường phải gọi người đến kiểm tra và sửa chữa, vừa tốn kém chi phí vừa gây lãng phí điện năng không được sử dụng.
Việc nhân viên điện lực thu tiền điện và thống kê số liệu hàng tháng vẫn diễn ra, tuy nhiên, thời tiết và chi phí thuê nhân viên là những yếu tố ảnh hưởng lớn đến công việc Thay vì tiếp tục phương pháp truyền thống, ngành điện lực nên xem xét triển khai hệ thống tự động thống kê số liệu, điều này sẽ giúp giảm đáng kể chi phí nhân công.
Trước đây, một nhóm đã nghiên cứu về đồng hồ đo điện tử sử dụng IC ASC712, nhưng chỉ thực hiện các chức năng cơ bản như đo dòng điện, điện áp và điện năng tiêu thụ, cùng với việc gửi dữ liệu lên server để lưu trữ Tuy nhiên, dữ liệu thu được vẫn có sai số lớn lên đến 10% Đồng hồ này chỉ cho phép đọc dữ liệu trực tiếp trên thiết bị mà không có trang web hay ứng dụng hỗ trợ, gây khó khăn cho người dùng trong việc truy cập thông tin.
Nhóm tôi đã chọn nghiên cứu đề tài “Đồng hồ đo điện thông minh” vì nhiều lý do Thiết bị này không chỉ đo dòng điện, điện áp và điện năng tiêu thụ mà còn gửi dữ liệu tiêu thụ lên một Server Chúng tôi sẽ thiết kế một trang web để người dùng có thể truy cập vào các mẫu dữ liệu trên Server, trong khi chỉ có điện lực mới có quyền quản lý và thay đổi các dữ liệu này Các hộ tiêu thụ sẽ có khả năng truy cập để điều chỉnh lượng điện sử dụng, nhưng không thể thay đổi dữ liệu trên Server.
Mục tiêu
Đồng hồ đo điện sẽ bao gồm các chức năng:
Đo điện năng tiêu thụ
Gửi dữ liệu lên Server
Lưu dữ liệu điện năng tiêu thụ tại đồng hồ khi mất điện để tránh xung đột dữ liệu với Server
Tất cả dữ liệu các thiết bị có thể quản lý song song trên Website
Phương pháp thiết kế sử dụng IC ADE7753 để lấy mẫu dòng và áp, cho phép xử lý dữ liệu để tạo ra giá trị trong thanh ghi Dữ liệu này sẽ được đọc và tính toán để xác định dòng điện, điện áp và điện năng tiêu thụ bằng vi điều khiển STM32F103C8T6, sau đó hiển thị trên màn hình LCD cho người dùng dễ dàng theo dõi Đồng thời, lượng điện năng tiêu thụ sẽ được cộng dồn và lưu trữ trên server Một trang web sẽ được thiết kế để người dùng có thể truy cập dữ liệu từ server và tự động tính toán số tiền cần trả dựa trên lượng điện năng tiêu thụ, với thông tin được truy cập qua tài khoản trên website.
Linh kiện chính: STM32F103C8T6, ADE7753, ESP8266 v1, LCD 16x2.
Nội dung nghiên cứu
NỘI DUNG 1: Thu thập dữ liệu về các loại đồng hồ điện tử
NỘI DUNG 2: Tìm hiểu về IC chức năng ADE7753, module ESP8266 v1, vi điều khiển STM32F103C8T6, LCD 16x2
NỘI DUNG 3: Thiết kế các khối phần cứng
NỘI DUNG 4: Lập trình cho vi điều khiển
NỘI DUNG 5: Thi công mô hình
NỘI DUNG 6: Thiết kế Website
NỘI DUNG 7: Kiểm thử hoạt động và điều chỉnh trang web
NỘI DUNG 7: Đánh giá kết quả thực hiện.
Giới hạn
Chỉ thi công một thiết bị mẫu, các IP khác sẽ được giả lập
Dữ liệu được truyền lên Server thông qua Wifi
Truy cập dữ liệu trên Server qua Website.
Bố cục
Chương 2: Cơ Sở Lý Thuyết
Chương 3: Thiết Kế và Tính Toán
Chương 4: Thi công mô hình
Chương 5: Kết Quả, Nhận Xét và Đánh Giá
Chương 6: Kết Luận và Hướng Phát Triển
Nội dung chính trong các chương
Chương này giới thiệu lý do lựa chọn đề tài, mục tiêu nghiên cứu, nội dung chính, các giới hạn thông số và cấu trúc của đồ án.
Chương 2: Cơ Sở Lý Thuyết
Các kiến thức lý thuyết liên quan đến dòng điện, điện áp, đo công suất, đo điện năng tiêu thụ
Các kiến thức lý thuyết về IC ADE7753, STM32F103C8T6, LCD 16x2, ESP8266 v1
Chương 3: Thiết Kế và Tính Toán
Trong bài viết này, chúng tôi sẽ trình bày về thiết kế phần cứng, bao gồm khối nguồn, ngõ vào lấy mẫu dòng và áp cho khối đo điện năng ADE7753, vi điều khiển STM32F103C8T6 và khối Wifi ESP8266 v1 Những thiết kế này đóng vai trò quan trọng trong việc tối ưu hóa hiệu suất và độ chính xác của hệ thống.
Phần mềm bao gồm một lưu đồ giải thuật giúp tính toán các giá trị cần thiết từ dữ liệu đọc được từ ADE7753 Sau đó, lưu đồ này sẽ đưa dữ liệu lên server và hiển thị thông tin từ server lên website.
Chương 4: Thi công mô hình
Các kết quả thi công phần cứng và những kết quả hình ảnh trên màn hình hay mô phỏng tín hiệu, kết quả thống kê
Chương 5: Kết Quả, Nhận Xét và Đánh Giá
Trình bày kết quả của cả quá trình nghiên cứu làm đề tài
Đánh giá sản phẩm mô hình là một bước quan trọng để xác định mức độ đạt yêu cầu và tỷ lệ phần trăm thành công Cần xem xét sai số liên quan đến các phép đo đại lượng, xác định nguyên nhân gây ra sai số và đánh giá tính ổn định của hệ thống.
Chương 6: Kết Luận và Hướng Phát Triển
Kết luận về những thành tựu và những hạn chế của đề tài, chúng ta cần xác định rõ những vấn đề đã đạt được và những khía cạnh chưa hoàn thiện Để nâng cao hiệu quả, việc phát triển thêm các chức năng mới, mở rộng khả năng điều khiển và tăng cường tính linh hoạt của hệ thống là rất cần thiết Những hướng đi này sẽ giúp hệ thống hoạt động hiệu quả hơn và đáp ứng tốt hơn nhu cầu của người sử dụng.
CƠ SỞ LÝ THUYẾT
Phương pháp đo điện năng trong công tơ điện tử
Phương pháp được thể hiện qua sơ đồ:
Hình 2.1 Cấu trúc công tơ điện tử
Hai điện áp U1 và U2 được 2 bộ ADC biến thành số N1= K1U1 và N2=K2U2
Bộ nhân (N1xN2) hoạt động trong không gian số thông qua một vi xử lý Khi hai bộ ADC có tốc độ đủ lớn, N1t và N2t sẽ tỷ lệ với giá trị tức thời của U1 và U2.
Tích số: Nt= N1t.N2t tỷ lệ với giá trị tức thời của công suất tác dụng
Thiết bị đo điện năng bao gồm một chuyển đổi dòng điện và một chuyển đổi điện áp phù hợp, với các giá trị sau khi chuyển đổi được đưa vào bộ chuyển đổi ADC Kết quả đo sau khi được xử lý bởi bộ xử lý trung tâm sẽ được lưu trữ trong EFPROM, hiển thị kết quả hoặc truyền ra ngoài để giao tiếp với các thiết bị khác.
Hình 2.2 Sơ đồ khối của công tơ điện tử
Với sơ đồ khối như trên ta có 2 giải pháp để lựa chọn như sau:
Giải pháp sử dụng DSP tích hợp ADC cho phép xử lý tín hiệu số hiệu quả, tính toán các đại lượng cần thiết và giao tiếp trực tiếp với vi xử lý (MCU) cũng như các thiết bị ngoại vi khác.
Hình 2.3 DSP có tích hợp ADC
Giải pháp sử dụng ADC tích hợp DSP cho phép xử lý tín hiệu đo và tính toán các đại lượng cần thiết, tuy nhiên, không thể giao tiếp trực tiếp với ngoại vi mà phải thông qua vi xử lý (MCU) Cấu trúc này giúp các ADC được chế tạo chuyên biệt, mang lại độ chính xác cao và tiện lợi hơn khi sử dụng.
Hình 2.4 cho thấy ADC tích hợp DSP, phản ánh cấu trúc hoạt động của các IC đo công suất từ Analog Device Nhóm tôi đã quyết định lựa chọn giải pháp này cho đề tài nghiên cứu của mình.
Giới thiệu phần cứng
Thiết bị đầu vào: nút nhấn, CT, ADE7753
Thiết bị đầu ra: LCD 16x2, LED, module wifi ESP8266 v1
Thiết bị điều khiển trung tâm: vi xử lý STM32F103C8T6
Các chuẩn truyền dữ liệu: UART, SPI
Bộ nhớ lưu trữ: Flash
2.2.1 ADE7753 a Tính công suất và năng lượng tác dụng
Công suất tức thời được định nghĩa bằng tích của điện áp và dòng điện tức thời: ( ) ( ) ( ) 2 sin( ) sin( ) cos( ) cos(2 )
P t u t i t UI t t UI UI t (2.1) Giá trị trung bình của công suất được tính bằng công thức:
Trong đó: T là chu kỳ tín hiệu
P là công suất tác dụng
Công suất tác dụng là thành phần một chiều của công suất tức thời, và ADE7753 thực hiện việc tính toán công suất tác dụng bằng cách sử dụng tín hiệu đầu ra từ bộ ΣΔADC Tín hiệu này được đưa qua bộ nhân để xác định giá trị tức thời của công suất, sau đó được lọc qua bộ lọc thông thấp (LPF2) để tách thành phần một chiều P.
Hình 2.5 Tính công suất tác dụng
Việc đọc giá trị công suất tác dụng sẽ được thực hiện bằng cách đọc giá trị thanh ghi WAVEFORM khi đặt thanh ghi MODE[14:13]=0, 0
Mối quan hệ giữa công suất và năng lượng được thể hiện qua công thức:
Trong đó: n là số mẫu
T là chu kỳ lấy mẫu
Nguyên lý đo công suất và năng lượng tác dụng của ADE7753:
Hình 2.6 Xử lý tín hiệu năng lượng tác dụng
Sau khi tín hiệu số được xử lý qua bộ ΣΔADC, nó sẽ được nhân để tính toán giá trị công suất tức thời, sau đó giá trị này được lọc qua bộ lọc thông thấp nhằm loại bỏ các dao động tần số cao ADE7753 thực hiện tích phân công suất tức thời bằng cách liên tục tích lũy các tín hiệu công suất tác dụng đã qua bộ lọc Giá trị năng lượng tác dụng được ghi vào thanh ghi AENERGY [23:0] Để hiệu chỉnh sai số đo lường, ADE7753 cung cấp hai thanh ghi APOS (16 bit) và WGAIN (12 bit) để điều chỉnh giá trị offset và hiệu chỉnh công suất, năng lượng Hơn nữa, ADE7753 hỗ trợ chế độ tích lũy năng lượng theo chu kỳ tín hiệu nhằm loại bỏ các thành phần dao động nhỏ, với việc đặt bit 7 (CYCMODE=1) trong thanh ghi MODE Trong chế độ này, ADE7753 tích lũy năng lượng trong thanh ghi LAENERGY trong n chu kỳ tín hiệu, với số nguyên nửa chu kỳ được lưu trong thanh ghi 16 bit LINECYC Khi quá trình tích lũy hoàn tất, cờ báo ngắt CYCEND trong thanh ghi trạng thái sẽ được đặt thành 1.
Hình 2.7 Tích lũy năng lượng tác dụng b Tính dòng điện hiệu dụng
Giá trị hiệu dụng của tín hiệu v(t) được tính bằng công thức:
Giá trị hiệu dụng của tín hiệu khi được lấy mẫu:
ADE7753 tính toán đồng thời giá trị hiệu dụng cho kênh 1 và kênh 2 ở các thanh ghi khác nhau
Hình 2.8 Tính toán dòng điện hiệu dụng
Giá trị dòng điện hiệu dụng IRMS được lưu trữ trong thanh ghi 24 bít không dấu, với giá trị đạt được là 1868467d (0x1C82B3) ở chế độ đầu vào lớn nhất là 0.5V.
ADE7753 cung cấp phép đo dòng hiệu dụng với độ chính xác 0.5% trong dải đo từ full-scale/100 đến full-scale cho kênh 1 Giá trị dòng điện hiệu dụng có thể được điều chỉnh offset thông qua thanh ghi 12 bít IRMSOS Sau khi điều chỉnh offset, giá trị dòng điện hiệu dụng được tính toán theo công thức: [1].
IRMS MS MSOS (2.6) c Tính điện áp hiệu dụng
Giá trị điện áp hiệu dụng VRMS được lưu trữ trong thanh ghi không dấu 24 bít đạt 1561400d (0x17D338) khi chế độ đầu vào lớn nhất là 0.5V.
ADE7753 cung cấp khả năng đo điện áp hiệu dụng với độ chính xác 0.5% trong dải đo đầu vào từ full-scale/20 đến full-scale Giá trị điện áp hiệu dụng có thể được điều chỉnh offset thông qua thanh ghi 12 bít VRMSOS, và giá trị sau khi hiệu chỉnh được tính toán theo công thức cụ thể.
Giá trị lớn nhất của thanh ghi VRMS là 1561400 (0x17D338) [1]
Hình 2.9 Tính điện áp hiệu dụng d Truyền thông nối tiếp trong ADE7753
ADE7753 giao tiếp với các thiết bị bên ngoài qua cổng SPI với bốn tín hiệu chính: DIN, DOUT, SCLK và CS Giao tiếp này được điều khiển thông qua một thanh ghi truyền thông 8 bit, trong đó bit MSB quyết định xem dữ liệu sẽ được đọc hay ghi Các bit LSB từ A0 đến A5 chứa địa chỉ của thanh ghi cần truy cập Giao diện nối tiếp của ADE7753 bao gồm bốn tín hiệu quan trọng: SCLK, DIN, DOUT và CS.
Chân SCLK của ADE7753 là chân nhịp xung xếp nối tiếp dùng cho việc truyền dữ liệu, hoạt động ở chế độ 3 trạng thái và cho phép sử dụng cạnh lên hoặc cạnh xuống làm xung clock Tất cả các hoạt động truyền dữ liệu được đồng bộ hóa với xung clock này Dữ liệu được truyền vào ADE7753 qua chân DIN khi có cạnh xuống của xung clock, trong khi dữ liệu được truyền ra ngoài qua chân DOUT khi có cạnh lên của xung clock.
Chân CS, hay chân chọn chip, được sử dụng trong các hệ thống có nhiều thiết bị sử dụng giao diện nối tiếp Khi xung cạnh xuống được kích hoạt, chân này sẽ reset và đưa ADE7753 vào chế độ truyền thông Để đảm bảo quá trình truyền dữ liệu diễn ra suôn sẻ, mức logic của chân CS cần duy trì ở mức thấp Nếu chân này ở mức logic cao trong quá trình truyền, hoạt động truyền sẽ bị bỏ qua và bus nối tiếp sẽ chuyển sang trạng thái tổng trở cao.
Để ghi dữ liệu nối tiếp vào ADE7753, trước tiên cần chuyển thiết bị sang chế độ truyền thông và ghi dữ liệu vào thanh ghi truyền thông Bit MSB có giá trị 1 cho biết rằng hoạt động là ghi vào thanh ghi của ADE, trong khi các bit LSB xác định địa chỉ thanh ghi Quá trình truyền dữ liệu bắt đầu khi có xung cạnh xuống của SCLK, và dữ liệu được truyền từng Byte một Sau khi một Byte được đưa vào cổng nối tiếp, sẽ có một khoảng thời gian hạn chế trước khi nó được chuyển đến thanh ghi trên chip ADE7753 Mặc dù có thể gửi Byte thứ hai trong khi Byte đầu tiên đang được chuyển, nhưng việc truyền byte thứ hai sẽ bị ảnh hưởng bởi thời gian chuyển của byte đầu tiên.
2 này khụng nờn kết thỳc sớm hơn 4 às sau khi byte trước đú được truyền đi
Hình 2.10 Quá trình ghi dữ liệu vào ADE7753 b Quá trình đọc dữ liệu
Dữ liệu từ ADE7753 được truyền ra qua chân DOUT khi có cạnh lên của SCLK Trước khi đọc dữ liệu, cần ghi dữ liệu cho phép vào thanh ghi truyền thông Bit MSB của byte truyền ở mức 0 cho biết quá trình truyền tiếp theo là đọc, trong khi bit LSB chứa địa chỉ thanh ghi cần đọc ADE7753 sẽ bắt đầu dịch dữ liệu ra ngoài khi có cạnh lên tiếp theo của SCLK Nếu chân CS lên mức cao trước khi quá trình truyền dữ liệu hoàn tất, việc đọc sẽ bị dừng lại và đầu ra DOUT sẽ nhận giá trị trở kháng cao.
Khi thanh ghi ADE7753 được chọn để đọc, dữ liệu từ thanh ghi sẽ được truyền qua cổng nối tiếp, cho phép ADE7753 chỉnh sửa mà không làm sai lệch thông tin Trong trường hợp đọc diễn ra sau khi ghi dữ liệu, lệnh đọc không nên được thực hiện trong vòng 4 micro giây sau khi quá trình ghi kết thúc Nếu lệnh đọc được gửi trong khoảng thời gian này, byte cuối của thanh ghi có thể bị mất.
Hình 2.11 Quá trình đọc dữ liệu
Chúng tôi đã chọn chip ARM STM32F103C8T6 cho đề tài này vì đây là một dòng vi xử lý chuẩn công nghiệp với nhiều GPIO và các chức năng truyền dữ liệu như SPI, UART Chip này còn tích hợp thanh ghi back up để lưu dữ liệu khi mất điện, khả năng xử lý đa luồng và độ ổn định cao trong quá trình vận hành Hơn nữa, kit tích hợp của nó rất tiện dụng cho việc thử nghiệm, bảo dưỡng và thay thế, làm cho ARM trở thành lựa chọn ưu việt hơn so với Arduino hay PIC.
STM32F103C8T6 có lõi là ARM 32-bit Cortex™-M3 hoạt động với tần số lên đến 72MHz
Bộ nhớ flash lên tới 32 Kbyte, 10 Kbyte SRAM
Có thạch anh nội 8MHz và 32kHz là dao động RC
Có sẵn RTC phục vụ cho các chức năng liên quan tới thời gian thực
Có 3 chế độ công suất thấp: sleep, stop và standby
2 ADC 16 kênh, 12 bit phục vụ cho việc xử lý các tín hiệu analog đầu vào
Bộ điều khiển DMA 7 kênh
Hỗ trợ các chuẩn giao tiếp: 2xSPI, 3xUSART, 2xI 2 C, CAN, USB
Hỗ trợ Debug qua giao diện SWD và JTAG
Có tất cả 4 timer 16 bit phục vụ cho nhiều chức năng như định thời, băm xung PWM…
Nguồn cung cấp từ 2.0 đến 3.6V [6] b Khảo sát sơ đồ chân và sơ đồ khối của STM32F103C8T6
Dưới đây là sơ đồ chân và sơ đồ các khối tổ chức của STM32F103C8T6
Hình 2.12 Sơ đồ chân STM32F103C8T6
Hình 2.13 Sơ đồ khối tổ chức của STM32F103C8T6 c GPIO
Có thể cấu hình cho các chân IO độc lập ở các 7 chế độ sau:
Input floating: ngõ vào thả nổi
Input pull-up: ngõ vào kéo lên
Input pull-down: ngõ vào kéo xuống
Analog: ngõ vào tương tự
Output open-drain: ngõ ra cực mở
Output push-pull: ngõ ra đẩy kéo
Alternate function push-pull: ngõ ra chức năng đẩy kéo
Alternate function open-drain: ngõ ra chức năng cực hở d SPI trong STM32F103C8T6
SPI (Giao diện ngoại vi nối tiếp) là một chuẩn đồng bộ cho phép truyền dữ liệu song công toàn phần, được thiết kế bởi Motorola nhằm kết nối các vi điều khiển với thiết bị ngoại vi một cách đơn giản và tiết kiệm Giao thức này thường được gọi là giao diện bốn dây.
Trong giao diện SPI có sử dụng bốn đường tín hiệu số là:
MOSI (Master Out Slave In) hay SI: truyền dữ liệu ở chế độ Master, nhận dữ liệu ở chế độ Slave
MISO (Master In Slave Out) hay SO: nhận dữ liệu ở chế độ Master, truyền dữ liệu ở chế độ Slave
SCLK (Serial Clock) hay SCK: tạo xung đồng bộ ở chế độ Master, nhận xung đồng bộ ở chế độ Slave
Chân CS (Chip Select) hay SS (Slave Select) được sử dụng để chọn thiết bị Slave trong quá trình giao tiếp, và chân này có thể là chân IO của thiết bị Master Trong chế độ song công toàn phần, cả hai thiết bị có khả năng phát và nhận dữ liệu đồng thời, mang lại ưu thế lớn cho chuẩn truyền thông này.
Hình 2.14 Chế độ song công trong truyền nhận SPI
Ngoài ra chip master có thể giao tiếp với nhiều chip slave trong cùng mạng
Hình 2.15 Giao tiếp SPI với nhiều thiết bị
Nguyên lý hoạt động của SPI:
TÍNH TOÁN VÀ THIẾT KẾ
Tính toán và thiết kế hệ thống
3.2.1 Thiết kế sơ đồ khối hệ thống
Với yêu cầu bài toán đã đưa ra ở trên, ta có sơ đồ khối của đồng hồ đo điện như sau:
Hình 3.1 Sơ đồ khối đồng hồ đo điện
3.2.2 Tính toán và thiết kế cho các khối a Thiết kế khối nguồn
Yêu cầu của khối nguồn:
Tích hợp trực tiếp trong board mạch (lấy trực tiếp từ nguồn lưới điện 220V)
Đầu ra: 5VDC cho mạch ADE7753, khối LCD, khối vi điều khiển
Tính toán công suất nguồn
Xét các tải sử dụng nguồn 3,3V DC
Dòng cung cấp lớn nhất cho khối vi điều khiển STM32F103C8T6: 45mA
Dòng cung cấp lớn nhất cho khối truyền dữ liệu: 34mA (TX + 12dBm 868MHz)
Vậy tổng dòng lớn nhất mà nguồn 3.3V DC cung cấp cho mạch là: 80mA
Xét các tải sử dụng nguồn 5V DC
Dòng lớn nhất cho khối ADE7753: 10mA
Dòng lớn nhất cho khối LCD 16x2: 30mA
Dòng tiêu thụ lớn nhất cho khối nguồn 3,3VCC: 80mA
Dòng cung cấp cho LED và các phần tử khác (tổn hao trên mạch): 30mA
Tổng dòng lớn nhất mà nguồn 5V DC cần cung cấp cho mạch là 150mA Để tối ưu hóa kích thước, nhóm tôi đã chọn module nguồn HI-LINK 220V-5V 3W, cho phép chuyển đổi trực tiếp từ điện 220V xuống 5V, cung cấp năng lượng cho vi điều khiển Với công suất 3W, module này có khả năng cung cấp lên đến 600mA, vượt xa nhu cầu dòng điện của toàn bộ mạch.
Ngoài ra, mạch còn sử dụng thêm viên pin 3V để cung cấp cho KIT STM32F103C8T6 để cung cấp điện cho thanh ghi Backup
Hình 3.2 Sơ đồ nguyên lý khối nguồn b Thiết kế khối vi điều khiển
Khối sử dụng vi điều khiển STM32F103C8T6 với 32Kbyte bộ nhớ flash và 10Kbyte SRAM Nhóm tôi đã chọn KIT ra chân cho STM32F103C8T6 để dễ dàng thiết kế và sử dụng, giúp giảm bớt các thiết kế về bộ dao động và nút nhấn.
Với kit vi điều khiển STM32F103C8T6, người dùng có thể dễ dàng thay thế bằng bất kỳ vi điều khiển ARM nào có thiết kế chân tương tự Kit này chỉ cần nguồn cấp 5V, và bên trong đã tích hợp IC chuyển đổi điện áp từ 5V sang 3,3V để cung cấp cho vi điều khiển Ngoài ra, kit còn cung cấp nguồn 3,3V ra ngoài để nuôi khối truyền dữ liệu ESP8266 v1.
Sơ đồ nguyên lý khối vi điều khiển sử dụng KIT ra chân cho thấy điện năng tiêu thụ là giá trị cộng dồn theo thời gian Khi mất điện, giá trị này không tăng lên nhưng cần được lưu trữ để vi xử lý có thể tiếp tục cộng dồn khi có điện trở lại Để thực hiện chức năng này, chúng tôi sử dụng thanh ghi Backup trong STM32F103C8T6, được cấp nguồn từ viên pin Backup 3V Thanh ghi Backup là một thanh ghi thông thường nhưng được cung cấp điện liên tục, do đó giá trị của nó không bị xóa khi mất điện và có khả năng lưu trữ 20 byte dữ liệu Ưu điểm của thanh ghi Backup so với EEPROM là khả năng duy trì dữ liệu trong tình huống mất điện.
EEPROM có giới hạn ghi khoảng vài chục ngàn lần, dẫn đến hư hỏng sau thời gian sử dụng Ngược lại, thanh ghi Backup cho phép lưu trữ giá trị liên tục mà không làm hư hại, đảm bảo độ bền và hiệu suất cao hơn cho việc lưu trữ dữ liệu.
Thanh ghi Backup nằm trực tiếp trong thanh ghi, không cần dùng phương thức giao tiếp ngoài nào để kết nối với thanh ghi
Để lưu trữ giá trị điện năng tiêu thụ tương đương 32 bít, chỉ cần sử dụng 2 thanh ghi dữ liệu 16 bít Điều này giúp tối ưu hóa việc thiết kế khối chuyển đổi dòng điện.
Từ tài liệu Evaluation Board ADE7753 Energy Metering IC của hãng Analog Device ta có sơ đồ nguyên lý khối chuyển đổi điện áp như sau:
Hình 3.4 Khối chuyển đổi dòng điện
Dòng điện đi qua biến dòng ZMCT118A tạo ra điện áp ở hai đầu ra nhờ hiệu ứng Hall Điện áp này được đưa qua mạch phân áp, đảm bảo rằng điện áp cực đại giữa V1P và V1N so với AGND nhỏ hơn 0.5V, phù hợp với thông số kỹ thuật trong datasheet.
Giá trị điện trở R3 và R6 được tính theo công thức sau sao cho dòng cực đại của biến dòng không vượt quá ngưỡng Imax @A
Vì lý do không có điện trở 8.9 nên tôi chọn điện trở 12, 4 để thay thế
Với điện trở R3 =R6 = 12, 4 thì dòng điện lớn nhất qua mạch có thể chịu được là: ax
R (3.2) d Thiết kế khối chuyển đổi điện áp
Theo tài liệu Evaluation Board ADE7753 Energy Metering IC của hãng Analog Device ta có sơ đồ nguyên lý khối chuyển đổi điện áp như sau:
Hình 3.5 Khối chuyển đổi điện áp
Với Header: ngõ vào điện xoay chiều một pha
FB1: cuộn Ferrit Beard có tác dụng khử nhiễu cao tần [2]
Theo thiết kế ta có:
Nên ta chọn Fullscale = 0.5V peak, Vmax00V, R5=1 K , R8=R9G0 K
Khi đó điện áp cao nhất qua mạch có thể chịu đựng được là:
Thiết kế khối đo điện năng tiêu thụ sử dụng IC ADE7753, cho phép đo lường điện năng thông qua bộ biến đổi dòng điện và điện áp IC này lấy mẫu điện áp và dòng điện, sau đó xử lý để cung cấp giá trị dòng điện, điện áp và điện năng tiêu thụ trong thanh ghi Tất cả các hoạt động ghi và đọc dữ liệu trong thanh ghi của IC được thực hiện thông qua giao tiếp SPI.
Để IC hoạt động hiệu quả, cần cung cấp đầy đủ nguồn DVDD, AVDD, DGND và AGND tại các ngõ cấp nguồn Ngoài ra, một dao động thạch anh 3.579544 MHz cũng là điều kiện cần thiết AVDD và DVDD nên được kết nối chung qua một cuộn cảm 10uH, trong khi AGND và DGND được nối với nhau qua một Ferrit Bead để lọc nhiễu cao tần.
IC ADE7753 giao tiếp với STM21F103C8T6 qua SPI Kết nối chân như sau:
DI của ADE7753 nối vào chân A7 của vi điều khiển
DO của ADE7753 nối vào A6 của vi điều khiển
SCKL của ADE7753 nối vào chân A5 vi điều khiển
CS của ADE7753 nối vào chân A4 vi điều khiển
Chân V1P, V1N nối vào khối chuyển đổi dòng theo nhãn tên tương ứng
Chân V2P, V2N nối vào khối chuyển đổi áp theo nhãn tên tương ứng
Dựa trên tài liệu của Analog Device về IC đo năng lượng ADE7753, chúng tôi đã thiết kế sơ đồ nguyên lý bằng cách thêm mạch Reset mức thấp cho IC và kết nối các chân giao tiếp SPI với vi điều khiển.
Hình 3.6 Sơ đồ nguyên lý khối đo điện năng tiêu thụ f Thiết kế khối truyền dữ liệu
Module wifi ESP8266 v1 là một khối truyền dữ liệu nhận thông tin từ vi điều khiển qua giao tiếp USART và sau đó gửi dữ liệu lên một server đã được xác định trước Kết nối giữa module wifi ESP8266 v1 và vi điều khiển được thực hiện thông qua các giao thức truyền thông thích hợp.
Chân TX nối vào chân B11 của vi điều khiển
Chân RX nối vào chân B10 của vi điều khiển
Chân CHPD phải nối lên mức cao
Các chân GPIO 0 và GPIO 2 để trống
Hình 3.7 Sơ đồ nguyên lý khối truyền dữ liệu g Thiết kế khối hiển thị
Khối hiển thị trong thiết kế giúp người dùng giám sát trực tiếp các thông số đo được, bao gồm dòng điện, điện áp, tần số và năng lượng tiêu thụ.
Nguồn cung cấp cho LCD là nguồn VDC_5V LCD được điều khiển bởi các chân
RS, E (Enable), R/W và 4 chân dữ liệu D4, D5, D6, D7 là các chân kết nối của LCD Chân V0 được kết nối qua một biến trở 5k để điều chỉnh độ tương phản của màn hình Khi giá trị của biến trở giảm, điện áp trên chân Vss cũng giảm, dẫn đến việc chữ hiển thị trở nên nhạt hơn.
Hình 3.8 Sơ đồ nguyên lý khối hiển thị
3.2.3 Sơ đồ nguyên lý toàn mạch
Sau đây là sơ đồ nguyên lý toàn mạch của thiết bị đồng hồ đo điện thông minh
Hình 3.9 Sơ đồ nguyên lý toàn mạch.
THI CÔNG HỆ THỐNG
Giới thiệu
Chương này được chia thành hai phần chính: thiết kế và thi công phần cứng Phần đầu tiên tập trung vào việc thiết kế mạch in PCB, lắp ráp linh kiện và quy cách đóng gói thiết bị.
Trong phần tiếp theo, chúng tôi sẽ thảo luận về quy trình thi công phần mềm, đặc biệt là việc xây dựng trang web và cách trình bày dữ liệu đã được thu thập từ phần cứng.
Bên cạnh đó cũng có một bản hướng dẫn sữ dụng thiết bị sao cho đúng cách và hiệu quả.
Thi công phần cứng
Mạch in được thiết kế bằng phần mềm Altium, mang lại độ thẩm mỹ và chính xác cao nhờ vào quy trình gia công máy Bản mạch in 2 lớp này bao gồm một lớp trên được thiết kế tỉ mỉ trên Altium.
Hình 4.1 Sơ đồ mạch in lớp trên
Hình 4.2 Đây là board mạch trên thực tế b Mạch in lớp dưới
Mạch in thiết kế trên Altium
Hình 4.3 Mạch in lớp dưới
Hình 4.4 Board mạch lớp dưới c Các linh kiện được sử dụng trong mạch
Bảng 4.1 Danh sách các linh kiện
STT Tên linh kiện Giá trị Dạng vỏ Chú thích
7 Tụ gốm 33nF, 22pF, 104 0805, DIP2
9 Led SMD 0805 d Bô trí các linh kiện trong mạch
Sau đây là các hình ảnh nói về các vị trí lắp đặt các linh kiện chính:
Vị trí hàn ADE7753 Chuyển đổi dòng điện và điện áp
Vị trí lắp KIT STM32F103C8T6 Vị trí lắp module ESP8266 v1
Vị trí lắp LCD Vị trí lắp nguồn HI-LINK
Hình 4.5 Các vị trí lắp đặt linh kiện trong mạch
4.2.2 Lắp ráp và kiểm tra
Công đoạn lắp ráp được ưu tiên theo thứ tự:
Linh kiện dán kích thước nhỏ trước, linh kiện dán kích thước lớn sau
Linh kiện bị che khuất trước, linh kiện phía bên ngoài sau
Ưu tiên hàn các linh kiện nhiều chân và nhỏ trước
Linh kiện có chân không phải linh kiện dán có thứ tự hàn sau cùng a Hàn ADE7753 và các điện trở dán
Cần lưu ý “pin one” của ADE7753 để hàn cho đúng hướng và thời gian đặt mỏ hàn hên linh kiện không quá lâu, tránh làm hư hỏm do nhiệt
Sau khi hàn xong kiểm tra lại mạch có bị chạm hay không bằng cách sử dụng VOM kiểm tra giữa 2 chân gần nhau của IC
Kiểm tra kín mạch giữa 2 chân các điện trở, tránh trường hợp không có kết nối b Hàn các linh kiện khác và terminal ra chân
Thạch anh, tụ gốm, tụ phân cực và transitor được hàn tiếp theo Tiếp tục kiểm tra các mối hàn bằng VOM
Hàn các terminal ra chân
Hàn biến dòng và xỏ dây điện qua thân biến dòng (phần dùng để lấy mẫu điện) c Hình ảnh của mạch sau khi lắp ráp linh kiện
Dưới đây là những hình ảnh của thiết bị kèm theo vỏ hộp, thể hiện các góc chụp khác nhau nhằm giúp người xem có cái nhìn tổng thể về sản phẩm.
Hình 4.7 Góc nhìn thiết bị từ ngõ vào điện lưới
Hình 4.8 Góc nhìn thiết bị từ ngõ ra điện lưới
Hình 4.9 Góc nhìn từ mặt trên thiết bị
Lập trình phần mềm
4.3.1 Khối vi xử lý STM32F1 a Lưu đồ giải thuật
Việc xây dựng lưu đồ thuật toán và lập trình cho thiết bị phải đảm bảo các yêu cầu kỹ thuật của thiết bị bao gồm:
Đọc dữ liệu từ ADE7753 về, xử lý để đưa ra các đại lượng như dòng điện hiệu dụng, điện áp hiệu dụng, năng lượng tiêu thụ
Hiển thị các giá trị lên LCD
Lưu trữ số công tơ kể cả trong trường hợp mất điện
Truyền giá trị điện năng tiêu thụ lên Host
Lưu đồ chương trình chính
Hình 4.10 Lưu đồ chương trình chính
Khi bắt đầu vào chương trình cần khởi tạo các thành phần như sau:
Khởi tạo các biến: các biến phục vụ timer ngắt, các biến để lưu dữ liệu, các biến tạm…
Để khởi tạo giao thức SPI, cần thiết lập các chân chức năng A4, A5, A6 và A7 Chế độ hoạt động được cấu hình là Master Fullduplex với khung truyền 8 bit, sử dụng MODE 3 Bộ chia trước được đặt là 256, truyền bit cao đầu tiên và không thực hiện kiểm tra CRC.
KHỞI TẠO CÁC BIẾN KHỞI TẠO SPI, UART, TIMER
C, V, E, mA, Wh ĐỌC GIÁ TRỊ NĂNG LƯỢNG TRONG THANH GHI BACKUP
HIỂN THỊ GIÁ TRỊ CỦA DÒNG ĐIỆN VÀ ĐIỆN ÁP
HIỂN THỊ GIÁ TRỊ NĂNG LƯỢNG TIÊU THỤ
GHI GIÁ TRỊ NĂNG LƯỢNG VÀO THANH GHI BACKUP
Khởi tạo giao thức UART bao gồm việc cấu hình các chân chức năng B10 và B11, thiết lập tốc độ baud rate ở mức 115200, khung truyền 8 bit, sử dụng 1 bit stop, không có bit kiểm tra lỗi Parity, và chế độ truyền tương ứng.
Khởi tạo Timer: sử dụng timer 4 định thời 1ms, bộ chia trước là 71, chu kì
1000 xung, chế độ đếm lên, khai báo sử dụng ngắt
Khởi tạo LCD: chỉ cần dùng câu lệnh khai báo LCD_init là có thể sử dụng LCD
Sau khi khởi tạo các thành phần cần thiết, vi điều khiển sẽ đọc giá trị điện năng tiêu thụ từ thanh ghi Backup để cộng dồn trong các chu kỳ tiếp theo Tiếp theo, vi điều khiển thực hiện vòng lặp liên tục hiển thị các giá trị dòng điện, điện áp và điện năng tiêu thụ trên màn hình LCD Các giá trị này sẽ được tính toán trong chương trình ngắt sau mỗi 1 giây.
Lưu đồ chương trình ngắt timer
Hình 4.11 Lưu đồ chương trình ngắt timer
TÍNH GIÁ TRỊ DÒNG ĐIỆN, ĐIỆN ÁP
TÍNH GIÁ TRỊ NĂNG LƯỢNG TIÊU THỤ
S ĐỌC GIÁ TRỊ THANH GHI VRMS, IRMS, AENERGY
GỬI GIÁ TRỊ NĂNG LƯỢNG TIÊU THỤ QUA ESP8266 V1
Khi khai báo sử dụng ngắt timer 4 với bộ chia trước là 71 và period là 999, thời gian định thời của timer sẽ là 1ms Để định thời 1s, cần sử dụng một biến timer; khi đếm tới 999, sẽ đạt được 1s Sau khi đạt 1s, hệ thống sẽ đọc giá trị từ các thanh ghi VRMS, IRMS và RAENERGY Các giá trị này sẽ được tính toán để xác định điện áp thực tế, dòng điện và điện năng tiêu thụ tương ứng Sau 60s, dữ liệu điện năng tiêu thụ sẽ được truyền qua ESP8266 v1.
Việc tính toán các giá trị dòng điện, điện áp, điện năng tiêu thụ được tính như sau:
Tính giá trị điện áp
: điện áp tối đa tại ngõ vào của kênh lấy mẫu áp
1561400: giá trị lớn nhất mà thanh ghi VRMS có thể đếm được (datasheet)
941: tổng giá trị điện trở ngõ vào kênh lấy mẫu áp
kv=0.927: hệ số chênh lệnh điện áp thực tế và điện áp tính toán
vrms là giá trị đọc về từ thanh ghi VRMS
Tính giá trị dòng điện
: điện áp tối đa tại ngõ vào kênh lấy mẫu dòng
1868467: giá trị lớn nhất mà thanh ghi IRMS có thể đếm được (datasheet)
irms: giá trị đọc về từ thanh ghi IRMS
12.4: giá trị điện trở hạ áp đặt tại ngõ vào lấy mẫu dòng
2000 là hệ số tỉ lệ của biến dòng
1000 là chuyển đổi từ Ampe sang mini Ampe
ki= 0.431 hệ số chuyển đổi qua mA và hệ số chênh lệnh giữa tính toán và thực tế
Tính điện năng tiêu thụ
Thanh ghi RAENERGY là công cụ lưu trữ năng lượng theo thời gian, nhưng cần được reset để tránh tình trạng tràn Khi giá trị của thanh ghi được đọc, nó sẽ tự động reset về 0 Chúng tôi sẽ tiến hành đọc giá trị thanh ghi RAENERGY, thực hiện tính toán và cộng dồn kết quả tại vi điều khiển.
Công thức tính điện năng tiêu thụ: energyenergy rae
rae là giá trị đọc về từ thanh ghi RAENERGY
ke= 9507 hệ số chuyển đổi giá trị thanh ghi sang giá trị thực tế
Lưu đồ chương trình đọc và ghi dữ liệu vào thanh ghi Backup
Hình 4.12 Lưu đồ chương trình đọc và ghi dữ liệu vào thanh ghi Backup
Việc lưu giá trị vào thanh ghi được lưu mỗi giây theo trình tự như sau:
Tách phần số nguyên và số thập phân ra rồi lưu vào 2 biến riêng biệt
Truy cập vào thanh ghi Backup
Lưu lần lượt 2 biến trên vào thanh ghi
Thoát khỏi chế độ truy cập thanh ghi
Việc đọc dữ liệu sẽ được thực hiện một lần mỗi khi hệ thống khởi động lại theo trình tự ngược lại:
Truy cập vào thanh ghi Backup
Đọc lần lượt 2 thanh ghi data nằm trong thanh ghi Backup rồi lưu vào 2 biến riêng biệt
Chuyển đổi 2 biến vừa đọc thành giá trị năng lượng hiện tại
Thoát khỏi chế độ truy cập thanh ghi
GHI DỮ LIỆU VÀO THANH GHI BACKUP
TÁCH PHẦN NGUYÊN VÀ PHẦN THẬP PHÂN
LƯU PHẦN NGUYÊN VÀO ĐỊA CHỈ BKP_DR1
LƯU PHẦN THẬP PHÂN VÀO ĐỊA CHỈ BKP_DR2
CHO PHÉP TRUY CẬP VÀO THANH GHI BACKUP
KẾT THÚC ĐỌC DỮ LIỆU TỪ THANH GHI BACKUP
CHUYỂN ĐỔI VỀ SỐ THẬP PHÂN ĐỌC PHẦN NGUYÊN TỪ ĐỊA CHỈ BKP_DR1 ĐỌC PHẦN THẬP PHÂN
TỪ ĐỊA CHỈ BKP_DR2
CHO PHÉP TRUY CẬP VÀO THANH GHI BACKUP
NGẮT TRUY CẬP VÀO THANH GHI BACKUP
NGẮT TRUY CẬP VÀO THANH GHI BACKUP
Lưu đồ chương trình đọc dữ liệu thanh ghi trong ADE7753
Để đọc dữ liệu thanh ghi trong ADE7753, quá trình giao tiếp được thực hiện thông qua giao thức SPI Đầu tiên, chân chọn chip NSS cần được kéo xuống mức thấp để khởi động giao tiếp Trước khi thực hiện việc đọc dữ liệu, cần ghi dữ liệu cho phép đọc vào thanh ghi truyền thông, với bit MSB của byte truyền ở mức 0 để chỉ định rằng quá trình truyền tiếp theo là đọc Năm bit LSB trong byte này sẽ chứa địa chỉ của thanh ghi cần đọc Sau khi hoàn tất việc truyền byte chứa địa chỉ, giá trị của thanh ghi tương ứng sẽ được gửi về Khi quá trình nhận dữ liệu kết thúc, chân chọn NSS sẽ được nâng lên mức cao để ngắt giao tiếp SPI Dữ liệu trả về sẽ được xử lý bởi vi điều khiển STM32F103C8T6.
CHO CHÂN NSS XUỐNG MỨC THẤP
CHO CHÂN NSS LÊN MỨC CAO
TRUYỀN ĐỊA CHỈ THANH GHI TRONG ADE7753 CẦN ĐỌC ĐỢI KẾT THÚC TRUYỀN DỮ LIỆU
NHẬN DỮ LIỆU TRẢ VỀ ĐỢI KẾT THÚC NHẬN DỮ LIỆU b Phần mềm lập trình cho vi điều khiển
Giới thiệu phần mềm lập trình Keil C v5
Trình biên dịch Keil là một công cụ nổi tiếng và được ưa chuộng tại Đức, hiện thuộc sở hữu của ARM, nhằm phát triển và hỗ trợ cho nhiều lõi ARM Các phiên bản mới của Keil cung cấp bộ thư viện ngoại vi phong phú, giúp lập trình viên dễ dàng hơn trong quá trình thiết kế.
Keil C v5 là phần mềm chuyên nghiệp dành cho việc soạn thảo và biên dịch chương trình trên vi điều khiển ARM Phần mềm này được cộng đồng lập trình viên toàn cầu ưa chuộng và thường xuyên được cập nhật Ngoài ra, nguồn tài liệu, thư viện và chương trình mẫu phong phú giúp người dùng dễ dàng phát triển ứng dụng trên chip lõi ARM.
Để lập trình hiệu quả cho các vi điều khiển ARM, cần sử dụng bộ thư viện chuẩn ARM StdPeriph_Driver, cung cấp các thư viện thiết yếu cho việc sử dụng GPIO, giao tiếp và thời gian thực Một số ví dụ về các thư viện này bao gồm stm32f10x_usart.c, stm32f10x_spi, stm32f10x_gpio, và stm32f10x_bkp.
Một vài chương trình hệ thống
Chương trình chính int main(void)
SPI_Cmd(SPI1, ENABLE); delay_ms(100);
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
TIM2_Configuration(); lcd_Init(); delay_ms(100);
To initialize the backup system, start by clearing the LCD display and introducing a delay of 100 milliseconds Next, set the cursor to the first row and position it to display the label 'C:' followed by 'mA' for current measurement Then, move the cursor to show 'V:' for voltage measurement, and finally, display 'E:' for energy on the second row of the LCD, ensuring all data is properly formatted for clarity and ease of reading.
GPIO_ResetBits(GPIOA, GPIO_Pin_11); i=0; while(1)
Chương trình Ngắt Timer void TIM4_IRQHandler(void)
{ if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)
{ rae=ReadREG(RAENERGY,3); if (( rae