CHƯƠNG 4: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN
4.2 Sơ đồ hệ thống điều khiển
Hệ thống gồm có 4 nút nhấn, 1 mạch điều khiển ARDUINO, 2 mạch điều khiển động cơ BTS7960 để điều khiển 2 động cơ hai bên giúp robot di chuyển và dùng module để kích bật tắt động cơ bơm nước.
Hình 4. 1 Sơ đồ hệ thống điều khiển động cơ
Hệ thống điều khiển sử dụng vi điều khiển Arduino Mega để nhận tín hiệu từ các nút nhấn, sau đó Arduino Mega 2560 xử lý lệnh nhận được thì phát tín hiệu điều khiển 2 động cơ bánh xe thông qua các mạch điều khiển động cơ BTS7960, còn động cơ bơm thông qua relay trung gian.
Dựa trên sơ đồ hệ thống điều khiển ta suy ra thuật toán chuyển động tổng quan của robot và lưu đồ thuật toán cho robot:
Thuật toán chuyển động tổng quan của robot
Hình 4. 2 Sơ đồ thuật toán chuyển động của robot
Lưu đồ thuật toán cho robot
Hình 4. 3 Sơ đồ lưu đồ thuật toán của robot
Phần mềm lập trình Arduino IDE (Integrated Development Environment) là phần mềm
tích hợp mạnh mẽ với thiết kế đặc biệt dùng để lập trình, nạp chương trình cho các mạch vi điều khiển Arduino.Với giao diện đồ họa thân thiện và dễ sử dụng, Arduino IDE là công cụ lý tưởng cho cả người mới bắt đầu và những nhà phát triển kỳ cựu trong việc xây dựng các dự án điện tử và IoT.
Hình 4. 4 Giao diện chính của phần mềm Arduino IDE
Một trong những tính năng quan trọng của Arduino IDE là trình soạn thảo code. Trình
soạn thảo này cung cấp một môi trường thuận tiện để viết và chỉnh sửa code Arduino. Với tính năng tô màu cú pháp, code gợi ý và kiểm tra lỗi tự động, IDE giúp người dùng viết code chính xác và dễ đọc. Bên cạnh đó, nó hỗ trợ nhiều ngôn ngữ lập trình như C và C++, giúp mở rộng khả năng lập trình và tùy chỉnh của người dùng.
Arduino IDE cũng đi kèm với một bộ thư viện (library) phong phú, chứa các tài liệu và mã nguồn sẵn có để giúp người dùng thực hiện các chức năng phổ biến. Các thư viện này cung cấp các hàm và chức năng tiện ích đã được viết sẵn, giúp người dùng tiết kiệm thời gian và công sức trong quá trình phát triển dự án. Ngoài ra, người dùng cũng có thể tạo và quản lý các thư viện tùy chỉnh của riêng mình để tái sử dụng code trong các dự án sau này.
Arduino IDE hỗ trợ việc nạp code vào bo mạch Arduino một cách đơn giản. Với khả năng tương tác qua giao tiếp USB hoặc cổng nạp ISP, người dùng có thể nạp code và kiểm tra kết quả trực tiếp trên bo mạch. IDE cung cấp các công cụ gỡ lỗi (debugging) và giám sát (monitoring) thông qua cổng nối tiếp, giúp người dùng theo dõi và kiểm tra dữ liệu, trạng thái và tín hiệu từ bo mạch Arduino trong quá trình chạy.
Ngoài ra, Arduino IDE có một tính năng quan trọng là có khả năng mô phỏng chương trên máy tính.Thay vì kiểm tra bo mạch Arduino bằng cách nạp code thì người ta có sử dụng mô phỏng để chạy thử nghiệm chương trình trước khi mình nạp code trực tiếp cho bo mạch ngoài thực tế. Điều đó mang lại nhiều hữu ích giúp chúng tiết kiệm thời gian và giảm thiểu việc nạp lại quá nhiều cho bo mạch
Cùng với sự khả năng tùy chỉnh và linh hoạt thì Arduino IDE đã trở thành công cụ phổ
biến với dân lập trình và được ưa chuộng trong cộng đồng Arduino. Nó là nền tảng mở, cho phép người dùng chia sẻ code, thư viện và dự án của mình với cộng đồng Arduino, tạo ra một môi trường phát triển và học tập sáng tạo.
4.4. Giới thiệu một số thành phần hệ thống 4.4.1. Arduino Mega 2560
Arduino Mega 2560 là một bo mạch tích hợp nhiều tính năng đáng chú ý. Đầu tiên, nó có thiết kế hệ thống I/O rộng với 16 bộ chuyển đổi tương tự và 54 bộ chuyển đổi số hỗ trợ UART
và các chế độ giao tiếp khác. Thứ hai, Arduino Mega 2560 đi kèm với RTC tích hợp và nhiều tính năng khác như bộ so sánh, timer, và ngắt để kiểm soát hoạt động, giúp tiết kiệm điện năng và đạt được tốc độ xung cao lên đến 16 Mhz.
Hình 4. 5 Arduino Mega 2560
Bo mạch này cũng hỗ trợ JTAG để lập trình, gỡ lỗi và xử lý sự cố. Với bộ nhớ FLASH và SRAM lớn, Arduino Mega 2560 có khả năng xử lý các chương trình hệ thống lớn một cách mạnh mẽ. Nó cũng tương thích với nhiều loại bo mạch khác nhau, hỗ trợ tín hiệu mức cao (5V) hoặc tín hiệu mức thấp (3.3V) với chân nạp I/O.
Tính năng bảo vệ như Brownout và watchdog giúp làm cho hệ thống trở nên đáng tin cậy và mạnh mẽ hơn. Bo mạch cũng hỗ trợ ICSP và có khả năng lập trình vi điều khiển USB với PC.
Bảng 4.1 Thông số kỹ thuật của Arduino Mega 2560 R3 CH340
Arduino Mega 2560 R3 CH340 Đặc điểm và Tính năng
Vi điều khiển AVR ATmega 2560 (8bit)
Nguồn cung cấp 7-12V (Bộ điều chỉnh sẵn có cho bộ điều khiển)
Số chân I/O số 54
Số chân I/O tương tự 16
Xung clock 16 MHz ( nhà sản xuất cài đặt là 1MHz)
Giao tiếp USB (Lập trình với ATmega 8), ICSP (lập trình),
SPI, I2C và USART
Bộ Timer 2 (8bit) + 4 (16bit) = 6 Timer
PWM 12 (2-16 bit)
ADC 16 (10 bit)
USART 4
Ngắt thay đổi chân 24
Hình 4. 6 Sơ đồ các chân của Arduino Mega 2560 R3 CH340
Bảng 4. 1 Thông số các chân nguồn
VIN Cung cấp điện áp (7-12V)
GND Chân nối đất
Nguồn 5V Đối với nguồn cung cấp thiết bị phần cứng bên ngoài Nguồn 3.3V Đối với thiết bị phần cứng điện áp thấp bên ngoài
Các chân Điều Khiển:
- RESET: Chân reset của Arduino Mega 2560 có nút nhấn để thực hiện việc thiết
lập lại hệ thống. Nó có thể được sử dụng để kết nối với các thiết bị khác để đạt được việc thiết lập lại bộ điều khiển.
- XTAL1, XTAL2: Chân này kết nối với thạch anh (16MHz) và cung cấp xung clock cho bộ điều khiển.
- AREF: Chân này được sử dụng khi sử dụng ADC để chuyển đổi tín hiệu với điện áp tham chiếu bên ngoài, thay vì sử dụng điện áp tham chiếu nội bộ 1.1V hoặc 5V.
- Các Chân Digital (0-53): Các chân số từ 0 đến 53 (số) và 0 đến 15 (tương tự) có
thể được sử dụng làm đầu vào hoặc đầu ra cho các thiết bị được thiết lập bằng các hàm như Mode(), digitalWrite(), digitalRead().
Ứng Dụng:
- Thiết Bị Đầu Ra: Được sử dụng để kết nối với relay, LED, buzzer, LCD và các thiết bị đầu ra khác.
- Thiết Bị Đầu Vào: Sử dụng cho nút nhấn, cảm biến siêu âm, cần điều khiển và các thiết bị đầu vào khác.
Chân Tương Tự (16):
- Các chân từ 0-15 (Analog) có thể được sử dụng làm chân đầu vào tương tự cho bộ
ADC. Nếu không sử dụng, chúng có thể hoạt động như chân digital thông thường.
Được thiết lập bằng các hàm như PinMode() để khai báo chế độ chân, AnalogRead() để đọc trạng thái chân, và nhận giá trị số cho tín hiệu analog. Lưu ý cần chú ý khi chọn điện áp tham chiếu bên trong hoặc bên ngoài và chân Aref.
Ứng Dụng:
- Thiết Bị Đầu Vào: Sử dụng cho cảm biến nhiệt độ, cảm biến (như ldr, irled và độ ẩm), và các thiết bị đầu vào khác.
Chân Có Chức Năng Thay Thế:
Chân SPI:
- Chân 22-SS, 23-SCK, 24-MOSI, 25-MISO.
- Sử dụng cho giao tiếp nối tiếp với giao thức SPI để liên lạc giữa 2 thiết bị trở lên.
Ứng Dụng:
- Lập trình điều khiển AVR, giao tiếp với ngoại vi như LCD và thẻ SD.
Chân I2C:
- Chân 20 cho SDA và 21 cho SCK (Tốc độ 400kHz).
- Cho phép liên lạc hai dây với các thiết bị khác. Sử dụng hàm wire.begin() để bắt đầu chuyển đổi I2C, với wire.read() để đọc dữ liệu I2C và wire.write() để ghi dữ liệu I2C.
Ứng Dụng:
- Thiết Bị Đầu Ra: LCD và liên lạc giữa nhiều thiết bị với hai dây.
- Thiết Bị Đầu Vào: RTC và các thiết bị khác.
- Chân 2-13 có thể sử dụng làm đầu ra PWM với hàm analogWrite() để ghi giá trị PWM từ 0-255.
Ứng Dụng:
- Thiết Bị Đầu Ra: Điều khiển tốc độ của động cơ, ánh sáng mờ, PID cho hệ thống điều khiển hiệu quả.
Chân USART:
- Chân 0-RXD0, chân 1-TXD0, chân 19-RXD1, chân 18-TXD1, chân 17-RXD2, chân 16-TXD2, chân 15-RXD3, chân 14-TXD3.
- Sử dụng cho giao tiếp nối tiếp giữa bo mạch và máy tính hoặc hệ thống khác để chia sẻ và ghi dữ liệu. Sử dụng hàm serialBegin() để cài đặt tốc độ truyền và bắt đầu truyền thông với serial.println() để in mảng ký tự ra thiết bị khác.
Ứng Dụng:
- Bộ điều khiển truyền thông và máy tính.
Chân Ngắt:
- Chân Digital: 0, 22, 23, 24, 25, 10, 11, 12, 13, 15, 14.
- Chân Analog: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
- Sử dụng cho ngắt. Để kích hoạt chân ngắt, phải cài đặt bật ngắt toàn cục.
Ứng Dụng:
- Bộ mã hóa vòng quay, nút bấm dựa trên ngắt và các nút khác.
Chân Ngắt Phần Cứng:
- Chân 18-21, 2, 3 được sử dụng cho các ứng dụng ngắt. Ngắt phần cứng phải được bật với tính năng ngắt toàn cục.
Ứng Dụng:
- Nhấn nút cho chương trình ISR, đánh thức bộ điều khiển bằng thiết bị bên ngoài như cảm biến siêu âm và các thiết bị khác
Thành phần chính của Arduino Mega:
Nguồn DC: Nguồn điện cung cấp cho Arduino Mega có thể được cấp từ 7-12V thông qua
cổng nguồn. Arduino Mega R3 được trang bị bộ điều chỉnh điện áp cung cấp 5V và 3.3V cho vi điều khiển Arduino và các cảm biến.
Vi điều khiển AVR 2560: Đây là vi điều khiển chính được sử dụng để lập trình và điều khiển các nhiệm vụ của hệ thống. AVR 2560 đóng vai trò là "bộ não" của hệ thống, giữ vai trò quan trọng trong việc điều khiển các thiết bị khác trên mạch.
Vi điều khiển ATmega8: Vi điều khiển này chịu trách nhiệm về việc giao tiếp giữa bộ điều khiển chính và các thiết bị khác. Nó được lập trình để thực hiện giao tiếp qua USB và tính năng lập trình nối tiếp.
ICSP 1 (ATmega8) và 2 (AVR 2560): Cổng ICSP (In-Circuit Serial Programming) 1 kết nối đến ATmega8 và cổng ICSP 2 kết nối đến AVR 2560. Các cổng này hỗ trợ chức năng lập
trình sử dụng bus nối tiếp thông qua giao tiếp SPI (Serial Peripheral Interface). AVR 2560 được lập trình để thực hiện chức năng chính của hệ thống, trong khi ATmega 8 được lập trình để giao tiếp và thực hiện lập trình nối tiếp.
Hình 4. 7 Sơ đồ chân lập trình nối tiếp mạch ISCP
4.4.2. Mạch điều khiển BTS7960
Mạch điều khiển BTS7960 là một mô-dun điều khiển động cơ DC, cầu H dòng cao tích hợp đầy đủ cho các ứng dụng truyền động động cơ cần sử dụng dòng cao.
Mạch này chứa một MOSFET bên cao kênh P và một MOSFET bên thấp kênh N, với một vi mạch trình điều khiển tích hợp trong một gói. Việc giao tiếp với vi điều khiển được thực hiện dễ dàng nhờ vi mạch điều khiển tích hợp có các đầu vào mức logic, bảo vệ chống quá nhiệt, quá áp, quá dòng và ngắn mạch...[3]
Hình 4. 8 Mạch điều khiển BTS7960 Bảng 4. 2 Thông số kỹ thuật của mạch điều khiển BTS7960 Điện áp cung cấp 6 ~ 27 VDC
Dòng tải cao 45A
Hoạt động Tự động ngắt khi áp dưới 5.5V và tự động mở lại khi áp lớn
hơn 5.5V
Kích thước 50x50mm
Tần số điều khiển tối đa 25KHz.
Tính năng Bảo vệ chống quá nhiệt bằng cảm biến nhiệt tích hợp bên
trong. Đầu ra sẽ bị ngắt khi có hiện tượng quá nhiệt.
Hình 4. 9 Sơ đồ chức năng của chân BTS7960 Bảng 4. 3 Chức năng các chân của mạch điều khiển BTS7960 RPWM Chân đảo chiều hoặc cấp PWM nửa cầu phải, Mức tích cực cao LPWM Chân đảo chiều hoặc cấp PWM nửa cầu trái, Mức tích cực cao R_EN 0 Disable nửa cầu phải, 1 Enable nửa cầu phải
L_EN 0 Disable nửa cầu trái, 1 Enable nửa cầu trái.
R_IS Giới hạn dòng nửa cầu phải.
L_IS Giới hạn dòng nửa cầu trái
VCC 5VDC
GND 0VDC
4.4.3. Module Relay 5v 1 kênh
Gồm có 1 role hoạt động ở điện áp 5VDC, đầu ra điển khiển động cơ có mức điện áp không quá 250v và dòng tối đa là 10A cho điện xoay chiều AC còn dòng điện áp 1 chiều DC
là 30V. Module relay 5v 1 kênh nhỏ gọn và đẹp mắt, được thiết kế với khả năng chống nhiễu và cách điện rất tốt. Mạch kích relay trong module sử dụng IC cách ly quang và transistor, giúp hoàn toàn cách điện mạch vi điều khiển với rơ le, đảm bảo vi điều khiển hoạt động ổn định.Module có sẵn header thuận tiện để kết nối với vi điều khiển, và cũng có các lỗ bắt vít
thấp (0V). Khi có tín hiệu 0V vào chân IN, relay sẽ chuyển sang trạng thái thường mở của nó.Module relay 1 kênh này có nhiều ứng dụng, bao gồm cả điện DC và AC.
Hình 4. 10 Module relay 1 kênh Bảng 4. 4 Thông số số kỹ thuật của Module relay 1 kênh
Sử dụng điện áp DC 5V.
Relay tiêu thụ dòng Khoảng 80mA.
Điện thế đóng ngắt tối đa AC250V ~ 10A hoặc DC30V ~ 10A.
Relay có đèn báo Đóng ngắn
Chọn mức tín Kích 0 hoặc 1 qua jumper.
Kích thước 5.0 cm x 2.6 cm x 1.9 cm
Trọng lượng 17g
4.4.4. Động cơ bơm 365
Bảng 4. 5 Thông số số kỹ thuật của Động cơ bơm 365
Điện áp hoạt động 12VDC
Dòng không tải 0,23A
Lưu lượng 2-3 lít / phút (12V)
Áp suất đầu ra 1-2,5 kg
Độ sâu hút đạt được 1-2,5 mét
Tuổi thọ hoạt động 2-3 năm
Trọng lượng lượng 111g
Hình 4. 11 Động cơ bơm 365
4.5. Sơ đồ nguyên lý mạch điều khiển
Từ sơ đồ hệ thống điều khiển và các thành phần hệ thống ta suy ra sơ đồ nguyên lý mạch điều khiển như sau: