MỤC LỤC CHƯƠNG 1 GIỚI THIỆU VỀ HỆ THỐNG CÂN BẰNG BALL AND BEAM 6 1 1 Tổng quan về hệ thống cân bằng ball and beam 6 1 2 Phương pháp điều khiển 6 1 3 Ý tưởng kết cấu và sơ đồ của hệ thống 7 1 3 1 Sơ đồ khối chức năng của thệ thống 7 CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG CÂN BẰNG BALL BEAM 9 2 1 phân tích hệ thống 9 2 2 Thiết kế bộ điều khiển và thiết kế phần cứng 9 2 2 1 Bộ điều khiển PID 9 2 2 2 Thiết kế cơ khí 11 2 2 3 Lưu đồ thuật toán 11 2 3 Giới thiệu các linh kiện trong mạch 14 CHƯƠNG 3 T.
Trang 1MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU VỀ HỆ THỐNG CÂN BẰNG BALL AND
BEAM
1.1 Tổng quan về hệ thống cân bằng ball and beam
1.2 Phương pháp điều khiển
1.3 Ý tưởng kết cấu và sơ đồ của hệ thống
1.3.1 Sơ đồ khối chức năng của thệ thống
CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG CÂN BẰNG BALLBEAM
2.1 phân tích hệ thống
2.2 Thiết kế bộ điều khiển và thiết kế phần cứng
2.2.1 Bộ điều khiển PID
2.2.2 Thiết kế cơ khí
2.2.3 Lưu đồ thuật toán
2.3 Giới thiệu các linh kiện trong mạch
CHƯƠNG 3 THỰC THI VÀ TRIỂN KHAI SẢN PHẨM
3.1 Mô hình sản phẩm
3.2 Code chương trình
Trang 2DANH MỤC BẢNG BIỂU VÀ HÌNH VẼ
Hình 1.1 kết cấu hệ thống
Hình 1.2 Sơ đồ hệ thống ball and beam
Hình2.1 Sơ đồ khối của bộ điều khiển PID
Bảng 2.1 Bảng đặt tính luật điều khiển PID
Hình 2.2 Mô hình thiết kế trên SolidWork
Hình 2.3 Sơ đồ khối điều khiển chính
Hình 2.4 Sơ đồ khối điều khiển PID
Hình 2.5 Sơ đồ khối điều khiển góc quay động cơ
Hình 2.6 Vi xử lí Arduino UNO R3
Bảng 2.2 Thông số cơ bản arduino UNO R3
Hình 2.7 Các cổng vào ra
Hình 2.8 LCD 16x2
Hình 2.9 Sơ đồ chân của LCD 16x2
Hình 2.10 Sơ đồ chân của I2C
Bảng 2.3 Sơ đồ nối chân giữa i2c lcd với Arduino
Hình 2.11 Sơ đồ đấu nối giao tiếp IC2 với LCD 16x2
Hình 2.12 Bảng cấu hình sảm phẩm
Hình 2.13 Động Cơ RC Servo MG996R bánh răng đồng
Hình 2.14 Sơ đồ của một động cơ servo RC
Hình 2.14 Điều khiển động cơ Servo MG996R với Arduino
Hình 2.15 Sơ đồ mạch điều khiển Arduino
Hình 2.16 Cảm biến khoảng cách IR SHARP GP2Y0A21YK0FHình 2.17 Kích thước Cảm biến khoảng cách IR SHARP
GP2Y0A21YK0F
Hình 2.18 Đặc tính đo khoảng cách (đầu ra)
Hình 2.19 Cảm biến khoảng cách IR GP2Y0A21YK0F với sơ đồ đấu dây Arduino
Trang 3Hình 2.20 Sơ đồ chân cảm biến khoảng cách IR
GP2Y0A21YK0F SHARP
Hình 3.1 mô hình sản phẩm
CHƯƠNG 1: GIỚI THIỆU VỀ HỆ THỐNG CÂN BẰNG
BALL AND BEAM.
1.1 Tổng quan về hệ thống cân bằng ball and beam
Hệ thống cân bằng bóng trên thanh là một mô hình thực
nghiệm quen thuộc, với cấu tạo vật lý khá đơn giản nhưng
tương đối phức tạp về mặt động lực học Nó có độ bất ổn định cao và là cơ sở để tạo ra các hệ thống tự cân bằng như: hệ thống phóng tên lửa, cân bằng máy bay theo phương ngang, xe
tự hành…Nó thường liên quan đến các vấn đề kiểm soát thực tếnhư ổn định theo chiều ngang của máy bay khi hạ cánh trong luồng không khí hỗn loạn
Mô hình ball and beam được sử dụng nhiều trong các phòng thí nghiệm của các trường trên thế giới Mục đích của hệ thống này
là cân bằng được quả bóng trên thanh ngang dưới tác động củangoại cảnh, mô hình dùng cảm biến để phát hiện vị trí của quả bóng cũng có thể sử dụng camera với kỹ thuật xử lý ảnh để phát hiện vị trí quả bóng, hệ thống còn dùng một động cơ để điều khiển góc quay của thanh ngang ngoài ra còn có thể sử dụng thêm cảm biến tra và góc nghiêng
Thanh có thể được làm bằng nhiều chất liệu khác nhau như gỗ, nhựa, meca, nhôm Chiều dài tùy vào người thiết kế Quả bóng thông thường hình cầu có kích thước đủ lớn để cảm biến có thể xác định được có thể được làm bằng nhựa, sắt Cảm biến xác định vị trí có thể là cảm biến siêu âm, hồng ngoại, dây điện trở hoặc camera, ngoài ra còn có cảm biến xác định góc nghiêng Động cơ có thể là động cơ encoder hoặc servo
1.2 Phương pháp điều khiển
Sử dụng cảm biến khoảng cách xác định vị trí quả bóng trên thanh, truyền tín hiệu về Board mạch Arduino Thuật toán PID được tích hợp sẵn trong Arduino để xử lý sự khác biệt về tín hiệu giữa vị trí mong muốn và thực thành tín hiệu điều
Trang 4khiển Arduino gửi tín hiệu điều khiển đến động cơ servo xoay
để thay đổi vị trí bóng và đáp ứng khoảng cách mong muốn
1.3 Ý tưởng kết cấu và sơ đồ của hệ thống.
Hình 1.1 kết cấu hệ thống
1.3.1 Sơ đồ khối chức năng của thệ thống
beam
Cảm biếnkhoảng cáchball
Động cơservo
Cảm biến khoảng cách:
IR SHARP GP2Y0A21YK0F
LCD hiển thị Khối VXL –
VĐK
Trang 5Hình 1.2 Sơ đồ hệ thống ball and beam.
• Chức năng của từng khối.
- Nguồn cấp: có chức năng biến đổi dòng điện xoay chiều 220v thành dòng một chiều cung cấp cho các khối hoạt động
- Bộ điều khiển: có chứa vi điểu khiển Arduino uno r3 Nhận tín hiệu từ khối cảm biến đưa về, cho hiển thị trên màn hình LCD và điều khiển động cơ servo
- LCD hiển thị: hiển thị thông tin khối điều khiển đưa tới
- Động cơ servo MG996R: Nhận tín hiệu từ khối VXL – VĐK để điều khiển hệ thống
Động cơservo:
Nguồn cấp
Trang 6CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
CÂN BẰNG BALL BEAM
2.1 phân tích hệ thống
Vị trí bóng được xác định nhờ cảm biến, vi điều khiển arduino
đã được tích hơp bộ điều khiển PID, nhận được sai lệch giữa vịtrí bóng trên thanh và vị trí bóng mong muốn, từ đó chỉnh cácthông số Kp , Ki và Kd để đưa ra tín hiệu điều khiển động cơthay đổi góc nghiêng của thanh đưa bóng về vị trí mong muốn.Kết quả là hệ thống ổn định, độ vọt lố thấp cho thấy bóng cânbằng rất nhanh sau khi tác động nhiễu sử dụng bộ điều khiểnPID không quá phức tạp về mặt giải thuật và đáp ứng nhanhtrong thời gian thực để cân bằng quả bóng trên thanh
2.2 Thiết kế bộ điều khiển và thiết kế phần cứng
2.2.1 Bộ điều khiển PID
Giải thuật tính toán PID hay còn gọi là bộ điều khiển ba khâu,bao gồm: Propotional (tỉ lệ), Integral (tích phân) và Derivative(đạo hàm) Giá trị tỉ lệ xác định tác động của sai số hiện tại, giátrị tích phân xác định tác động của tổng các sai số quá khứ vàgiá trị vi phân xác định tác động của tốc độ biến đổi sai số.Tổng chập của ba tác động này dùng để điều chỉnh quá trìnhthông qua một phần tử điều khiển Nhờ vậy, những giá trị này
có thể làm sáng tỏ về quan hệ thời gian: P phụ thuộc vào sai sốhiện tại, I phụ thuộc vào tích lũy các sai số quá khứ và D dựđoán các sai số tương lai, dựa vào tốc độ thay đổi hiện tại
Trang 7Hình 2.1 Sơ đồ khối của bộ điều khiển PID
Trong đó:
Setpoint : là giá trị mong muốn đạt được tại ngõ ra của đối tượng điều khiển
Process variable : tín hiệu hồi tiếp mà bộ điều khiên nhận được
từ đối tượng điều khiển
Control variable : giá trị ngõ ra của bộ điều khiển
Error: giá trị sai lệch giữa giá trị đặt và giá trị hiện tại ở ngõ ra của đối tượng điều khiển
Output : đại lượng vật lý cần điều khiển
Bộ điều khiển PID có thể biểu diễn theo phương trình sau:
Ta chọn các hệ số PID bằng phương pháp tinh chỉnh bằng tay dựa trên bảng đặt tính bộ điều khiển PID:
Trang 8Thông số Thời gian
quá độ Độ vọt lố Thời gian đáp ứng Sai số ổn định
Bảng 2.1 Bảng đặt tính luật điều khiển PID
Chọn Kp trước: Thử bộ điều khiển P với hệ thống cân bằng bóngtrên thanh điều chỉnh Kp sao cho thời gian đáp ứng đủ nhanh, chấp nhận độ vọt lố nhỏ
Thêm thành phần D để loại bỏ độ vọt lố, tăng Kd từ từ, thử nghiệm và chọn giá trị thích hợp Sai số ổn định (State-steady error) có thể sẽ xuất hiện
Thêm thành phần I để giảm sai số ổn định Tăng Ki từ bé đến lớn để giảm sai số ổn định, đồng thời không để cho độ vọt lố xuất hiện trở lại
Trang 92.2.2 Thiết kế cơ khí
Hình 2.2 Mô hình thiết kế trên SolidWork
2.2.3 Lưu đồ thuật toán
Giải thích: Hàm millis() có nhiệm vụ trả về một số là thời gian(tính theo mili giây) kể từ lúc mạch Arduino bắt đầu chươngtrình Đầu tiên ta khởi tạo biến time và cho time = millis() làthời gian bắt đầu chương trình, biến t là thời gian lấy mẫu Câulệnh millis > (time + t) nghĩa là thời gian hiện tại của hệ thống
mà lớn hơn thời gian ban đầu và thời gian lấy mẫu thì sẽ bắtđầu tính toán PID
• Sơ đồ khối điều khiển chính
Khai báo các thư viện
<LiquidCrystal_I2C.h>,
<Wire.h>, <Servo.h>,
<SharpIR.h>
Trang 10đúng
Hình 2.3 Sơ đồ khối điều khiển chính
• Sơ đồ khối điều khiển PID
Thiết lâp tín hiệu Serial=9600Khởi tạo Kp, Ki, Kd, diemdat, time, tKhởi tao cm, PID_p,PID_i, PID_D, PID-_total
Trang 11đúng
Hình 2.4 Sơ đồ khối điều khiển PID
• Sơ đồ khối điều khiển góc quay động cơ
PID_p=kp *loi_khoang_cach
PID_d = kd *(loi_khoang_cach -loi_koang_cach_truoc)/t
-3 < loi_khoang_cach && loi_khoang_cach
Khai báo thư viện Servo.h
Cấu hình chân PWM (pin9)
để điều khiển
Trang 12Hình 2.5 Sơ đồ khối điều khiển góc quay động cơ
2.3 Giới thiệu các linh kiện trong mạch
Trang 13Hình 2.6 Vi xử lí Arduino UNO R3
• Một vài thông số của arduino UNO R3.
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Đ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
Trang 14• Bộ nhớ.
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
- 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong
bộ nhớFlash của vi điều khiển
- 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạnkhai báo khi lập trình sẽ lưu ở đây Khi mất điện, dữ liệu trên SRAM sẽ bịmất
- 1KBchoEPROM (Electrically Eraseble Programmable Read Only Memory): đây giống như một chiếc ổ cứng mini có thể đọc và ghi dữ liệu củavào đây mà không bị mất khi mất điện giống như dữ liệu trên SRAM
Trang 15• Cổng vào ra
Hình 2.7 Các cổng vào raArduino 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 vào/ra tối đa trên mỗi chân là 40mA Ởmỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiểnATmega328 (mặc định thì các điện trở này không được kết nối)
• Một số chân digital có các chức năng đặc biệt như sau:
- 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận
(receive – RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bịkhác thông qua 2 chân này Kết nối bluetooth thường thấy nói nôm na chính làkết nối Serial không dây Nếu không cần giao tiếp Serial, bạn không nên sửdụng 2 chân này nếu không cần thiết
- Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ
phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm
Trang 16analogWrite() Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ởchân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như nhữngchân khác.
- Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài các
chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giaothức SPI với các thiết bị khác
- LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi bấm
nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân số
13 Khi chân này được người dùng sử dụng, LED sẽ sáng
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit(0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V Với chân AREF trên
board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog.Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chânanalog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit.Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếpI2C/TWI với các thiết bị khác
Màn hình LCD.
Ngày nay, thiết bị hiển thị LCD (Liquid Crystal Display) được sử dụng trong rấtnhiều các ứng dụng của Vi điều khiển LCD có rất nhiều ưu điểm so với cácdạng hiển thị khác: Nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và
kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giaotiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ
Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, LCD 1602
(HD44780) là loại LCD thông dụng.
Trang 17Hình 2.8 LCD 16x2Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bêntrong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết Các chân này được đánh sốthứ tự và đặt tên như hình dưới đây :
Hình 2.9 Sơ đồ chân của LCD 16x2
- VSS: tương đương với GND - cực âm
- VDD: tương đương với VCC - cực dương (4.7V – 5.3V)
Trang 18- Constrast Voltage (Vo): điều khiển độ sáng màn hình
- Register Select (RS): điều khiển địa chỉ nào sẽ được ghi dữ liệu
- Read/Write (RW): Bạn sẽ đọc (read mode) hay ghi (write mode) dữ liệu? Nó
sẽ phụ thuộc vào bạn gửi giá trị gì vào
- Enable pin: Cho phép ghi vào LCD
- D0 - D7: 8 chân dư liệu, mỗi chân sẽ có giá trị HIGH hoặc LOW nếu bạn đang
ở chế độ đọc (read mode) và nó sẽ nhận giá trị HIGH hoặc LOW nếu đang ở chế độ ghi (write mode)
- Backlight (Backlight Anode (+) và Backlight Cathode (-)): Tắt bật đèn màn hình LCD
Mạch chuyển đổi I2C cho LCD
LCD có quá nhiều chân gây khó khăn trong quá trình kết nối và chiếm dụngnhiều chân của vi điều khiển? Module chuyển đổi I2C cho LCD sẽ giải quyếtvấn đề này cho bạn, thay vì sử dụng tối thiểu 6 chân của vi điều khiển để kết nốivới LCD (RS, EN, D7, D6, D5 và D4) thì với module chuyển đổi bạn chỉ cần sửdụng 2 chân (SCL, SDA) để kết nối Module chuyển đổi I2C hỗ trợ các loạiLCD sử dụng driver HD44780 (LCD 1602, LCD 2004, … ), kết nối với vi điềukhiển thông qua giao tiếp I2C, tương thích với hầu hết các vi điều khiển hiệnnay
- Giao tiếp: I2C
- Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2)
- Kích thước: 41.5mm(L)x19mm(W)x15.3mm(H)
Trang 19- Trọng lượng: 5g
- Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt
- Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD
Hình 2.10 Sơ đồ chân của I2C
• Giao tiếp i2c lcd với Arduino:
Trang 20Hình 2.11 Sơ đồ đấu nối giao tiếp IC2 với LCD 16x2.
Động cơ Servo MG996R.
Động cơ RC Servo MG996 là loại thường được sử dụng nhiều nhất trong cácthiết kế Robot hoặc dẫn hướng xe Động cơ RC Servo MG996 có lực kéo mạnh,các khớp và bánh răng được làm hoàn toàn bằng kim loại nên có độ bền cao,động cơ được tích hợp sẵn Driver điều khiển động cơ bên trong theo cơ chế phátxung - quay góc nên rất dễ sử dụng
• Thông số kỹ thuật của Động Cơ RC Servo MG996R
- Servo MG996R (nâng cấp MG995) có momen xoắn lớn
- Momen làm việc : 11kg/cm (tại điện áp 6V) , 9.4kg/cm (tại điện áp 4.8V)
- Đây là bản nâng cấp từ servo MG995 về tốc độ, lực kéo và độ chính xác
- Phù hợp với máy bay cánh quạt loại 50 -90 methanol và máy bay cánh cố địnhxăng 26cc-50cc
- So với MG946R, MG996R nhanh hơn, nhưng hơi nhỏ hơn
- Tốc độ xoay: 0.17 giây / 60 độ (4.8 v) 0.14 giây / 60 độ (6 v)
- Điện áp làm việc: 4.8-7.2V
- Nhiệt độ hoạt động: -30 ℃ ~ 60 ℃
- Chiều dai dây: 30cm, dây nâu đỏ là 2 dây nguồn, dây vàng là dây tín hiệu
- Vật liệu bánh răng: Kim loại
- Trọng lượng: 65g
Trang 21Hình 2.12 Bảng cấu hình sảm phẩm
Hình 2.13 Động Cơ RC Servo MG996R bánh răng đồng
Trang 22• Cách hoạt động của động cơ Servo MG996R
Một servo tiêu chuẩn thường bao gồm một động cơ điện nhỏ, một chiết áp, thiết
bị điện tử điều khiển và hộp số Vị trí của trục đầu ra được đo liên tục bằngchiết áp bên trong và so sánh với vị trí đích do bộ điều khiển đặt (ví dụ:Arduino) Thiết bị điện tử điều khiển điều chỉnh vị trí thực tế của trục đầu ra để
nó khớp với vị trí mục tiêu Đây được biết đến như một hệ thống điều khiểnvòng kín Hộp số giảm tốc độ của động cơ làm tăng mômen xoắn ở trục đầu ra.Tốc độ tối đa của trục đầu ra thường vào khoảng 60 RPM
Hình 2.14 Sơ đồ của một động cơ servo RC
• Kiểm soát Servo:
Động cơ servo được điều khiển bằng cách gửi tín hiệu PWM (điều chế độ rộngxung) đến đường tín hiệu của servo Chiều rộng của các xung xác định vị trí củatrục đầu ra Khi bạn gửi tín hiệu cho servo có độ rộng xung là 1,5 mili giây(ms), servo sẽ di chuyển đến vị trí trung tính (90 độ) Vị trí tối thiểu (0 độ) vàtối đa (180 độ) thường tương ứng với độ rộng xung tương ứng là 1 ms và 2 ms
Trang 23Lưu ý rằng điều này có thể hơi khác nhau giữa các loại và nhãn hiệu động cơservo khác nhau (ví dụ: 0,5 và 2,5 ms) Nhiều servo chỉ xoay qua khoảng 170
độ (hoặc thậm chí chỉ 90) nhưng vị trí giữa hầu như luôn ở mức 1,5 ms Động
cơ servo thường mong đợi một xung sau mỗi 20 mili giây hoặc 50 Hz nhưngnhiều servo RC hoạt động tốt trong phạm vi từ 40 đến 200 Hz
• Điều khiển động cơ Servo MG996R với Arduino
Là một động cơ servo mô-men xoắn cao có bánh răng kim loại với mô-menxoắn 10 kg-cm Mô-men xoắn cao có dòng ổn định của servo là 2.5A Dòngđiện chạy từ 500mA đến 900mA và điện áp hoạt động từ 4,8 đến 7,2V