Hình 2. 22: Lưu đồ giải thuật
Trong lưu đồ giải thuật nay dữ liệu sẽ được lấy từ hệ thông tức lấy từ dữ liệu mong muốn từ người dùng sau đó lấy dữ liệu đật được từ encoder sau đó tính toán sai số rồi đưa vào bộ PID rồi quay lại vị trí lấy tín hiệu cứ như vậy cho đến khi sai số là nhỏ nhất(~0).
ĐỒ ÁN TỐT NGHỆP
---
2.4 Kết luận chương
Trong chương này em đã thực hiện tìm hiểu linh kiện, vẽ sơ đồ nguyên lý của hệ thống, xây dựng chương trình cho hệ thống mô hình cánh tay hỗ trợ ăn uống cho người khuyết tật và tìm hiểu thuật toán PID điều khiển vị trí và tốc độ động cơ encoder. Sang chương 3 em sẽ trình bày các bước thiết kế mô hình và thiết kế sản phẩm hoàn chỉnh và thông số đo đạt của thiết bị.
CHƯƠNG 3. HOÀN THIỆN HỆ THỐNG VÀ THÔNG SỐ ĐO ĐƯỢC 3.1 Các bước thực hiện
Bước 1: Chế tạo
- Cấp nguồn 12V cho Arduino và L298 qua 2 chân V-in và GND - Cấp nguồn 5V cho Module nhận dạng giọng nói VR3 qua chân 5V
và GND của Arduino Uno.
- Nối dây Arduino Uno R3với Module VR3:
ARUDINO VOICE RECOGNITION
MODULE V3
5V 5V
8 TX
9 RX
GND GND
Bảng 3: Ghép nối Arduino Uno R3 với Module VR3
- Nối dây Arduino Uno R3 với Module L298:
ARDUINO L298 4 IN1 5 IN2 6 IN3 7 IN4 GND GND
Bảng 4: Ghép nối Arduino Uno R3 với Module L298
- Nối dây Arduino Uno R3 với động cơ DC Encoder:
ARDUINO DC encoder
2 A
7 B
VCC VCC
GND GND
ĐỒ ÁN TỐT NGHỆP
--- Bước 2: Hoàn thiện sản phẩm
ĐỒ ÁN TỐT NGHỆP
---
Hình 3. 2: Thiết kế hoàn thiện phần cánh tay in 3D
Ở đây cánh tay robot đút thức ăn được thiết kế 3 bậc tự do, với 3 động cơ DC encoder tại mỗi khớp và 1 động cơ encoder tại trục xoay
Bước 3: Kiểm thử
Hoàn thiện phần cứng, cấp nguồn cho thiết bị chạy thử không xảy ra hiện tượng chập cháy.
Tiến hành nạp chương trình điều khiển cho thiết bị:
Bước 1: Chọn Tools -> board:”Arduino/Genuino uno’’
ĐỒ ÁN TỐT NGHỆP
--- Bước 2: Chọn Tools -> Port :”COM3”
Bước 3: Nạp chương trình bằng phần mềm Arduino IDE
Hình 3. 6: Nạp code chương trình cho hệ thống
Để có thể thực hiện việc nhân giọng nói và lưu giọng nói ta thực hiện như sau:
Các bước tiến hành điều khiển:
1.Add thư viện Voice Recognition V3 library trên Arduino IDE. 2.Mở filevr_sample_train và chạy chương trình để cài đặt giọng nó.
ĐỒ ÁN TỐT NGHỆP
---
Hình 3. 7: Cửa sổ Serial Monitor
4.Gõ setting và click Send
5. Sau đó gõ sigtrain 0 On và click Send. Trong đó: sigtrain là cú pháp cài đặt giọng nói.
0 là số thứ tự giọng nói(tăng dần theo số âm, tối đa là 6) On là tên âm(có thể thay đổi tùy vào âm phát ra).
Bắt đầu cài đặt âm khi có tín hiệu Speak now và kết thúc khi có tín hiệu SIG:
On
Hình 3. 9: Sigtrain 0
ĐỒ ÁN TỐT NGHỆP
---
Hình 3. 10: Sigtrain 1
6. Gõ load 0 1 và click Send để lưu âm phát ra từ giọng nói.
Hình 3. 11: Load
Vậy là việc cài đặt âm phát ra từ giọng nói đã thành công.
7. Tiếp theo ta mở file vr_sample_control_led ra, dựa vào code trong file điều khiển led này ta thực hiện code điều khiển động cơ .
3.2 Thông số đọc được khi sử dụng thuật toán PID để điều khiểnVị trí đặt Kp Ki Kd Vị trí đạt được Sai số Vị trí đặt Kp Ki Kd Vị trí đạt được Sai số Lần 1 1000 0.5 0.05 4 952 48 Lần 2 1000 1 0.05 4 994 6 Lần 3 1000 1 0.1 4 1000 0 Lần 4 1000 2 0.1 4 1003 3
Bảng 6:Thông số đọc bộ điều khiển PID trên Động cơ DC encoder
Nhận xét:
Hình 3. 12: Biểu đồ thông số tăng giảm Kp, Ki, Kd
Sau khi diều chỉnh các thông số PID thì bộ thông số Kp=1, Ki=0.05, Kd=4 là hoàn hảo nhất.
Dù hiệu chỉnh các thông số Kp, Ki, Kd trong chương trình PID điều khiển vị trí động cơ DC đã hoạt động ổn định nhưng việc xảy ra sai số là điều không thể tránh khỏi.
ĐỒ ÁN TỐT NGHỆP
---
3.3 Kiểm tra và hiệu chỉnh
Sau khi nạp chương trình cho thiết bị xảy ra hiện tượng khối nhận lệnh giọng nói không nhận được lệnh của người sử dụng. Đèn báo tín hiệu trên module nhận dạng giọng nói không báo có tín hiệu.
Hình 3. 13: Sản phẩm kiểm tra bị lỗi
Đánh giá lại hệ thống, em nhận thấy module nhận dạng giọng nói có thể đấu nối sai giữa 2 chân TX và RX. Sau khi kiểm tra và khắc phục lỗi, thiết bị đã hoạt động ổn định.
3.4 Kết luân chương
Trong chương 3 em đã “thiết kế mô hình cánh tay gắp thức ăn hỗ trợ người khuyết tật”, sản phẩm dù chưa được hoàn thiện như mong muốn những đã được đánh giá chất lượng, kiểm tra và khắc phục những lỗi còn mắc phải. Sản phẩm hoàn thiện có tính ứng dụng cao, hỗ trợ tốt cho người khuyết tật.
ĐỒ ÁN TỐT NGHỆP
---
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận
Tuy thời gian có hạn hẹp nhưng được sự hướng dẫn tận tình của thầy giáo Ts Nguyễn Hoài Giang cùng với sự cố gắng của bản thân, em đã hoàn thành tương đối phần động cơ của đề tài đúng thời gian quy định.
Sau khi hoàn thành đề tài, em đã tìm hiểu và nắm vững kiến thức như:
- Tìm hiểu và nắm bắt nguyên lý cấu tạo của board Arduino Uno R3.
- Tìm hiểu và nắm bắt nguyên lý hoạt động của Module nhận dạng giọng nói Voice recognition V3.
- Hiểu được cấu tạo và phương pháp điều khiển vị trí và tốc độ động cơ giảm tốc DC Encoder.
- Sử dụng phần mềm mô phỏng, lập trình để thiết kế hệ thống.
Hướng phát triển trong tương lai
Hiện nay, do hạn chế về mặt thời gian cũng như công nghệ và linh kiện nên sản phẩm chưa thực sự hoàn thiện, chưa đáp ứng được đầy đủ các bài toán do yêu cầu thực tế đặt ra, chính vì vậy trong tương lai em sẽ tiếp tục cải tiến thiết bị, tìm giải pháp để đáp ứng yêu cầu thực tế, hạn chế các nhược điểm của thiết bị, phát triển hệ thống nhận dạng giọng nói không phụ thuộc.. Mong muốn của em là có thể đưa sản phẩm vào ứng dụng thực tế, giúp hỗ trợ người tàn tật trong việc sinh hoạt, đi lại bằng một mô hình tốt nhất.
TÀI LIỆU THAM KHẢO
Tìm hiểu tài liệu về module nhận dạng giọng nói Voice Recognition Module V3
1. http://arduino.vn/bai-viet/955-gioi-thieu-mo-dun-voice-recognition- module-v3-dieu-kien-giong-noi-voi-arduino 2. https://drive.google.com/file/d/0B4vt-olV258teHpPUnJUSG1fRW8/view 3. https://codebender.cc/utilities/download/340601?referrer=thaidinh25 4. http://k2.arduino.vn/img/2016/07/06/0/2621_882450-1467809062-0- thuvienvr3.rar 5. http://arduino.vn/tags/software-serial
Tìm hiểu về Arduino Uno R3
6. http://arduino.vn/bai-viet/42-arduino-uno-r3-la-gi
Tìm hiểu về module L298
7. http://tae.vn/mach-dieu-khien-dong-co-l298
Tìm hiểu về động cơ giảm tốc DC
8. http://banlinhkien.vn/category-193-b0-dong-co-dc-giam-toc.html Thuật toán PID điều khiển động cơ DC
9. PID Tutorial
ĐỒ ÁN TỐT NGHỆP
---
PHỤ LỤC
Code PID điều khiển vị trí trên Arduino
#define duong 11// chân In1 #define am 10// chân In2 #define en1 3// chân ngắt
#define en2 12// chân đọc tín hiệu encoder int vitri=0, vitrimm=1000, loi=0;//quán tính void chay() { if(digitalRead(en2)==LOW)// cạnh xuống mức thấp { vitri++; } else{ vitri--; } }
void quay(int nangluong) { if(nangluong>=255) { nangluong=255; } if(nangluong<=-255) { nangluong=-255;
} if(nangluong>0) { analogWrite(am,0); analogWrite(duong,nangluong); } if(nangluong<0) { analogWrite(duong,0); analogWrite(am,-nangluong); } }
double pid(double loi,double kp,double ki, double kd) {
double dloi;//denta lỗi
static double loitr=0, iloi=0;//lỗi trước đó long double temp;
dloi=loi-loitr; iloi+=loi; if(iloi>=100) { iloi=100; } if(iloi<=-100) { iloi=-100;
ĐỒ ÁN TỐT NGHỆP --- } loitr=loi; temp=kp*loi+ki*iloi+kd*dloi; if(temp>=255) { temp=255; } if(temp<=-255) { temp=-255; } return temp; } void setup() {
// put your setup code here, to run once: pinMode(duong,OUTPUT);
pinMode(am,OUTPUT);
attachInterrupt(1,chay,FALLING); //ngắt ngoài cạnh xuống Serial.begin(9600);
}
void loop() {
//quay(-100); loi=vitrimm-vitri; quay(pid(loi,1,0.1,4)); }
Code sử dụng nút nhấn điều khiển động cơ DC
const int buttonPin = 6; const int ledPin = 13; int SoLanNhan = 0;
int TrangThaiHienTai = 0; int TrangThaiTruocDo = 0; #define duong 11
#define am 10
#define en1 3// chân ngắt #define en2 12
int vitri=0, vitrimm=0, loi=0;//quán tính void chay() { if(digitalRead(en2)==LOW)// cạnh xuống { vitri++; } else{ vitri--; } }
ĐỒ ÁN TỐT NGHỆP
---