Lựa chọn các thiết bị

Một phần của tài liệu (Đồ án tốt nghiệp) THIẾT kế và CHẾT tạo ROBOT vận CHUYỂN THỰC PHẨM (Trang 35)

4.2.1 Vi điều khiển

Hình 4:21 : Vi điều khiển arduino uno r3

Arduino là loại vi điều khiển phổ biến trên thị trường do có những ưu điểm như: dễ sử dụng, có nhiều nguồn tài liệu hỗ trợ. Phần mềm biên dịch Arduino IDE sử dụng ngôn ngữ C++. Do đó sử dụng Arduino sẽ thuận lợi khi lập trình

Vi điều khiểnATmega328 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) Sinh viện thực hiện :

Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm

4.2.2 Mạch điều khiển động cơ L298N

Hình 4:22 : Module điều khiển đọng cơ L298

 Thông số kĩ thuật:

Driver: L298N tích hợp hai mạch cầu H. Điện áp điều khiển: +5 V ~ +12 V

Dòng tối đa cho mỗi cầu H là: 2A (=>2A cho mỗi motor) Điện áp của tín hiệu điều khiển: +5 V ~ +7 V

Dòng của tín hiệu điều khiển: 0 ~ 36mA (Arduino có thể chơi đến 40mA nên khỏe re nhé các bạn)

Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃) Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃

 L298N gồm các chân

12V power, 5V power. Đây là 2 chân cấp nguồn trực tiếp đến động cơ. Bạn có thể cấp nguồn 9-12V ở 12V.

Bên cạnh đó có jumper 5V, sẽ có nguồn 5V ra ở cổng 5V power, ngược lại thì không. Ta chỉ cần cấp nguồn 12V vô ở 12V power là có 5V ở 5V power, từ đó cấp cho Arduino

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm

Power GND chân này là GND của nguồn cấp cho Động cơ. Nếu dùng Arduino thì nhớ nối với GND của Arduino

2 Jump A enable và B enable là chân băm xung của arduino

Gồm có 4 chân Input. IN1, IN2, IN3, IN4 là các chân đầu vào cấp từ vi điều khiển. Output A: nối với động cơ A.

Hình 4:23 : Datasheet L298N

4.2.2 LCD 16x2 và giao tiếp với I2C

 Thông số kỹ thuật LCD 16×2

LCD 16×2 được sử dụng để hiển thị trạng thái hoặc các thông số.

LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển (RS, RW, EN).

5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.

Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ dữ liệu.

Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi.

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm

Hình 4:24 : Màn hình LCD 1602

 I2C

LCD có quá nhiều nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển.

Hình 4:25 : Module giao tiếp I2C

Module I2C LCD ra đời và giải quyết vấn để này . Sinh viện thực hiện :

Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm

Thay vì phải mất 6 chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối.

Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) và tương thích với hầu hết các vi điều khiển hiện nay.

 Thông số kĩ thuật

Điện áp hoạt động: 2.5-6V DC.

Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780). 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). 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.

 Giao tiếp I2C LCD Arduino

Module I2C LCD 16×2 với Arduino UNO GND GND VCC 5V SDA A4/SDA SCLA5/SCL  Nguồn cấp Hình 4:26 : Nguồn cấp Tổng điện áp là 12.6V

Cường độ dòng điện là 2600mAh Có thể sạc đi sạc lại

Tổng công suất là 12.6 * 2.6=33Wh

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm

4.3. Ghép nối từng thành phần vào vi điều khiển

 Phân tích cách kết nối các linh kiện: Đầu tiên là LCD và I2C với vi điều khiển:

Ghép tất cả các chân I2C với LCD và các chân SDA với SCL vào các chân A4 và A5 của vi điều khiển

Tiếp theo là L298N với vi điều khiển:

Các chân int1, int2, int3, int 4 ghép nối vào các chân 7,6,5,4 vào vi điều khiển Các chân output1, output2, output3, output4 là đầu ra của động cơ cấp nguồn cho động cơ quay

Chân enA và enB là chân băm xung cấp lượng điện áp cho động cơ chạy sẽ được ghép nối vào chân số 9 và chân 11 của vi điều khiển

Hai chân trả về xung A và xung B của encoder sẽ được đầu vào chân 2(INT0) và 3 (INT1)

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Bùi Thanh Vạn 18CDT2 Người hướng dẫn: TS Lê Đoàn Anh 25

Thiết kế và chế tạo robot vân chuyển thực phẩm

4.4. Lập trình và mô phỏng4.4.1 Thuật toán 4.4.1 Thuật toán

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Bùi Thanh Vạn 18CDT2 Người hướng dẫn: TS Lê Đoàn Anh 26

Lưu đồ 1 : Lưu đồ encoder Giải thích thuật toán:

Chúng ta sẽ ngắt kênh A để gọi hàm encoder để đếm số xung trong thời gian lấy mẫu, đọc kênh B ở mức high hoặc low để biết được chiều quay của động cơ

Thiết kế và chế tạo robot vân chuyển thực phẩm

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Bùi Thanh Vạn 18CDT2 Người hướng dẫn: TS Lê Đoàn Anh 27

Thiết kế và chế tạo robot vân chuyển thực phẩm

Giải thích chương trình:

Chúng ta cài đặt giá trị Kp,Ki,Kd . Tốc độ sẽ được đếm từ số xung lần sau so với số xung lần trước qua 1 thời gian lấy mẫu. Khi số xung sau bằng xung trước đó ta tính ra được tốc độ phản hổi đọc từ encoder và giá trị đó được trừ tốc độ đặt.

Bộ 3 khâu P,I,D được tính trên lưu đồ thuật toán giá trị đó sẽ cập nhật giá trị của pwm đưa vào động cơ và được thể hiện rõ trên hình

Lưu đồ 3:Lưu đồ cơ bản cho xe tự hành

Giải thích chương trình:

Chúng ta sẽ đọc giá trị từ encoder, tìm ra sự chênh lệch vận tốc và đưa ra so sánh. PID có nhiệm vụ đưa sai số về nhỏ nhất và điều khiển vận tộc bám theo vận tốc cho trước.

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm

4.4.2 lập trình trên phần mềm

#include <Wire.h>

#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,4); // khai bao bien

#define in1 6 #define in2 7 #define ena 9 #define in3 4 #define in4 5 #define enb 11 long last=0; float vantocthuc=0,vantoc; float vantocdat=100;;

volatile unsigned long xung=0; float E=0; float E1=0; float E2=0; long a=0; long b=0; long c=0; long d=0; #define encodPinA 2 #define encodPinB 3 #define Kp 0.12//0.01 #define Kd 0.03// 0.0033 #define Ki 0.04 //0.004 float alpha =0; float beta =0; float gama =0; long Output=0;

volatile long LastOutput=0; float T =1000;

int PWM_val;

//Khai báo chân tín hiệu cho motor B int pwm=0; // đọc giá trị mức kênh B void encoder() { if(digitalRead(encodPinB) == 1) {

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm xung ++; } else { xung--; } } // cài đặt các chân void setup() { pinMode(ena, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(enb, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); delay(10); lcd.init(); lcd.backlight(); delay(100); pinMode(encodPinA,INPUT); pinMode(encodPinB,INPUT);

attachInterrupt(0,encoder,FALLING); //ngắt cạnh xuống đọc giá trị mức từ hàm encoder ở chân số 2 của vi điều khiển

last=millis(); Serial.begin(9600); } void loop() { pwm=198; xung; pwm=235+Output; //cập nhật giá trị pwm tocdo(); if(millis()-last>=999.9) //sau 1s thì sẽ làm { chaymotor();

vantoc=xung*60*1.0/330;// vận tốc đổi sang rpm

vantocthuc=xung*60*1.0/330*3.14*0.1/60;// vận tốc đổi sang m/s // E=xung;

E=vantocdat-vantocthuc; PID();// gọi hàm PID Sinh viện thực hiện :

Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm lcd.setCursor(0,2); // lcd.print(E); LCD(); last=millis(); xung=0; } }

void PID() // chương trình PID {

E=vantocdat-vantocthuc;

alpha = 2*T*Kp + Ki*T*T + 2*Kd; beta = T*T*Ki - 4*Kd - 2*T*Kp; gama = 2*Kd;

Output = (alpha*E + beta*E1 + gama*E2 + 2*T*LastOutput)/(2*T); LastOutput=Output; E2=E1; E1=E; if(Output>255) {Output=255;} if(Output<0) {Output=0;} lcd.setCursor(7,0); lcd.print(E); lcd.setCursor(0,0); lcd.print("sai so"); lcd.setCursor(8,2); lcd.print(vantoc ); lcd.setCursor(0,2); lcd.print("van toc"); lcd.setCursor(13,2); lcd.print("RPM"); }

int saisoE(float vantocdat, float vantocthuc) { // E=vantocdat-vantocthuc; // return E; } void chaymotor() { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(ena, pwm); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); Sinh viện thực hiện :

Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm analogWrite(enb, pwm); if(pwm>255) {pwm=255;} } void tocdo() { } void LCD() { // lcd.setCursor(0,0); // lcd.print(pwm); lcd.setCursor(0,1); lcd.print(vantocthuc); // lcd.print(E); lcd.setCursor(0,3); lcd.print(xung); }

4.4.3 Chạy trên proteus

Hình 4:28 : Kết quả mô phỏng trên Proteus

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm

CHƯƠNG 5: Mô hình sản phẩm và thực nghiệm đánh giá kết quả

5.1. Mô hình sản phẩm sau khi hoàn thành

Sau một thời gian nghiên cứu và tìm tòi chúng em đã hoàn thành xong đề tài robot tự hành của mình

5.2. Kết quả đạt được

 Khi vận tốc đặt 0.5m/s động cơ chạy rơi vào khoảng 0.49 đến 0.51

 Quãng đường đi được rơi vào khoảng 24.5 – 25.5 so với 25m ban đầu + Trước khi di chuyển:

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm

+ Sau khi di chuyển

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm

5.3. Nhận xét:

Robot đã hoạt động đúng với tín hiệu điều khiển, cho thấy giải thuật trên vi điều khiển tốt

Thực hiện vận chuyển đúng với yêu cầu của đề tài

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Thiết kế và chế tạo robot vân chuyển thực phẩm

CHƯƠNG 6: Tổng kết và hướng kết quả phát triển đề tài

6.1. đánh giá kết quả đề tài:

6.1.1 Những công việc đã đạt được

- Đề tài này đã hoàn thành được các công việc như sau:

- Phân tích mô hình động học, tìm ra mối qua hệ giữa vận tốc hai bánh và góc

- lệch của mô hình robot.

- Thiết kế cơ khí cho mô hình robot tự hành .

- Xây dựng được hệ thống cơ khí, điện tử, điều khiển và hoàn thiện kết nối các

- mô đun.

- Thực nghiệm sử dụng cảm biến, điều khiển động cơ

- Xây dựng được giải thuật chương trình PID, thực nghiệm giải thuật cho

- robot trong một hệ thống tự động. Kết quả thực nghiệm cho thấy robot đã thực hiện được nhiệm vụ di chuyển .

6.1.2 Những hạn chế trong đề tài

- Chạy chưa đúng quỹ đạo đường thẳng do lệch tâm gá trục động cơ.

- Còn rung lắc khi chuyển động

- Sai số còn tương đối lớn do nhiễu từ các linh kiện, từ môi trường bên ngoài

6.1.3 Hướng phát triển đề tài

Có thể dùng thêm xử lí ảnh để nhận dạng đường đi cho robot

Có thể thông qua giao tiếp máy tính để kiểm soát được vị trí của robot

Sinh viện thực hiện : Nguyễn Văn Hóa 18CDT2

Tên đề tài

KẾT LUẬN

Nội dung kết luận:

Đề tài là sự kết hợp của công sức của tập thể và sự giúp đỡ tận tình của các thầy cô. Tụi em đã hoàn thành xong robot tự hành đúng thời hạn. Dù gặp nhiều khó khăn do ảnh hưởng của dịch covid.

Robot chạy đúng yêu cầu Chịu được tải trọng 5KG

Chạy được bám theo vận tốc cho trước là 0.5 m/s Chạy theo được quãng đường di chuyển là 25m Hiểu được cách sử dụng vi điều khiển mới là arduino Hiểu được cách điều chế độ rộng xung

Thiết kế và áp dụng được bộ điều khiển PID

Ghi chú về phần Kết luận

- Phần Kết luận cần phải nêu được những kết luận chung, khẳng định những kết quả đạt được, những đóng góp, đề xuất và kiến nghị (nếu có);

- Trong phần này, có thể định dạng các điểm/ mục kết luận theo dạng Outline hoặc Numbering hoặc Bullets.

Tên đề tài

TÀI LIỆU THAM KHẢO

[1] [2]

Ghi chú: tài liệu tham khảo được liệt kê theo thứ tự trích dẫn trong Báo cáo đồ án tốt nghiệp, đối với từng loại tài liệu thì được ghi thông tin trích dẫn như sau:

1. Tài liệu tham khảo là sách:

- TS. Trần Ngô Quốc Huy. Bộ điều khiển PID

2. Tài liệu tham khảo là tạp chí, bài báo:

- Nguyễn Văn Tính. Mô hình hóa và điều khiển robot di động 3. Tài liệu tham khảo từ các nguồn khóa luận, bài luận khác

Đoàn Hiệp (12/08/2005). Định vị cho robot di động trong không gian hai chiểu

4. Tài liệu tham khảo từ nguồn Internet:

- Edouard Ivanjko (1/2010). Modelling of Mobile Robot Dynamics (

https://www.researchgate.net/publication/228561343_Modelling_of_Mobile_Robot_D ynamics )

Một phần của tài liệu (Đồ án tốt nghiệp) THIẾT kế và CHẾT tạo ROBOT vận CHUYỂN THỰC PHẨM (Trang 35)

Tải bản đầy đủ (PDF)

(53 trang)