Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
1
MỤC LỤC
LỜI MỞ ĐẦU…………………………………………………………………………… 3
Chương 1: TỔNG QUAN……………………………………………………………… 4
1. Giới thiệu chung về Arduino………………………………………………………… 4
1.1. Tổng quan về Arduino Uno………………………………………………………… 4
1.2. Sơ đồ chân Arduino………………………………………………………………… 5
2. Giới thiệu về phần mền Proteus……………………………………………………… 7
3.Các phần mềm sử dụng………………………………………………………………….9
4. Chi phí thực hiện đề tài…………………………………………………………………9
Chương 2: Nhận dạng động cơ DC………………………………………………………11
1. Xác định thông số động cơ ………………………………………………………… 11
1.1 Xác định dạng hàm truyền ………………………………………………………… 11
1.2. Xác định hàm truyền và thông số PID …………………………………………… 11
1.3. Kiểm nghiệm thông số PID…………………………………………………………21
2. Nhận dạng động cơ thực………………………………………………………………24
Chương 3: Thiết kế và mô phỏng mạch điều khiển động cơ DC- Encoder…………… 30
1. Thiết kế mạch điều khiển động cơ DC-Encoder………………………………………30
1.1. Cách băm xung trong Arduino………………………………………………………30
1.2. Đọc Encoder bằng phương pháp ngắt ngoài ……………………………………… 31
1.2.1. Giới thiệu về Encoder…………………………………………………………… 31
1.2.2. Ngắt ngoài trong Arduino…………………………………………………………33
1.3. Ngắt Timer………………………………………………………………………… 35
1.4. Nguyên tắc điều khiển động cơ …………………………………………………… 36
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
2
1.5. Thiết kế mạch trên Proteus….………………………………………………………39
2. Thiết kế giao diện điều khiển bằng Megunolink…………………………………… 41
2.1. Giới thiệu về Megunolink………………………………………………………… 41
2.2. Các bước thiết kế giao diện Megunolink……………………………………………42
2.3. Kết quả bài toán…………………………………………………………………… 49
Chương 4: Mô phỏng tay máy 1DOF……………………………………………………52
1. Thiết lập hệ phương trình vi phân…………………………………………………… 52
2. Mô phỏng bằng Simulink…………………………………………………………… 54
3. Mô phỏng bằng Matlab……………………………………………………………… 59
Chương 5: Ý tưởng phát triển……………………………………………………………66
Kết luận………………………………………………………………………………… 72
Tài liệu tham khảo……………………………………………………………………….73
Phụ lục………………………………………………………………………………… 74
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
3
LỜI MỞ ĐẦU
Hiện nay khoa học kỹ thuật đang phát triển rất nhanh, mang lại những lợi ích cho con
người về tất cả những lĩnh vực trong cuộc sống. Để nâng cao đời sống nhân dân và hòa
nhập với sự phát triển chung của thế giới, Đảng và nhà nước ta đã đề ra những mục tiêu
đưa đất nước đi lên thành một nước công nghiệp hóa hiện đại hóa. Để thực hiện điều đó
thì một trong những ngành cần quan tâm phát triển nhất đó là ngành cơ khí nói chung và
cơ điện tử nói riêng vì nó đóng vai trò quan trọng trong việc sản xuất ra các thiết bị công
cụ ( máy móc, robot…) của mọi ngành kinh tế.
Sự xuất hiện của Arduino đã tạo ra làn sóng trên thế giới trong việc lập trình và thiết
kế các mạch vi điều khiển mà không đòi hỏi quá nhiều kiến thức về lập trình. Hiện nay
việc sử dụng Arduino ở Việt Nam đã trở nên phổ biến và được sử dụng rộng rãi trong các
trường đại học công nghệ của Việt Nam, cũng như những người đam mê về lập trình vi
điều khiển.
Việc sử dụng Arduino để điều khiển động cơ cho thấy khả năng của Arduino, góp
phần điều khiển các cơ cấu, Robot trở nên linh hoạt và dễ dàng hơn. Vì vậy việc điều
khiển động cơ bằng Arduino đang được sử dụng rộng rãi trong công nghiệp . phòng thí
nghiệm hiện nay.
Bài viết không tránh khỏi những sai sót, rất mong được sự giúp đỡ và chỉ bảo của
thầy cô để chúng em làm tốt hơn trong những lần tiếp theo.
Cuối cùng em xin trân thành cảm ơn sự chỉ bảo tận tình của thầy cô trong bộ môn Cơ
Ứng Dụng và đặc biệt là sự hướng dẫn của thầy Đỗ Đăng Khoa đã giúp chúng em học
được rất nhiều điều và hoàn thành môn thực tập kỹ thuật này.
Trân trọng cảm ơn
Hà Nội, ngày tháng năm 2015
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
4
Chương 1: Tổng quan
1. Giới thiệu về Arudino
Arduino ra đời tại thị trấn Ivrea thuộc nước Italia. Được đặt tên theo vị vua vào thế kỉ
thứ 9 là King Arduin. Arduino chính thức được giới thiệu vào năm 2005 như là 1 công cụ
khiêm tốn dành cho các sinh viên và giáo sư Massimo Banzi là 1 trong những người phát
triển Arduino tại trường IDII. Mặc dù hầu như không được tiếp thị gì cả, tin tức về
Arduino vẫn lan truyền với tốc độ chóng mặt nhờ những lời truyền miệng tốt đẹp của
những người dùng đầu tiên. Hiện nay Arduino nổi tiếng tới nỗi có người đến thị trấn
Ivrea để thăm quan nơi sinh ra của Arduino.
Arduino thực ra là một bo mạch vi xử lý, được dùng để lập trình tương tác với các
thiết bị phần cứng như cảm biến, động cơ, đèn, hoặc các thiết bị khác. Đặc điểm nổi bật
của Arduino là môi trường phát triển ứng dụng cực kì dễ sử dụng, với một ngôn ngữ lập
trình có thể học một cách nhanh chóng ngay cả với những người ít am hiểu về điện tử và
lập trình. Và điều làm nen hiện tượng Arduino chính là mức giá rất thấp và tính chất
nguồn mở từ phần cứng tới phần mền. Chỉ với hơn 200.000 VND , ta có thể sở hữu một
board Arduino có 14 ngõ I/O thoa các điều khiển thiết bị.
1.1. Tổng quan về Arduino Uno
Arduino Uno là 1 bo mạch thiết kế với bộ xử lý trung tâm là vi điều khiển AVR
Atmega328.
Nó có 14 chân digital I/O, 6 chân đầu vào (input) analog, thạch anh dao động 16Mhz.
Một số thông số kỹ thuật như sau :
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
5
Bảng 1.1: Bảng thông số về Arduino Uno
Chip
ATMega328
Điện áp cấp nguồn
5V
Điện áp đầu vào
7-12V
Điện áp đầu vào giới hạn
6-20V
Số chân Digital I/O
14(có 6 chân điều chế độ rộng xung PWM)
Số chân Ânlog
6
DC Current per I/O Pin
40mA
DC Current for 3.3V Pin
50mA
Flash Memory
32KB (ATMega328) với 0,5KB sử dụng bootloader
SRAM
2KB (ATMega328)
EEPROM
1KB (ATMega328)
Xung nhịp
16 MHz
1.2. Sơ đồ chân của Arduino
Hình 1.1: Sơ đồ Arduino Uno
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
6
a) USB (1).
Arduino sử dụng cáp USB để giao tiếp với máy tính. Thông qua cáp USB chúng ta
có thể Upload chương trình cho Arduino hoạt động, ngoài ra USB còn là nguồn cho
Arduino.
b) Nguồn ( 2 và 3 ).
Khi không sử dụng USB làm nguồn thì chúng ta có thể sử dụng nguồn ngoài thông
qua jack cắm 2.1mm ( cực dương ở giửa ) hoặc có thể sử dụng 2 chân Vin và GND để
cấp nguồn cho Arduino.
Bo mạch hoạt động với nguồn ngoài ở điện áp từ 5 – 20 volt. Chúng ta có thể cấp một áp
lớn hơn tuy nhiên chân 5V sẽ có mực điện áp lớn hơn 5 volt. Và nếu sử dụng nguồn lớn
hơn 12 volt thì sẽ có hiện tượng nóng và làm hỏng bo mạch. Khuyết cáo các bạn nên
dùng nguồn ổn định là 5 đến dưới 12 volt.
Chân 5V và chân 3.3V (Output voltage) : các chân này dùng để lấy nguồn ra từ nguồn mà
chúng ta đã cung cấp cho Arduino. Lưu ý : không được cấp nguồn vào các chân này vì sẽ
làm hỏng Arduino.
Dòng điện trong mạch Arduino chỉ vào khoảng 50mA
GND: chân mass.
c) Chip Atmega328.
Chip Atmega328 Có 32K bộ nhớ flash trong đó 0.5k sử dụng cho bootloader. Ngoài ra
còn có 2K SRAM, 1K EEPROM.
d) Input và Output ( 4, 5 và 6).
Arduino Uno có 14 chân digital với chức năng input và output sử dụng các hàm
pinMode(), digitalWrite() và digitalRead() để điều khiển các chân này tôi sẽ đề cập chúng
ở các phần sau.
Cũng trên 14 chân digital này chúng ta còn một số chân chức năng đó là:
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
7
Serial : chân 0 (Rx ), chân 1 ( Tx). Hai chân này dùng để truyền (Tx) và nhận (Rx) dữ
liêu nối tiếp TTL. Chúng ta có thể sử dụng nó để giao tiếp với cổng COM của một số
thiết bị hoặc các linh kiện có chuẩn giao tiếp nối tiếp.
PWM (pulse width modulation): các chân 3, 5, 6, 9, 10, 11 trên bo mạch có dấu “~” là
các chân PWM chúng ta có thể sử dụng nó để điều khiển tốc độ động cơ, độ sáng của
đèn…
SPI : 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK), các chân này hỗ trợ giao tiếp theo
chuẩn SPI.
I2C: Arduino hỗ trợ giao tiếp theo chuẩn I2C. Các chân A4 (SDA) và A5 (SCL) cho phép
chúng tao giao tiếp giửa Arduino với các linh kiện có chuẩn giao tiếp là I2C.
e) Reset (7): dùng để reset Arduino.
2. Giới thiệu về phần mền Proteus
Phần mền Proteus là phần mền cho phép mô pohngr hoạt động của mạch điện tử bảo
gồm phần thiết kế mạch và viết chương trình điều khiển cho các họ vi điều khiển như
MCS-51, PIC, AVR, Proteus là phần mền mô phỏng mạch điện tử của Lanccenter
Electronics, mô phỏng cho hầu hết các linh kiện điện tử thông dụng, đặc biệt hỗ trợ cho
các MCU như PIC, 8051, AVR
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
8
Hình 1.2: Giao diện khởi động Proteus 8.0
Phần mền bao gồm 2 chương trình ISIS cho phép mô phngr mạch và ARES dùng đễ
vẽ mạch in. Proteus là công cụ mô phỏng cho các lại vi điều khiển khá tốt, nó hỗ trợ các
dòng vi điều khiển như PIC, 8051, AVR, vv các giao tiếp I2C, SPI, CAN, USB,
Ethenet ngoài ra còn mô phỏng các mạch số, mạch tương tự một cách hiệu quả.
Để mô phỏng được Arduino trên proteus thì chúng ta cần phải download thư viện arduino
cho proteus. Để có được thư viên này các bạn cần truy cập vào trang web:
Hình 1.3: Thư viện mô phỏng Arduino
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
9
Sau khi download về các bạn chép 2 file ARDUINO.IDX và ARDUINO.LIB vào thư
mục:
Proteus 7:
C:\Program Files (hoặc x86) \Labcenter Electronics\Proteus 7 Professional\LIBRARY
Proteus 8:
C:\Program Files (hoặc x86) \Labcenter Electronics\Proteus 8
professional\Data\LIBRARY
Trong thư viện này hổ trợ 5 loại board Arduino khác nhau trong đó gồm có Arduino
Uno, MEGA, NANO, LILYPAD và UNO SMD và một cảm biến siêu âm Untrasonic.
Sau khi chép xong chúng ta khởi động Proteus lên vào thư viện linh kiện bằng cách
bấm phím P và gõ từ khoá là ARDUINO chúng sẽ hiện ra danh sách các board hiện có ở
đây tôi chọn Arduino Uno.
Hình 1.4: Mô phỏng Arduino bằng Proteus.
Lưu ý chúng ta cần phải cấp nguồn vào 2 chân 5V và Gnd trên mạch như hình trên.
3.Các phần mềm sử dụng:
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
10
-Matlab-simulink:mô phỏng hoạt động, tìm hàm truyền
-Arduino IDE: biên dịch code C sang file HEX
-Meguno link: Thiết kế giao diện
-Proteus: Mô phỏng mạch Arduino
4. Chi phí thực hiện đề tài
Sau đây là bảng chi tiết các linh kiện được sử dụng trong bài thực tập như sau:
Bảng 1.2: Báo giá linh kiện được sử dụng
STT
Tên linh kiện
Số lượng
Báo giá
Thành tiền
1
Arduino Uno
1
250.000
250.000
2
LCD L016M
1
75.000
75.000
3
L293D
1
25.000
25.000
4
Biến trở 10K
2
2.500
5.000
5
Board trắng
1
45.000
45.000
6
DC - Encoder
2
100.000
200.000
7
Các linh kiện phụ
10.000
10.000
Tổng
610.000
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
11
Chương 2: Nhận dạng động cơ
1. Xác định thông số động cơ
1.1 Xác định dạng hàm truyền
Hàm truyền động cơ 1 chiều đầu vào điện áp; đầu ra vận tốc góc:
Hình 2.1 : Sơ đồ điện cơ
-Động cơ DC: Điện trở
a
R
; cuộn cảm L; hằng số phản sức điện động
e
K
; hằng số momen
m
K
; Momen quán tính rôto
m
J
;
-Tải: Momen quán tính J
11
( ) ( )J J b K K R K R U
m e m a m a
(phần xây dựng PTVP đề cập ở chương 4)
Laplace 2 vế=>
/
()
()
()
()
ma
em
m
a
KR
s
Gs
KK
Us
J J s b
R
=>G(s) có dạng
1
k
Ts
1.2. Xác định hàm truyền và thông số PID
Đơn vi dùng để tính PID: góc
[xung]; vận tốc góc
[xung/s]; điện áp u (V); tín
hiệu điều khiển U cấp cho chân 9 (PWM): 0-255 tương ứng với u nguồn cấp 9V do U
tuyến tính với u nên ta quy ước đơn vị của nó là V
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
12
Tìm hàm truyền:
*Cấp U=255V đo
[xung/s]
Code test động cơ DC
#include <Timer.h>
Timer t0;
#define motorPin1 8 // L293D Input 1
#define motorPin2 7 // L293D Input 2
#define speedPin 9 // L293D enable chân 1
int menu=0,dau=0,dem=0,dem2=0;
float v=0,time=0.025,inv=40,U = 0,t=0;
long int a=0,b=0,c=0,qold=0,qnew=0,eold=0,enew=0;
void setup() {
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
pinMode(13, INPUT);
attachInterrupt(0, dao, FALLING);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(speedPin, OUTPUT);
t0.every(time*1000, pid);
}
void loop() {
t0.update();
if(dem2==40) U=0;
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
13
else U=255;
analogWrite (speedPin, U);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
if(dem==1) {
Serial.println(v);
dem=0;}
}
void dao() // chương trình con ngắt, khi có ngắt xảy ra sẽ thực hiện chương trình này.
{
c=digitalRead(2);
b=digitalRead(13);
if (c==b) a=a-1;
else a=a+1;
}
void pid()
{
qnew=a;
v=(qnew-qold)/time;
qold=qnew;
eold=enew;
dem++;
dem2++;
}
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
14
Dùng lệnh Serial.println(v); trong để in vận tốc đo được ra màn hình Serial monitor
Hình 2.2 : Mở màn hình Serial Monitor
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
15
Hình 2.3: Vận tốc góc đo được
Sau đó copy số liệu trên serial monitor vào file excel
Hình 2.4: Số liệu lưu vào file excel
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
16
*Xác định hàm truyền
()
1
k
Gs
Ts
sử dụng phần mềm matlab có:
Import file excel của vận tốc góc đo được theo thời gian trong matlab:
Hình 2.5: Giá trị vận tốc theo thời gian
Sau khi có vector v (138x1); ta nhập u (138x1):
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
17
Hình 2.6: u và v trong workspace
Mở toolbox Matlab Identification :
Trong mục import data chọn time domain nhập biến v vừa import
Trong mục Estimate chọn Transfer Fcn : Điền vào ô 1 điểm cực và 0 điểm không.
Ấn Estimate để chạy
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
18
Hình 2.7: Môi trường Transfer Fcn
+Kết quả hàm truyền tìm được:
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
19
Hình 2.8: Hàm truyền tìm được
(s) 52,17
(s)
(s) 1 0,0446.
G
Us
*Ta cũng có thể tính toán hàm truyền
()
1
k
Gs
Ts
Gọi U là kích thích đầu vào U=255V; b xung/s là giá trị
khi xác lập kích thích U
không đổi trong thời gian t U(t)
Kích thích 1(t):
/
1
1
(s)
(s) ( ) (1 )
(s) 1
tT
Yk
G y t k e
h Ts
Kích thích U(t);
/
2
2
(s)
(s) ( ) (1 )
U(s) 1
tT
Yk
G y t b e
Ts
12
2 1 2 1
( ) ( ) ( ); ( ) ( ) ( )
( ) .1( ) ( ) . ( ) ( ) . ( ) ( ) . ( )
Y s G s h s Y s G s U s
U t U t U s U h s Y s U Y s y t U y t
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
20
2
1
( ) 135277
52.06
( ) 255
y t b b
Uk
y t k U
b xung/s là giá trị
trung bình khi xác lập tra theo kết quả đo
Hình 2.9: Giá trị trung bình của b
G(s) có đáp ứng quá độ như hình:
Hình 2.10: Đáp ứng quá độ hàm truyền G(s)
=> Thới điểm T tương ứng với
1
( ) 0.63y t k
=> Tại t=T
21
( ) . ( ) 0,63. . 0,63. 0,63.13277 8400 y t U y t U k b
Đối chiếu bảng kết quả đo ta thấy
T 0. 05s
Hình 2.11:Giá trị vận tốc góc tại T
=>Kết quả tính tay:
(s) 52,06
(s)
(s) 1 0,05.
G
Us
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
21
-Hàm truyền tính được với đầu vào: U(0-255 thang 9V) đầu ra
(xung / s)
:
(s) 52,17 (s) 52,17
(s) (s)
(s) 1 0,0446. (s) (1 0,0446. )
GK
U s U s s
-Phương pháp tối ưu độ lớn:
1
(s) (s) ,
12
i
PID i
K
k
G G K
Ts s kT
-Phương pháp tối ưu đối xứng:
1
1
11
K(s) (s) K (1 ), ,T 4
(1 ) 2
PID P p
k
K K T
s Ts Ts kT
-Áp dụng:
+Điều khiển góc K(s):
PI:
K
1
0,21K 1,14
24
p
pi
K
kT T
Để giảm quá điều chỉnh chọn Ki=0.05
+Điều khiển vận tốc góc G(s):
I:
1
0,21
2
i
K
kT
1.3. Kiểm nghiệm thông số PID
Kp=0.21;Ki=0.05;Lượng đặt:
100
O
d
Hình 2.12: Sơ đồ kiểm tra vị trí
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
22
Hình 2.13: Sai lệch giữa lượng đặt và thực tế
0,21
i
K
;Lượng đặt:
w 400(v/ p)
d
Hình 2.14: Sơ đồ kiểm tra tốc độ
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
23
Hình 2.15: Sai lệch giữa lượng đặt và thực tế
Kp=0.21;Ki=0.05;Lượng đặt:
150sin(250t )
2
d
Hình 2.16: Sơ đồ kiểm tra độ bám quỹ đạo
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
24
Hình 2.17: Sai lệch giữa lượng đặt và thực tế
2. Nhận dạng động cơ thực
Trong mô hình của ta sử dụng động cơ một chiều các thông số R (điện trở phần ứng), K
e
(hệ số phản sức điện động), K
m
(hệ số momen) của động cơ không có sẵn, do đó trong
mục nhận dạng hệ thật sẽ nói về việc nhận dạng động cơ DC.
Ta có các phương trình cơ điện của động cơ có dạng như sau:
( ) ( )
a
a a a a
di t
L R i t e t U t
dt
(2.1)
0ae
e t K t
(2.2)
0
r e x
dt
J M T
dt
(2.3)
e m a
M K i t
(2.4)
Xác định R
a
và K
e
Thực tập kỹ thuật GVHD: TS Đỗ Đăng Khoa
25
Nếu đáp ứng phần điện nhanh so với đáp ứng phần cơ (hằng số thời gian cơ rất lớn so với
hằng số thời gian phần điện) thì ta có thể đơn giản hóa bằng cách cho L
a
= 0. Khi đó ta
viết lại Error! Reference source not found. như sau:
( ) ( )
a a a
R i t e t U t
(2.5)
Thay (2.2) vào phương trình (2.5) ta thu được:
0
()
a a e
R i t K t U t
(2.6)
Từ phương trình Error! Reference source not found. ta có thể xác định được các tham
số R
a
và K
e
bằng cách tiến hành đó điện áp, dòng điện và vận tốc của động cơ với 2 mức
điện áp khác nhau.
Dụng cụ đo gồm có :
Hình 2.18 Đồng hồ đo điện vạn năng Hình 2.19 Điện trở 0.47 ohm
Encoder nối sẵn với động cơ có độ phân dải 448 xung/vòng
Phương pháp đo
Tiến hành đo với 2 mức điện áp nguồi AC/DC ADAPTER 5V và 24V. Với các bước đo
như sau:
Bước 1: Lắp mạch. Ghép nối tiếp điện trở với động cơ với từng nguồn điện trên.