Cơ Sở Lý Thuyết
Giới Thiệu Chung Về Hệ Thống
Hệ thống giám sát cho phép theo dõi các thay đổi bất thường và biến động của các thông số trong hệ thống chuyển đổi điện Nhờ đó, các kỹ thuật viên có thể đưa ra đánh giá chính xác và áp dụng các biện pháp kỹ thuật hiệu quả để bảo trì và sửa chữa hệ thống.
Hệ thống sẽ ngưng hoạt động nếu như nguồn cấp không đủ hoặc nguồn ra không đảm bảo
Hệ thống giám sát chuyển đổi điện này rất phù hợp cho nhà máy năng lượng mặt trời, các nguồn dự phòng của hệ thống máy móc, và hộ gia đình sử dụng nguồn điện tích trữ.
Hệ thống có cơ sở dữ liệu lưu trữ lại thông tin về điện áp khi hệ thống hoạt động.
Các chuẩn được sử dụng
Giao tiếp giữa PC và vi điều khiển là yếu tố quan trọng trong các ứng dụng điều khiển và đo lường Kỹ thuật ghép nối qua cổng RS232 được sử dụng phổ biến để kết nối các thiết bị ngoại vi với máy tính Đây là một chuẩn giao tiếp nối tiếp không đồng bộ, cho phép kết nối tối đa 2 thiết bị Chiều dài kết nối tối đa để đảm bảo dữ liệu có thể đạt từ 12.5 đến 25.4m, với tốc độ truyền dữ liệu thường là 20kbit/s, và đôi khi lên đến 115kbit/s cho một số thiết bị đặc biệt Chuẩn truyền thông nối tiếp cho thấy rằng chỉ một bit được gửi đi tại một thời điểm dọc theo đường truyền.
Hai phiên bản RS232 phổ biến là RS232B và RS232C, trong đó RS232C hiện vẫn được sử dụng rộng rãi và thường được gọi tắt là chuẩn RS232 Các máy tính thường trang bị 1 hoặc 2 cổng nối tiếp theo chuẩn RS232C, được gọi là cổng Com, dùng để kết nối với chuột, modem, và thiết bị đo lường Cổng này có thể có 9 hoặc 25 chân tùy thuộc vào đời máy và bo mạch chủ Thiết kế giao tiếp với cổng RS232 khá đơn giản, đặc biệt khi chọn chế độ hoạt động không đồng bộ và tốc độ truyền dữ liệu thấp.
• Khả năng chống nhiễu của các cổng nối tiếp cao
• Thiết bị ngoại vi có thể tháo lắp ngay cả khi máy tính đang được cấp điện
• Các mạch điện đơn giản có thể nhận được điện áp nguồn nuôi qua công nối tiếp
Những đặc điểm cần lưu ý trong chuẩn RS232
• Trong chuẩn RS232 có mức giới hạn trên và dưới (logic 0 và 1) là +-12V Hiện nay đang được cố định trở kháng tải trong phạm vi từ 3000 ôm 7000 ôm
• Mức logic 1 có điện áp nằm trong khoảng -3V đến -12V, mức logic 0 từ +-3V đến 12V
• Tốc độ truyền nhận dữ liệu cực đại là 100kbps (ngày nay có thể lớn hơn)
• Các lối vào phải có điện dung nhỏ hơn 2500pF
• Trở kháng tải phải lớn hơn 3000Ώ nhưng phải nhỏ hơn 7000Ώ
• Độ dài của cáp nối giữa máy tính và thiết bị ngoại vi ghép nối qua cổng nối tiếp RS232 không vượt qua 15m
• Các giá trị tốc độ truyền dữ liệu chuẩn hay dùng: 9600, 19200, 28800,
Các mức điện áp đường truyền
RS232 là giao thức truyền thông không đối xứng, sử dụng tín hiệu điện áp chênh lệch giữa dây dẫn và đất Ngay từ khi ra đời, nó đã mang vẻ lỗi thời của chuẩn TTL, với mức điện áp tương thích TTL để biểu thị các mức logic 0 và 1 Ngoài ra, nó còn quy định các giá trị trở kháng tải kết nối vào bus và trở kháng ra của bộ phát.
Mức điện áp của tiêu chuẩn RS232C (chuẩn thường dùng bây giờ) được mô tả như sau:
Các mức điện áp từ -3V đến 3V được coi là trạng thái chuyển tuyến, do đây là phạm vi không được định nghĩa Khi giá trị logic thay đổi từ thấp lên cao hoặc ngược lại, tín hiệu cần phải vượt qua quãng quá độ trong thời gian ngắn hợp lý Điều này yêu cầu phải có giới hạn về điện dung của các thiết bị và đường truyền Tốc độ truyền dẫn tối đa phụ thuộc vào chiều dài dây dẫn, và hiện nay, hầu hết các hệ thống chỉ hỗ trợ tốc độ 19,2 kBd.
Hầu hết các máy tính cá nhân hiện nay đều có ít nhất một cổng Com hay cổng nối tiếp RS232, với số lượng cổng Com có thể lên tới 4 tùy thuộc vào loại main máy tính Các cổng này được đánh dấu là Com 1, Com 2, Com 3, v.v Có hai loại đầu nối phổ biến cho cổng nối tiếp RS232 là loại 9 chân (DB9) và 25 chân (DB25), trong đó DB9 là cổng đực và DB25 là cổng cái.
Quá trình truyền dữ liệu
Truyền dữ liệu qua cổng nối tiếp RS232 diễn ra theo phương thức không đồng bộ, với một thời điểm chỉ có một bit (1 ký tự) được truyền Bộ truyền bắt đầu bằng một bit khởi đầu (bit start) với mức 0 để thông báo cho bộ nhận biết một ký tự sẽ được gửi Sau bit khởi đầu, các bit dữ liệu (bits data) được truyền dưới dạng mã ASCII với độ dài có thể là 5, 6, 7 hoặc 8 bit Tiếp theo là một bit kiểm tra chẵn lẻ (Parity bit) và cuối cùng là bit dừng (bit stop), có thể có độ dài 1, 1.5 hoặc 2 bit.
Tốc độ Baud là một tham số quan trọng của RS232, thể hiện tốc độ truyền dữ liệu qua cổng nối tiếp Tốc độ bit, được định nghĩa là số bit truyền trong một giây, cần được thiết lập đồng nhất giữa thiết bị phát và thiết bị nhận Điều này có nghĩa là tốc độ truyền bit giữa vi điều khiển và máy tính phải giống nhau để đảm bảo quá trình truyền dữ liệu diễn ra chính xác.
Tốc độ Baud là một tham số quan trọng bên cạnh tốc độ bit, dùng để mô tả tốc độ truyền dữ liệu Tốc độ Baud liên quan đến số lượng phần tử mã hóa dữ liệu được sử dụng để diễn tả các bit truyền tải, trong khi tốc độ bit phản ánh tốc độ thực tế của việc truyền các bit Khi mỗi phần tử mã hóa một bit, tốc độ bit và tốc độ Baud sẽ đồng nhất với nhau.
Một số tốc độ Baud thường dùng: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600,
Trong thiết bị, tốc độ thường sử dụng là 19200 bps Khi áp dụng chuẩn nối tiếp RS232, yêu cầu thời gian chuyển mức logic không được vượt quá 4% thời gian truyền 1 bit Do đó, với tốc độ bit cao, thời gian truyền 1 bit sẽ giảm, dẫn đến yêu cầu thời gian chuyển mức logic cũng phải nhỏ hơn Điều này giới hạn tốc Baud và khoảng cách truyền tín hiệu.
Bit chẵn lẻ, hay còn gọi là Parity bit, là một phương pháp kiểm tra lỗi trong quá trình truyền dữ liệu Kỹ thuật này bổ sung một bit vào dữ liệu để xác định số lượng bit "1" trong khung truyền là chẵn hay lẻ Trong chuẩn RS232, việc sử dụng bit chẵn lẻ giúp phát hiện và sửa chữa một số lỗi có thể xảy ra trong quá trình truyền tải thông tin.
Parity bit chỉ có khả năng phát hiện một số lượng lẻ các lỗi như 1, 3, 5, 7, 9, nhưng nếu một bit chẵn bị lỗi, parity bit sẽ có giá trị giống như khi không có lỗi, dẫn đến việc không phát hiện được lỗi Vì vậy, kỹ thuật mã hóa lỗi này không thích hợp cho các trường hợp có khả năng xảy ra lỗi ở nhiều bit.
Bộ chuyển đổi ADC (Analog-to-Digital Converter) cho phép vi điều khiển đọc tín hiệu nhị phân, xác định trạng thái như nút bấm có được nhấn hay không Khi được cấp nguồn 5V, vi điều khiển hiểu 0V là 0 và 5V là 1, nhưng thực tế phức tạp hơn khi tín hiệu có thể là giá trị trung gian như 2,72V Để xử lý các tín hiệu tương tự, cảm biến 5V có thể xuất ra nhiều giá trị khác nhau từ 0,01V đến 4,99V Hầu hết các vi điều khiển hiện nay đều được trang bị bộ chuyển đổi ADC tích hợp, giúp chuyển đổi các điện áp này thành giá trị số để sử dụng trong lập trình và quyết định điều khiển.
Dưới đây là một số chủ đề và khái niệm bạn có thể muốn biết trước khi đọc hướng dẫn này:
• Điện áp, Dòng điện, Điện trở
Bộ chuyển đổi ADC là gì?
Bộ chuyển đổi tương tự sang kỹ thuật số (ADC) là thiết bị quan trọng, giúp chuyển đổi điện áp tương tự thành tín hiệu số Nhờ vào khả năng này, ADC cho phép các thiết bị điện tử giao tiếp hiệu quả với thế giới xung quanh, mở ra nhiều ứng dụng trong công nghệ hiện đại.
Không phải tất cả các chân trên vi điều khiển đều hỗ trợ chuyển đổi từ tín hiệu tương tự sang tín hiệu kỹ thuật số Trên board Arduino, các chân này được đánh dấu bằng chữ 'A' (từ A0 đến A5), cho thấy khả năng đọc điện áp tương tự của chúng.
ADC trên các vi điều khiển có sự khác biệt đáng kể, với Arduino sử dụng ADC 10 bit, cho phép thực hiện 1.024 mức tương tự rời rạc Một số vi điều khiển khác có ADC 8 bit, tương ứng với 256 mức rời rạc, trong khi một số vi điều khiển tiên tiến hơn có thể sở hữu ADC 16 bit.
UART
UART, viết tắt của "Universal Asynchronous Receiver / Transmitter", là một vi mạch có sẵn trong vi điều khiển, khác với các giao thức truyền thông như I2C và SPI Chức năng chính của UART là truyền dữ liệu nối tiếp, cho phép giao tiếp giữa hai thiết bị thông qua hai phương thức: giao tiếp dữ liệu nối tiếp và giao tiếp dữ liệu song song.
1.3.1 Truyền thông nối tiếp và song song
Giao tiếp dữ liệu nối tiếp cho phép truyền dữ liệu qua cáp hoặc đường dây dưới dạng bit-bit, chỉ cần hai cáp So với giao tiếp song song, truyền thông dữ liệu nối tiếp có chi phí thấp hơn và yêu cầu ít mạch cũng như dây hơn Do đó, giao tiếp này trở nên hữu ích hơn trong các mạch ghép.
Trong giao tiếp dữ liệu song song, dữ liệu được truyền tải qua nhiều cáp cùng lúc, mang lại tốc độ nhanh chóng nhưng chi phí cao do yêu cầu phần cứng và cáp bổ sung Những ví dụ tiêu biểu cho loại giao tiếp này bao gồm máy in cũ, PCI và RAM.
Hình 1.3 Giao tiếp song song
Sơ đồ khối của UART bao gồm hai thành phần chính: máy phát và máy thu Phần máy phát được cấu thành từ ba khối: thanh ghi giữ truyền, thanh ghi dịch chuyển và logic điều khiển Tương tự, phần máy thu có một thanh ghi giữ, thanh ghi thay đổi và logic điều khiển Cả hai phần này thường được cung cấp bởi một bộ tạo tốc độ baud, có nhiệm vụ tạo tốc độ khi máy phát và máy thu cần truyền hoặc nhận dữ liệu.
Thanh ghi trong máy phát chứa byte dữ liệu được truyền, với các thanh ghi thay đổi trong quá trình truyền Máy thu di chuyển các bit sang phải hoặc trái cho đến khi một byte dữ liệu được nhận Logic điều khiển đọc hoặc ghi được sử dụng để xác định thời điểm thích hợp để thực hiện các thao tác này.
Máy phát tốc độ baud giữa máy phát và máy thu có khả năng tạo ra tốc độ dao động từ 110 bps đến 230400 bps Thông thường, tốc độ truyền của vi điều khiển dao động trong khoảng từ 9600 đến 115200 bps.
Hình 1.4 Sơ đồ khối UART
Trong giao tiếp UART, có hai loại chính là truyền UART và nhận UART, và chúng có thể giao tiếp trực tiếp với nhau Để thực hiện điều này, chỉ cần sử dụng hai cáp kết nối giữa hai UART Dữ liệu sẽ được truyền từ chân Tx của UART này sang chân Rx của UART kia.
UART có thể được thực hiện không đồng bộ (không có tín hiệu CLK để đồng bộ hóa các bit o / p)
Việc truyền dữ liệu qua UART có thể thực hiện bằng cách sử dụng bus dữ liệu song song từ các thiết bị như vi điều khiển, bộ nhớ và CPU Sau khi nhận dữ liệu song song từ bus, UART tạo thành gói dữ liệu bằng cách thêm ba bit bắt đầu, dừng và trung bình Nó đọc từng bit trong gói dữ liệu và chuyển đổi dữ liệu nhận được về dạng song song, loại bỏ ba bit không cần thiết Tóm lại, gói dữ liệu mà UART nhận được sẽ được chuyển đổi về dạng song song để gửi qua bus dữ liệu ở đầu nhận.
Start-bit, hay còn gọi là bit đồng bộ hóa, được sử dụng để đánh dấu sự bắt đầu của dữ liệu truyền Trong một đường truyền dữ liệu, mức điện áp cao được sử dụng để điều khiển trạng thái không hoạt động Khi bắt đầu truyền dữ liệu, giao thức UART sẽ kéo đường dữ liệu từ mức điện áp cao (1) xuống mức điện áp thấp (0) Sự chuyển đổi này được UART nhận diện và từ đó bắt đầu hiểu dữ liệu thực tế Thông thường, chỉ có một start-bit trong mỗi quá trình truyền.
Bit dừng nằm ở cuối gói dữ liệu, thường có độ dài 2 bit nhưng thường chỉ sử dụng 1 bit Để dừng sóng, UART duy trì đường dữ liệu ở mức điện áp cao.
Bit chẵn lẻ giúp người nhận xác minh tính chính xác của dữ liệu thu thập Đây là một phương pháp kiểm tra lỗi cơ bản, với hai loại chính là chẵn lẻ – chẵn lẻ và chẵn lẻ – lẻ Mặc dù hữu ích, nhưng bit chẵn lẻ không được áp dụng phổ biến và không phải là yêu cầu bắt buộc.
Dữ liệu bit hoặc khung dữ liệu
Các bit dữ liệu là thông tin thực được gửi từ người gửi đến người nhận, với độ dài khung dữ liệu dao động từ 5 đến 8 bit Nếu không sử dụng bit chẵn lẻ, chiều dài khung dữ liệu có thể lên đến 9 bit Thông thường, LSB (bit ít quan trọng nhất) được truyền đi trước, điều này rất hữu ích cho quá trình truyền tải dữ liệu.
Hình dưới đây cho thấy UART giao tiếp với vi điều khiển Giao tiếp UART có thể được thực hiện bằng ba tín hiệu như TXD, RXD và GND
Chúng ta có thể hiển thị văn bản trên máy tính cá nhân từ board vi điều khiển 8051 thông qua mô-đun UART, sử dụng giao diện UART0 Chân Tx truyền thông tin đến máy tính, trong khi chân Rx nhận thông tin từ máy tính Tốc độ Baud là yếu tố quan trọng để đảm bảo rằng tốc độ truyền của vi điều khiển và PC tương thích, giúp việc truyền và nhận dữ liệu diễn ra chính xác.
1.3.5 Các ứng dụng của UART
UART là giao thức phổ biến trong các bộ vi điều khiển, đáp ứng các yêu cầu chính xác cho nhiều ứng dụng, bao gồm giao tiếp không dây, thiết bị GPS, mô-đun Bluetooth và nhiều thiết bị khác.
Các tiêu chuẩn truyền thông như RS422 và TIA thường được áp dụng trong giao tiếp UART, ngoại trừ RS232 Thông thường, UART hoạt động như một IC độc lập, chuyên dụng cho việc giao tiếp nối tiếp.
1.3.6 Ưu điểm và nhược điểm của UART
Những ưu và nhược điểm của UART bao gồm những điều sau đây
• Nó chỉ cần hai dây để truyền dữ liệu Tín hiệu CLK là không cần thiết
• Nó bao gồm một bit chẵn lẻ để cho phép kiểm tra lỗi
• Sắp xếp gói dữ liệu có thể được sửa đổi vì cả hai mặt được sắp xếp
• Kích thước khung dữ liệu tối đa là 9 bit
• Nó không chứa một số hệ thống phụ (hoặc)
• Tốc độ truyền của UART phải ở mức 10% của nhau
Ứng dụng được sử dụng
C# (C sharp) là một ngôn ngữ lập trình đa năng và biên dịch được phát triển bởi Microsoft, đóng vai trò quan trọng trong kế hoạch NET Ngôn ngữ này được xây dựng dựa trên nền tảng của C, C++ và Java, mang lại sự cân bằng giữa các ngôn ngữ lập trình như C++, Visual Basic, Delphi và Java.
1.4.1.1 Các cấu thành thông dụng
Button dùng để bấm kết nối, xóa, làm mới và thoát chương trình
TextBox dùng để hiển thị giá trị đo được và hiển thị thời gian thực
DataGridView dùng để hiển thị giá trị đo được từ arduino gửi về
Label dùng để hiển thị tên nhớ
Timer1 dùng để hiển thị thời gian thực
SeriaPoart1 dùng dể kết nối với thiết bị ngoài
Bindingsource1 dùng kết nối CSDL SQL
Combobox dùng để hiển thị cổng kết nối tốc độ kết nối
Thiết kế Form hiển thị dữ liệu
Bước 1: Khởi động Visual Studio 2010, thiết lập New Projec và chọn lập trình Windows Forms Application đặt tên theo định dạng như Hình 2.1.10
Name (đặt tên cho project), Location (Đặt tên folder chứa Project là tên lớp)
Solution name (Đặt giống với Name ở trên)
Hình 1.16 Giao diện Windows Forms Application
Bước 2: Tương ứng với 3 column trong CSDL, ta kéo thả các toolBox, label vàm textbox rồi đặt tên tương ứng:
Hình 1.17 Kéo thả label và textbox
Bước 3: Double click vào Button View Data để sinh ra sự kiện
BTViewData Click (object sender, EventArgs e)
Bước 4: Để hiển thị hiển thị dữ liệu có trên CSDL, ta kéo thả dataGridView
Hình 1.18 Kéo thả và chỉnh vị trí DataGridView
1.4.1.3 Giới thiệu cơ sở dữ liệu SQL Server
Cơ sở dữ liệu, hay còn gọi là Database (viết tắt là CSDL), là một tập hợp dữ liệu có tổ chức, được lưu trữ và truy cập điện tử thông qua hệ thống máy tính Khi cơ sở dữ liệu trở nên phức tạp hơn, chúng sẽ được phát triển thông qua các thiết kế và mô hình hóa hình thức.
Bảng 1: Đặt tên cho các Tools Box
ID Temperature Date Time TextBox getID getTEMP getDATETIME BTViewData Button View Data
Các bước xây dựng CSDL
Bước 1: Khởi động SQL Server Management Studio Nhấn vào Connect
Hình 1.20 SQL Server Management Studio
Bước 2: Tạo cơ sở dữ liệu mới: Tại mục Object Explorer, click chuột phải vào
Databases chọn New Database như Hình 1.23
Hình 1.19 Phần mềm SQL Server 2008
Hình 1.22 Tạo Table và các kiểu dữ liệu
Tại mục Databases, chọn CSDL vừa tạo ở bước 2 và click chuột phải vào
Tables chọn New Table (Hình 2.2.4) Ở table mới được tạo tiến hành nhập Column Name, Data Type (kiểu dữ liệu) và Allow Nulls (cho phép KHÔNG NHẬP DỮ
LIỆU) Sau khi đã nhập tên và kiểu dữ liệu, học viên trỏ chuột phải vào hàng dữ liệu chính và chọn Set Primary key a b
Hình 1.23 Thiết lập kiểu dữ liệu chính và lưu Table
Bước 4: Nhập dữ liệu(hoặc không nhập): Click chuột phải vào file dbo.ValueTemp chọn Edit Top 200 Rows (hoặc Edit All Rows) và tiến hành nhập dữ liệu
1.4.2 Phần mềm hỗ trợ Arduino IDE:
Arduino IDE là một môi trường phát triển mã nguồn mở, giúp người dùng dễ dàng viết và tải code lên bo mạch Arduino Được phát triển bằng Java và dựa trên ngôn ngữ lập trình Processing, phần mềm này tương thích với mọi loại bo mạch Arduino.
Chúng ta có thể hiểu Arduino IDE là một trình soạn thảo giúp bạn có để viết code và nạp vào linh kiện arduino của mình
Arduino là nền tảng mã nguồn mở tích hợp cả phần cứng và phần mềm Phần cứng bao gồm hơn 300.000 loại bo mạch khác nhau được thiết kế sẵn với các cảm biến và linh kiện Phần mềm Arduino cho phép người dùng linh hoạt sử dụng các cảm biến và linh kiện này tùy thuộc vào mục đích của mình.
Arduino IDE đóng vai trò quan trọng trong việc nạp chương trình vào linh kiện Arduino Phần mềm này giống như dây dẫn điện, cung cấp năng lượng cần thiết để các thiết bị, như động cơ quạt, hoạt động hiệu quả.
Arduino IDE, được phát triển bằng ngôn ngữ Java, là một ứng dụng đa nền tảng Các chương trình cho Arduino sử dụng ngôn ngữ lập trình C hoặc C++ IDE này tích hợp thư viện phần mềm gọi là "wiring", giúp đơn giản hóa quá trình lập trình Mỗi chương trình chạy trên Arduino được gọi là một sketch và có định dạng tệp ino.
Arduino IDE là công cụ hỗ trợ viết và nạp code cho các bo mạch Arduino và NodeMCU Người dùng có thể tải phần mềm miễn phí từ trang chủ Arduino tại http://arduino.cc Phiên bản mới nhất hiện nay là Arduino 1.8.5.
Phân Tích Thiết Kế Hệ Thống
Chức năng của hệ thống
Chuyển đổi dòng điện một chiều sang xoay chiều, đồng thời giám sát và theo dõi thông số, hiển thị trên giao diện người dùng và tự động lưu trữ dữ liệu của dòng điện một chiều đầu vào cùng với dòng điện xoay chiều đầu ra vào cơ sở dữ liệu SQL Server.
Sơ đồ khối của hệ thống
Hình 2.2 Sơ đồ khối hệ thống
• Khối Nguồn: dùng để cấp nguồn cho các khối hoạt động
• Khối đo nguồn vào DC: Đọc thông số dòng điện 1 chiều và gửi dữ liệu về cho
• Khối đo nguồn ra AC: Đọc thông số dòng điện xoay chiều và gửi dữ liệu về cho
• Khối Vi điều khiển: xử lý tín hiệu và gửi dữ liệu tới Máy tính
• Khối Máy Tính: Hiển thị thông tin lên trên giao diện C# và lưu thông tin của thẻ vào CSDL SQL Server.
Các thiết bị được sử dụng
Arduino là một board mạch vi xử lý mở, được thiết kế để xây dựng các ứng dụng tương tác với môi trường, sử dụng vi xử lý AVR Atmel 8bit hoặc ARM Atmel 32-bit Hiện tại, board mạch này được trang bị 1 cổng USB, 6 chân đầu vào analog và 14 chân I/O kỹ thuật số, tương thích với nhiều board mở rộng khác Ra mắt vào năm 2005, Arduino hướng đến việc cung cấp một phương thức dễ dàng và tiết kiệm cho những người yêu thích, sinh viên và chuyên gia trong việc tạo ra các thiết bị tương tác thông qua cảm biến và cơ cấu chấp hành Các dự án phổ biến cho người mới bắt đầu bao gồm robot đơn giản, hệ thống điều khiển nhiệt độ và phát hiện chuyển động Arduino cũng đi kèm với một môi trường phát triển tích hợp (IDE) cho phép người dùng lập trình bằng ngôn ngữ C hoặc C++ trên máy tính cá nhân.
Giá của các board Arduino dao động xung quanh €20, hoặc $27 hoặc
Giá của một mạch Arduino có thể giảm xuống dưới 9 USD nếu được sản xuất giả mạo, với mức giá hiện tại là 574.468 VNĐ Người dùng có thể đặt hàng các board Arduino dưới dạng lắp sẵn hoặc kit tự làm, và thông tin thiết kế phần cứng được cung cấp công khai theo hình thức mã nguồn mở Ước tính vào giữa năm 2011, đã có khoảng 300.000 mạch Arduino chính thức được sản xuất, và con số này tăng lên khoảng 700.000 mạch vào năm 2013.
Hình 2.2 Arduino uno b Sơ đồ chân của Arduino
Hình 2.3 Sơ đồ các chân arduino c Sơ đồ nguyên lý của Arduino
Hình 2.4 Sơ đồ nguyên lí mạch Arduino d Thông số kỹ thuật
Arduino Uno được trang bị vi điều khiển ATmega328P, hoạt động với tần số dao động 16 MHz Vi điều khiển này cho phép thực hiện nhiều chức năng và ứng dụng khác nhau trong các dự án điện tử.
14 pin (ngõ) ra / vào được đánh số từ 0 tới 13 (trong đó có 6 pin PWM, được đánh dấu
Trên bo mạch, ngoài các chân số, còn có 6 chân nhận tín hiệu analog được ký hiệu từ A0 đến A5 Những chân này có thể hoạt động như các chân ra/vào thông thường, mang lại sự linh hoạt cho việc xử lý tín hiệu.
(như pin 0 - 13) Ở các pin được đề cập, pin 13 là pin đặc biệt vì nối trực tiếp với LED trạng thái trên board
Bảng mạch có một nút reset, một cổng kết nối USB để kết nối với máy tính và một cổng cấp nguồn sử dụng jack 2.1mm, cho phép cung cấp năng lượng trực tiếp từ bộ chuyển đổi AC-DC hoặc thông qua ắc-quy nguồn.
Khi làm việc với Arduino board, một số thuật ngữ sau cần được lưu ý:
Bộ nhớ Flash là loại bộ nhớ có khả năng ghi dữ liệu và không mất thông tin ngay cả khi mất điện, tương tự như ổ cứng lưu trữ dữ liệu trên board mạch Chương trình viết cho Arduino sẽ được lưu trữ trong bộ nhớ này, với kích thước phụ thuộc vào loại vi điều khiển, chẳng hạn như ATmega8 có 8KB bộ nhớ flash Bộ nhớ Flash có thể chịu được khoảng 10,000 lần ghi và xóa.
RAM, giống như RAM của máy tính, sẽ mất dữ liệu khi mất điện, nhưng có tốc độ đọc và ghi xóa rất nhanh Kích thước của RAM nhỏ hơn nhiều so với Flash Memory.
EEPROM là một loại bộ nhớ tương tự như Flash Memory, nhưng có chu kỳ ghi/xóa cao hơn, lên đến khoảng 100.000 lần, và kích thước rất nhỏ Để thực hiện việc đọc và ghi dữ liệu, người dùng có thể sử dụng thư viện EEPROM của Arduino.
Ngoài ra, board Arduino còn cung cấp cho ta các pin khác nhau như pin cấp nguồn 3.3V, pin cấp nguồn 5V, pin GND
Thông số kỹ thuật của Arduino board được tóm tắt trong bảng sau: e Vị trí & chức năng các chân
Nếu không có nguồn từ cổng USB, bạn có thể cấp nguồn cho Arduino UNO bằng bộ chuyển đổi AC→DC hoặc pin Bộ chuyển đổi cần được kết nối qua jack cắm điện với đầu vào 2.1mm trung tâm tích cực Lưu ý rằng việc cung cấp nguồn vượt quá giới hạn cho phép có thể gây hỏng Arduino UNO.
GND (Ground) là cực âm của nguồn điện cho Arduino UNO Khi sử dụng các thiết bị với nguồn điện riêng biệt, cần phải nối các chân GND lại với nhau để đảm bảo hoạt động ổn định.
Vi điều khiển ATmega328P Điện áp hoạt động 5 V Điện áp vào khuyên dùng 7-12 V Điện áp vào giới hạn 6-20 V
Digital I/O pin 14 (trong đó 6 pin có khả năng băm xung )
Cường độ dòng điện trên mỗi I/O pin 20 mA
Cường độ dòng điện trên mỗi 3.3V pin 50 mA
0.5 KB được sử dụng bởi bootloader
• 5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA
Cấp điện áp 3.3V đầu ra với dòng tối đa 50mA, chân này cung cấp nguồn cho các linh kiện Để cấp nguồn ngoài cho Arduino UNO, nối cực dương của nguồn với chân Vin và cực âm với chân GND.
Chân IOREF trên Arduino UNO cho phép đo điện áp hoạt động của vi điều khiển, luôn duy trì ở mức 5V Tuy nhiên, cần lưu ý rằng không nên sử dụng chân này để lấy nguồn 5V, vì chức năng chính của nó không phải là cung cấp điện.
• RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đươngvới việc chân RESET được nối với GND qua 1 điện trở 10KΩ
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng tối đa trên mỗi chân là 40mA
Một số chân digital có các chức năng đặc biệt như sau:
Arduino Uno sử dụng hai chân Serial: chân 0 (RX) để nhận dữ liệu và chân 1 (TX) để gửi dữ liệu TTL Serial Qua hai chân này, Arduino có thể giao tiếp với các thiết bị khác, và kết nối Bluetooth thường được hiểu là kết nối Serial không dây Nếu không cần giao tiếp Serial, nên tránh sử dụng hai chân này để tiết kiệm tài nguyên.
Chân PWM (~) 3, 5, 6, 9, 10, và 11 cho phép xuất xung PWM với độ phân giải 8 bit, tương ứng với giá trị từ 0 đến 255, tạo ra điện áp từ 0V đến 5V thông qua hàm analogWrite() Điều này có nghĩa là bạn có thể điều chỉnh điện áp ra ở các chân này, thay vì chỉ có mức cố định 0V và 5V như các chân khác.
Chân giao tiếp SPI bao gồm các chân 10 (SS), 11 (MOSI), 12 (MISO) và 13 (SCK) Ngoài các chức năng thông thường, bốn chân này còn được sử dụng để truyền phát dữ liệu thông qua giao thức SPI với các thiết bị khác.
Sơ đồ nguyên lý
Hình 2.10 Sơ đồ nguyên lý
Sơ đồ mạch in
Hình 2.11 Sơ đồ mạch in
Lưu đồ thuật toán
Hình 2.12 Lưu đồ thuật toán
2.8 Xây dựng cơ sở dữ liệu
Bước 1: Chọn server name cho CSDL
Hình 2.18 Chọn server name cho CSDL
Bước 2: Chọn Database/chuột phải chọn New Database Đặt tên cho CSDL
Hình 2.19 Đặt tên cho CSDL
Bước 3: Chọn Table/chuột phải chọn New/Table
Hình 2.20 Tạo một Table mới
Bước 4: Đặt tên cho từng cột, lựa chọn loại định dạng dữ liệu và chọn khóa chính
Hình 2.21 Đặt tên và chọn định dạng dữ liệu
Bước 5: Đặt tên cho Table và lưu Table
Hình 2.22 Đặt tên và lưu bảng
Bước 1: Khởi động Visual Studio, thiết lập New Project, chọn lập trình Windows Forms Application và đặt tên rồi ấn OK:
Hình 2.24 Giao diện lập trình Windows Forms Application
Bước 2: Kéo thả các toolbox và đặt tên cho các toolbox
Hình 2.25 Kéo thả Label, Textnox, Button, DataGridView
Bước 3: Liên kết với SCDL
Chọn bindingSource/Add Project Data Source/DataBase/Next/Datas et/Next
Chọn New Connection/chọn Server name/chọn database name
Sau đó nhấn NEXT và tích toàn bộ object cuảng Database
Hình 2.28 Liên kết dataGridView với bảng
Kếp Quả Và Đánh Giá
Kết quả hệ thống
PZEM004Tv30 pzem(2,3); int zero; float I; float I_TB; float tong; float vol_out; float
; float pf ; int relay = 4; void setup(void)
Serial.begin(9600); pinMode(relay, OUTPUT); zero = sensor.calibrate(); digitalWrite(relay,HIGH); delay (2000);
} void loop(void) { delay(500); v pzem.voltage(); c = 1000
* pzem.current(); p pzem.power(); e pzem.energy(); f pzem.frequency(); pf