CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG BỒN NƯỚC ĐƠN 1.1 Giới thiệu hệ thống bồn nước đơn Mô hình hệ bồn nước đơn là một mô hình kinh điển và là một mô hình đơn giản có độ phi tuyến trong lĩnh vực điều khiển tự động hóa. Để xây dựng và điều khiển hệ con lắc ngược tự cân bằng đòi hỏi người điều khiển phải có nhiều kiến thức về cơ khí lẫn điều khiển hệ thống. Với mô hình này sẽ giúp người điều khiển kiểm chứng được nhiều cơ sở lý thuyết và các thuật toán khác nhau trong điều khiển tự động.1 Mô hình mô tả hệ thống bồn nước đơn Nội dung đề tài chủ yếu tập trung nghiên cứu về giải thuật điều khiển và xây dựng mô hình hệ thống bồn nước đơn bao gồm 3 thành phần chính sau: Phần cơ khí: gồm 1 bồn nước đơn được làm bằng mica trong, 1 van xả để tạo nhiễu cho hệ thống, 1 động cơ bơm, 1 cầu H và 1 cảm biến siêu âm để đọc giá trị mực nước. Van nước được mở xả nước, cảm biến siêu âm có nhiệm vụ đọc giá trị mực nước hiện tại trong bồn.
Cầu H sẽ điều xung động cơ bơm, động cơ sẽ bơm liên tục để đảm bảo mực nước duy trì ở điểm đặt. Phần điện tử: gồm cảm biến siêu âm đọc giá trị mực nước, mạch khuếch đại công suất và mạch điều khiển trung tâm. Tín hiệu đọc từ cảm biến sẽ được truyền vi điều khiển Arduino Uno R3. Tùy thuộc vào tính hiệu đọc từ cảm biến siêu âm mà Arduino lập trình để xuất tín hiệu ngõ ra điều khiển động cơ bơm DC thông qua mạch khuếch đại công suất (mạch cầu H).
Phần chương trình: chương trình điều khiển được viết trên phần mềm Arduino IDE (Integrated Development Environment).2 Mô hình toán hệ thống bồn nước đơn Hình 1.2 Mô hình động lực học hệ thống bồn nước đơn Trong đó: a: tiết diện van xả (cm2) A: tiết diện ngang của bồn chứa (cm2) g: gia tốc trọng trường (cm2/sec) k: hệ số tỷ lệ với công suất máy bơm (cm3/sec) CD: hệ số xả Phương trình cân bằng hệ thống: Ay(t ) qin (t ) qout (t ) (1.3) Từ phương trình 1.3, ta suy ra phương trình toán của hệ thống là: 1 y(t ) (ku(t) aCD 2 gy(t ) (1.5) h max Phương trình 1.4 là hệ phi tuyến bậc 1. Đặt biến trạng thái: x1 (t ) y(t ) (1.6) Phương trình trạng thái của hệ thống là: 9 Luan van x(t ) f ( x(t ), u (t )) (1.3 Xây dựng mô hình toán hệ thống bồn nước đơn trên Matlab/Simulink Từ phương trình (1.5) ta xây dựng mô hình toán hệ thống bồn nước đơn phi tuyến trên Matlab/Simulink như sau: 1 y(t ) (ku(t) aCD 2 gy(t ) A(h) Amin A(h) Amax h Amin Với h max Hình 1.3 Mô hình toán hệ thống bồn nước đơn phi tuyến Bảng 1.1 Thông số mô phỏng hệ bồn nước đơn bỏ qua thông số động cơ Thông số Mô tả Đơn vị y (t ) Biến trạng thái 𝑢(𝑡) Điện áp điều khiển máy bơm 0≤u(t)≤12V theo thời gian 𝑦(𝑡) Độ cao mực chất lỏng trong cm bồn theo thời gian 10 Luan van A(h) Tiết diện ngang bồn chứa cm2 hmax Độ cao cực đại của bồn chứa cm Amax, Amin Tiết diện ngang cực đại và cực cm2 tiểu k Hệ số tỷ lệ với công suất máy cm3/sec bơm a Tiết diện van xả cm2 g Gia tốc trọng trường cm/sec2 CD Hệ số xả 11 Luan van CHƯƠNG 2: GIỚI THIỆU PHẦN CỨNG VÀ PHẦN MỀM Nội dung của chương bao gồm: Giới thiệu vi xử lý Arduino Uno R3 Giới thiệu phần mềm viết chương trình Arduino IDE Lý thuyết về Matlab 2.1 Giới thiệu về vi xử lý Arduino Uno R3 2.1 Khái niệm về vi điều khiển Vi điều khiển là một hệ thống được tích hợp trên một chip, bao gồm một vi xử lý có hiệu suất đủ dùng và giá thành thấp kết hợp với các khối ngoại vi như bộ nhớ, các module vào/ra, các module biến đổi ADC/DAC, bộ định thời.2 Giới thiệu về board Arduino Arduino được khởi động vào năm 2005 như là một dự án dành cho sinh viên trại Interaction Design Institute Ivrea (Viện thiết kế tương tác Ivrea) tại Ivrea, Italy. Cái tên "Arduino" đến từ một quán bar tại Ivrea, nơi một vài nhà sáng lập của dự án này thường xuyên gặp mặt. Mạch Arduino Uno là dòng mạch Arduino phổ biến, khi mới bắt đầu làm quen, lập trình với Arduino thì mạch Arduino thƣờng nói tới chính là dòng Arduino UNO.
Hiện dòng mạch này đã phát triển tới thế hệ thứ 3 (Mạch Arduino Uno R3). Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn ngữ riêng. Ngôn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung trên một môi trường phát triển tích hợp (IDE) chạy trên các máy tính cá nhân. Và Wiring lại là một biến thể của C/C++.
Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C++. Sau khi nền tảng Wiring hoàn thành, các nhà nghiên cứu đã làm việc với nhau để giúp nó nhẹ hơn, rẻ hơn, và khả dụng đối với cộng đồng mã nguồn mở. một trong số các nhà nghiên cứu là David Cuarlielles, đã phổ biến ý tưởng này. Những nhà thiết kế của Arduino cố gắng mang đến một phương thức dễ dàng, không tốn kém cho những người yêu thích, sinh viên và giới chuyên nghiệp để tạo ra những thiết bị có khả năng tương tác với môi trường thông qua các cảm biến và các cơ cấu chấp hành.
12 Luan van Thông tin thiết kế phần cứng được cung cấp công khai để những ai muốn tự làm một mạch Arduino bằng tay có thể tự mình thực hiện được (mã nguồn mở). Người ta ước tính khoảng giữa năm 2011 có trên 300 ngàn mạch Arduino chính thức đã được sản xuất thương mại, và vào năm 2013 có khoảng 700 ngàn mạch chính thức đã được đưa tới tay người dùng. Phần cứng Arduino gốc được sản xuất bởi công ty Italy tên là Smart Projects. Một vài board dẫn xuất từ Arduino cũng được thiết kế bởi công ty của Mỹ tên là SparkFun Electronics.
Nhiều phiên bản của Arduino cũng đã được sản xuất phù hợp cho nhiều mục đích sử dụng: Hình 2.1 Những phiên bản của Arduino 2.3 Board Arduino Uno R3 "Uno" có nghĩa là một bằng tiếng Ý và được đặt tên để đánh dấu việc phát hành sắp tới của Arduino 1. Uno và phiên bản 1.0 sẽ là phiên bản tài liệu tham khảo của Arduino. Uno là mới nhất trong các loại board Arduino, và các mô hình tham chiếu cho các nền tảng Arduino. Arduino Uno là một “hội đồng quản trị” dựa trên ATmega328.
Nó có 14 số chân đầu vào / đầu ra, 6 đầu vào analog, 16 MHz cộng hưởng gốm, kết nối USB, một jack cắm điện, một tiêu đề ICSP, và một nút reset. Nó chứa tất cả mọi thứ cần thiết để hỗ trợ 13 Luan van các vi điều khiển; chỉ cần kết nối nó với máy tính bằng cáp USB hoặc cấp điện cho nó để bắt đầu. Uno khác với tất cả các phiên bản trước ở chỗ nó không sử dụng các FTDI chip điều khiển USB-to-serial. Thay vào đó, nó có tính năng Atmega 16U2 lập trình như là một công cụ chuyển đổi USB-to-serial.
Arduino Uno R3 là dòng cơ bản, linh hoạt, thƣờng được sử dụng cho người mới bắt đầu. Chúng ta có thể sử dụng các dòng Arduino khác như: Arduino Mega, Arduino Nano, Arduino Micro… Nhưng với những ứng dụng cơ bản thì mạch Arduino Uno là lựa chọn phù hợp nhất.2 Board Arduino Uno R3 Phiên bản 3 (R3) của Uno có các tính năng mới sau đây: Thêm SDA và SCL gần với pin Aref và hai chân mới được đặt gần với pin RESET, các IOREF cho phép thích ứng với điện áp cung cấp. Đặt lại mạch khỏe mạnh hơn. Atmega 16U2 thay thế 8U2.4 Cấu trúc và thông số 14 Luan van Bảng 2.1 Một vài thông số của Board Arduino Uno R3 Vi điều khiển ATmega328 họ 8bit Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB) Tần số hoạt động 16 MHz Dòng tiêu thụ khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC Số chân Digital I/O 14 (6 chân hardware PWM) Số chân Analog 6 (độ phân giải 10bit) Dòng tối đa trên mỗi chân I/O 30 mA Dòng ra tối đa (5V) 500 mA Dòng ra tối đa (3.3V) 50 mA Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi bootloader SRAM 2 KB (ATmega328) EEPROM 1 KB (ATmega328) a.
Vi điều khiển & bộ nhớ Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168, ATmega328. Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ - độ ẩm và hiển thị lên màn hình LCD,… 15 Luan van Hình 2.3 Vi điều khiển Atmega328 tiêu chuẩn 32KB bộ nhớ Flash: những đoạn lệnh lập trình sẽ được lưu trữ trong bộ nhớ Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho bootloader nhưng đừng lo, hiếm khi nào cần quá 20KB bộ nhớ này. 2KB cho SRAM (Static Random Access Memory): giá trị các biến khai báo khi lập trình sẽ lưu ở đây.
Khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM. Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ phải bận tâm. Khi mất điện, dữ liệu trên SRAM sẽ bị mất. 1Kb cho EEPROM (Electrically Eraseble Programmable Read Only Memory): đây giống như một chiếc ổ cứng mini – nơi có thể đọc và ghi dữ liệu vào mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM.
Vị trí và các chân chức năng Nếu không có sẵn nguồn từ cổng USB, có thể cấp nguồn cho Arduino UNO từ một bộ chuyển đổi AC→DC hoặc pin. Các bộ chuyển đổi có thể được kết nối bằng một plug-2.1mm trung tâm tích cực vào jack cắm điện. Trường hợp cấp nguồn quá ngưỡng trên sẽ làm hỏng Arduino UNO. Các chân năng lượng: GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO.
Khi dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau. 5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA. Dòng tối đa ở chân này là 50mA.
16 Luan van Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, ta nối cực dương của nguồn với chân này và cực âm với chân GND. IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở chân này.