You are on page 1of 93

Lời nói đầu

Cuộc cách mạng về khoa học công nghệ diễn ra từng ngày đang làm thay đổi
toàn diện và sâu sắc cuộc sống cũng như quá trình sản xuất của con người. Phép màu
công nghệ đã giúp con người làm được nhiều việc phi thường mà trước đây chỉ có
trong trí tưởng tượng.Thế giới đang tiến ngày càng gần hơn đến với nền kinh tế tri
thức.
Trong xu thế phát triển đó, nền công nghệ non trẻ của Việt Nam, vốn đã tụt hậu
khá xa, nếu không muốn tụt lại phía sau hơn nữa cần phải vừa tranh thủ thành tựu của
các nước tiên tiến, vừa phải có sự đột phá, sáng tạo trong tư duy để theo kịp với công
nghệ thế giới. Trách nhiệm nặng nề này, đang đè nặng lên đôi vai của thế hệ trẻ Việt
Nam, đặc biệt là các bạn sinh viên, những người chủ tương lai của đất nước.
Nhận thức được trọng trách của mình, chúng em, những thành viên trong lớp Cơ
điện tử K1, của trường Đại học Công Nghiệp Hà Nội, đang ra sức phấn đấu, rèn luyện,
chuẩn bị hành trang để thực hiện trách nặng nề trong công cuộc công nghiệp hóa,hiện
đại hóa đất nước. Đồ án tốt nghiệp chính là một trong những hành trang quan trọng,
nơi chúng em có thể vận dụng những gì đã học vào thực tế và bước đầu có thói quen
làm việc theo nhóm, khoa học và hiệu quả.
Đề tài chúng em lựa chọn là xe tự hành AGV (Automated Guided Vehicle). Nó
được sử dụng trong các nhà máy, hoặc siêu thị để chở hàng tự động không cần người
lái và được trạm điều khiển kiểm soát hoạt động thông qua công nghệ không dây RF.
Đây là một đề tài rất thích hợp với nghành cơ điện tử bởi nó có sự kết hợp của các lĩnh
vực cơ khí, điện tử, tin học, giao tiếp với máy tính...Nó có sự tổng hòa của kết cấu cơ
khí (xe chở hàng 150kg..), điều khiển thông minh (chạy dò đường theo vạch,cảm biến
báo vật cản..) và công nghệ không dây (giao tiếp không dây RF..)..
Đây là một đề tài lớn, nhiều tham vọng, nên trong khuôn khổ của một đồ án với
kinh phí hạn hẹp chúng em chỉ dừng lại ở mức mô hình nhỏ, nếu có điều kiện sẽ phát
triển trong tương lai gần. Bên cạnh đó, do khả năng chúng em có hạn, mà lượng kiến
thức của đồ án khá rộng và phức tạp nên trong quá trình thực hiện còn nhiều sai sót,
chúng em rất mong được sự góp ý của các thầy và các bạn quan tâm.
Nhóm AGV xin chân thành cảm ơn các thầy cô trong bộ môn đặc biệt là thầy
Nhữ Quý Thơ đã tận tình giúp đỡ hướng dẫn chúng em hoàn thành đề tài này. Xin cảm
ơn các anh trong lớp Liên thông đại học CK1-K2 đã cùng chúng em thực hiện đồ án.
Hà nội,ngày ... tháng 5 năm 2010
Nhóm sinh viên thực hiện:

Nguyễn Thành Long
Nghiêm Quốc Phong
Nguyễn Công Nam
Nguyễn Văn Nhật
Đoàn Văn Tú

1

CHƯƠNG I

GIỚI THIỆU CHUNG

1.1 Giới thiệu AGV
Cùng với sự mở rộng của các nhà máy được tự động hóa và cơ khí hóa,các vấn
đề về việc vận chuyển,bốc dỡ và tích trữ hàng hóa trở nên ngày càng quan trọng hơn.
Theo xu hướng gia tăng sự tự động hóa trong các lĩnh vực sản xuất, các hệ thống vận
chuyển bên trong các nhà máy dưới dạng “hệ thống máy dẫn đường tự động”(AGV)
ngày càng chiếm một vị trí quan trọng trong toàn bộ lĩnh vực xử lý vật liệu.AGV được
sử dụng để thực hiện các nhiệm vụ:
-Cung cấp và chuyên chở ở các khu vực sản xuất và kho.Khu vực này bao gồm
nhiều ứng dụng khác nhau trong toàn bộ luồng vật liệu từ khi nhập hàng hóa,qua kho
và vùng sản xuất đến khi chuyển đi.
-Ứng dụng tích hợp sản xuất của xe chở hàng AGVS như một bệ nền lắp
ráp.Ứng dụng này dựa trên cơ sở ý tưởng rằng quy trình sản xuất có thể được cấu trúc
theo cách linh hoạt hơn với hệ thống vận chuyển này.
-Thu hồi đặc biệt trong bán buôn.Ứng dụng này rất hữu dụng trong thứ tự lựa
chọn trong việc bán buôn nơi mà ở đó có một doanh số rất lớn và việc truy nhập hang
hóa rất thường xuyên.
-Cung ứng và chuyên chở trong các khu vực đặc biệt,như ở bệnh viện và di
chuyển tài liệu trong các văn phòng.
Trong tất cả các ứng dụng trên,người ta thấy rằng AGV làm cho kế hoạch sản
xuất linh hoạt hơn, giảm thiểu nhu cầu nhân lực, và giảm thiểu thiệt hại trong kiểm kê.
1.2 Nhiệm vụ và phương hướng của đề tài
a. Nhiệm vụ
AGV trong đề tài nghiên cứu là các xe chở hàng công nghiệp không người lái.
Nó có kích thước khác nhau để mang các tải trọng từ một vài kg đến tải trọng hàng
trăm tấn.Tuy nhiên vì trong khuôn khổ của một đồ án tốt nghiệp với kinh phí và khả
năng hạn hẹp, nên để đề tài có tính khả thi cao, nhóm chúng em đã đề ra các nhiệm vụ
trong việc thiết kế và chế tạo xe AGV như sau:
Chế tạo kết cấu kết cấu cơ khí cho xe AGV là loại xe chở có khay để hàng với
tải trọng là 150kg (không tính trọng lượng của xe).Đảm bảo được được độ vững chắc
của xe và hàng hóa trong quá trình di chuyển, tạo sự ổn định và thuận lợi cho phần
điều khiển.
Thiết kế được mạch điện tử cho AGV hoạt động ổn định, có nhiều cổng vào ra,
thực hiện các chức năng như: điều khiển các động cơ của xe, kết nối với cảm biến,
giao tiếp với máy tính…
Lập trình điều khiển cho AGV chạy bám theo vạch kim loại với tốc độ ổn định
15m/phút. Xây dựng được giao diện kiểm soát hành trình của AGV trên máy tính,
thông qua sóng không dây có phạm vi với bán kính 100m.
Thiết kế cho AGV có khả năng phát hiện được vật cản trong quá trình di chuyển
đồng thời đưa ra cảnh báo an toàn thông qua còi báo và đèn báo.
Tìm hiểu và thiết kế nguồn năng lượng cho xe là nguồn một chiều DC.
b. Phương hướng xây dựng đề tài
2

Từ những nhiệm vụ ở trên, nhóm chúng em đã thảo luận và đưa ra được những
phương hướng cụ thể để bắt tay vào thực hiện đề tài như sau:
Tìm kiếm tài liệu về xe AGV thông qua nhiều nguồn khác nhau như: tài liệu trên
mạng internet, các bài giảng của các thầy cô giáo trong trường cũng như giáo trình của
một số trường đại học khác, các đồ án hoặc công trình nghiên cứu về AGV…
Khảo sát các mô hình thực tế đang có trên thị trường như trong các siêu thị,
trong các nhà máy sản xuất ở Việt Nam…
Đưa ra đề xuất thiết kế chế tạo xe AGV mang tính khả thi nhất, có tham khảo ý
kiến nhận xét của thầy hướng dẫn để hoàn thiện ý tưởng thiết kế.
Tiếp theo tiến hành thiết kế mô hình hóa cho kết cấu cơ khí, có tính toán tải
trọng để lựa chọn động cơ và chế tạo trục bánh xe. Đồng thời thiết kế được mạch điều
khiển đáp ứng được khả năng điều khiển cho xe AGV.
Tiến hành chế tạo, lắp ráp cơ khí cho xe AGV. Thử khả năng tải trọng của xe và
động cơ có đáp ứng được yêu cầu theo tính toán hay không. Nếu đáp ứng thì tiến hành
kết nối mạch điều khiển với xe. Lắp ráp các cảm biến vật cản, dò đường, không dây…
Tiếp theo là lập trình điều khiển cho xe đáp ứng được với các mục tiêu được đề
ra. Trong quá trình vận hành nếu xảy ra sai sót thì tiến hành sửa chữa, điều chỉnh sao
cho hệ thống xe AGV hoạt động chính xác, ổn định.
Cuối cùng đưa ra đánh giá nhận xét và đề xuất hướng phát triển của đề tài.
c. Các vấn đề đặt ra
Từ khi nhận được đề tài AGV, nhóm nhận thấy đây là một đề tài có nhiều
module lắp ráp và khi tiến hành triển khai sẽ gặp nhiều khó khăn:
Thứ nhất, về tài liệu của AGV tuy phong phú nhưng chủ yếu bằng tiếng anh nên
sẽ có khó khăn trong việc tìm hiểu.
Thứ hai, về kết cấu cơ khí cho xe AGV. Phải lựa chọn giải pháp cơ khí và động
cơ cho phù hợp đảm bảo xe có kết cấu khung vừa gọn, nhẹ nhưng phải đủ vững chắc
để chở được tải trọng 150 kg trong cả quá trình di chuyển. Việc thiết kế cơ cấu truyền
động cho xe cũng phải rất chính xác, ít sai số để không làm ảnh hưởng đến quá trình
điều khiển.
Thứ ba, về giao tiếp không dây và giao diện điều khiển hành trình là những
công nghệ tiên tiến trên xe AGV đòi hỏi các thành viên trong nhóm phải nỗ lực hết
mình và năng động trong quá trình tìm hiểu.
Thứ tư, về vấn đề kinh phí. Các module trong xe AGV phần lớn là các thiết bị
công nghệ có giá thành và tính năng khác nhau,vì vậy cần phải giải được bài toán giữa
yếu tố kinh tế và hiệu quả sử dụng.

3

CHƯƠNG II

TỔNG QUAN VỀ AGV

2.1 Giới thiệu về AGV
Khái niệm xe tự hành AGV (Automated Guided Vehicle) là một khái niệm
chung chỉ tất cả các hệ thống có khả năng vận chuyển mà không cần người lái. Trong
công nghiệp AGV được hiểu là các xe chuyên chở tự động được áp dụng trong các
lĩnh vực:
- Cung cấp sắp xếp linh kiện tại khu vực kho và sản xuất.
- Chuyển hàng giữa các trạm sản xuất
- Phân phối, cung ứng sản phẩm, đặc biệt trong bán buôn.
- Cung cấp, sắp xếp trong các lĩnh vực đặc biệt như bệnh viên, siêu thị, văn phòng …
Qua tất cả các ứng dụng trên, AGV thể hiện rất rõ hiệu quả của mình như: Giúp giảm
thiệt hại trong kiểm kê, sắp xếp sản xuất linh hoạt hơn, giảm thiểu nguồn nhân lực
v.v…
AGV còn giúp giảm chi phí chế tạo, tăng hiệu quả sản xuất. Chúng có thể được chế
tạo để chuyển hàng, kéo hàng, nâng hoàng cấp phát cho một số vị trí làm việc nhất
định.

Hình 2.1 AGV vận chuyển thiết bị trong nhà máy
Lịch sử phát triển của AGV
Hệ thống xe dẫn hướng tự động (AGVS) đã tồn tại từ năm 1953 bới Barrett
Electronics Of Northbrook, bang Illinois – USA, nay là Savant Automation of Walker,
bang Michigan – USA.. Một nhà phát minh với một giấc mơ sáng chế ra một phương
pháp tự động hoá con người trên chiếc xe tải kéo mà đã được sử dụng trong các nhà
máy trong nhiều năm.
Lúc đầu chỉ là một chiếc xe kéo nhỏ chạy theo một đường dẫn. Hệ thống hướng
dẫn đầu tiên được tạo ra khi xuất hiện các cảm biến dò theo một từ trường. Agv tồn tại
ở mức này cho đến giữa những năm bảy mươi. Công nghệ lúc này đã điều khiển các hệ
thống để mở rộng khả năng và tính linh hoạt. Xe không chỉ còn được dùng để kéo rơ
moóc trong kho, mà còn được sử dụng trong quá trình sản xuất, làm việc, và các hệ
thống lắp ráp ô tô.

4

Hình 2.2 Một trong những mẫu xe AGV đầu tiên
Qua nhiều năm, khi công nghệ trở nên tinh vi hơn, thì ngày nay các AGV chủ
yếu được định vị bởi hệ thống Lazer LGV (Lazer Guided Vehicle). Trong quá trình tự
hành, LGV được lập trình để giao tiếp với các robot khác nhằm đảm bảo sản phẩm
được chuyển qua các trạm, kho nơi mà sau đó chúng được giũa lại hoặc chuyển đến
một vị trí khác. Ngày nay, LGV đóng vai trò quan trọng trong thiết kế các nhà máy và
nhà kho, đưa hàng hóa đến đúng địa điểm một cách an toàn.
Phân loại AGV
a. Phân loại theo chức năng thì có 4 kiểu AGV
*) Xe kéo (Towing Vehicle)
Xe kéo xuất hiện đầu tiên và bay giờ vẫn còn thịnh hành. Loại này có thể kéo
được nhiều loại toa hàng khác nhau và chở được từ 8000 đến 60000 pounds.
Ưu điểm của hệ thống xe kéo:
- Khả năng chuyên chở lớn
- Có thể dự đoán và lên kế hoạch về tính hiệu quả của việc chuyên chở cũng như
đảm bảo an toàn.
- Tăng tính an toàn.

Hình 2.3 Mô hình xe kéo
*) Xe chở (Unit Load Vehicle)
5

Xe chở được trang bị các tầng khay chứa có thể là các nâng, hạ chuyền động
bằng băng tải ,đai hoăc xích. Loại này có ưu :
- Tải trọng được phân phối và di chuyển theo yêu cầu.
- Thời gian đấp ứng nhanh gọn.
- Giảm hư hại sản .
- Đường đi linh hoạt.
- giảm thiểu các tắc nghẽn giao thông chuyên chở.
- Lập kế hoạch hiệu quả.

Hình 2.4 Mô hình xe chở
*) Xe đẩy (Cart Vehicle)
Xe đẩy được cho là có tính linh hoạt cao và rẻ tiền. Chúng được sử dụng để
chuyên chở vật liệu và các hệ thống lắp giáp.

Hình 2.5 Mô hình xe đẩy
*) Xe nâng (Fork Vehicle)
Có khả năng nâng các tải trọng đặt trên sàn hoặc trên các bục cao hay các khối
hàng đặt trên giá

6

Hình 2.6 Mô hình xe nâng
b. Nếu phân loại theo dạng đường đi thì AGV chia làm các loại như sau
*) Loại chạy không chạy theo đường dẫn (Free path navigation)
Có thể di chuyển đến các vị trí bất kỳ trong không gian hoạt động. Đây là loại
xe AGV có tính linh hoạt cao được định vị vị trí nhờ các cảm biến con quay hồi
chuyển (Gyroscop sensor) để xác định hướng di chuyển, cảm biến laser để xác định vị
trí các vật thể xung quanh trong quá trình di chuyển, hệ thống định vị cục bộ (Local
navigation Location) để xác định tọa độ tức thời,…Việc thiết kế loại xe này đòi hỏi
công nghệ cao và phức tạp hơn so với các loại AGV khác.
*) Loại chạy theo đường dẫn (Fixed path navigation)
Xe AGV thuộc loại này được thiết kế chạy theo các đường dẫn định sẵn gồm các loại
đường dẫn như sau:
- Đường dẫn từ: Là loại đường dẫn có cấu tạo là dây từ (Magnetic wire) chôn
ngầm dưới nền sàn. Khi di chuyển, nhờ có các cảm biến cảm ứng từ mà xe có thể di
chuyển theo đường dây dẫn. Loại đường dẫn này không nằm bên trên mặt sàn nên có
mỹ quan tốt, không ảnh hưởng đến các công việc vận hành khác. Tuy nhiên khi sử
dụng phải tiêu tốn năng lượng cho việc tạo từ tính trong dây, đồng thời đường dẫn là
cố định và không thể thay đổi được.
- Đường ray dẫn: Xe AGV được chạy trên các ray định trước trên mặt sàn. Loại
này chỉ sử dụng đối với những hệ thống chuyên dụng. Nó cho phép thiết kế xe đơn
giản hơn và có thể di chuyển với tốc độ cao nhưng tính linh hoạt thấp.
- Đường băng kẻ trên sàn:Xe AGV di chuyển theo các đường băng kẻ sẵn trên
sàn nhờ các loại cảm biến nhận dạng vạch kẻ. Loại này có tính linh hoạt cao vì trong
quá trình sử dụng người ta có thể thay đổi đường đi một cách dễ dàng nhờ kẻ lại các
vạch dẫn. Tuy nhiên khi sử dụng, các vạch dẫn có thể bị bẩn hay hư hại gây khó khăn
cho việc điều khiển chính xác xe.
2.2 Thành phần chính của AGV
Thông thường các bộ phận chính của AGV bao gồm:
- Các bộ phận dẫn động và điều khiển: Động cơ, mạch điều khiển, cảm biến,
phanh hãm…
- Khay chứa tải: Được thiết kế tùy theo loại AGV và yêu cầu sử dụng
- Nguồn năng lượng : Ắc quy, điện một chiều.
- Các hệ thống định vị và truyền thông: Truyền phát tín hiệu, dẫn đường định vị
vị trí và xác định đường đi.
2.2.1 Vi điều khiển ATMEGA16
7

a.Giới thiệu
Atmega16 là bộ vi điều khiển CMOS 8 bit tiêu thụ điện năng thấp dựa trên kiến
trúc RISC (Reduced Intruction Set Computer). Vào ra Analog – digital và ngược lại.
Với công nghệ này cho phép các lệnh thực thi chỉ trong một chu kì xung nhịp, vì thế
tốc độ xử lý dữ liệu có thể đạt đến 1 triệu lệnh trên giây ở tần số 1 Mhz. Vi điều khiển
này cho phép người thiết kế có thể tối ưu hoá chế độ độ tiêu thụ năng lượng mà vẫn
đảm bảo tốc độ xử lí.






Hình 2.7 Sơ đồ chân Atmega16
VCC: Điện áp nguồn nuôi.
GND: Nối mass.
PortA (PA7…PA0): PortA nhận vào tín hiệu Analog và chuyển đổi qua tín
hiệu Digital. Ngoài ra PortA có thể được tách ra làm vào ra 2 hướng 2 bit
nếu bộ chuyển đổi A/D không được sử dụng. Các chân của Port A ở vào
trạng thái có điện trở cao khi tín hiệu Reset ở chế độ tích cực hoặc ngay cả
khi không có tín hiệu xung đồng hồ. Port A cung cấp các đường địa chỉ/dữ
liệu vào/ra hoạt động theo kiểu đa hợp kênh khi dùng bộ nhớ SRAM ở bên
ngoài.
PortB,D : tương tự như PortA.
PortC (PC7…PC0): tương tự như PortA. Nhưng nếu cho phép giao diện
JTAG, thì các chân PC5, PC3, PC2 sẽ hoạt động ngay cả khi reset lại tín
hiệu.
Reset: Lối vào đặt lại. Bộ vi điều khiển sẽ được đặt lại khi chân này ở chế
độ thấp trong hơn 50ns, các xung ngắn hơn không tạo ra tín hiệu đặt lại.
XTAL1: Lối vào bộ khuếch đại đảo và lối vào mạch tạo xung nhịp bên
trong.
8

 XTAL2: Lối ra bộ khuếch đại đảo : XTAL1 và XTAL2 lần lượt là lối vào
và lối ra của một bộ khuếch đại đảo. Bộ khuếch đại này được bố trí để làm
bộ tạo dao động trên chip xung nhịp bên ngoài. Chân XTAL2 để trống, còn
chân XTAL1 được nối với bộ dao động bên ngoài.
 AREF : Là chân chuyển đổi tín hiệu analog cho bộ chuyển đổi A/D.
 AVCC : Là chân nguồn cho Port A và cho bộ chuyển đổi A/D. Nó có thể tự
kết nối với nguồn chính ngay cả khi ADC không được sử dụng.
b.Đặc trưng
 Được chế tạo theo kiến trúc RISC hiệu suất cao mà điện năng tiêu thụ thấp
 Tập lệnh gồm 131 lệnh, hầu hết đều chỉ thực thi trong 1 chu kì xung nhịp.
 Bộ nhân hai chu kì.
 32 x 8 thanh ghi làm việc đa dụng.
 Hoạt động tĩnh
 16 MIPS với thông lượng 16MHz
 8KB Flash ROM lập trình được ngay trên hệ thống :
o Giao diện nối tiếp SPI có thể lập trình ngay trên hệ thống.
o Cho phép 1000 lần ghi/xóa.
 Bộ EEPROM 512 byte, cho phép 100.000 lần ghi/xóa
 16 Kbyte bộ nhớ chương trình in-System Self-programmable Flash.
 Chu kì ghi/xóa (Write/Erase) :10.000 Flash/ 100.000 EEPROM.
 Độ bền dữ liệu 20 năm ở 85°C và 100 năm ở 25°C
 Bộ nhớ SRAM 512 byte.
 Bộ biến đổi ADC 8 kênh, 10 bit.
 32 ngõ I/O lập trình được.
 Bộ truyền nối tiếp bất đồng bộ vạn năng UART.
 Vcc=2.7V đến 5.5V.
 Tốc độ làm việc: 8 MHz đối với Atmega16L, 16MHz đối với Atmega16 tối
đa .
 Tốc độ xử lí lệnh đến 8 MIPS ở 8 MHz nghĩa là 8 triệu lệnh trên giây.
 Bộ định thời gian thực (RTC) với bộ dao động và chế độ đếm tách biệt
 2 bộ Timer 8 bit và 1 bộ Timer 16 bit với chế độ so sánh và chia tần số tách
biệt và chế độ bắt mẫu.
 4 kênh điều chế độ rộng xung PWM.
 Có đến 13 interrupt ngoài và trong.
 Bộ so sánh Analog.
 Bộ lập trình Watch dog timer.
 6 chế độ ngủ : Idle, ADC Noise Reduction, Power-save, Power-down,
Standby và Extended Standby.
 Giao tiếp nối tiếp Master/Slave SPI.

9

c.Sơ đồ khối

Hình 2.8 Sơ đồ khối của Atmega16
Atmega16 có tập lệnh phong phú về số lượng với 32 thanh ghi làm việc đa
năng. Toàn bộ 32 thanh ghi đều được nối trực tiếp với ALU (Arithmetic Logic Unit),
cho phép truy cập 2 thanh ghi độc lập bằng một chu kì xung nhịp. Kiến trúc đạt được
có tốc độ xử lý nhanh gấp 10 lần vi điều khiển dạng CISC (Complex Intruction Set
Computer) thông thường.
Khi sử dụng vi điều khiển Atmega16, có rất nhiều phần mềm được dùng để lập
trình bằng nhiều ngôn ngữ khác nhau đó là: Trình dịch Assembly như AVR studio của
Atmel, Trình dịch C như win AVR, CodeVisionAVR C, ICCAVR. C - CMPPILER của
GNU… Trình dịch C đã được nhiều người dụng và đánh giá tương đối mạnh, dễ tiếp
cận đối với những người bắt đầu tìm hiểu AVR, đó là trình dịch CodeVisionAVR C.
Phần mềm này hỗ trợ nhiều ứng dụng và có nhiều hàm có sẵn nên việc lập trình tốt
hơn.
2.2.2 Động cơ DC servo DCM50207
10

Hình 2.9 Động cơ DC servo DCM50207.
Động cơ DC servo DCM50207 là động cơ servo nam châm vĩnh cửu có chổi
than. Động cơ rất lí tưởng cho các ứng dụng đòi hỏi sự chính xác. Nó có gắn một
encoder kèm theo để phản hồi vị trí cho bộ điều khiển.
a.Các ưu điểm
 Tính năng kỹ thuật cao (vận hành mượt, độ chính xác cao và nhiễu thấp)
 Chi phí thấp.
 Nhiễu tạp nhỏ.
 Kèm theo encoder (1000 xung),lỗi vị trí có thể được giới hạn đến một xung.
b. Các ứng dụng điển hình
 Dùng trong các máy khắc,máy cắt,máy phun mực.
 Máy chỉ dẫn và cài đặt thí nghiệm.
 Các thiết bị đo lường như các dụng cụ phân tích,mô phỏng..
 Các thiết bị điện và các thiết bị chịu tải hay không tải.
 Các thiết bị y tế.
2.2.3 Giới Thiệu Các Đặc Tính Ứng Dụng Của Driver DCS810
a. Giới thiệu
DCS810 là một bộ điều khiển số của động cơ secvo DC,được phát triển với kỹ
thuật DSP và công nghệ MOSFET hiệu năng cao.Trong việc điều khiển vị trí,người sử
dụng dễ dàng thay đổi các nấc điều khiển cho DCS810 mà không phải thay đổi hệ
thống điều khiển,bởi vì lệnh đầu vào của nó là tín hiệu PUL/DIR tương ứng với các
nấc điều khiển.Trong các ứng dụng điều khiển chuyển động nguồn thấp,các hệ thống
Servo DC làm việc tốt hơn các hệ thống Servo AC ở vận tốc,độ chính xác,nhiễu,độ ổn
định hay ít nhất là tốt hơn các hệ thống Servo AC số.
DCS810 rất dễ dàng được điều chỉnh và tất cả các thông số là dễ thấy.Các công
cụ điều chỉnh thông số bao gồm: Pro Tuner(window based setup),EZ Tuner(Text
Monitor) và STU(Small servo tuning unit) dùng trong các yêu cầu và môi trường khác
nhau.

11

Hình 2.10 Driver DCS810
b. Đặc tính
 18-80VDC,0-20V,20-400W.
 Dựa trên kỹ thuật điều khiển DSP và thuật toán điều khiển servo với độ mượt
cao.
 Các công cụ điều chỉnh thông số,bao gồm Pro Tuner,EZ Tuner và STU.
 Độ phân giải : 4 x độ phân giải encoder.
 Sai lệch vị trí giới hạn trong 1 lần đếm, và sai lệch vận tốc là 0,3% vận tốc
mong muốn.
 Tỉ số truyền điện tử là từ 1/255 đến 255.
 Hỗ trợ các tín hiệu điều khiển PUL/DIR và CW/CCW.
 Đầu vào cách ly quang,cung cấp các tín hiệu đơn và khác nhau.
 Chức năng tự động nhớ 10 lỗi gần nhất.
 Bảo vệ quá dòng,quá áp,không đủ điện áp,lỗi xung,lỗi encoder,lỗi vị trí.
 Kích thước nhỏ,kỹ thuật sắp đặt bề mặt.
c. Ứng dụng
Thích hợp với nhiều loại dụng cụ và trang thiết bị loại nhỏ như các máy
khắc,máy phun mực…Nó làm việc tốt theo các yêu cầu của thiết bị như tiếng ồn
thấp,tốc độ lớn,độ chính xác cao,và độ tin cậy lớn.
2.2.4 Hệ thống điều khiển không dây
a. Giới thiệu về truyền thông nối tiếp
Khi một bộ vi xử lý truyền thông với thế giới bên ngoài thì nó cấp dữ liệu dưới
dạng từng khúc 8 byte một. Trong một số trường hợp chẳng hạn như các máy in thì
thông tin đơn giản được lấy từ đường bus dữ liệu 8 bít và được gửi đi tới bus dữ liệu
8 byte của máy in. Điều này có thể làm việc chỉ khi đường cáp bus không quá dài vì
các đường cáp dài làm suy giảm thậm chí làm méo tín hiệu. Ngoài ra, đường dữ liệu
8 byte giá thường đắt. Vì những lý do này, việc truyền thông nối tiếp được dùng để
truyền dữ liệu giữa hai hệ thống ở cách xa nhau hàng trăm đến hàng triệu dặm. Hình
dưới là sơ đồ truyền nối tiếp so với sơ đồ truyền song song

12

Hình 2.11 Sơ đồ truyền nối tiếp so với sơ đồ truyền song song.
Thực tế là trong truyền thông nối tiếp là một đường dữ liệu duy nhất được dùng
thay cho một đường dữ liệu 8 byte của truyền thông song song làm cho nó không chỉ rẻ
hơn rất nhiều mà nó còn mở ra khả năng để hai máy tính ở cách xa nhau có truyền
thông qua đường thoại.
Truyền thông dữ liệu nối tiếp dị bộ được sử dụng rộng rãi cho các phép truyền
hướng ký tự, còn các bộ truyền dữ liệu theo khối thì sử dụng phương pháp đồng bộ.
Trong phương pháp dị bộ, mỗi ký tự được bố trí giữa các bít bắt đầu (start) và byte dừng
(stop). Công việc này gọi là đóng gói dữ liệu. Trong đóng gói dữ liệu đối với truyền
thông dị bộ thì dữ liệu chẳng hạn là các ký tự mã ASCII được đóng gói giữa một byte
bắt đầu và một byte dừng. Byte bắt đầu luôn luôn chỉ là một byte, còn byte dừng có
thể là một hoặc hai byte. Byte bắt đầu luôn là byte thấp (0) và các byte dừng luôn là các
byte cao (bít 1). Ví dụ, hãy xét ví dụ trên hình vẽ sau, trong đó ký tự “A” của mã
ASCII (8 bít nhị phân là 0100 0001) đóng gói khung giữa một byte bắt đầu và một
byte dừng.

Hình 2.12 Truyền dữ liệu nối tiếp dị bộ.
Đóng khung một ký tự “A” của mã ASCII (41H) có tín hiệu là 1 (cao) được
coi như là một dấu (mark) , còn không có tín hiệu tức là 0 (thấp) thì được coi là
khoảng trống (space) . Lưu ý rằng phép truyền bắt đầu với start sau đó byte D0, byte
thấp nhất LSB, sau các byte còn lại cho đến byte D7, byte cao nhất MSB và cuối cùng là
byte dừng stop để báo kết thúc ký tự “A”.
Trong truyền dữ liệu nếu dữ liệu có thể được vừa phát và vừa được thu thì gọi
là truyền song công. Điều này tương phản với truyền đơn công chẳng hạn như các
máy in chỉ nhận dữ liệu từ máy tính. Truyền song công có thể có hai loại là bán song
công và song công hoàn toàn phụ thuộc vào truyền dữ liệu có thể xảy ra đồng thời
không? Nếu dữ liệu được truyền theo một đường tại một thời điểm thì được gọi là
truyền bán song công. Nếu dữ liệu có thể đi theo cả hai đường cùng một lúc thì gọi là

13

song công toàn phần. Tất nhiên, truyền song công đòi hỏi hai đường dữ liệu (ngoài
đường âm của tín hiệu), một để phát và một để thu dữ liệu cùng một lúc.

Hình 2.13 Các kiểu truyền dữ liệu.
Xuất phát từ yêu cầu thực tế của đề tài AGV , nhóm đã nghiên cứu rất kỹ lý
thuyết cũng như thực tế , từ đó quyết định sử dùng RF ( Radio frequency) để điều
khiển không dây (wireless) cho xe AGV.
b. Mã hóa, giải mã giữ liệu trong truyền thông RF
Trên không trung có rất nhiều sóng điện từ tồn tại, tác động vào máy thu gây
nhiễu, việc mã hóa/ giải mã để đưa ra được tín hiệu truyền đi, thu về đạt độ chính xác
cao và loại trừ các tác động sai do môi trường bị nhiễu tác động vào máy thu.
Việc mã hóa được coi là rất quan trọng trong điều khiển, nó nâng cao độ bảo
mật, không bị nhiễu do môi trường xung quanh. Một máy phát có mã hóa và máy thu
có giải mã sẽ ít bị nhận sai dữ liệu hoặc cũng có thể sửa sai dữ liệu, khó bị can nhiễu
hơn so với không mã hóa.
Dữ liệu được đưa vào máy phát là dạng nối tiếp, trong truyền thông số, các bit 0
hoặc 1 sẽ được đưa vào đầu dữ liệu phát mã hóa và máy thu có nhiệm vụ giải điều chế,
hoàn lại dạng của tín hiệu này.
Việc mã hóa dữ liệu cũng như mã hóa điều khiển vậy, ta có thể làm bằng nhiều
cách: sử dụng các IC mã hóa – giải mã, lập trình bằng vi điều khiển, mã hóa trực tiếp
với PC …
Có rất nhiều dạng mã hóa khác nhau như: NRZL (Non Return to Zero Level),
NRZI ( Non Return to Zero Inverted), Manchester … Hình dưới là một số dạng mã
hóa phổ biến.

Hình 2.14 Mã hóa dữ liệu RF

14

Điều chế là dùng tín hiệu cần truyền để làm thay đổi một thông số nào đó của
một tín hiệu khác, tín hiệu này thực hiện nhiệm vụ mang tín hiệu cần truyền đến nơi
thu nên được gọi là sóng mang.
Mục đích của điều chế là dời phổ tần của tín hiệu cần truyền đến một vùng phổ
tần khác thích hợp với tính chất của đường truyền và nhất là có thể truyền đồng thời
nhiều kênh một lúc.
Tóm lại, phương pháp điều chế là dùng tín hiệu cần truyền làm thay đổi một
thông số nào đó của sóng mang (biên độ, tần số, pha …). Tùy theo thông số được lựa
chọn ta có các phương pháp điều chế khác nhau: Điều chế biên độ AM (Amplitude
Modulation), điêu chế tần số FM (Frequency Modulation), điều chế pha ΦM …
*) Điều chế AM (Amplitude Modulation)
Dữ liệu có thể được truyền bằng phương pháp điều chế AM, trong trường hợp
này gọi là kỹ thuật dời biên (ASK – Amplitude Shift Keying). Bit 1 được truyền đi bởi
sóng mang có biên độ E1, bít 0 được truyền đi bởi sóng mang có biên độ E2. Hình
dưới minh họa tín hiệu ASK.

Hình2.15 Điều chế AM
*) Điều chế FM (Frequency Modulation)
Dữ liệu có thể được truyền bằng phương pháp điều chế FM, trong trường hợp
này gọi là kỹ thuật dời tần (FSK – Frequency Shift Keying).
FSK được dùng rộng rãi trong truyền số liệu. Trong FSK bit 1 được truyền đi
bởi tần số FM, bít 0 được truyền đi bởi tần số FS. Hình dưới minh họa tín hiệu điều
chế FSK.

Hình 2.16 Điều chế FM
c. Một vài định nghĩa căn bản cần nắm trước khi tiến hành xây dựng mạch thu
phát tín hiệu RF.
*) Tốc độ truyền dữ liệu (Baud Rate)

15

Lấy ví dụ về việc truyền 1 bit trong 1ms, ta thấy rằng để việc truyền và nhận
không đồng bộ xảy ra thành công thì các thiết bị tham gia phải “thống nhất” nhau về
khoảng thời dành cho 1 bite truyền, hay nói cách khác tốc độ truyền phải được cài đặt
như nhau trước, tốc độ này gọi là tốc độ Baud. Theo định nghĩa, tốc độ baud là số bit
truyền trong 1 giây. Ví dụ nếu tốc độ baud được đặt là 19200 thì thời gian dành cho 1
bit truyền là 1/19200 ~ 52.083us.
*) Khung truyền (Frame)
Do truyền thông nối tiếp mà nhất là nối tiếp không đồng bộ rất dễ mất hoặc sai
lệch dữ liệu, quá trình truyền thông theo kiểu này phải tuân theo một số quy cách nhất
định. Bên cạnh tốc độ baud, khung truyền là một yếu tốc quan trọng tạo nên sự thành
công khi truyền và nhận. Khung truyền bao gồm các quy định về số bit trong mỗi lần
truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số
lượng các bit trong một data cũng được quy định bởi khung truyền. Hình 1 là một ví
dụ của một khung truyền theo UART, khung truyền này được bắt đầu bằng một start
bit, tiếp theo là 8 bit data, sau đó là 1 bit parity dùng kiểm tra dữ liệu và cuối cùng là 2
bits stop.
*) Start Bit
Start là bit đầu tiên được truyền trong một frame truyền, bit này có chức năng
báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới. Ở module
USART trong AVR, đường truyền luôn ở trạng thái cao khi nghỉ (Idle), nếu một chip
AVR muốn thực hiện việc truyền dữ liệu nó sẽ gởi một bit start bằng cách “kéo”
đường truyền xuống mức 0. Như vậy, với AVR bit start là mang giá trị 0 và có giá trị
điện áp 0V (với chuẩn RS232 giá trị điện áp của bit start là ngược lại). start là bit bắt
buộc phải có trong khung truyền.
*) Stop Bit
Stop bits là một hoặc các bit báo cho thiết bị nhận rằng một gói dữ liệu đã được
gởi xong. Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm tra khung truyền
để đảm bảo tính chính xác của dữ liệu. Stop bits là các bits bắt buộc xuất hiện trong
khung truyền, trong AVR USART có thể là 1 hoặc 2 bits (Trong các thiết bị khác Stop
bits có thể là 2.5 bits). Trong ví dụ ở hình 1, có 2 stop bits được dùng cho khung
truyền.Giá trị của stop bit luôn là giá trị nghỉ (Idle) và là ngược với giá trị của start bit,
giá trị stop bit trong AVR luôn là mức cao (5V).
*) Data
Data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận.
Data không nhất thiết phải là gói 8 bit, với AVR bạn có thể quy định số lượng bit của
data là 5, 6, 7, 8 hoặc 9 (tương tự cho hầu hết các thiết bị hỗ trợ UART khác). Trong
truyền thông nối tiếp UART, bit có ảnh hưởng nhỏ nhất (LSB – Least Significant Bit,
bit bên phải) của data sẽ được truyền trước và cuối cùng là bit có ảnh hưởng lớn nhất
(MSB – Most Significant Bit, bit bên trái).
*) Parity Bit
Parity là bit dùng kiểm tra dữ liệu truyền đúng không (một cách tương đối). Có
2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity). Parity chẵn nghĩa là
số lượng số 1 trong dữ liệu bao gồm bit parity luôn là số chẵn. Ngược lại tổng số
lượng các số 1 trong parity lẻ luôn là số lẻ. Ví dụ, nếu dữ liệu của bạn là 10111011 nhị
16

phân, có tất cả 6 số 1 trong dữ liệu này, nếu parity chẵn được dùng, bit parity sẽ mang
giá trị 0 để đảm bảo tổng các số 1 là số chẵn (6 số 1). Nếu parity lẻ được yêu cầu thì
giá trị của parity bit là 1. Hình 1 mô tả ví dụ này với parity chẵn được sử dụng. Parity
bit không phải là bit bắt buộc và vì thế chúng ta có thể loại bit này khỏi khung truyền.
Chú ý và gợi ý: khung truyền phổ biến nhất là : start bit+ 8 bit data+1 stop
bit
- Hai bit UPM1 và UPM0( Parity Mode) được dùng để quy định kiểm tra
pariry. Nếu UPM1:0=00, parity không được sử dụng (mode này khá thông dụng),
UPM1:0=01 không được sử dụng, UPM1:0=10 thì parity chẵn được dùng,
UPM1:0=11 parity lẻ được sử dụng (xem thêm bảng 1).
Bảng 2.1 Chọn kiểm tra parity.

- USBS (Stop bit Select), bit Stop trong khung truyền bằng AVR USART có thể
là 1 hoặc 2 bit, nếu USBS=0 thì Stop bit chỉ là 1 bit trong khi USBS=1 sẽ có 2 Stop bit
được dùng.
- Hai bit UCSZ1 và UCSZ2 (Character Size) kết hợp với bit UCSZ2 trong
thanh ghi UCSRB tạo thành 3 bit quy định độ dài dữ liệu truyền. Bảng 2 tóm tắt các
giá trị có thể có của tổ hợp 3 bit này và độ dài dữ liệu truyền tương ứng.
Bảng 2.2 Độ dài dữ liệu truyền.

Nhắc lại là thanh ghi UBRRH dùng chung địa chỉ thanh ghi UCSRC,ta phải set
bit này bằng 0 nếu muốn sử dụng thanh ghi UBRRH. Giá trị gán cho thanh ghi UBRR
không phải là tốc độ baud, nó chỉ được USART dùng để tính tốc độ baud. Bảng 3
hướng dẫn cách tính tốc độ baud dựa vào giá trị của thanh ghi UBRR và ngược lại,
cách tính giá trị cần thiết gán cho thanh ghi UBRR khi đã biết tốc độ baud.
Bảng 2.3 Tính tốc độ baud.

17

Trong các công thức trong bảng 3, fOSC là tốc tần số xung nhịp của hệ thống
(thạch anh hay nguồn xung nội…). Để tiện cho bạn theo dõi, tôi đính kèm bảng ví dụ
cách đặt giá trị cho UBRR theo tốc độ baud mẫu.
d. Giới thiệu về Modul JZ863 và JZ864 (Mô đun thu - phát tín hiệu sử dụng trong
AGV)
*) Giới thiệu chung.

Hình 2.20 Mô đun thu – phát tín hiệu JZ863

Hình 2.21 Mô đun thu - phát tín hiệu JZ864
Là một module mini nhưng đầy sức mạnh, được sử dụng để truyền dữ liệu
không dây trong khoảng cách ngắn.
Với những lợi thế như kích thước nhỏ gọn, trọng lượng nhỏ, tiêu thụ điện năng
thấp, sự ổn định đây là một sự lựa chọn đáng tin cậy. Nó có chức năng truyền dữ liệu
hai chiều, kiểm tra và kiểm soát dữ liệu.
Được ứng dụng rộng rãi trong các thiết bị đo không dây (như đồng hồ nước,
đồng hồ đo điện, đo khí ga,…), thẻ thông minh, cân điện tử, hệ thống báo động, kiểm
soát kho vận, thu thập dữ liệu tự động, thiết bị thep dõi v.v…
Giao diện USB giúp cho thao tác liên kết với máy tính được dễ dàng và thuận
tiện.
*) Các tính năng nổi bật
- Công suất truyền tải thấp.
18

+ Công suất tiêu thụ nhỏ, chỉ 100 mW
+ Nhận tín hiệu với độ nhạy cao -110 dbm
- Công suất tiêu thụ thấp: Dòng nhận <15 mA, dòng truyền <100 mA
- Dải tần số rộng, không yêu cầu áp dụng các điểm tần số: Tuy nhà cung cấp đưa ra
dải tần sóng mang 428 – 433 MHz, nhưng sản phẩm có thể dùng ở các tần số khác:
868/915 MHz
- Chống nhiễu cao và BER (Bit Error Rate) thấp: Căn cứ vào phương thức điều chế
FSK, để tìm ra giao thức truyền thông hiệu quả nhất. Các lỗi bit thực tế chỉ chiếm một
tỷ lệ rất nhỏ 10-5 ~ 10-6, có thể đạt được tỷ lệ lỗi bit là 10-2.
- Phạm vi truyền dẫn rộng: Hoạt động hiệu quả trong phạm vi tầm nhìn, khoảng cách
truyền dẫn có thể lên tới > 500m khi khi BER = 10 -3/1200bps, chiều cao ăngten lớn
hơn 2m.
- Truyền dữ liệu trong suốt: Cung cấp giao diện truyền dữ liệu trong suốt (nhận cái gì
truyền cái đó), vì vậy thích hợp với mọi giao thức của người dùng: theo chuẩn hoặc
không theo chuẩn. Thời gian từ khi gửi đến khi tiếp nhận nhỏ (<10ms).
- Đa kênh, đa tốc độ: JZ863 cung cấp cho người sử dụng 8 kênh sóng truyền dữ liệu
để có thể đáp ứng nhu cầu sử dụng của nhiều người. Nó có các tốc độ truyền sau để
lựa chọn: 1200bps, 2400bps, 4800bps, 9600bps, 19200bps.
- Truyền thông không dây tốc độ cao và bộ đệm dữ liệu lớn: Khi tốc độ truyền trong
không khí lớn hơn tốc độ giao tiếp, cho phép truyền dữ liệu với độ dài không hạn chế.
Khi tốc độ truyền thấp hơn tốc độ giao tiếp thì cho phép truyền khung dữ liệu chiều
dài 255 bit.
- Khả năng kiểm soát dữ liệu thông minh khiến cho người dùng không cần phải chuẩn
bị chương trình quá nhiều: Ngay cả đối với những dạng truyền thông phức tạp người
dùng cũng không cần phải chuẩn bị chương trình quá nhiều. Ngay sau khi nhận được
dữ liệu từ giao diện JZ863 sẽ tự động hoàn tất các hoạt động khác như truyền / nhận
chuyển đổi trong không khí, kiểm soát, …
- Độ tin cậy cao, nhỏ và nhẹ: Tín hiệu thu phát được mã hóa để giảm thiểu tối đa
nhiễu sóng, độ tin cậy cao, và tỷ lệ thất bại thấp.
- Chức năng giám sát theo dõi: Chức năng giám sát theo dõi chức năng bên trong
được bổ sung so với cơ cấu sản phẩm truyền thống giúp nâng cao độ tin cậy.
- Antenna tùy chọn: Tùy theo yêu cầu sử dụng mà người dùng có thể lựa chọn những
loại antenna khác nhau để qua đó đạt được hiệu quả cao nhất.
- Vỏ được làm bằng nhựa cứng chắc chắn, chống bụi, chống thấm nước, chịu va đập.
*) Bảng danh sách các kênh tần số
Bảng 2.4: Các kênh tần số của Mô đun JZ863
Channel
Tần số (MHz)
Channel
Tần số (MHz)
1
428.0028
5
433.1176
2
429.0012
6
433.6706
3
433.3020
7
433.8286
4
433.9164
8
433.5308
Bảng 2.5: Các kênh tần số của Mô đun JZ864
Channel

Tần số (MHz)

Channel

Tần số (MHz)
19

1
2
3
4

428.0028
429.0012
433.3020
433.9164

5
6
7
8

432.1685
431.5020
430.0764
434.5308

2.2.5 Một vài thiết bị khác
a. Cảm biến tiệm cận

Hình 2.24 Cảm biến tiệm cận.
Cảm biến này có nhiệm vụ xác định vị trí đích đến của xe và được lắp trên xe.
Nhóm lựa chọn cảm biến tiệm cận (Proximity Sensor) loại từ cảm (Inductive). Chọn
loại E2A-M30KN30 có khả năng phát hiện đối với vật thể kim loại.
Đặc điểm kỹ thuật:
Hãng sản xuất :
Omron
Nguồn :
12-24 DC
Khoảng cách xa (mm) : 30
Bốn kích cỡ đường kính M8, M12, M18, M30.
Có loại prewired và connector M8, M12
Hai chất liệu vỏ (brass và stainless steel)
Tại mỗi vị trí dừng ta chôn một mảnh kim loại sao cho khi xe chạy đến vị trí đó
thì mảnh kim loại nằm đối diện với cảm biến. Trong quá trình di chuyển, khi cảm biến
phát hiện ra mảnh kim loại thì xe sẽ dừng lại nhờ dừng động cơ và hệ thống phanh.
Chỉ cần dùng một cảm biến tiệm cận cho tất cả các vị trí dừng.
b. Cảm biến siêu âm cảnh báo
Cảm biến cảnh báo có nhiệm vụ giám sát vùng làm việc của xe, thông báo các
va chạm có thể xảy ra trong vùng hoạt động, giúp hệ điều khiển giảm tốc độ hoặc
dừng xe trong trường hợp khẩn cấp.

20

Hình 2.25 Cảm biến siêu âm SRF05.
*)Giớithiệu
SRF05 là một bước phát triển từ SRF04, được thiết kế để làm tăng tính linh
hoạt, tăng pham vi, ngoài ra còn giảm bớt chi phí. SRF05 là hoàn toàn tương thích với
SRF04. Khoảng cách là tăng từ 3 mét đến 4 mét. Một chế độ hoạt động mới, SRF05
cho phép sử dụng một chân duy nhất cho cả kích hoạt và phản hồi, do đó tiết kiệm các
giá trị trên chân điều khiển. Khi chân chế độ không kết nối, SRF05 các hoạt động
riêng biệt chân kích hoạt và và chân hồi tiếp, như SRF04. SRF05 bao gồm một thời
gian trễ trước khi xung phản hồi để mang lại điều khiển chậm hơn chẳng hạn như bộ
điều khiển thời gian cơ bản Stamps và Picaxe để thực hiện các xung lệnh.
*) Chế độ 1 – tương ứng SRF04 – tách biệt kích hoạt và phản hồi
Chế độ náy sử dụng riêng biệt chân kích hoạt và chân phản hồi, và là chế độ đơn
giản nhất để sử dụng. Tất cả các chương trình điển hình cho SRF04 sẽ làm việc cho
SRF05 ở chế độ này. Để sử dụng chế độ này, chỉ cần chân chế độ không kết nối SRF05 có một nội dừng trên chân này.

Hình 2.26 Sơ đồ chân của SRF05

21

Hình 2.27 Chế độ 1 của SRF05.
*) Chế độ 2 – Dùng một chân cho cả kích hoạt và phản hồi
Chế độ này sử dụng một chân duy nhất cho cả tín hiệu kích hoạt và hồi tiếp, và
được thiết kế để lưu các giá trị trên chân lên bộ điều khiển nhúng. Để sử dụng chế độ
này, chân chế độ kết nối vào chân mát. Tín hiệu hồi tiếp sẽ xuất hiện trên cùng một
chân với tín hiệu kích hoạt. SRF05 sẽ không tăng dòng phản hồi cho đến 700uS sau
khi kết thúc các tín hiệu kích hoạt. Bạn đã có thời gian để kích hoạt pin xoay quanh và
làm cho nó trở thành một đầu vào và để có pulse đo mã của bạn đã sẵn sàng. Lệnh
PULSIN được tìm ra và được dùng phổ biến hiện nay để điều khiển tự động.
*) Để sử dụng chế độ 2 với các Stamps BS2 cơ bản, ta chỉ cần sử dụng
PULSOUT và PULSIN trên cùng một chân, như thế này:
SRF05 PIN 15
hoạt echo
Range VAR Word
SRF05 = 0
PULSOUT SRF05, 5
2uS)
PULSIN SRF05, 1, Range
Range = Range/29
cho inch)

'sử dụng pin cho cả hai và kích
'xác định phạm vi biến 16 bit
'bắt đầu bằng pin thấp
'đưa ra kích hoạt pulse 10uS (5 x
'echo đo thời gian
'để chuyển đổi sang cm(chia 74

Các thiết lập khác của chân 5
Chân 5 được đóng nhẫn là "programming pins" được sử dụng một lần duy nhất
trong quá trình sản xuất để lập trình cho bộ nhớ Flash trên chip PIC16F630. Các
chương trình của PIC16F630 pins cũng được sử dụng cho các chức năng khác trên
SRF05, nên chắc chắn rằng bạn không kết nối bất cứ cái gì với các chân, hoặc bạn sẽ
làm gián đoạn hoạt động mô-đun.

22

Hình 2.28 Chế độ 2 của SRF05.
*)Thay đổi chùm tia và độ rộng chùm
Đây là một câu hỏi được nêu lên thường xuyên, tuy nhiên không có cách gì dễ
dàng để giảm bớt hay thay đổi chiều rộng cua chùm tia. Chùm tia của SRF05 có dạng
hình nón với độ rộng của chùm là một hàm của diện tích mặt của các cảm biến và là cố
định. Chùm tia của cảm biến được sử dụng trên SRF05, lấy từ bảng dữ liệu nhà sản
xuất, sẽ được biểu diễn bên dưới

Hình 2.29 Chùm tia của SRF05.
c. Nguồn năng lượng
Xe tự hành sử dụng các ắcquy (Lead acid) loại 12VDC và có thể hoạt động
liên tục ứng trong khoảng 8 h với tải định mức. Các ắc quy này cấp nguồn cho hai
động cơ, bộ điều khiển và các cảm biến, đèn báo…. Các bộ ắcquy được nạp tại các
trạm nạp ắcquy.

Hình 2.30 Ắc quy(Lead acid)

23

CHƯƠNG III

XÂY DỰNG MÔ HÌNH HỆ THỐNG

3.1 Lựa chọn phương án thiết kế AGV
Nên chọn loại bám theo vạch vì loại này có tính ứng dụng cao. Vạch nên chọn
loại có tính kim loại (Bột kim loại trộn với sơn để làm vạch) để ko bị nhiễu cảm biến,
ko sợ bị ảnh hưởng do bẩn, cảm biến bắt vạch loại tiệm cận hỗ cảm (Inductive) sẵn có
trên thị trường và theo chuẩn công nghiệp nên có tính ổn định cao. Nếu ko kẻ vạch thì
có thể dùng các tấm thép mỏng cắt thành dải rồi gắn lên sàn.
Nguyên lý vận hành của AGV chạy bám theo vạch : Do sự thay đổi tốc độ của
hai bánh xe này mà AGV có thể bám theo vạch có hình dạng thay đổi (Đường thẳng,
đường cong vv…). Nó có thể thay đổi tốc độ, dừng khẩn cấp, di chuyển tiến lùi sang
trái hay phải nhờ sự thay đổi vận tốc của hai bánh xe. Hai bánh xe được điều khiển
bằng động cơ một chiều có thể thay đổi được tốc độ. Trên đỉnh của xe có gắn một cảm
biến đo khoảng cách ( cảm biến siêu âm). Khi vật cản ở gần nó sẽ chủ động giảm tốc
độ, khi vật cản ở vị trí quá gần so với xe ở một mức độ nào đó nó sẽ dừng hoàn toàn.
Quá trình dò đường của xe sử dụng các cảm biến biến tiệm cận (Proximity Sensor)
loại hỗ cảm (Inductive )gắn ở dưới đáy xe.
Loại đường dẫn bằng kim loại không bị nhiễu do bẩn, có độ tin cậy cao hơn
nhưng chế tạo phức tạp hơn. Khi xe AGV lệch ra khỏi vạch, cảm biến sẽ thông báo
cho bộ điều khiển thực hiện quá trình thay đổi vận tốc của hai bánh lái để xe di chuyển
đúng hướng.
Hệ thống lái của AGV thường thiết kế theo kiểu lái trước dẫn động bằng hai
bánh độc lập phía sau. Với tải trọng chuyên chở nhỏ như yêu cầu bài toán thì cũng có
thể thiết kế kiểu dùng bánh xe tự lựa (Bánh xe đa hướng).
3.2 Xây dựng mô hình cơ khí

Hình 3.1 Bản vẽ mô hình toàn bộ xe.(3D)
Hệ thống cơ khí gồm các phần chính sau:
24

3.2.1. Khung đế xe: có tác dụng để gá đặt toàn bộ hệ dẫn động, gắn cảm biến Khung đế
xe phải được thiểt kế gọn nhẹ, đủ độ cứng vững, chịu đựng được tải trọng của toàn bộ
khung xe bên trên và tải trọng của hàng.

Hình 3.2 Đế xe
3.2.2 Khung trên, đặt ắc quy, driver …

Hình 3.3 Khung giá để hàng
3.2.3 Tấm để hàng:được thiết kế phải phù hợp với từng loại mặt hàng vận
chuyển.

25

Hình 3.4 Tấm đặt hàng
3.2.4 Trục.
Đây là chi tiết quan trọng trong hệ dẫn động, trục này có nhiệm vụ là truyền
chuyển động từ đầu ra của hộp giảm tốc tới bánh xe qua khớp nối mềm. Vì vậy trục
cần được thiết kế chế tạo và kiểm nghiệm bền cẩn thận.

Hình 3.5 Trục chính động cơ
3.2.5 Gối đỡ
Trên mỗi trục chính động cơ ta sử dụng 2 ổ đỡ,chi tiết này có tác dụng, đỡ
trục,đảm bảo hệ dẫn động được cứng vững….
26

Hình3.6 Gối đỡ
3.2.6 Ổ bi

Hình 3.7: Ổ bi
3.3 Thiết kế mô hình điều khiển
3.3.1 Nguyên lý vận hành AGV

27

Hình 3.8 Sơ đồ hệ thống điều khiển AGV
Xe AGV được dẫn động bằng hai bánh chủ động ở giữa.Hai bánh được nối với
hai động cơ một chiều riêng biệt.Xe có thể chuyển động tiến,lùi,bám theo vạch(đường
thẳng,đường cong..)nhờ vào điều khiển chiều chiều quay,tốc độ thích hợp của hai động
cơ. Hai bánh tư lựa ở hai đầu có nhiệm vụ tự lựa hướng chuyển động cho xe theo sự
dẫn động của hai bánh chủ động.
Quá trình dò đường của xe dựa vào cảm biến tiệm cận hỗ cảm để phát hiện các
vạch trên sàn,là các tấm thép được cắt thành dải và dán lên sàn.Loại đường dẫn kim
loại có ưu điểm là có tính ổn định cao,không bị nhiễu do bụi,bẩn.Cảm biến được gắn
thành hàng trên đầu xe và sát mặt đất để phát hiện vạch kim loại.Trong khi di chuyển
nếu xe lệch khỏi vạch, cảm biến sẽ báo về bộ điều khiển biết để xử lí thông tin ,rồi gửi
tín hiệu điều khiển đến hai động cơ, làm thay đổi tốc độ của hai bánh chủ động sao
cho xe đi đúng vạch một cách ổn định theo mong muốn.
Encoder của động cơ báo cho bộ điều khiển biết tốc độ của động cơ và quãng
đường mà xe đi được.Cảm biến siêu âm để bắt vật cản khi có các vật cản thì tín hiệu từ
cảm biến trả về VĐK sau đó VĐK sẽ điều khiển hệ thông an toàn và cảnh báo.
3.3.2 Bộ điều khiển tốc độ động cơ

28

Hình 3.9 Bộ điều khiển tốc độ động cơ
Hệ thống điều chỉnh tốc độ xe AGV thực hiện điều chỉnh tốc độ xe thông qua
điều chỉnh tốc độ của động cơ truyền động cho hai bánh phía sau. Cấu trúc hệ thống
điều chỉnh tốc độ cũng là một hệ kín. Gồm có một mạch phản hồi âm tốc độ. Tốc độ
của xe AGV được đo nhờ bộ Encoder. Đầu ra của Encoder là lượng xung phát ra tỷ lệ
với số vòng quay hay vận tốc đầu vào. Giá trị tốc độ phản hồi mà encoder đo được đưa
tới bộ điều khiển. Bộ điều chỉnh này sẽ tính toán và cho giá trị đầu ra được gán vào bộ
điều xung. Xung từ bộ điều khiển sẽ thực hiện đóng cắt van bán dẫn ( Driver) tạo ra
giá trị điện áp đầu ra U thay đổi cấp cho động cơ. Như vậy đối với hệ thống điều chỉnh
tốc độ phản hồi mạch kín thì giá trị vận tốc luôn ổn định và bám theo giá trị lượng đặt.
Giá trị lượng đặt Wđ tự động thay đổi khi có sự sai lệch phát ra từ hệ thống dẫn
hướng. Wđ sẽ nhỏ đi khi sự sai lệch vị trí của xe với vạch càng lớn.
Chú ý: không phải nhưng thông số của Driver đều giống như nhà sản xuất đưa
ra đôi khi không như ý muốn của chúng ta nên khi điều xung ra mà có tần số vượt quá
giới hạn Driver sẽ báo lỗi và động cơ sẽ không hoạt động.
3.3.3 Hệ thống an toàn

Hình 3.10 Sơ đồ hệ thống an toàn.
29

Hệ thống an toàn có nhiệm vụ đảm bảo cho xe AGV hoạt động một cách an
toàn, đưa ra các cảnh báo đèn, còi về các đối tượng nằm trong vùng hoạt động, có các
tác động giảm tốc độ hoặc dừng để tránh các va chạm.
*) Cảm biến siêu âm (Ultrasonic Sensor).
Đây là loại cảm biến có khả năng xác định khoảng cách từ vật cản đến cảm
biến, . Cảm biến này phát ra chùm sóng và khi gặp vật cản chùm tia này sẽ phản xạ trở
về. Thông qua tính toán khoảng thời gian từ lúc phát đến lúc thu được sẽ xác định
được khoảng cách giữa xe AGV và vật cản. Khi vật cản càng gần xe. Cảm biến này sẽ
xác định được khoảng cách sẽ báo cho bộ điều chỉnh biết để giảm tốc độ của xe thông
qua giảm giá trị lượng đặt vận tốc Wđ . Nếu vật cản tiến sát và chạm vào xe, thì cảm
biến sẽ phát ra tín hiệu báo cho xe dừng lại thông qua quá trình giảm tốc về không
( Wđ =0) và bộ điều khiển sẽ gửi tín hiệu kích hoạt phanh hãm. Cảm biến này có hai
chế độ hoạt động khác nhau.
*) Phanh hãm.
Phanh hãm tích hợp sẵn trên động cơ, nó là loại phanh điện từ. Khi nhận tín hiệu
dừng từ bộ điều khiển, phanh sẽ được kích hoạt khi đó mômen điện từ của phanh
thắng được lực lò xo làm cho phanh ép chặt lên trục động cơ thực hiện quá trình hãm.
Trong quá trình di chuyển do phanh không được kích hoạt vì vậy phanh không tạo lên
lực hãm tác động lên xe .
Bên cạnh đó trên xe còn có các nút ấn, và đèn báo. Các nút ấn thực hiện chức
năng khởi động quá trình hoạt động, dừng khi cần thiết và dừng khẩn cấp khi có các
tín hiệu báo lỗi hệ thống. Các đèn trên xe thông báo các trạng thái hoạt động của xe.
3.3.4 Hệ thống truyền thông
Tín hiệu vị trí đến của AGV được lập trình bằng phần mềm được truyền tới mô
đun thu – phát tín hiệu JZ864 đặt tại máy tính điều khiển thông qua cổng kết nối USB.
Sau khi mã hóa tín hiệu được truyền đến bộ thu - phát tín hiệu JZ863 đặt trên xe AGV.
Mô đun JZ863 được sử dụng tất cả 4/6 chân sẵn có, trong đó 2 chân được nối với
nguồn nuôi (nguồn ắc quy 5V), một chân truyền được nối với chân nhận trên vi điều
khiển Atmega 16 (RxD), một chân nhận được nối với chân truyền trên vi điều khiển
Atmega 16 (TxD).
Mô đun JZ863 lúc này sẽ tiến hành giải mã dữ liệu truyền đến từ Mô đun
JZ864, rồi truyền đến bộ vi điều khiển của xe qua chân truyền. Tín hiệu được xử lý
trên vi điều khiển và Driver để ra lệnh cho xe di chuyển đến vị trí mong muốn. Khi xe
di chuyển đến vị trí xác lập, thì bộ điều khiển sẽ gửi một tín hiệu đến mô đun JZ863
đặt trên xe, bộ RF này gửi trả tín hiệu ngược về mô đun JZ864 đặt tại máy tính để
thông báo trạng thái vị trí của AGV. Sơ đồ được mô tả như sau:

30

Hình 3.11 Sơ đồ hệ thống truyền thông
Lý thuyết truyền nhận thông tin của bộ vi điều khiển Atmega 16.
Vi điều khiển Atmega16 có 1 module truyền thông nối tiếp USART. Có 3 chân
chính liên quan đến module này đó là chân xung nhịp - XCK (chân số 1), chân truyền
dữ liệu – TxD (Transmitted Data) và chân nhận dữ liệu – RxD (Reveived Data). Trong
đó chân XCK chỉ được sử dụng như là chân phát hoặc nhận xung giữ nhịp trong chế độ
truyền động bộ. Tuy nhiên bài này chúng ta không khảo sát chế độ truyền thông đồng
bộ, vì thế ta chỉ cần quan tâm đến 2 chân TxD và RxD. Vì các chân truyền/nhận dữ liệu
chỉ đảm nhiệm 1 chức năng độc lập (hoặc là truyền, hoặc là nhận), để kết nối các chip
AVR với nhau (hoặc kết nối AVR với thiết bị hỗ trợ UART khác) ta phải đấu “chéo” 2
chân này. TxD của thiết bị thứ nhất kết nối với RxD của thiết bị 2 và ngược lại. Module
USART trên chip Atmega32 hoạt động “song công” (Full Duplex Operation), nghĩa là
quá trình truyền và nhận dữ liệu có thể xảy ra đồng thời.

31

CHƯƠNG IV

THIẾT KẾ HỆ THỐNG

4.1 Thiết kế cơ khí
4.1.1 Thiết kế hệ thống truyền động
Hệ thống truyền động được thiết kế gồm hai động cơ phát động, hai hộp giảm
tốc trục vít bánh vít, hai trục truyền chuyển động, bốn khớp nối mềm, bốn gối đỡ, hai
bánh. Theo hướng lựa chọn phương pháp điều khiển là đò đường vạch kim loại nên
nhóm quyết định chế tạo 2 bánh chủ động ở giữa và có hai bánh tự lựa ở hai đầu. Việc
bố trí kết cấu cơ khí như thế này sẽ giúp dễ dàng trong việc điều khiển dò đường, đảm
bảo cả tiến và lùi. Ngoài ra thiết kế cơ khí theo hướng này cũng sẽ đảm bảo được trọng
tâm của xe sẽ được nằm ở giữa, giúp cho xe cân bằng khi phải mang tải nặng.

Hình 4.1 Ảnh hệ thống truyền động
a. Hộp giảm tốc trục vít bánh vít

Hình 4.2 Hộp giảm tốc trục vít bánh vít
Sử dụng hộp giảm tốc nhằm tăng mômen truyền động giữa động cơ và bánh,
đồng thời làm giảm tốc độ của xe về gần tốc độ yêu cầu để dễ dàng hơn trong việc điều
khiển. Nhóm quyết định sử dụng hộp giảm tốc trục vít bánh vít hệ số giảm tốc là 1/50.
32

Với ưu điểm của hộp giảm tốc này là khả năng tự hãm rất tốt, kết hợp với tự hãm của
Drive sẽ đảm bảo yêu cầu an toàn của xe mà không cần phải chế tạo thêm phanh ngoài.
b. Khớp nối mềm
Kết nối giữa trục động cơ và trục hộp giảm tốc, trục truyền động và trục hộp
giảm tốc đều qua khớp nối mềm. Sử dụng khớp nối mềm để tránh độ lệch tâm giữa hai
trục truyền chuyển động nối tiếp khi sự lắp đặt không chính xác. Ngoài ra, ở giữa hai
phần của khớp nối mềm có các vòng đệm bằng cao su giúp giảm chấn khi xe phải thay
đổi tốc độ đột ngột. Nhóm sử dụng các khớp nối mềm dạng chữ thập được bán sẵn
ngoài thị trường, sau khi mua các khớp nối này về gia công các lỗ để lắp vừa với các
trục của động cơ và trục truyền động, trục của hộp giảm tốc. Tiếp theo là gia công các
lỗ ren dùng để định vị các trục cố định, chống xoay. Mỗi mối lắp ghép giữa trục và
khớp nối dùng 2 vít chí M5 được gia công vuông góc với nhau để chống xoay tốt hơn.
c. Gối đỡ
Là một phần quan trọng của hệ thống truyền động với nhiệm vụ đỡ trục truyền
động và chịu toàn bộ tải trọng của xe, vì vậy việc chọn gối đỡ là rất quan trọng. Sau
khi cân nhắc nhóm đã quyết định chọn dùng hai ổ đỡ giúp cho việc chịu tải được tốt
hơn. Dựa vào đường kính trục thiết kế là θ20 nên nhóm chọn ổ có đường kính trong
của vòng bi là θ20. Mỗi gối đỡ được lắp chặt xuống sàn xe bằng 2 đai ốc M12.
d. Trục truyền chuyển động
Nhiệm vụ của trục truyền chuyển động là truyền chuyển động từ hộp giảm tốc
đến bánh xe. Được chế tạo chịu được Momen xoắn và phần để lắp ráp với bánh xe.
Vật liệu chế tạo là thép C45, đạt độ cứng 20-25 HRC.
e. Động cơ

Hình 4.3 Ảnh động cơ thực tế
Đặc điểm kỹ thuật của động cơ DCM50207:

33

Dựa vào yêu cầu kỹ thuật của xe AGV là tải trọng 150 kg,tốc độ 15m/phút.Nhóm
đã tính toán và thiết kế (sẽ đề cập ở phần sau)và quyết định sử dụng động cơ DC
SERVO DCM50207.
Ưu điểm khi sử dụng động cơ servo là có encoder kèm theo cho phép kiểm soát được
tốc độ một cách chính xác,dễ điều khiển.
*) Các đặc điểm cơ khí.

i

Hình 4.4 Đặc điểm cơ khí của động cơ DCM50207(gồm encoder)
*) Đặc tính động cơ.
Bảng 4.1: Đặc tính của của động cơ họ DCM5x207
34

STT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Tham Số
Mômen xoắn cực đại
Mômen lớn nhất (lúc nghỉ)
Tốc độ không tải
Tốc độ định mức
Quán tính Rôto
Nhiệt độ cuộn dây tối đa
Trở nhiệt
Trọng lượng (gồm encoder)
Chiều dài (gồm encoder)
Điện áp định mức
Dòng định mức
Hắng số mômen quay
Điện trở
Dòng không tải
Dòng lớn nhất (lúc nghỉ)
Đặc tính encoder

Ký hiệu
TC
TPK
SNL
SR
JM
θMAX
RTH
WM
Li
E
I
KT
RT
INL
IP

Đơn Vị
N.m
N.m
Vòng/phút
Vòng/phút
Kg.m2
o
C
o
C/watt
g
mm
V
A
N.m/A

A
A
Xung/vòng

DCM 50207
353.1x10-3
2.90
3600±10%
2900
4.73x10-5
155
4.98
1338
196±2
30.3
3.94
89.7x10-3
0.93
0.6
32.6
500/1000

Ưu điểm khi sử dụng động cơ servo là có encoder cho phép kiểm soát được tốc độ
một cách chính xác,dễ điều khiển.
e. Nguyên lý truyền chuyển động
Từ động cơ qua hộp giảm tốc, liên kết
từ hộp giảm tốc qua trục bánh xe bằng một
khớp nối mềm, trục bánh xe được đỡ bằng 2
gối đỡ qua 2 ổ bi tự lựa.
Hộp giảm tốc theo nguyên lý trục vít
bánh vít. Ưu điểm là khả năng tự hãm tốt và
khuếch đại mômen. Gối đỡ được đúc bằng
gang có khả năng chịu tải trọng lớn.
Khớp nối mềm được sử dụng để truyền
chuyển động quay giữa hộp giảm tốc và trục
động cơ, giữa trục bánh xe chủ động và hộp
giảm tốc. Loại khớp nối mềm này được sử
dụng phổ biến, có sẵn trên thị trường, momen
tải lớn và sai lệch góc quay nhỏ.
Hình 4.5 Ảnh mô tả nguyên lý truyền động

4.1.2 Kết cấu khung
Làm bằng thép hộp (40 mm x 40 mm) định hình bằng cách hàn lại với nhau.
35

Ưu điểm điểm của thép hộp là nhẹ, bền, dễ gia công, khả năng chịu tải trọng tương đối
lớn, chịu được lực gây biến dạng…

Hình 4.6 Khung xe
4.1.3 Vỏ xe

Hình 4.7 Vỏ xe
Được gia công bằng thép tấm có độ dày 1mm, sơn tĩnh điện đảm bảo tính bảo
vệ cho các bộ phận bên trong của xe và đảm bảo tính thẩm mỹ. Bắt vỏ vào khung xe
bằng các ốc nhọn nên dễ dàng trong việc tháo lắp để sữa chữa.

36

4.1.4 Kiểm nghiệm bền
Phân tích tải trọng tác động vào xe và chọn loại động cơ cho xe:
P

F

Hình 4.8 Sơ đồ lực.

a. Yêu cầy kỹ thuật
Nhằm đảm bảo quá trình hoạt động của toàn bộ hệ thống của xe cũng như khả năng
chế tạo tại Việt Nam thì các yêu cầu đặt ra cần đáp ứng như sau:
 Nhóm sử dụng động cơ DC SERVO DCM50207 có các thông số sau:
 Tốc độ tối đa :2900 vòng/phút
 Mômen xoắn cực đại :0,353 N.m
 Điện áp max :30,3(v),dòng max :3,94 A
 Công suất cực đại :120(w)
 Độ phân giải của encoder :1000 xung/vùng
 Ưu điểm khi sử dụng đông cơ servo là cho phép kiểm soát tốc độ một cách chính
xác va dễ điều khiển.
 Tốc độ quay tối đa của động cơ trong thực tế là:1200 vòng/phút
 Tôc chuyển động của xe 15m/phút
 khả năng tải:150kg (chưa tính tải trọng bản thân xe)
 phương thức điều khiển :sóng vô tuyến RF
 Tầm hoạt động: bán kính 100m
 Độ chính xác định vị : ± 0,1 m
 Độ chính xác lặp lại vị trí : ± 0,05 m
 Nguồn năng lượng hoạt động : điện một chiều được cấp từ 4 acquy 12(v)
b. Thiết kế và tính toán hệ dẫn động cơ khí
*)Tính chọn động cơ điện.
Sơ đồ phân tích lực được thể hiệ trên hình (4.11)

37

Phụ tải tĩnh của cơ cấu là do lực cản chuyển động gây ra.Lực đó bao gồm hai thành
phần chính :lực ma sát lăn trên đường đi F1,lực ma sát trong ổ trục F2 Thành phần F1
được xác định như sau

F1 

(G

0

 G) f

R

b

Trong đó:
Go : trọng lượng của xe :Go = 45 kg
G : trọng lượng của tải ,G = 150 kg
f : hệ số ma sát lăn ,f = ( 0,005 – 0,01), chọn f = 0,1

R

Như vậy :

b

:bán kính bánh xe ,

R

b

= 160 (mm)

(G  G) f = (450  1500).0,01  121,785(N )
F1 
0,16
R
0

b

Thành phần lực ma sát trượt,trong tính toán hệ dẫn động cơ khí ta thường bỏ qua lực
ma sát trượt trong các ổ lăn , nhưng để đảm bảo điểu khiển chính xác theo yêu cầu ở
đây ta sẽ tính thành phần lực này.
F2 = ( G + Go)k ,với ổ bi k = 0,01 – 0,05,
Chọn k = 0,05( hệ số ma sát trượt của ổ trục )
Rời lực về vành bánh xe :ta được thành phần lực F3 như sau
F3 = (G + Go).k.Rct/

R

b

= ( 1500+450)0,05.0,01/0,16 = 6,09(N)

Vậy lực cản tác động lên xe là:
Fc = 121,785 + 6,09 =127,794 (N)
Xác định công suất trên trục động cơ ,
P

F .V
127,794.20

 0,056835( KW )  56,835(w)
60.1000.
60.1000.0,75

Trong đó :
V : vận tốc di chuyển của xe
 : hiệu suât truyền động của cặp bánh vít trục vit trong hộp giảm tốc
(tra bảng 2.3, sách HDTKHDĐCK -TẬP2)
Công suất làm việc trên trục máy :
= P.  = 56,836.0.75 =42,6(w)

P

lv

*) Xác định mômen trên trục động cơ
M=

F Rb
i.

127,8.0,16
 0,345(N.m)
50.0,75

So sánh các thông số tính toán với các thông số của động cơ SERVO ở trên ta thấy
việc ta chọn loại động cơ SERVO DCM50207 Ở trên đảm bảo theo yêu cầu đề ra.
Xác định momen xoắn trên các trục dẫn động từ các hộp giảm tốc vào các bánh xe:

38

42,6
 16,95(N.m)
M = 9,55 Pn  9,55 1200
/ 50
P : công suất trên các trục công tác
lv

t

Trong đó:

lv

n : tốc độ quay của trục

c. Tính kiểm tra độ bền cho hai trục chính
Hai trục chính làm bằng vật liệu thép C45, có cơ tính như sau:

 b  600( N / mm)

o Giới hạn bền :

2

 ch  340( N / mm )
2

o Giới hạn chảy :
o Độ rắn :

HB = 241

o Giới hạn đàn hồi :

2

 340( N / mm )
dh

o Trục được nhiệt luyện đạt độ cứng : ( 40 – 42 )HRC,
Tương đương với HB = 375 -425
Tra bảng 4.7(sách chi tiết máy ) với thép cácbon có giới hạn bền

 b  600( N / mm)

2

Ta được trị số ứng suất cho phép là:   = 55(N/
Tương ứng với hệ số an toàn cho phép là:

2

mm )

n   ch 

 

340
6
55

Phân tích tải trọng tác dụng lên hai trục chính
Khi xe chở hàng hoá với khối lượng chở là lớn nhất ( 150 kg) và trọng lượng
của xe với giá trị 45 kg thì trong trường hợp tải được đặt ở chính giữa tâm xe (hình
4.8)

39

Hình 4.9 Sơ đồ điểm đặt lực.
Như vậy ta dễ dàng xác định được các lực thành phần :
phương
trình đơn giản như sau:
2 p  p  1950( N )
x

p
p

x
y

y

515

334

p ,p
x

y

bằng hệ

(1)
(2)

p
p

x
y

 735.84( N )
 478.32( N )

Như vậy tổng tải trọng tĩnh tác dụng lên mối đầu trục là:
P =

p

=735.84(N)

x

*Xác định các phản lực liên kết tại các gối đỡ trục
Ta có phương trình mômen tại điểm B:

m

= P . 55 -

B(F )

F

2

F

2

.50 = 0

Px55 735.84 x55

 809.424 (N)
50
50

Tương tự phương trình mômen tại điểm C:

m

c( F )

F

1

=

F .50  P.105  0

1
 P.105
735.84 x105


 1545.264( N )
50
50

Sau khi xác định xong các giá trị lực thì ta vẽ được biểu đồ mômen và các lực
cắt :

Hình 4.10 Biểu đồ lực.
Căn cứ vào biểu đồ ta có thể nhận thấy rằng điểm chịu tải trọng lớn nhất là điểm B
40

Giá trị mômen tương đương được xác định như sau:

M

td

M

2
X

M

2
Z

14,817

2

 28,362

2

= 32 (N.m).

*) Tính sơ bộ kích thước trục.
Dựa vào điều kiện bền uốn và xoắn :

d 3

M

td

.0,1. 

3

M td   

td
W

u

32000
 17,986(mm).
0,1.55

Vậy trong điều kiện xe chịu tải trọng tĩnh thì trục chính phải có kích thước tối
thiểu như sau:
d  17,986(mm)
4.2 Thiết kế mạch điện tử và điều khiển
4.2.1 Mạch điện tử
Để thiết kế mạch điều khiển , ta sử dụng phần mềm ORCAD, đây là phần mềm
tự động hóa thiết kế điện tử, thường được sử dụng trong chế tạo các bản điện tử, để chế
tạo mạch in, cũng như dễ chế tạo các sơ đồ điện tử và các chế bản của chúng. Hiện nay
phần mềm orcad được sử dụng rất phổ biến và mang lại hiệu quả cao trong thiết kế.
a. Khối mạch vi điều khiển(VĐK)

41

d2
b2
d1
b1

DEN - COI
PORT D

1
2
3
4
5

5
4
3
2
1

C B S ie u a m
PORT B

1
2
3
4
5

J27

P W M -D IR
VCC
R 33
1K
re s e t

5
6
7
8

SW 1
P

C2
1n

d1
d2
4
b1

VCC

R
R
R
R

64
29
30
65
re s e t
C3
1n

Q1

J24

RF

4 5 6 7 8

U3

5
4
3
2
1

C4
C5
1 nC R Y S T A L 1 n
p1
p2
p3
VCC
p4
p5
b2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

P B 0 /X C K /T 0
P B 1 /T 1
P B 2 /IN T 2 /A IN 0
P B 3 /O C 0 /A IN 1
P B 4 /S S
P B 5 /M O S I
P B 6 /M IS O
P B 7 /S C K
R ESET
VCC
GND1

p1p2p3p4p5

P A 0 /A D
P A 1 /A D
P A 2 /A D
P A 3 /A D
P A 4 /A D
P A 5 /A D
P A 6 /A D
P A 7 /A D

C
C
C
C
C
C
C
C

0
1
2
3
4
5
6
7

AR EF
GND2
AVCC

40
39
38
37
36
35
34
33

R
R
R
R
R
R
R
R

17
18
19
20
21
22
23
24
AREF

32
31
30

0 /R XD
1 /T XD
2 /IN T 0
3 /IN T 1
4 /O C 1 B
5 /O C 1 A
6 /IC P
7 /O C 2

P C 7 /T O S C 2
P C 6 /T O S C 1
P C 5 /T D I
P C 4 /T D O
P C 3 /T M S
P C 2 /T C K
P C 1 /S D A
P C 0 /S C L

C6
1
R 34

0 .1 u F

XTA L2
XTA L1
PD
PD
PD
PD
PD
PD
PD
PD

s e n s o r_ g 1
s e n s o r_ g 2
s e n s o r_ g 3 V C C
s e n s o r_ g 4
2
s e n s o r_ g 5
s e n s o r_ g 6
L1
s e n s o r_ g 7
10uH
s e n s o r_ g 8

29
28
27
26
25
24
23
22

R
R
R
R
R
R
R
R

35
36
11
12
14
13
15
16

s e n s o r_ b 8
s e n s o r_ b 7
s e n s o r_ b 6
s e n s o r_ b 5
s e n s o r_ b 4
s e n s o r_ b 3
s e n s o r_ b 2
s e n s o r_ b 1

AR EF

a tm e g a 1 6

Hình 4.11 Sơ đồ mạch vi điều khiển
Khối mạch VĐK này chia ra làm 3 khối nhỏ:
Khối vào ra( I/O)
Khối reset
Khối tạo xung ngoài
*) Khối vào ra( I/O ).
Chúng ta cần dùng đầu vào ra sử dụng như sau:
 Hai hàng sensor: 16 chân.
 Hai cảm biến siêu âm: 4 chân.
 Bộ thu phát RF: 2 chân.
 Điều khiển đèn + còi : 2 chân.
 Điều xung + đảo chiều: 4 chân.
Mạch VĐK gồm có các PORT vào ra (I/O) phục vụ mục đích của người sử
dụng. Như trên hình 1 PORT A & PORT C là hai port dùng là các đầu vào của 2 hàng

42

sensor hỗ cảm dùng để dò đường. Trạng thái của các chân này chỉ ở có ở trạng thái 0
& 1. Ở trạng thái bằng 1 khi sensor ở trong vạch và ngược lại thì ở trạng thái 0.
Các chân băm xung, đảo chiều: hai chân băm xung của timer 0 và timer 2 là các
chân OC0 và OC2. chân đảo chiều dùng PB0, PB1. Ở đây chúng tôi dùng chế độ điều
xung CTC( Clear Timer Compare )
Chân RXD và TXD là 2 chân truyền và nhận của bộ thu phát RF. Có tác dụng
truyền nhận tín hiệu. Khi co tín hiệu của RF truyền dữ liệu vào chân RXD của VĐK
và truyền tín hiệu từ VĐK vào RF thì qua chân TXD.
Các chân tín hiệu vào/ra của cảm biến siêu âm: là các chân ở PORTB.
Sử dụng 2 chân ở PORTD để điều khiển đèn và còi: là chân PD5 & PD6.
*) Khối Reset
V C C
R 3 3
1 0 K

Hình 4.12 Khối reset
Khối này có tác
dụng khởi tạo lại
chương trình( về đầu
chương trình ) sau khi
có tín hiệu vào chân
reset.
*)Khối tạo xung ngoài
cho vi điều khiển.

re s e t
S W 1
P

C 2
1 n

XTA L2
Q1
C4
33 pF

8 M

XTA L1

C5
33 pF

Hình 4.13 Khối tạo xung
Có tác dụng cung cấp xung clock cho vi điều khiển là 8 MHz. khi đó timer sẽ
có các tần số tương ứng tùy thuộc vào các số chia.
b. Khối mạch tạo nguồn 5V

43

12VD C

12V

D1
D IO D E

Q6
B688
+ C 28
1000U F

R 31
3 3W

U5
1

V IN

+ C 29
0 .3 3 U F

+5V
7805
GND

1
2

2

J10

VOUT

3
C 30
104

C 31
+ 1000U F

D2
LED

R 106
330

Hình 4.14 Khối mạch tạo nguồn
Còn được gọi khối mạch ổn áp và nâng dòng: khối này làm nhiệm vụ tạo điện
áp ổn định 5V ở đầu ra.Sử dụng IC 7805 chuyển điện áp 12V đầu vào thành điện áp
5V . IC 7805 cho dòng ra định danh 1A nhưng thực tế thì dòng ra khoảng 500mA. Nên
để tạo ra nguồn cung cấp lớn hơn ta sử dụng BJT B688 để nâng dòng dùng(dòng này
>1.5A). Điện trở R31=10Ω, 3.3W để phân cực cho BJT dẫn ở chế độ khuếch đại.
Tụ C29,C30,C31 để lọc điện áp gợn tránh ảnh hưởng của tín hiệu cao tầng chạy
về nguồn. Led D2 để báo có áp ra.
c.Khối hiển thị tín hiệu của cảm biến hỗ cảm
Khối này có tác dụng hiển thị trạng thái của các cảm biến. Khi cảm biến ở trong
vạch thì led sẽ sáng và khi ở ngoài vạch thì sẽ tắt. điện trở ở đây để hạn chế dòng cho
led giảm chết led. Hai CON10 là hai CON để nhận tín hiệu của các cảm biến trả về và
lấy nguồn cho cảm biến.

44

sensor_g8
sensor_g7
sensor_g6
sensor_g5
sensor_g4
sensor_g3
sensor_g2
sensor_g1

R 109
+5V

J26
1
3
5
7
9

D 67

R 113

470R

LED

R 110

D 68

R

2
4
6
8
10

S e n s o r_ g

LED

R

R 114

R 111

R

R

R 115

R 112

R

R 116

R

D 71

LED

D 72

D 69

LED

LED

D 73

D 70

LED

LED

D 74

R

LED

sensor_b8
sensor_b7
sensor_b6
sensor_b5
sensor_b4
sensor_b3
sensor_b2
sensor_b1

VCC

+5V

S e n s o r_ b

D 75
R 129

R

2
4
6
8
10

D 79
LED

R 126

J25
1
3
5
7
9

R 125

D 76

R

LED

R

R 130

R 127

R

R

R 131

R 128

R

LED

D 80

D 77

LED

LED

D 81

D 78

LED

R 132
R

D 82
LED

R

LED
VCC

Hình 4.15 Sơ đồ khối hiển thị tín hiệu

45

Hình 4.16 Sơ đồ mạch thực tế và mạch in
4.2.2 Driver DCS810
46

a. Đặc điểm kỹ thuật và môi trường hoạt động
*) Đặc điểm cơ khí:(đơn vị:mm, 1inch=25,4mm)

Hình 4.17 Kích thước của DCS810.
*) Giới hạn chịu nhiệt.
 Driver làm việc ổn định <600C,và nhiệt độ làm việc của động cơ <800C.
 Khuyến cáo nên đặt driver thẳng đứng để tối đa khả năng tỏa nhiệt.
*) Các đặc tính điện tử:(Tj=250C)
Bảng 4.2: Tham số
Các tham số
Dòng ra
Điện áp cung cấp
Dòng tín hiệu logic
Tần sô xung đầu vào
Điện trở độc lập
Dòng cấp cho encoder

Nhỏ nhất
0
+18
7
0
500
-

DCS810
Điển hình
Lớn nhất
20
+80
10
15
500
50

Đơn vị
A
VDC
mA
KHz
MΩ
mA

*) Môi trường hoạt động và các tham số.
Bảng 4.3: Điều kiện môi trường làm việc
Làm lạnh
Môi trường mở

Nhiệt độ phòng
Trọng lượng

Làm lạnh tự nhiên hoặc cưỡng bức
Môi trường
Tránh bụi,sương dầu và khí ăn mòn.
Nhiệt độ xung quanh 0oC-50oC
Độ ẩm
40-95%RH
Dao động
5.9 m/s2 Max
-20oC-+65oC
Xấp xỉ 210 g (7.41 oz)

b. Kết nối
47

Các chân PUL/DIR/EN:
Bảng 4.4: Chức năng các chân và cách đấu nối
Chức năng
chân
PUL+

PUL-

DIR+

DIR-

EN+

EN-

Chi tiết
Tín hiệu xung:Trong chế độ xung đơn(xung/hướng),đầu
vào này là xung tín hiệu;4-5V khi xung cao,0-0,5V khi
xung thấp.Trong chế độ xung đôi(xung/xung),đầu vào này
là xung clockwise(CW),hoạt động ở mức thấp(Mức cố
định).Muốn cho đáp ứng ổn định,độ rộng xung nên lớn hơn
1.0us.Chuỗi các điện trở mắc nối tiếp để giới hạn dòng khi
tín hiệu điều khiển được sử dụng là +12V hoặc +24V.
Tín hiệu chiều:Trong chế độ xung đơn,tín hiệu này có mức
điện áp cao/thấp thể hiện hai chiều quay của động cơ(thiết
lập bởi R33 và R37 ở bên trong);trong chế độ xung đôi ,tín
hiệu này là xung counter-clock (CCW),tác động ở mức
thấp(mức cố định).Để đáp ứng chuyển động được ổn
định,tín hiệu DIR nên có trước tín hiệu xung ít nhất
5us.Mức DIR cao là 4-5V,mức DIR thấp là 0-0.5V.Chú ý
rằng hướng của chuyển động liên quan tới cách đi dây động
cơ -driver và các pha tín hiệu A/B của encoder.Thay đổi kết
nối hai dây của động cơ đến driver và các pha tín hiệu A/B
của encoder sẽ làm đổi chiều động cơ.
Tín hiệu cho phép:tín hiệu này được sử dụng để cho
phép/không cho phép driver.Mức cao( với tín hiệu điều
khiển NPN,PNP và các tín hiệu điều khiển vi phân thì
ngược lại, nghĩa là ở mức thấp để cho phép) cho phép
driver và mức thấp để không cho phép driver.Thông thường
để chân này KHÔNG KẾT NỐI (CHO PHÉP).Có mắc
chuỗi điện trở để giởi hạn dòng khi sử dụng tín hiệu điều
khiển +12V hoặc +24V.

*) Thiết lập chế độ PUL/DIR và CW/CCW.
DCS810 có 4 điện trở (R31/R32/R33/R37) bên trong để thiết lập cụ thể cho các chế
độ PUL/DIR và CW/CCW,được chỉ ra trên hình 2.Thiết lập mặc định là hình (b) cho
chế độ PUL/DIR,DIR thấp cho chiều dương và RIR cao cho chiều ngược lại.

48

Hình 4.18 Thiết lập PUL/DIR và CW/CCW.
*) Kết nối tín hiệu điều khiển.
DCS810 có thể chấp nhận đầu vào một ngõ hoặc vi phân(gồm collector hở và
đầu ra PNP).DCS810 có hai đầu vào logic cách ly quang để nhận đường tín hiệu
điều khiển của driver.Những đầu vào này được cách ly tối đa và được loại bỏ các
nhiễu điện tử kèm theo trong tín hiệu điều khiển.Nên sử dụng dây tín hiệu điều
khiển của driver để làm tăng khả năng loại bỏ nhiễu trong môi trường giao
thoa.Những hình dưới miêu tả cách kết nối collector hở và các tín hiệu điều khiển
khác nhau.

Hình 4.19 Kết nối với tín hiệu điều khiển collector hở(anode chung)

Hình 4.20 Kết nối với tín hiệu PNP(catot chung)

49

Hình 4.21 Kết nối với tín hiệu điều khiển khác.
*) Kết nối encoder.
DCS810 có thể chấp nhận đầu vào của encoder vi phân hay encoder một
ngõ.Tuy nhiên encoder vi phân thường được lựa chọn do khả năng chống nhiễu tốt của
nó.Việc kết nối với encoder một ngõ tương tự với encoder vi phân chỉ khác là không
kết nối với các kênh A- và kênh B-(các dây A- và B- bên trong được kéo lên đến
+2.5V).Chú ý rằng dây xoắn đôi được bọc có khả năng chống nhiễu tốt nhất.
Nếu encoder tiêu thụ nhỏ hơn 50mA,DCS810 có thể cung cấp nguồn trực tiếp
cho encoder,và cách kết nối như trong hình 6 hoặc hình 7.Nếu encoder tiêu thụ hơn
50mA,có thể sử dụng nguồn 1 chiều bên ngoài và cách kết nối như hình 8 và 9.

Hình 4.22 DCS810 cung cấp nguồn trực tiếp cho encoder đa kênh.

Hình 4.23 Sử dụng nguồn 1 chiều bên ngoài để cung cấp cho encoder đa kênh.
50

*) Các kết nối điển hình.
Có hai kết nối điển hình của DCS810 được chỉ ra trên hình 11 và 12.Hãy tham
khảo “Các kết nối tín hiệu điều khiển” và “Các kết nối encoder” để có them thông tin
về cách kết nối bộ điều khiển và encoder.

Hình 4.24 Kết nối điển hình(Tín hiệu điều khiển collector hở và encoder đơn kênh)

Hình 4.25 Kết nối điển hình (Tín hiệu điều khiển vi phân và encoder đa kênh)
51

c. Điều chỉnh servo
*)Kiểm tra servo.
Giữ chặt động cơ servo đảm bảo rằng nó không thể “nhảy” được.Bật nguồn
cấp,đèn mầu xanh sẽ sáng.DCS810 có các thông số mặc định chứa trong bộ điều
khiển.Nếu hệ thống không có vấn đề gì về phần cứng hay việc đi dây,thì động cơ nên
để ngắt và bộ điều khiển nên để sẵn sàng.
Nếu động cơ lắc nhẹ và đèn đỏ lập tức sáng,thì là do động cơ hoặc encoder đã bị nối
dây ngược.Hãy mở phần mềm Pro tuner và kiểm tra trạng thái của driver bằng cách
click vào Err_check.Nếu đó là lỗi pha,thì hãy mắc ngược lại dây động cơ hoặc thay
đổi đầu vào encoder và thử lại.
Nếu đèn đỏ tắt và động cơ bình thường,sau đó bạn có thể điều chỉnh động cơ
servo với các công cụ được lựa chọn.Pro tuner,EZ-tuner và STU đều được với
DCS810.
*)Điều chỉnh servo.
Leadshine cung cấp một phần mềm cài cho hệ điều hành Window là Pro Tuner
và một bộ điều chỉnh kí tự đặc biệt EZ-Tuner(không bắt buộc)cho khách hàng của họ
để đánh giá sự vận hành của servo.Bộ điều chỉnh servo nhỏ STU (không bắt buộc)
được dùng để điều chỉnh mà không cần máy tính hay nguồn cấp cho EZ-Tuner.
Việc hiệu chỉnh cho hệ thống servo bởi DCS810 có thể tổng kết thành các
nguyên tắc sau:
Nếu hệ thống servo không ổn định thì việc đầu tiên của việc điều chỉnh là ổn
định hệ thống.Có thể tăng hệ số Kd hoặc giảm hệ số tỉ lệ Kp hoặc hệ số vi phân Ki.
Nếu hệ thống servo dưới mức tắt dần,thì tăng Kd hoặc giảm Kp hoặc Ki.
Nếu hệ thống servo ở mức tắt dần giới hạn thì dừng việc điều chỉnh và lấy các
thông số cài đặt cho EEPROM của driver.
Nếu hệ thống servo vượt mức tắt dần thì giảm Kd hoặc tăng Kp hoặc Ki.
d. Các quy tắc phát hiện lỗi driver
*)Chuỗi các tín hiệu điều khiển.
Để tránh một vài lỗi vận hành và sự sai lệch,các chân PUL,DIR,EN nên tuân
theo một vài qui tắc chỉ ra ở hình dưới :

Hình 4.26 Chuỗi các sơ đồ tín hiệu điều khiển.

52

Chú ý:
t1:EN phải được kích lên 1 trước DIR ít nhất 5us.Thông thường EN+,và ENkhông kết nối.Xem phần kết nối để có them thông tin.
t2: DIR phải được kích lên 1 trước PUL ít nhất 5us để đảm bảo đúng hướng.
t3: Độ rộng xung không nhỏ hơn 1s.
t4: Độ rộng mức thấp không nhỏ hơn 1s.
*)Những chức năng bảo vệ.
Để tăng độ an toàn,driver có tích hợp những chức năng bảo vệ.DCS810 sử dụng
đèn đỏ để chỉ ra các cách bảo vệ.Chu kì đèn đỏ là 5s,và số lần đèn đỏ sáng chỉ ra cách
bảo vệ hoạt động.Bởi vì chỉ có duy nhất một cách bảo vệ có thể được chỉ ra bởi đèn
đỏ,vì vậy driver sẽ quyết định lỗi đưa ra theo mức ưu tiên của chúng.Xem bảng chỉ dẫn
cách bảo vệ bên dưới cho các mức ưu tiên.
- Bảo vệ quá dòng:Cách bảo vệ này sẽ hoạt động khi dòng vượt quá 20A và đèn
đỏ sẽ sáng 1 lần với chu kì 5s.
-Bảo vệ quá áp:Khi nguồn cấp vượt quá 85± 1,5VDC,cách bảo vệ này sẽ hoạt
động và đèn đỏ sáng 2 lần với chu kì 5s.
- Bảo vệ dưới áp:Khì nguồn cấp nhỏ hơn 16.5±1,5VDC, cách bảo vệ này sẽ hoạt
động và đèn đỏ sáng 3 lần với chu kì 5s.
- Bảo vệ lỗi pha:Dây nguồn động cơ lỗi và không kết nối và tín hiệu phản hồi
A/B kết nối sai sẽ kích hoạt cách bảo vệ này. Đèn đỏ sáng 4 lần với chu kì 5s.
- Bảo vệ lỗi encoder:Không có tín hiệu phản hồi encoder hoặc tín hiệu encoder
lỗi sẽ tạo ra lỗi này. Đèn đỏ sáng 5 lần với chu kì 5s.
- Bảo vệ lỗi vị trí:Khi lỗi vị trí tiến tới hệ số giới hạn lỗi thiết lập trong driver,lỗi
này sẽ được kích hoạt. Đèn đỏ sáng 7 lần với chu kì 5s.
Chú ý:
Vì không có cách bảo vệ nào cho việc đấu nhầm cực (+,-),nên phải chắc chắn
việc đấu đúng cực cho driver nếu không driver sẽ hỏng ngay lập tức.
e. Thay đổi hướng mặc định của động cơ
DCS810 sẽ điều khiển động cơ quay theo chiều kim đồng hồ khi tín hiệu vào ở
mức cao(1).Nếu dùng CCW thì:
Đảo chiều “motor +” và “motor-“.
Đảo chiều encoder “kênh A” và “kênh B”
f. Tần số xung đầu vào lớn nhất
Tần số xung đầu vào lớn nhất là tần số lớn nhất mà driver có thể đọc được từ
phản hồi encoder.Để chuyển tần số này thành tốc độ vòng trên phút(RPM) sử dụng
công thức sau:

RPM(max)=

53

4.2.3 Cảm biến tiệm cận và phương pháp dò đường
a. Thiết kế
Ở đây chúng ta dùng cảm biến tiệm cận hỗ cảm có tác dụng nhận dạng được
vạch kim loại. Với đặc tính của xe AGV có thể tiến lùi được nên chúng ta dùng hai
hàng cảm biến ở hai phía của thân xe: Phía trước & Phía sau.

Hình 4.27 Cảm biến tiệm cận hỗ cảm.
Về thiết kế cơ khí thì khoảng cách của 2 cảm biến gần nhau đúng bằng độ rộng
của đường dẫn(3cm). Khoảng cách từ cảm biến đến sàn là 5mm. Vì xe tương đối rộng
nên khoảng cách hàng sensor cũng phải tỷ lệ với bề rộng đó.Theo thực nghiệm dùng
mỗi hàng 8 cảm biến là đáp ứng được yêu cầu về khả năng dò đường,hạn chế việc lệch
đường của AGV. Cảm biến trả về trạng thái 0 || 1 cho bộ vi điều khiển.
b.Phương pháp dò đường
Kỹ thuật dò đường (line tracking) là một trong những kỹ thuật được áp dụng
rộng dãi trong cuộc thi sáng tạo robot (robocon). Ơ thuật toán dò đường chúng ta sử
dụng từ 4-8 cảm biến nhận biết đường và nền sân.
Thuật toán dò đường chủ yếu dựa trên trạng thái của cảm biến hỗ cảm để đưa ra
quyết định điều khiển động cơ.

Hinh 4.28 Cách bố trí cảm biến tiệm cận dò vạch kim loại.
Mỗi trường hợp lệch trái và lệch phải có 8 trường hợp. Các trường hợp này
được định nghĩa tại chương trình. Khi cảm biến lệch càng nhiều thì chúng ta phải điều
chỉnh tốc độ động cơ phù hợp. Ví dụ trường hợp ơ trung tâm là 2 cảm biến trung tâm ở
vạch: TT 11100111. Ở trường hợp này thì tốc độ 2 động cơ là tương đương nhau. Và cư
54

như thế chúng ta điều chỉnh tốc độ động cơ. Nếu trường hợp lệch quá nhiều ta điều
chỉnh một bánh tiến và một bánh lùi.
4.3 Cảm biến siêu âm và cảnh báo an toàn
Hệ thống an toàn của xe AGV gồm có: đầu vào là cảm biến siêu âm, đầu ra là
đèn còi và động cơ.Cảm biến siêu âm giúp AGV phát hiện vật cản xuất hiện trước xe
trong quá trình di chuyển.Nó đưa tín hiệu về cho chip.Chip xử lí thông tin để điều
khiển đèn và còi hoạt động cảnh báo vật cản hoặc dừng động cơ nếu thấy cần thiết.
*) Cảm biến siêu âm.
Như đã giới thiệu ở chương 2,nhóm sử dụng cảm biến SRF 05 và hoạt động ở
chế độ 1.
Chế độ 1 – tương ứng SRF04 – tách biệt kích hoạt và phản hồi
Chế độ náy sử dụng riêng biệt chân kích hoạt và chân phản hồi, và là chế độ đơn giản
nhất để sử dụng. Tất cả các chương trình điển hình cho SRF04 sẽ làm việc cho SRF05
ở chế độ này. Để sử dụng chế độ này, chỉ cần chân chế độ không kết nối - SRF05 có
một nội dừng trên chân này .

Hình 4.29 Cảm biến siêu âm SRF05
Chế độ này thuận lợi cho quá trình điều khiển.
Cách tính toán khoảng cách:
Nếu cấp một đoạn xung ngắn 10uS kích hoạt đầu vào, SRF05 sẽ gửi cho ra một
chu kỳ 8 burst của siêu âm ở 40khz, tín hiệu phản hồi là một xung có độ rộng tỷ lệ với
khoảng cách đến đối tượng. Bằng cách đo xung, ta hoàn toàn có thể để tính toán
khoảng cách theo inch / centimét.
SRF05 không trả về tín hiệu sau khoảng 30mS nếu không phát thấy đối tượng.
Nếu độ rộng của xung được đo trong hệ uS, phép chia cho 58 sẽ cho khoảng cách theo
cm, hoặc chia cho 148 sẽ cho khoảng cách theo inch. uS/58 = cm hay uS/148 = inch.
55

SRF05 được kích hoạt khoảng 20 lần mỗi giây. Nên chờ 50ms trước khi kích hoạt kế
tiếp
*)Đèn và còi
Đèn và còi sẽ được kết nối với VĐK qua chân PD5 và BD6.Chúng được điều
khiển bằng cách đóng mở các Rơle.
*)Động cơ
Khi Driver được cấp điện và không cấp xung cho động cơ thì động cơ sẽ được
hãm do chính driver và ngoài ra còn có hộp giảm tốc có hệ số là 50 nên độ hãm của
động cơ là tương đối tốt.
4.4 Truyền thông RF không dây và giao diện điều khiển
a.Nguyên lí thiết kế bộ truyền dẫn tín hiệu RF như sau
Có hai bộ thu phát RF :một được lắp trên xe AGV và một được lắp ở cổng
usb trên máy tính tại trạm điều khiển.Nhờ có hai bộ RF này mà xe AGV và người điều
khiển có thể “giao tiếp không dây” với nhau.Thông qua phần mềm trên máy tính
người điều khiển có thể ra lệnh cho xe AGV đi theo chương trình mong muốn,hoặc
dừng khẩn cấp khi có sự cố xảy ra.Đồng thời,xe AGV cũng luôn báo về trạm trung tâm
,qua bộ RF đặt trên xe ,về trạng thái và vị trí của mình.Do đó,người điều khiển luôn
kiểm soát được vị trí và trạng thái của xe AGV trên hành trình của nó.Sơ đồ giao tiếp:

Hình 4.30 Nguyên lí truyền dẫn RF.
Xét trên yêu cầu kỹ thuật điều khiển cho xe AGV là điều khiển không dây,tầm
hoạt động bán kính <100m.Nhóm đã nghiên cứu và quyết định lựa chọn các module
RF(Radio Frequently) sử dụng sóng vô tuyến là :JZ864 và JZ863.
Ưu điểm chung của hai bộ RF này là:
*) Công suất truyền tải điện năng thấp
Truyền tải điện: 100mW <, nhận được sự nhạy cảm cao:-110dbmTiêu thụ điện
năng thấp .Nhận 10mA hiện <, 100mA <truyền dẫn hiện hành. ISM tần số , không yêu
cầu áp dụng các điểm tần số hoạt động ở tần số 428 --- 433MHz, cũng có khả năng
868/915MHz.
*) Chống nhiễu cao và thấp BER (Bit Rate lỗi)
Căn cứ vào phương thức điều chế FSK, nó thông qua giao thức truyền thông hiệu
quả. Các lỗi bit thực tế tỷ lệ 10-5 ~ 10-6 có thể đạt được khi kênh tỷ lệ lỗi bit là 10-2.
*) Phạm vi truyền xa.
Trong phạm vi của tầm nhìn, khoảng cách truyền dẫn đáng tin cậy là (BER = 103/1200bps)> 500m khi chiều cao ăng ten lớn hơn 2 fit (BER = 10-3/9600bps).
*)Truyền dữ liệu trong suốt.

56

Giao diện trong suốt dữ liệu được cung cấp cho phù hợp với bất kỳ người sử dụng
giao thức tiêu chuẩn hoặc không chuẩn. Bất kỳ sai dữ liệu tạo ra trong không khí có thể
được lọc tự động (Điều gì đã được nhận là chính xác những gì đã được lây truyền qua
đường truyền ). Thời gian tiếp nhận và gửi <10ms .
*)Đa kênh và tốc độ.
Các cấu hình tiêu chuẩn JZ864 cung cấp 8 kênh. để đáp ứng sự kết hợp nhiều
thông tin liên lạc .Hình thức của người sử dụng. Nó có tốc độ truyền được lựa chọn
như 1200bps, 2400bps, 4800bps, 9600bps, 19200bps. Các tốc độ truyền không dây
trực tiếp tỉ lệ với tốc độ truyền của giao diện để đáp ứng yêu cầu của người sử dụng
thiết bị.
*) Truyền thông không dây tốc độ cao và bộ đệm dữ liệu lớn.
Khi tỷ lệ tốc độ trong không khí là nhanh hơn của giao diện, cho phép truyền dữ
liệu không giới hạn độ dài tại một trong thời gian, khi tỷ lệ tốc độ chậm hơn hoặc bằng
giao diện, cho phép việc truyền dữ liệu dài 255 Bytes khung tại một thời gian cho lập
trình linh hoạt hơn bởi người dùng.
*) Dữ liệu thông minh.
Kiểm soát và người sử dụng không cần phải chuẩn bị chương trình quá nhiều.
Ngay cả đối với truyền thông song công, bán, người dùng không cần phải chuẩn bị
chương trình quá nhiều, chỉ nhận / chuyển dữ liệu từ giao diện. JZ864 sẽ tự động hoàn
tất các hoạt động khác, như truyền / nhận chuyển đổi trong không khí, kiểm soát...
*) Độ tin cậy.
Độ tin cậy cao, nhỏ và nhẹ chíp đơn tần số vô tuyến mạch tích hợp và chip đơn
MCU được sử dụng để giảm bớt mạch ngoại vi, độ tin cậy cao, và tỷ lệ thất bại thấp.
*) Cơ quan giám sát theo dõi.
Cơ quan giám sát theo dõi chức năng bên trong, để thay đổi cơ cấu sản phẩm
truyền thống và nâng cao sản phẩm tin cậy.
*) Antenna tùy chọn.
Người dùng có thể chọn cài đặt ăng ten khác nhau của dự án và ăng ten theo nhu
cầu của người sử dụng khác nhau để đạt được hiệu quả cao nhất.
b. Module JZ864

Hình 4.31 Mô đun thu – phát tín hiệu RF JZ864
JZ864 cung cấp giao tiếp USB với máy tính.Người sử dụng phải cài đặt USB
driver trước khi sử dụng JZ864.Sau khi cài đặt xong driver,PC có thể lập nên một cổng
nối tiếp,vì thế chúng ta có thể lập trình như với cổng nối tiếp.
Các tham số chính của JZ864:tốc độ cổng nối tiếp (com),tốc độ RF,kênh và tần
số.Chúng ta có thể thay đổi những thông số này bởi phần mềm.

57

Bảng 4.5 Bảng kênh và tần số của JZ864.

c.Module JZ863

Hình 4.32 Mô đun thu - phát tín hiệu RF JZ863.
JZ863 kết nối với mạch điện tử trên xe AGV.Nó nhận tín hiệu từ trung tâm điều
khiển rồi gửi về chip trên mạch.Chip này sẽ xử lí tín hiệu và điều khiển xe AGV theo
chương trình được lập trình sẵn.Sau đó nó đưa dữ kiện về trạng thái và vị trí của xe
AGV cho JZ863 gửi lại cho trung tâm điều khiển.
JZ863 có 5 chân,sau đây là bảng định nghĩa và kết nối các chân.
Bảng 4.6 Các chân của JZ863.

Bảng 4.7 Bảng kênh và tần số của JZ863.

58

Cách kết nối giữa JZ863 và mạch điện tử.

Hình 4.33 Kết nối chân JZ863 với mạch điện tử.
Bảng 4.8 Các cách phát hiên lỗi trên JZ863 và JZ864:
STT Lỗi
1
2

3
4

Nguyên nhân lỗi và cách giải quyết

Không có tín
a.Chân nguồn bị đứt
hiệu của đèn báo. b.Nguồn quá yếu
c.Chân nguồn bị đấu nhầm hoặc diot phân cực bảo vệ đã hỏng.
Không truyền
a.Sóng bị ngắt giữa PC và thiết bị đầu cuối.
hoặc nhận
b.Sóng với chuẩn TTL/R232/RS485 không tương thích với
thiết bị đầu cuối.
c.Tần số RX và TX là không trùng nhau.
Tỉ lệ lỗi bit cao
a.Ăngten chưa có hoặc chưa tiếp xúc.
b.Tỉ lệ baud RF là không đúng
c.Điện áp cung cấp quá lớn.
Đèn chỉ thỉ nhấp a.Nhiễu điện từ
nháy
b.Tín hiệu nhiễu có cùng tần số trong khi truyền phát.

4.5 Chương trình điều khiển và giao diện điều khiển
a. Lưu đồ thuật toán điều khiển
59

Hình 4.34 Lưu đồ thuật toán.
b. Trình dịch C cho vi điều khiển AVR - Code Vision AVR
Có thể nói trình dịch C là một công cụ vô cùng hữu hiệu cho người lập trình
với vi điều khiển. Ngoài sự ngắn gọn, dễ viết, dễ hiểu, dễ kiểm tra lỗi, dễ bảo dưỡng
của chương trình viết bằng ngôn ngữ C so với chương trình viết bằng ngôn ngữ
khác.
Trình dịch C cung cấp một thư viện phong phú gồm khá nhiều hàm giúp
người sử dụng có thể dễ dàng làm các tác vụ trên bộ vi điều khiển.
Trình dịch C cung cấp một trình debug khá hiệu quả, cho phép người lập
trình có thể kiểm soát và sửa các lỗi trên các chương trình.
60

Hình 4.35 Lập trình C với CodeVision.
Lập trình giao diện, truyền thông nối tiếp với Visual Basic
*) Cửa số đăng nhập.

Hình 4.36 Đăng nhập hệ thống
*) Chương trình điều khiển hoạt động, hiện thị tọa độ xe trên mô hình.
Với chương trình ta có thể thao tác dễ dàng điểu khiển AGV di chuyển đến địa
điểm xác định, và theo dõ vị trí di chuyển của nó trên màn hình qua hình mô phỏng
chuyển động.
Ta cũng có thể lập trình cho AGV chạy theo một chương trình lập sẵn, liên tục( ví
dụ: từ A -> B ->D về C -> A rồi lặp lại) { Đang phát triển}

61

Hình 4.37 Giao diện điều khiển xe AGV
*) Truyền thông nối tiếp.
Việc truyền thông nối tiếp trên Windows được thực hiện thông qua một ActiveX có
sẵn là Microsoft Comm Control.. ActiveX này dược lưu trữ trong file
MSCOMM32.OCX.
Quá trình này có hai khả năng thực hiện điều khiển trao đổi thông tin:
 Điều khiển sự kiện:
Truyền thông điều khiển sự kiện là phương pháp tốt nhất trong quá trình điều
khiển việc trao đổi thông tin. Quá trình điều khiển thực hiện thông qua sự kiện
OnComm.
 Hỏi vòng:
Quá trinh điều khiển bằng phương pháp hỏi vòng thực hiện thông qua kiểm tra
các giá trị của thuộc tính CommEvent sau một chu kỳ nào đó để xác định xem có sự
kiện nào xảy ra hay không. Thông thường phương pháp này sử dụng cho các chương
trình nhỏ.
ActiveX MsComm được bổ sung vào một Visual Basic Project thông qua menu
Project > Components:

62

Hình 4.38 Bổ sung đối tượng MsComm vào VBP
Bảng 4.9

Các thuộc tính :

Settings:

Xác định các tham số cho cổng nối tiếp. Cú pháp:
MSComm1.Settings = ParamString
MSComm1: tên đối tượng
ParamString: là một chuỗi có dạng như sau: "BBBB,P,D,S"
BBBB: tốc độ truyền dữ liệu (bps) trong đó các giá trị hợp lệ là:
VD:
MSComm1.Settings = "9600,O,8,1" sẽ xác định tốc độ truyền 9600bps,
kiểm tra parity chẵn với 1 bit stop và 8 bit dữ liệu.

63

CommPort:

Xác định số thứ tự của cổng truyền thông, cú pháp:
MSComm1.CommPort = PortNumber
PortNumber là giá trị nằm trong khoảng từ 1 -> 99, mặc định là 1.
VD:
MSComm1.CommPort = 1 xác định sử dụng COM1

PortOpen:

Đặt trạng thái hay kiểm tra trạng thái đóng / mở của cổng nối tiếp. Nếu dùng
thuộc
tính này để mở cổng nối tiếp thì phải sử dụng trước 2 thuộc tính Settings và
CommPort. Cú
pháp:
MSComm1.PortOpen = True | False
Giá trị xác định là True sẽ thực hiện mở cổng và False để đóng cổng đồng
thời xoá
nội dung của các bộ đệm truyền, nhận.
VD: Mở cổng COM1 với tốc độ truyền 9600 bps
MSComm1.Settings = "9600,N,8,1"
MSComm1.CommPort = 1
MSComm1.PortOpen = True
Các thuộc tính nhận dữ liệu:
 Input: nhận một chuỗi ký tự và xoá khỏi bộ đệm. Cú pháp:
InputString = MSComm1.Input
Thuộc tính này kết hợp với InputLen để xác định số ký tự đọc vào. Nếu
InputLen = 0 thì sẽ đọc toàn bộ dữ liệu có trong bộ đệm.
 InBufferCount: số ký tự có trong bộ đệm nhận. Cú pháp:
Count = MSComm1.InBufferCount
Thuộc tính này cùng dược dùng để xoá bộ đệm nhận bắng cách gán giá trị 0.
MSComm1.InBufferCount = 0
 InBufferSize: đặt và xác định kích thước bộ đệm nhận (tính bằng byte).
Cú pháp:
MSComm1.InBufferCount = NumByte
Giá trị măc định là 1024 byte. Kích thước bộ đệm này phải đủ lớn để tránh
tình trạng mất dữ liệu.
64

VD: Đọc toàn bộ nội dung trong bộ đệm nhận nếu có dữ liệu
MSComm1.InputLen = 0
If MSComm1.InBufferCount <> 0 Then
InputString = MSComm1.Input
End If
Các thuộc tính xuất dữ liệu:
Bao gồm các thuộc tính Output, OutBufferCount và OutBufferSize, chức
năng của các thuộc tính này giống như các thuộc tính nhập.
CommEvent:
Trả lại các lỗi truyền thonog hay sự kiện xảy ra tại cổng nối tiếp
Bảng 4.10 Một số sự kiện trong lập trình VB

65

CHƯƠNG V

KẾT QUẢ ĐÁNH GIÁ HỆ THỐNG

5.1 Kết qủa đề tài
Sau quá trình nghiên cứu và thiết kế,nhóm chúng em đã chế tạo thành công xe
tự hành AGV ở dạng mô hình nhỏ.Sản phẩm nhìn chung đáp ứng được yêu cầu của đề
tài đặt ra như: mang được tải trọng nhất định, đạt được tốc độ 20m/phút, di chuyển tự
hành theo vạch có sẵn, có thể điều khiển từ xa qua giao tiếp không dây RF,kiểm soát
quá trình vận hành qua giao diện trên máy tính..
Tuy nhiên đề tài còn một số yêu cầu chưa đạt được như: theo yêu cầu và tính
toán tải trọng, xe chở được là 150 kg, nhưng thực tế xe chỉ mang theo được tối đa 80
kg (không kể trọng lượng xe là 45 kg),giao diện kiểm soát hành trình xe chưa tối ưu.
5.2 Nguyên nhân gây sai số
Trong quá trình vận hành, xe AGV có xuất hiện nhiều lỗi khiến việc hoạt động
thiếu ổn định như: lỗi động cơ bên phải, "loạn" việc chạy bám theo vạch, driver động
cơ báo lỗi, không điều khiển được xe qua giao tiếp không dây, cảm biến cảnh báo
thiếu chính xác...Các lỗi này do nhiều nguyên nhân khách quan cũng như chủ quan
gây ra, nhưng nhìn chung do một số nguyên nhân chính sau:
*) Sai số hệ thống.
Kết cấu cơ khí thiếu chính xác: biểu hiện ở độ "dơ" giữa kết nối khớp nối
mềm,động cơ và hộp giảm tốc,đặc biệt là ở bên động cơ bên phải khiến việc vận hành
AGV thiếu chính xác.Mặt khác thiết kế kết cấu truyền động giữa động cơ và bánh xe
qua hộp giảm tốc là chưa tối ưu gây ra sự thiếu ổn định cho xe nếu xảy ra hiện tượng
quá tải.
Driver và động cơ khác biệt với datasheet: Trong quá trình kiểm nghiệm và vận
hành xe AGV, nhóm thấy có sự khác biệt giữa thực tế vận hành và thông số kỹ thuật
trên datasheet của động cơ và driver.Tuy nhóm có liên hệ với hãng sản xuất để hỗ trợ
về kỹ thuật,nhưng vẫn chưa khắc phục triệt để sự khác biệt này.Đây là nguyên nhân
chính gây nên sự thiếu ổn định trong quá trình hoạt động của xe.
Cảm biến thiếu ổn định: Do khoảng cách bắt của cảm biến là nhỏ (10mm),mặt
khác do sai số phần cơ khí định vị cảm biến và độ gồ ghề mặt nền làm cho khả năng
bắt vạch của cảm biến thiếu chính xác, kéo theo việc điều khiển khó khăn hay gặp lỗi.
Mạch điều khiển gặp trục trặc do một số linh kiện thiếu ổn định, đặc biệt là
socket liên kết chân chip với mạch.
Chương trình điều khiển chưa tối ưu hết các trường hợp xảy ra,thuật toán dò
đường đơn giản..
*) Sai số ngẫu nhiên.
Sai số ngẫu nhiên là loại sai số gây lên bởi tác động của các yếu tố mà ta không
biết trước được quy luật của nó. Để giảm sai số này ta nên chú trọng quy trình bảo
dưỡng vận hành thiết bị.
5.3 Phương pháp hiệu chỉnh sai số
Cải tiến kết cấu cơ khí cho xe AGV đặc biệt là kết nối giữa động cơ, hộp giảm
tốc và khớp nối mềm. Đảm bảo việc truyền chuyển động được chính xác, hạn chế sai

66

sai số khi xảy ra quá tải. Bảo trì thường xuyên động cơ và hộp số cũng như các khớp
nối.
Sử dụng cảm biến tiệm cận có độ chính xác cao và khả năng bắt vạch ở khoảng
cách xa hơn, phù với từng địa hình nhà xưởng.
Tối ưu hóa mạch điện tử bằng việc thiết kế mạch điện tử phù hợp với nhu cầu
điều khiển,lựa chọn linh kiện điện tử tối ưu,chuẩn hóa các dây dẫn kết nối giữa mạch
và các thiết bị khác như driver,cảm biến,còi,đèn báo…giảm thiểu tối đa nhiễu gây ra
cho tín hiệu điều khiển.
Thiết lập các thông số PID tối ưu phù hợp với đặc tính cơ của động cơ,thông
qua việc thiết lập Servo cho driver bằng các phần mềm chuyên dụng như:Pro
tuner,EZ-tuner..
Tối ưu hóa chương trình điều khiển và thuật toán điều khiển giúp AGV hoạt
động ổn định trong các tình huống bất ngờ xảy ra.
Hạn chế nhiễu đối với sóng RF trong môi trường làm việc của AGV.
Đảm bảo nguồn điện cấp cho AGV luôn được ổn định, thường xuyên đo dòng
và điện áp để tránh những trục trặc khi vận hành AGV.
5.4 Hướng phát triển của đề tài
Thiết kế kết cấu cơ khí,chọn loại động cơ và nguồn thích hợp giúp AGV có khả
năng tải trọng cao hơn, có thể đến vài tấn.
Thiết kế trạm nạp ắc quy tự động cho xe AGV đồng thời với hệ thống định vị
GPS cục bộ trong nhà xưởnng hoặc nhà máy để kiểm soát chính xác hành trình,trạng
thái của AGV.
Hoàn thiện giao diện điều khiển trên máy tính, phát triển những tính năng chạy
tự động theo lộ trình đặt trước, hoặc theo thời gian đặt trước.
Nâng cao hiệu suất sử dụng ( tăng thời gian vận hành, tiết kiệm năng lượng..),
kiểm soát chính xác vị trí cũng như tốc độ hoạt động của xe.
Xây dựng xe AGV tương thích với chu trình tự động trong hệ thống nhà xưởng,
cấp phát phôi tự động đáp ứng yêu cầu trong công nghiệp, kết hợp cùng những hệ
thống tự động khác như robot scada ...
Chuẩn hóa các modul để phát triển,chế tạo AGV theo mô hình công nghiệp, sản
xuất trên quy mô lớn.
Nghiên cứu những công nghệ mới nhất được áp dụng vào AGV như LGV(Laser
Guided Vehicle)…

67

KẾT LUẬN CHUNG
Sau khi nhận đề tài : Thiết kế xe tự hành AGV nhóm đã nghiên cứu, làm việc
tích cực trong vòng 7 tháng và đạt được những kết quả nhất định. Đầu tiên sau khi
nghiên cứu tài liệu, nhóm đã chọn được phương pháp thiết kế xe AGV theo phương
hướng đò đường vạch từ và thiết kế hai bánh chủ động ở giữa.
Xác định được hướng của đề tài là điều rất quan trọng từ đó có thể xác định
được các bước tiếp theo cần phải làm. Bước tiếp theo nhóm đã thực hiện là xây dựng
mô hình 3D của hệ thống, việc thiết kế này giúp nhóm có được cái nhìn tổng quát về
kết cấu của xe từ đó qua nhiều lần hiệu chỉnh để đưa ra mô hình 3D xe hoàn chỉnh.
Những chi tiết được cụ thể hóa bằng các bản vẽ 3D và sau đó là các bản vẽ chế tạo cho
các chi tiết nhóm tự chế tạo (trục dẫn động, đế xe, khung xe...) và có được những
thông số cần thiết để lựa chọn các chi tiết có sẵn ngoại thị trường (Hộp giảm tốc, gối
đỡ, khớp nối mềm..)
Sau khi tiến hành chế tạo và lắp ráp nhóm đã hoàn thiện mô hình xe AGV về
phần cơ khí. Bước tiếp theo là lắp ráp bộ phận điều khiển để thử thuật toán điều khiển,
thử kết cấu cơ khí có đáp ứng được độ chính xác hay không, nếu gặp lỗi sẽ tinh chỉnh
lại. Nhóm thiết kế mạch điều khiển có đủ đầu vào ra để điều khiển các khối của xe
như: 2 Driver, 16 cảm biến hỗ cảm, 2 cảm biến siêu âm, đèn, còi, các công tắc điều
khiển...
Tiếp theo khi thử nghiệm các thuật toán điều khiển hoàn chỉnh nhóm tiến hành
các công việc tiếp theo là viết giao diện điều khiển trên máy tính, lắp ghép Modul RF
và hoàn thiện phần cơ khí (vỏ, tấm để hàng).
Sau thời gian làm việc nghiêm túc nhóm đã cho ra sản phẩm của mình là mô
hình xe tự hành AGV có khả năng tải <=80 kg. Di chuyển bằng cách bám các vạch từ
đươc dán sẵn trên sàn. Xe được điều khiển từ xa thông qua sóng RF và có thể di
chuyển một cách linh hoạt, tự động hoàn toàn thông qua phần mềm trên máy tính.
Nhóm AGV khi tiếp nhận đề tài nhận thấy rằng: đề tài thiết kế mô hình xe AGV
là một đề tài hay, có tính ứng dụng thực tiễn cao.Tuy nhiên nội dung đề tài khá lớn và
phức tạp, nên có nhiều thách thức với nhóm do kiến thức của mỗi thành viên trong
nhóm còn nhiều hạn chế. Nên đề tài của nhóm chỉ dừng lại ở mô hình nhỏ, thuật toán
dò đường đơn giản..Nếu có điều kiện về kinh phí nhóm sẽ phát triển đề tài ở mức cao
hơn như khả năng chịu tài nhiều tấn,sử dụng thuật toán điều khiển mờ,cảm biến laser..
đáp ứng được yêu cầu trong công nghiệp.
Để hoàn thành đề tài chúng em xin cảm ơn sự giúp đỡ chỉ bảo của các thầy cô
trong bộ môn Cơ Điện Tử cũng như trong khoa Cơ khí đã giúp đỡ chúng em về
chuyên môn, gia công một số chi tiết cơ khí... Cuối cùng chúng em xin trân cảm ơn sự
giúp đỡ tận tình của thầy: NHỮ QUÝ THƠ đã theo dõi sát sao từng bước phát triển
của đề tài.

68

PHỤ LỤC
Phụ lục 1:Datasheet 7805

Hình1
7805 có tác tác dụng ổn áp nguồn ra bằng 5V. Dòng 78xx là loại IC ổn áp, xx là
chỉ số của áp của đầu ra.
Phụ lục 2: Datasheet của B688

Hình 2
Transistor có tác dụng khuếch đại dòng cho đầu ra của 7805.
Phụ lục 3: Chương trình điều khiển bằng ngôn ngữ VB trên máy tính.
69

Private Sub do_hoa(left As Integer)
'For y = ((840)) 1320 To 4680 Step 100
'next
'tu 0 - 3840
xe.top = 720
xe.left = left + 840
'Next
End Sub
'//////////////////////
Private Sub do_hoa1(top As Integer)
'For y = 1080 To 2520 Step 100
'3840 - 5280
xe.left = 5160
xe.top = top - 2760
End Sub
'////////////////////////
Private Sub do_hoa2(left As Integer)
'For y = 4680 To 840 Step -100
'5280 - 9120
xe.top = 2880
xe.left = 9960 - left
End Sub
'////////////////////////////
Private Sub do_hoa3(top As Integer)
'For y = 2520 To 1080 Step -100
'9120 - 10560
xe.left = 360
xe.top = 11640 - top
End Sub
'///////////////////////////
Private Sub HScroll1_Change()
HScroll1.SmallChange = Text4.Text
If HScroll1.Value < 3840 Then
Call do_hoa(HScroll1.Value)
End If
If (HScroll1.Value > 3840) And (HScroll1.Value < 5280) Then
Call do_hoa1(HScroll1.Value)
End If
If (HScroll1.Value > 5280) And (HScroll1.Value < 9120) Then
Call do_hoa2(HScroll1.Value)
End If
If (HScroll1.Value > 9120) And (HScroll1.Value < 10560) Then
Call do_hoa3(HScroll1.Value)
70

End If
If HScroll1.Value > 10500 Then
HScroll1.Value = 0
End If
If HScroll1.Value < 0 Then
HScroll1.Value = 10400
End If
Text3.Text = HScroll1.Value
A = HScroll1.Value
End Sub
Private Sub Command1_Click()
MSComm1.Output = "E"
End Sub
Private Sub Command2_Click()
Dim i, n As Byte
Dim aSplit() As String
n=0
If Text2.Text = "" Then
MsgBox "Chua co chuong trinh hoat dong", vbInformation, "Thong Bao
Loi"
Exit Sub ' Terminate this Sub
End If
aSplit = Split(Text2.Text, Chr(13), 100)
n = UBound(aSplit)
For i = 0 To (n - 1)
If i = 0 Then
Text4.Text = Mid(aSplit(i), 1, 50)
Else
Text4.Text = Mid(aSplit(i), 2, 50)
End If
Select Case Text4.Text
Case "a"
vtA_Click
DELAY (1000)
Case "b"
vtB_Click
DELAY (1000)
Case "c"
vtC_Click
DELAY (1000)
Case "d"
vtD_Click
71

DELAY (1000)
Case Else
DELAY (CInt(Mid(aSplit(i), 3, 50)))
End Select
Next
End Sub
Private Sub Disconnect_Click()
MSComm1.PortOpen = False
connect.Enabled = True
Disconnect.Enabled = False
Frame2.Enabled = False
Frame3.Enabled = False
End Sub
Private Sub Exit_Click()
Unload Me
Login.Visible = True
End Sub
Private Sub Stop_Click()
MSComm1.Output = "D"
End Sub
Private Sub MSComm1_OnComm()
Static A As Byte
If (MSComm1.CommEvent = comEvReceive) Then
'txtReceive.Text = txtReceive.Text + MSComm1.Input
A= A+ 1
End If
If A <= 3 Then
Text5.Text = Text5.Text + MSComm1.Input
If (A = 3) Then
HScroll1.Value = Text5.Text * 20
A= 0
Text5.Text = 0
End If
End If
'HScroll1.Value = Text5.Text
End Sub
Private Sub text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0 ' swallow Key Enter to avoid side effect
Connect_Click ' Call Private Sub CmdEnter_Click from the same form
72

End If
End Sub
Private Sub Connect_Click()
' Make sure the Name field is not blank
If Text1.Text = "" Then
MsgBox "Nhap so cong Com ket noi", vbInformation, "Thong Bao Loi"
Exit Sub ' Terminate this Sub
End If
With MSComm1
.Settings = "9600,N,8,1"
'toc do truyen 9600bit/s, ko kiem tra chan
le,so bit du lieu truyen la 8,1 bit stop
.CommPort = CInt(Text1.Text)
'su dung cong com1
.RThreshold = 1
'ket hop voi SThreshold = 0 de cho su kein
oncom xay ra
.SThreshold = 0
.InputMode = comInputModeText 'du lieu la mot sau
.InputLen = 1
'doc toan bo du lieu co trong bo dem
.Handshaking = comNone
'ko bat tay
.InBufferSize = 1024
'1024 byte
.OutBufferSize = 512
If .PortOpen = False Then
.PortOpen = True
Else
MsgBox " Port already open ", vbInformation, "Thong Bao"
End If
End With
Stop01.Enabled = True
Continue.Enabled = True
connect.Enabled = False
Disconnect.Enabled = True
Frame2.Enabled = True
Frame3.Enabled = True
End Sub
Private Sub Form_ULoad()
MSComm1.PortOpen = False
End Sub
Private Sub Form_Load()
Text4.Text = 100
xe.Height = 495
xe.Width = 495
End Sub
Private Sub Timer1_Timer()
Dim m_Color As Long
73

m_Color = Rnd() * 65000
xe.BackColor = m_Color
End Sub
Private Sub vtA_Click()
MSComm1.Output = "a"
End Sub
Private Sub vtB_Click()
MSComm1.Output = "b"
End Sub
Private Sub vtC_Click()
MSComm1.Output = "c"
End Sub
Private Sub vtD_Click()
MSComm1.Output = "d"
End Sub
Phụ lục 4: Chương trình cho AVR
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 3/19/2010
Author :
Company :
Comments:
Chip type
: ATmega16
Program type
: Application
Clock frequency : 8.000000 MHz
Memory model
: Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega16.h>
#include <stdio.h>
74

#include <delay.h>
#include <math.h>
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define

R7
R6
R5
R4
R3
R2
R1
TT
L1
L2
L3
L4
L5
L6
L7
FF

0B01111111 // 76543210
0B00111111
0B10111111
0B10011111
0B11011111
0B11001111
0B11101111
0B11100111
0B11110111
0B11110011
0B11111011
0B11111001
0B11111101
0B11111100
0B11111110
0B11111111

#define
#define
#define
#define
#define
#define

o1
o2
o3
o4
den
coi

PINA.2
PINA.3
PINA.4
PINA.5
PORTD.6
PORTD.5

#define
#define

left
right

PORTB.0 ////M////
PORTB.1 ////S////

bit
go; //go=1
bit
back; //back=0
char vt,num;
unsigned int
count;
int
dem1, dem2;
char us;
char getchar(void);
void putchar(char c);
#define in PINB.4
#define out
PORTB.2
#define in2
PINB.6
#define out2
PORTB.5
75

#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
// USART Receiver buffer
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];
#if RX_BUFFER_SIZE<256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR |
DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
76

};
};
us=getchar();
//putchar(48);
}
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used#endif
// USART Transmitter buffer
#define TX_BUFFER_SIZE 8
char tx_buffer[TX_BUFFER_SIZE];
#if TX_BUFFER_SIZE<256
unsigned char tx_wr_index,tx_rd_index,tx_counter;
#else
unsigned int tx_wr_index,tx_rd_index,tx_counter;
#endif
// USART Transmitter interrupt service routine
interrupt [USART_TXC] void usart_tx_isr(void)
{
if (tx_counter)
{
--tx_counter;
UDR=tx_buffer[tx_rd_index];
if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
};
77

}
#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter == TX_BUFFER_SIZE);
#asm("cli")
if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
{
tx_buffer[tx_wr_index]=c;
if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
++tx_counter;
}
else
UDR=c;
#asm("sei")
}
#pragma used#endif
// Standard Input/Output functions
unsigned int sensor1(void)
{
unsigned int dem=0;
unsigned int kq=0;
out=1;
delay_us(15);
out=0;
while(1)
{
if(in == 1)
break;
}
// cho den khi co tin hieu tra ve
while(1)
{
if(in == 0)
break;
dem++;
delay_us(1);
}
// dem thoi gian cho den khi het tin hieu ve thi thoat
kq=dem/35;
78

return kq;
}
unsigned int sensor2(void)
{
unsigned int dem=0;
unsigned int kq=0;
out2=1;
delay_us(15);
out2=0;
while(1)
{
if(in2 == 1)
break;
}
// cho den khi co tin hieu tra ve
while(1)
{
if(in2 == 0)
break;
dem++;
delay_us(1);
}
// dem thoi gian cho den khi het tin hieu ve thi thoat
kq=dem/35;
return kq;
}
void run_L (unsigned int power,unsigned int dir)
{
OCR0=power;
if(dir == 1)
{
left=0;
}
else if (dir == 0)
{
left=1;
}
}
//***********************************
void stop_L(void)
{
TCCR0=0x00;
left=0;
}
79

//***********************************
void run_R(unsigned int power,unsigned int dir )
{
OCR2=power;
if(dir == 1)
{
right=1;
}
else if (dir == 0)
{
right=0;
}
}
//***********************************
void stop_R(void)
{
TCCR2=0x00;
right=0;
}
//***********************************
void stop(void)
{
stop_L();
stop_R();
}
void gui(unsigned int so)
{
unsigned int a,b,c;
a=so/100;
putchar(a+48);
b=(so - a*100)/10;
putchar(b+48);
c=so - a*100 - b*10;
putchar(c+48);
//d=(so - a*10000 - b*1000 - c*100)/10;
//putchar(d+48);
//e=(so - a*10000 - b*1000 - c*100 -d*10);
//putchar(e+48);
}
//***********************************
void tien2 (unsigned int vach)
{
unsigned char temp0,temp2,INPUT;
80

unsigned int temp,i,kq;
count=0;
i=0;
temp=0;
dem1=0;
go=1;
back=0;
z: TCCR0=0x19;
TCCR2=0x19;
do
{
INPUT=PINA;
delay_ms(5);
if (!o1 && !o2 && !o3 && !o4)
{
while(!o1 && !o2 && !o3 && !o4)
{};
count++;
}
kq=sensor1(); //kiem tra khoang cach
if (kq > 20)
{
if ( kq < 40 )
{
den=1;
coi=1;
}
else
{
den=0;
coi=0;
};
if (i==1)
{
i=0;
goto z;
}
dem1++;
if (dem1 > 10)
{
dem2++;
if (dem2 > 900) dem2=0;
gui(dem2);
dem1=0;
81

}
switch (INPUT)
{
case TT:
{
run_R(69,go);
run_L(70,go);
temp0=0;
temp2=0;
break;
}
case L1:
{
run_R(70,go);
run_L(75,go);
temp0=0;
temp2=0;
break;
}
case L2:
{
run_R(70,go);
run_L(85,go);
temp0=0;
temp2=0;
break;
}
case L3:
{
run_R(70,go);
run_L(90,go);
temp0=0;
temp2=0;
break;
}
case L4:
{
run_R(70,go);
run_L(95,go);
temp0=0;
temp2=0;
break;
}
case L5:
82

{
run_R(65,go);
run_L(105,go);
temp0=0;
temp2=0;
break;
}
case L6:
{
run_R(60,go);
run_L(110,go);
temp=0;
temp0=1;
temp2=0;
break;
}
case L7:
{
run_R(50,go);
run_L(120,go);
temp=0;
temp0=1;
temp2=0;
break;
}
case R1:
{
run_R(75,go);
run_L(70,go);
temp0=0;
temp2=0;
break;
}
case R2:
{
run_R(85,go);
run_L(70,go);
temp0=0;
temp2=0;
break;
}
case R3:
{
run_R(90,go);
83

run_L(70,go);
temp0=0;
temp2=0;
break;
}
case R4:
{
run_R(100,go);
run_L(65,go);
temp0=0;
temp2=0;
break;
}
case R5:
{
run_R(110,go);
run_L(60,go);
temp0=0;
temp2=0;
break;
}
case R6:
{
run_R(115,go);
run_L(55,go);
temp=0;
temp0=0;
temp2=1;
break;
}
case R7:
{
run_R(120,go);
run_L(50,go);
temp=0;
temp0=0;
temp2=1;
break;
}
case FF:
{
temp++;
if(temp0==1)
{
run_R(79,go);
84

run_L(79,back);
}
if(temp2==0)
{
run_R(79,back);
run_L(79,go);
}
break;
}
}
}
else
{
den=1;
coi=1;
stop();
i=1;
};
if(us==68) //pause
{
stop();
while(1)
{
stop();
if(us==69)
goto z;
}
}
}
while((vach > count)&& (temp < 1000)) ;
}
//***********************************
void lui2 (unsigned int vach)
{
unsigned char temp0,temp2,INPUT;
unsigned int temp,j,kq2;
count=0;
j=0;
dem1=0;
go=0;
back=1;
w: TCCR0=0x19;
TCCR2=0x19;
85

do
{
INPUT=PINC;
delay_ms(5);
if (!o1 && !o2 && !o3 && !o4) //Dem vach ngang
{
while(!o1 && !o2 && !o3 && !o4)
{};
count++;
}
kq2=sensor2();
//kiem tra khoang cach
if (kq2 > 20)
{
if ( kq2 < 40 )
{
den=1;
coi=1;
}
else
{
den=0;
coi=0;
};
if (j==1)
{
j=0;
goto w;
}
dem1++;
if (dem1 > 12)
{
dem2--;
if (dem2 < 0 ) dem2=900;
gui(dem2);
dem1=0;
}
switch (INPUT)
{
case TT:
{
run_R(69,go);
run_L(70,go);
temp0=0;

//chay theo sensor

86

temp2=0;
break;
}
case L1:
{
run_R(70,go);
run_L(75,go);
temp0=0;
temp2=0;
break;
}
case L2:
{
run_R(70,go);
run_L(85,go);
temp0=0;
temp2=0;
break;
}
case L3:
{
run_R(70,go);
run_L(90,go);
temp0=0;
temp2=0;
break;
}
case L4:
{
run_R(65,go);
run_L(100,go);
temp0=0;
temp2=0;
break;
}
case L5:
{
run_R(60,go);
run_L(110,go);
temp0=0;
temp2=0;
break;
}
case L6:
{
87

run_R(50,go);
run_L(120,go);
temp=0;
temp0=1;
temp2=0;
break;
}
case L7:
{
run_R(50,go);
run_L(135,go);
temp=0;
temp0=1;
temp2=0;
break;
}
case R1:
{
run_R(75,go);
run_L(70,go);
temp0=0;
temp2=0;
break;
}
case R2:
{
run_R(85,go);
run_L(70,go);
temp0=0;
temp2=0;
break;
}
case R3:
{
run_R(90,go);
run_L(70,go);
temp0=0;
temp2=0;
break;
}
case R4:
{
run_R(100,go);
run_L(65,go);
88

temp0=0;
temp2=0;
break;
}
case R5:
{
run_R(110,go);
run_L(60,go);
temp0=0;
temp2=0;
break;
}
case R6:
{
run_R(120,go);
run_L(50,go);
temp=0;
temp0=0;
temp2=1;
break;
}
case R7:
{
run_R(130,go);
run_L(45,go);
temp=0;
temp0=0;
temp2=1;
break;
}
case FF:
{
temp++;
if(temp0==1)
{
run_R(79,go);
run_L(79,back);
}
if(temp2==0)
{
run_R(79,back);
run_L(79,go);
}
break;
}
89

}
}
else
{
den=1;
coi=1;
stop();
j=1;
};
if(us==68)
{
stop();
while(1)
{
stop();
if(us == 69)
goto w;
}
}
}
while((vach > count) && (temp <= 1000));
}
//***********************************
void ct(unsigned int k)
{
if (k > vt )
{
tien2(k-vt);
stop();
}
if (k < vt )
{
//lui2(1);
lui2(vt-k);
stop();
dem2=0;
gui(dem2);
}
vt=k ;
}
//***********************************
void main(void)
{
// Declare your local variables here
90

vt=0;
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x2F;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0xf0;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000.000 kHz
// Mode: CTC top=OCR0
// OC0 output: Toggle on compare match
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 8000.000 kHz
// Mode: CTC top=OCR2
// OC2 output: Toggle on compare match
TCNT0=0x00;
OCR0=50;
TCCR0=0x19;
TCCR2=0x19;
ASSR=0x00;
TCNT2=0x00;
OCR2=50;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
91

UCSRA=0x00;
UCSRB=0xD8;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
stop();
//putchar(65);
while (1)
{
// Place your code here
if (us == 97 )
//a
{
//putchar(49);
num=0;
us=0;
}
if (us == 98 )
//b
{
//putchar(49);
num=2;
us=0;
}
ct(num);
den=0;
coi=0;
stop();
}

92

Tài liệu tham khảo.
1.
www.Google.com/
2.
Quách Tuấn Ngọc: Ngôn ngữ lập trình C,Nhà xuất bản thống kê.
3. TrÇn V¨n §Þch: ThiÕt kÕ ®å ¸n c«ng nghÖ chÕ t¹o m¸y,1999.
4. NguyÔn §¾c léc: C«ng nghÖ chÕ t¹o m¸y tËp1vµ 2,1999.
5.
NguyÔn Xu©n Chung, TrÇn §øc Quý: M¸y c¾t kim lo¹i.
6.
Ninh §øc Tèn: Dung sai.
7. TrÇn NhËt T©n: Gi¸o tr×nh Linh kiÖn ®iÖn tö.
8.
C.O.E & T; Akola: Automatically Guided Vehicle.
9.
Ryan G.Rosandish, Richard R.Lindeke, Jeff Berg: Developing an automatic
guided vehicle for small to medium sized enterprises.

93