Tổng quan về hệ thống cơ điện tử 1.1 Giới thiệu về chức năng nhiệm vụ của hệ thốngCơ điện tử là một hệ thống cơ cấu máy có thiết bị điều khiển đã được lập trình và có khả năng hoạt động
Trang 1CHƯƠNG 1 Tổng quan về hệ thống cơ điện tử 1.1 Giới thiệu về chức năng nhiệm vụ của hệ thống
Cơ điện tử là một hệ thống cơ cấu máy có thiết bị điều khiển đã được lập trình và có khả năng hoạt động một cách linh hoạt Ứng dụng trong sinh hoạt, trong công nghiệp, trong lĩnh vực nghiên cứu như máy lạnh, tủ lạnh, máy giặt, modul sản xuất linh hoạt, tự động hóa quá trình sản xuất hoặc cá thiết bị hỗ trợ nghiên cứu như các thiết bị đo trong các hệ thống kiểm tra.
Khái niệm cơ điện tử được mở ra từ định nghĩa ban đầu của công ty
Yasakawa Electric, theo sau đó là những định nghĩa khác nhau của các nhà khoa học khác trên toàn thế giới Tất cả những định nghĩa và phát biểu đó đều xác đắng và giàu thông tin, tuy nhiên nếu đứng riêng lẻ lại không định nghĩa được đầy đủ thuật ngữ Cơ Điện Tử.
Hệ thống Cơ Điện Tử là một lĩnh vực đa ngành của khoa học kĩ thuật, hình thành từ các ngành mũi nhọn như Cơ khí, Điện – Điện tử, Tin học Tuy nhiên, trên thực thế hệ thống Cơ Điện Tử không có một định nghĩa rõ ràng Nó được tách biệt hoàn toàn ở cá phần riêng biệt nhưng được kết hợp trong quá trình thực hiện.
Các phần tử cơ bản cấu thành nên hệ thống Cơ Điện Tử:
Cơ cấu chấp hành / cơ cấu tác động
Giao tiếp thời gian thực (HMI/GUI)
Hình 1.1 Các thành phần cơ bản của hệ thống Cơ Điện Tử
Giải pháp cơ điện tử trong thiết kế kĩ thuật liên quan đến việc cung cấp một cấu trúc trong đó có sự tích hợp thành một hệ thống thống nhất của các công nghệ khác nhau được thiết lập và đánh giá Sơ đồ khối về toàn bộ hệ thống (một
1
download by : skknchat@gmail.com
Trang 2sản phẩm cơ điện tử) trên cơ sở các khối hoặc các modun thành phần được thể hiện như trên hình 1.2
Hình 1.2 Cấu trúc theo modul hệ Cơ Điện Tử
Hệ Cơ Điện Tử được phân loại đa dạng và được ứng dụng rộng rãi trong cuộc sống:
- Trong y học: Các thiết bị máy cắt lớp, các máy chụp X-quang, các thiết bị mổ nội soi,…
- Trong công nghiệp: Hệ thống FMS, robot công nghiệp, hệ thống phân loại, kho hàng tự động, …
- Trong văn phòng: Hệ thống mạng công tác, có sử dụng máy tính, các thiết bị văn phòng (máy in, máy fax,…)
- Trong sinh hoạt gia đình: Các sản phẩm tiêu dùng (máy giặt, điện thoại, tivi,
…) hệ thống giám sát bảo vệ ngôi nhà, …
Hệ thống cảnh báo rò rỉ khí là hệ thống có chức năng phát hiện sự hiện diện của một loại khí trong một khu vực nhất định nào đó, hệ thống này thường là một phần của hệ thống
an toàn của nhà máy hoặc khu vực dễ chịu ảnh hưởng của những loại khí độc hại Hệ thống này gồm 2 phần chính, phần thứ nhất là đầu rò khí có tác dụng phát hiện khí bị rò rỉ Phần thứ
2 là thiết bị cảnh báo, có chuông cảnh báo, đèn cảnh báo, màn hình hiển thị nồng độ khí Sau khi đầu rò phát hiện khí, nó sẽ truyền tín hiệu cho bộ phận cảnh báo để đưa ra cảnh báo và ngắt nguồn khí, chạy các hệ thống ngăn ngừa cháy nổ
Trang 3Phát hiện rò rỉ khí là quá trình xác định rò rỉ khí có khả năng gây nguy hiểm hay không Việc tiếp xúc với khí độc cũng có thể xảy ra trong các hoạt động như sợ, khử trùng, đổ nhiên liệu, vận hành bãi chôn lấp,… Các cảm biến thông thường bao gồm cảm biến khí cháy, thiết bị dò quang phổ, cảm biến bán dẫn,… Những loại cảm biến này được sử dụng cho nhiều ứng dụng và có thể tìm thấy trong các nhà máy, xí nghiệp hay như kiểm tra chất lượng và nhà ở.
Sau khi tiến hành lắp đặt thì tất cả đầu rò khí ohair được hiệu chỉnh lần đầu
và định kì hiệu chỉnh theo chu kì để cho hệ thống được hoạt động ổn định và ít xảy
ra sai sót nhất có thể.
Trong thực tế, hệ thống này đã được ứng dụng rộng rãi trong các hộ gia đình
sử dụng gas hay như trong khách sạn, nhà hàng và những khu công nghiệp như là biện pháp an toàn bắt buộc.
Hình 1.3 Hệ thống cảnh báo rò rỉ khí Acetylene C2H2 ngắt van tự động
1.2 Mục tiêu hoàn thành của đề tài
- Thiết kế mô hình và đo cảnh báo khí gas sử dụng kit Arduino UNO với những chức năng cơ bản của hệ thống.
- Thiết kế giao diện người dùng GUI phù hợp có thể kết nối với máy tính
- Kết suất bản vẽ sơ đồ điện hệ thống
download by : skknchat@gmail.com
Trang 4CHƯƠNG 2 Các thành phần cơ bản của hệ thống cơ điện
2.1 Các phần tử đầu vào
Trong đề tài này, phần tử đầu vào của hệ thống nhóm chọn và sử dụng là
cảm biến khí gas MQ-2 do mức độ phổ biến và dễ tiếp cận của nó Cảm biến
MQ-2 là cảm biến khí gas thông dụng trong các dòng cảm biến MQ Cảm biến
MQ-2 thuộc dòng cảm biến bán dẫn, nó sử dụng một mẩu chất bán dẫn oxit kim
loại (MOS) làm thành phần nhạy để xác định sự thay đổi của khí Sự có mặt của
các chất khí khác ngoài không khí sẽ làm thay đổi điện trở của chất bán dẫn, từ
đó làm thay đổi điện áp, và từ đây ta có thể xác định được sự thay đổi của khí.
Cảm biến MQ-2 hoạt động dưới điện áp 5V và công suất trung bình khoảng
800mW Nó có thể phát hiện các loại khí như LPG, khói, Alcohol, Propane,
Hydrogen, Methane và Cacbon monoxide từ 200 cho đến 10000ppm.
Một vài thông số kĩ thuật liên quan được thể hiện trong bảng 1.
Bảng 1 Các thông số chính cảm biến MQ2
VC Điện áp mạch 5V±0.1 AC hoặc DC
VH Điện áp làm nóng 5V±0.1 AC hoặc DC
RL Điện trở tải Có thể điều chỉnh 10Kohm ±5%
RH Điện trở làm nóng 33Kohm±5% Nhiệt độ phòng
RS Điện trở cảm biến 3Kohm-30Kohm Nồng độ phát hiện:
(1000 ppm iso-butane) 200-5000ppm LPG
α Hệ số góc ≤0.6 và Propane
Điều kiện Nhiệt độ: 20±2 ℃ , điện áp 5V±0.1 300-5000ppm
Butane tiêu chuẩn Độ ẩm: 65% ± 5%
5000-20000ppm Thời gian Trên 24 giờ
Methane chuẩn bị
300-5000ppm H2
Trang 5download by : skknchat@gmail.com
Trang 6Hình 2.4 Thông số kích thước module MQ – 2
Hình 2.5 Sơ đồ điện module MQ – 2
2.2 Các phần tử đầu ra
Trình bày về các thông tin cơ bản của mỗi phần tử đầu ra:
- Chức năng, nguyên lý hoạt động
- Thông số kỹ thuật: điện áp hoạt động, dạng tín hiệu điều khiển, ký hiệu phần tử
Các phần tử đầu ra là thành phần thực hiện các kết quả sau khi bộ điều khiển xử
lý xong các tín hiệu của phần tử đầu vào Trong đề tài này thì các phần tử đầu ra chính là các cơ cấu chấp hành cụ thể chính là động cơ bước và còi báo động.
Động cơ bước 5VDC là động cơ bước 4 pha, 5 dây điều khiển 4 trong 5 dây này được kết nối với 4 cuộn dây trong động cơ và 1 dây là dây nguồn chung cho cả 4 cuộn dây Mỗi bước của động cơ quét 1 góc 5.625 độ, vậy để quay 1 vòng động cơ phải thực hiện 64 bước.
Trang 7Hình 2.6 Thông số kích thước động cơ bước 28BỴ - 48 5V
Động cơ bước hoạt động kèm theo với IC ULN2003 để có thể điều khiển bước góc xoay Như chúng ta thấy có bốn cuộn dây trong động cơ và một đầu của tất cả các cuộn dây được gắn với + 5V (Đỏ) và các đầu còn lại (Cam, Hồng, Vàng
và Xanh) được đưa ra ngoài như dây Dây Đỏ luôn được cung cấp nguồn + 5V không đổi và + 5V này sẽ đi qua (cung cấp năng lượng) cho cuộn dây chỉ khi đầu kia của cuộn dây được nối đất Động cơ bước chỉ có thể quay nếu các cuộn dây được cấp điện (nối đất) theo một trình tự hợp lý Chuỗi logic này có thể được lập trình bằng vi điều khiển hoặc bằng cách thiết kế mạch kỹ thuật số Trình tự mà mỗi cuộn dây sẽ được kích hoạt được hiển thị trong bảng dưới đây Ở đây “1” đại diện cho cuộn dây được giữ ở + 5V, vì cả hai đầu của cuộn dây đều ở + 5V (màu
đỏ và các đầu khác), cuộn dây sẽ không được cung cấp năng lượng Tương tự “0” đại diện cho cuộn dây được giữ dưới đất, bây giờ một đầu sẽ là + 5V và đầu kia được nối đất để cuộn dây sẽ được cung cấp năng lượng.
Hình 2.7 Sơ đồ dây động cơ
download by : skknchat@gmail.com
Trang 8Bảng 2 Tín hiệu góc quay động cơ
Trình tự xoay theo hướng kim đồng hồ
Trang 92.3 Bộ điều khiển
Hình 2.9 Kit Arduino UNO
Thông số kỹ thuật của Arduino UNO R3
Thông số kỹ thuật của Arduino Uno R3 là tiêu chuẩn, các biến thể gần như có thông số tương đương.
Arduino Uno được xây dựng với phần nhân là vi điều khiển ATmega328P,
sử dụng thạch anh có chu kì dao động là 16 MHz Với vi điều khiển này, tổng cộng có 14 pin (ngõ) ra / vào được đánh số từ 0 tới 13 (trong đó có 6 pin PWM, được đánh dấu ~ trước mã số của pin) Song song đó, có thêm 6 pin nhận tín hiệu analog được đánh kí hiệu từ A0 - A5, 6 pin này cũng có thể sử dụng được như các pin ra / vào bình thường (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 Trên board còn có 1 nút reset,
1 ngõ kết nối với máy tính qua cổng USB và 1 ngõ cấp nguồn sử dụng jack 2.1mm lấy năng lượng trực tiếp từ AC-DC adapter hay 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 lưu ý:
Flash Memory: bộ nhớ có thể ghi được, dữ liệu không bị mất ngay cả khi tắt điện Về vai trò, có thể hình dung bộ nhớ này như ổ cứng để chứa dữ liệu trên board Chương trình được viết cho Arduino sẽ được lưu ở đây Kích thước của vùng nhớ này dựa vào vi điều khiển được sử dụng, ví dụ như ATmega8 có 8KB flash memory Loại bộ nhớ này có thể chịu được khoảng 10.000 lần ghi / xoá.
RAM: tương tự như RAM của máy tính, mất dữ liệu khi ngắt điện, bù lại tốc độ đọc ghi xoá rất nhanh Kích thước nhỏ hơn Flash Memory nhiều lần.
EEPROM: một dạng bộ nhớ tương tự như Flash Memory nhưng có chu kì ghi / xoá cao hơn - khoảng 100.000 lần và có kích thước rất nhỏ Để đọc / ghi dữ liệu có thể dùng thư viện EEPROM của Arduino.
Ngoài ra, Arduino board còn cung cấp cho 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 2:
download by : skknchat@gmail.com
Trang 10Bảng 3 Thông số kĩ thuật chính của Arduino UNO R3
Điện áp đầu vào (khuyên dùng) 7-12V
Điện áp đầu vào (giới hạn) 6-20V
Số chân Digital 14 (trong đó có 6 chân hỗ trợ chỉnh xung
PWM)
Dòng điện DC trên mỗi chân I/O 20mA
Dòng điện DC trên trên 3.3V 50mA
2.4 Các dạng giao tiếp được sử dụng
Để kết nối giữa kit Arduino với GUI trên máy tính, nhóm sử dụng chuẩn truyền thông UART, đây là bộ truyền nhận nối tiếp bất đồng bộ có sẵn với mọi
bộ kit Arduino hiện nay.
Các khái niệm quan trọng trong chuẩn truyền thông UART:
Baudrate: Số bit truyền được trong 1s, ở truyền nhận không đồng bộ thì ở các bên truyền và nhận phải thống nhất Baudrate Các thông số tốc độ Baudrate thường hay sử dụng dể giao tiếp với máy tính là
600,1200,2400,4800,9600,14400,19200,38400,56000,57600,115200.
Trang 11Frame: Ngoài việc giống nhau của tốc độ baud 2 thiết bị truyền nhận thì
khung truyền của bên cũng được cấu hình giống nhau Khung truyền quy định số bit trong mỗi lần truyền, bit bắt đầu “Start bit”, các bit kết thúc (Stop bit), bit kiểm tra tính chẵn lẻ (Parity), ngoài ra số bit quy định trong một gói dữ liệu cũng được quy định bởi khung truyền Có thể thấy, khung truyền đóng một vai trò rất quan trọng trong việc truyền thành công dữ liệu.
- Idle frame: Đường truyền UART ở mức “1”, để xác nhận hiện tại đường
truyền dữ liệu trống, không có frame nào đang được truyền đi.
- Break frame: Đường truyền UART ở mức “0”, để xác nhận hiện tại trên
đường truyền đang truyền dữ liệu, có frame đang được truyền đi.
Hình 2.10 Cấu trúc gói dữ liệu
Start bit: Bit đầu tiên được truyền trong một frame, bit này có chức năng
báo cho bên nhận rằng sắp có một gói dữ liệu truyền đến Đường truyền UART luôn ở trạng thái cao mức “1” cho đến khi chip muốn truyền dữ liệu đi thì nó gởi bit start bằng cách kéo xuống mức “0” Như vậy start bit giá trị điện áp 0V và phải bắt buộc có bit start trong khung truyền.
Data: Data hay dữ liệu là thông tin mà chúng ta nhận được trong quá trình
truyền và nhận Data trong STM32 có quy định khung truyền là 8bit hoặc 9bit Trong quá trình truyền UART, bit có trọng số thấp nhất (LSB – least significant bit – bên phải) sẽ được truyền trước và cuối cùng là bit có ảnh hưởng cao nhất (MSB – most significant bit – bên trái)
Parity bit: Parity dùng để kiểm tra dữ liệu truyền có đúng hay không Có 2
loại Parity đó là Parity chẵn (even parity) và parity lẽ (odd parity) Parity chẵn nghĩa là số bit 1 trong trong data truyền cùng với bit Parity luôn là số chẵn, ngược lại nếu Parity lẽ nghĩa là số bit 1 trong data truyền cùng với bit Parity luôn
là số lẽ Bit Parity không phải là bit bắt buộc và vì thế chúng ta có thể loại bỏ bit này ra khỏi khung truyền.
download by : skknchat@gmail.com
Trang 12Stop bits: Stop bits là một bit báo cáo để cho bộ truyền/nhận biết được gói
dữ liệu đã được gởi xong Stop bits là bit bắt buộc phải có trong khung truyền Stop bits có thể là 1bit, 1.5bit, 2bit, 0.5bit tùy thuộc vào ứng dụng UART của người sử dụng.
Trang 13CHƯƠNG 3 Hệ thống điều khiển của hệ thống cơ điện tử
3.1 Sơ đồ mạch điện
Notes: Thiết kế sơ đồ kết nối mạch điện cho các phần tử điều khiển với Bộ điều khiển.
download by : skknchat@gmail.com
Trang 143.2 Chương trình điều khiển
Chức năng chính của mô hình là đo nồng độ các chất khí xung quanh nên chương trình điều khiển sẽ tập trung các thành phần này Với việc sử dụng cảm biến MQ – 2 sẽ tồn tại những bài toán sau:
- Tính toán điện trở của cảm biến khi có tác động của khí
- Hiệu chỉnh cảm biến lúc ban đầu
- Quy đổi giá trị đo của cảm biến sang đơn vị ppm
Tính toán điện trở của cảm biến khi có tác động của khí: Cảm biến và điện trở tải tạo thành một bộ phân áp Với điện áp trên điện trở tải và điện trở của nó, điện trở của cảm biến có thể được tính toán.
Hiệu chỉnh cảm biến: Chức năng này giả định rằng cảm biến đang ở trong không khí sạch Nó sử dụng hàm MQResistanceCalculation để tính toán điện trở của cảm biến trong không khí sạch và sau đó chia nó với
RO_CLEAN_AIR_FACTOR, giá trị này là khác nhau với các cảm biến khác nhau.
Quy đổi giá trị đo của cảm biến: Bằng cách sử dụng độ dốc và một điểm của đường thẳng Giá trị x (giá trị logarit của ppm) của dòng có thể được tính nếu y (rs_ro_ratio) được cung cấp Vì nó là một tọa độ logarit, nên lũy thừa 10 được sử dụng để chuyển đổi kết quả thành một giá trị không phải logarit Đây là giá trị ppm của khí cần cảnh báo.
3.3 Giao diện điều khiển
Notes:
- Sử dụng ngôn ngữ lập trình nào? (C++)
- Ứng dụng chạy trên thiết bị nào? (laptop)
- Trình bày chức năng của các phần tử trên giao diện điều khiển.
- Hướng dẫn cách bước kết nối, cài đặt và sử dụng giao diện điều khiển và hệ thống cơ điện tử.
Trang 16CHƯƠNG 4 Kết luận và phương hướng phát triển
Note:
- Đúc kết và thảo luận những kết quả đã đạt được.
- Nêu phương hướng có thể tiếp tục cần phát triển của đề tài trong tương lai.
Trang 18//CỬA THÔNG GIÓ
Trang 21return MQGetPercentage(rs_ro_ratio,LPGCurve1,LPGCurve2,LPGCurve3);} else if ( gas_id == GAS_CO ) {
using namespace System;
using namespace System::Collections::Generic;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Threading::Tasks;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Text;
using namespace System::Drawing;
using namespace System::IO::Ports;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Windows::Forms::DataVisualization::Charting;
using namespace System::Drawing::Drawing2D;
public ref class MyForm : public System::Windows::Forms::Form
Trang 22private: System::Windows::Forms::Panel^ panel3;
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::Panel^ panel5;
private: System::IO::Ports::SerialPort^ serialPort1;
private: System::Windows::Forms::Timer^ timer1;
private: System::Windows::Forms::DataVisualization::Charting::Chart^ chart1;
private: System::Windows::Forms::Panel^ panel8;
private: System::Windows::Forms::Label^ label18;
private: System::Windows::Forms::Label^ label17;
private: System::Windows::Forms::Label^ label16;
private: System::Windows::Forms::Label^ label15;
private: System::Windows::Forms::Label^ label14;
private: System::Windows::Forms::Label^ label19;
private: System::Windows::Forms::Label^ label21;
private: System::Windows::Forms::Label^ label20;
private: System::Windows::Forms::Panel^ panel9;
private: Color onBackColor = Color::MediumSlateBlue;
private: Color onToggleColor = Color::WhiteSmoke;
private: Color offBackColor = Color::Gray;
private: Color offToggleColor = Color::Gainsboro;
private: Bunifu::Framework::UI::BunifuGradientPanel^ panel12;
private: Bunifu::Framework::UI::BunifuiOSSwitch^ Switch2;
private: Bunifu::Framework::UI::BunifuiOSSwitch^ Switch1;
private: System::Windows::Forms::ComboBox^ comboBox1;
private: System::Windows::Forms::ComboBox^ comboBox2;
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label3;
private: Bunifu::Framework::UI::BunifuGradientPanel^ panel11;
private: System::Windows::Forms::Label^ label1;
private: Bunifu::Framework::UI::BunifuThinButton2^ button4;
private: Bunifu::Framework::UI::BunifuGradientPanel^ panel10;
private: Bunifu::Framework::UI::BunifuThinButton2^ button6;
private: System::Windows::Forms::Panel^ panel4;
private: System::Windows::Forms::Label^ label6;
private: System::Windows::Forms::Button^ button3;
private: System::Windows::Forms::Panel^ panel2;
private: System::Windows::Forms::Label^ label5;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Panel^ panel1;
private: System::Windows::Forms::Label^ label4;
Trang 23private: System::Windows::Forms::Button^ button1;
private: Bunifu::Framework::UI::BunifuCircleProgressbar^ CircleProgressbar1;private: Bunifu::Framework::UI::BunifuCircleProgressbar^ CircleProgressbar3;private: Bunifu::Framework::UI::BunifuCircleProgressbar^ CircleProgressbar2;private: System::Windows::Forms::Label^ label9;
private: System::Windows::Forms::Label^ label8;
private: System::Windows::Forms::Label^ label7;
private: System::Windows::Forms::TrackBar^ trackBar1;
private: System::Windows::Forms::Label^ label10;
private: Bunifu::Framework::UI::BunifuThinButton2^ button5;
private: Bunifu::Framework::UI::BunifuThinButton2^ button8;
private: System::Windows::Forms::CheckBox^ checkBox3;
private: System::Windows::Forms::CheckBox^ checkBox2;
private: System::Windows::Forms::CheckBox^ checkBox1;
private: Bunifu::Framework::UI::BunifuDropdown^ Dropdown1;
private: System::Windows::Forms::Label^ label13;
private: System::Windows::Forms::Label^ label12;
private: System::Windows::Forms::Label^ label11;
private: System::Windows::Forms::Timer^ timer2;
private: Bunifu::Framework::UI::BunifuGauge^ Gauge1;
private: System::Windows::Forms::Label^ label24;
private: System::Windows::Forms::Label^ label23;
private: System::Windows::Forms::Label^ label22;
private: System::Windows::Forms::Label^ label25;
private: System::Windows::Forms::RadioButton^ radioButton1;
private: System::Windows::Forms::TrackBar^ trackBar2;
private: System::Windows::Forms::Label^ label28;
private: System::Windows::Forms::Label^ label27;
private: System::Windows::Forms::Label^ label26;
private: System::Windows::Forms::RadioButton^
radioButton2; String^ item1 = "GAS";
String^ item2 = "Lpg, Co, Smoke";
#pragma region Windows Form Designer generated code
void InitializeComponent(void)
{
this->components = (gcnew System::ComponentModel::Container());
System::ComponentModel::ComponentResourceManager^ resources = (gcnew
System::ComponentModel::ComponentResourceManager(MyForm::typeid));
System::Windows::Forms::DataVisualization::Charting::ChartArea^ chartArea1 = (gcnew System::Windows::Forms::DataVisualization::Charting::ChartArea());System::Windows::Forms::DataVisualization::Charting::Legend^ legend1 =
Trang 24System::Windows::Forms::DataVisualization::Charting::Series^ series3 =
(gcnew System::Windows::Forms::DataVisualization::Charting::Series());
System::Windows::Forms::DataVisualization::Charting::Series^ series4 =
(gcnew System::Windows::Forms::DataVisualization::Charting::Series());
this->panel3 = (gcnew System::Windows::Forms::Panel());
this->button8 = (gcnew Bunifu::Framework::UI::BunifuThinButton2());
>label19 = (gcnew System::Windows::Forms::Label());
>textBox1 = (gcnew System::Windows::Forms::TextBox());
this->panel5 = (gcnew System::Windows::Forms::Panel()); this->Dropdown1
= (gcnew Bunifu::Framework::UI::BunifuDropdown());
this->chart1 = (gcnew System::Windows::Forms::DataVisualization::Charting::Chart()); this->label13 = (gcnew System::Windows::Forms::Label());
this->serialPort1 = (gcnew System::IO::Ports::SerialPort(this->components));
this->timer1 = (gcnew System::Windows::Forms::Timer(this->components));
this->panel8 = (gcnew System::Windows::Forms::Panel());
>label28 = (gcnew System::Windows::Forms::Label());
this->label27 = (gcnew System::Windows::Forms::Label()); this->label26 =
(gcnew System::Windows::Forms::Label()); this->radioButton2 =
(gcnew System::Windows::Forms::RadioButton()); this->label25 =
(gcnew System::Windows::Forms::Label()); this->radioButton1 =
(gcnew System::Windows::Forms::RadioButton()); this->trackBar2 =
(gcnew System::Windows::Forms::TrackBar()); this->label24 = (gcnew
System::Windows::Forms::Label()); this->label23 = (gcnew
System::Windows::Forms::Label()); this->label22 = (gcnew
System::Windows::Forms::Label()); this->Gauge1 = (gcnew
Bunifu::Framework::UI::BunifuGauge()); this->label12 = (gcnew
System::Windows::Forms::Label()); this->label11 = (gcnew
System::Windows::Forms::Label()); this->label10 = (gcnew
System::Windows::Forms::Label()); this->trackBar1 = (gcnew
System::Windows::Forms::TrackBar()); this->Switch2 = (gcnew
Bunifu::Framework::UI::BunifuiOSSwitch()); this->Switch1 = (gcnew
Bunifu::Framework::UI::BunifuiOSSwitch()); this->label21 = (gcnew
System::Windows::Forms::Label()); this->label20 = (gcnew
System::Windows::Forms::Label()); this->label17 = (gcnew
System::Windows::Forms::Label()); this->label16 = (gcnew
System::Windows::Forms::Label()); this->label15 = (gcnew
System::Windows::Forms::Label()); this->label14 = (gcnew
System::Windows::Forms::Label()); this->label18 = (gcnew
System::Windows::Forms::Label()); this->panel9 = (gcnew
System::Windows::Forms::Panel()); this->panel12 = (gcnew
Bunifu::Framework::UI::BunifuGradientPanel()); this->panel4 = (gcnew
System::Windows::Forms::Panel()); this->checkBox3 = (gcnew
System::Windows::Forms::CheckBox()); this->label9 = (gcnew
Trang 25>panel2 = (gcnew System::Windows::Forms::Panel());
this->checkBox2 = (gcnew System::Windows::Forms::CheckBox());
this->label8 = (gcnew System::Windows::Forms::Label());
this->CircleProgressbar2 = (gcnew Bunifu::Framework::UI::BunifuCircleProgressbar()); this->label5 = (gcnew System::Windows::Forms::Label());
>button2 = (gcnew System::Windows::Forms::Button());
>panel1 = (gcnew System::Windows::Forms::Panel());
this->checkBox1 = (gcnew System::Windows::Forms::CheckBox());
this->label7 = (gcnew System::Windows::Forms::Label());
this->CircleProgressbar1 = (gcnew Bunifu::Framework::UI::BunifuCircleProgressbar()); this->label4 = (gcnew System::Windows::Forms::Label());
this->button1 = (gcnew System::Windows::Forms::Button());
this->comboBox1 = (gcnew System::Windows::Forms::ComboBox());
this->comboBox2 = (gcnew System::Windows::Forms::ComboBox());
this->label2 = (gcnew System::Windows::Forms::Label());
this->label3 = (gcnew System::Windows::Forms::Label());
this->panel11 = (gcnew Bunifu::Framework::UI::BunifuGradientPanel());
this->label1 = (gcnew System::Windows::Forms::Label());
this->button4 = (gcnew Bunifu::Framework::UI::BunifuThinButton2());
this->panel10 = (gcnew Bunifu::Framework::UI::BunifuGradientPanel());
this->button5 = (gcnew Bunifu::Framework::UI::BunifuThinButton2());
this->button6 = (gcnew Bunifu::Framework::UI::BunifuThinButton2());
this->timer2 = (gcnew System::Windows::Forms::Timer(this->components));
this->panel3->SuspendLayout();
this->panel5->SuspendLayout();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->chart1))->BeginInit();this->panel8->SuspendLayout();
Trang 26>ActiveLineColor = System::Drawing::SystemColors::MenuHighlight;
>IdleFillColor = System::Drawing::Color::White;
>button8->IdleForecolor = System::Drawing::SystemColors::ActiveCaptionText;
>IdleLineColor = System::Drawing::Color::DodgerBlue;
this->button8->Location = System::Drawing::Point(378, 5); this->button8->Margin =
System::Windows::Forms::Padding(4); this->button8->Name = L"button8";
this->button8->Size = System::Drawing::Size(71, 41);
this->button8->TabIndex = 2;
>button8->TextAlign = System::Drawing::ContentAlignment::MiddleCenter;
this->button8->Click += gcnew System::EventHandler(this, &MyForm::button8_Click);//
this->label19->Size = System::Drawing::Size(259, 22);
this->label19->TabIndex = 1;
this->label19->Text = L"- HIỂN THỊ THÔNG TIN
THỰC:"; //
Trang 27>DisabledColor = System::Drawing::Color::Gray;
this->Dropdown1->ForeColor = System::Drawing::Color::White; this->Dropdown1->items =
gcnew cli::array< System::String^ >(0); this->Dropdown1->Location =
System::Drawing::Point(527, 10); this->Dropdown1->Margin =
System::Windows::Forms::Padding(4); this->Dropdown1->Name =
L"Dropdown1";
>Dropdown1->NomalColor = System::Drawing::SystemColors::MenuHighlight;
>Dropdown1->onHoverColor = System::Drawing::SystemColors::MenuHighlight;
Trang 28/ chart1
/
this->chart1->BackColor = System::Drawing::SystemColors::Control;
>LabelStyle->ForeColor = System::Drawing::Color::Blue;
chartArea1->AxisX->LineColor = System::Drawing::Color::Blue;
chartArea1->AxisX->MajorGrid->LineColor = System::Drawing::SystemColors::Control;
>LabelStyle->ForeColor = System::Drawing::Color::Blue;
chartArea1->AxisY->LineColor = System::Drawing::Color::Blue;
chartArea1->AxisY->MajorGrid->LineColor = System::Drawing::SystemColors::Control; chartArea1->BackColor = System::Drawing::SystemColors::Control;
chartArea1->BorderColor =
System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)),
static_cast<System::Int32>(static_cast<System::Byte>(64)));
chartArea1->Name = L"ChartArea1";
this->chart1->ChartAreas->Add(chartArea1); legend1->Enabled = false;
series1->BorderWidth = 2;
series1->ChartArea = L"ChartArea1";
series1->ChartType =
System::Windows::Forms::DataVisualization::Charting::SeriesChartType::SplineArea;series1->Legend = L"Legend1";
series1->Name = L"Series1";
series1->XValueType =
System::Windows::Forms::DataVisualization::Charting::ChartValueType::DateTime;series2->BackGradientStyle =
series2->Name = L"Series2";
series2->XValueType =
System::Windows::Forms::DataVisualization::Charting::ChartValueType::DateTime;series3->BackGradientStyle =
System::Windows::Forms::DataVisualization::Charting::GradientStyle::TopBottom;
series3->BorderColor = System::Drawing::Color::LightSkyBlue;
series3->BorderWidth = 2;
Trang 29series3->ChartArea = L"ChartArea1";
series3->ChartType =
System::Windows::Forms::DataVisualization::Charting::SeriesChartType::SplineArea;series3->Legend = L"Legend1";
series3->Name = L"Series3";
series3->XValueType =
System::Windows::Forms::DataVisualization::Charting::ChartValueType::DateTime;series4->BackGradientStyle =
series4->Name = L"Series4";
series4->XValueType =
System::Windows::Forms::DataVisualization::Charting::ChartValueType::DateTime;this->chart1->Series->Add(series1);
>Location = System::Drawing::Point(13, 11);
>Margin = System::Windows::Forms::Padding(2, 0, 2, 0);
/
download by : skknchat@gmail.com